CMOV (Developers)
>
> > (I came across this
> thread involving Linus Torvalds which indicates that the conditional
> jump solution may actually be better or no worse than cmov. Make of that
> what you will.)
Still, one of the other links says that VS2010 in 64-bit mode does generate cmov more. And that is from after Linus Torvalds analysis.
My own experiences (as a non-compiler dev) are a bit less hard cut. When cmov generation was added, FPC self compiled faster on 32-bit windows, afaik in Core2 times. (before that there was few processor specific optimization)
On the one hand that is a real, and not a micro benchmark, on the other hand it is possible that the result is one code-path vs the other and that other factors (like Pascal boolean handling with 1=true, 0=false) factor in and the whole codepath with cmov turned out to be faster, not just cmov itself.
I've also seen references that the preference for CMOV is avoid pollution the TLB with unneeded branch addresses, and let the register rename stage handle it. (and with uop caches of Sandy Bridge, the same branch miss latency now hurts more)
Maybe it is safest to conclude that it is undecided since all hunches and feelings are old (Core2 period), and we are now 10 generations "Core" architecture and an AMD resurgence further along.
> Note that CMOVcc has its own CPUID support bit. A processor being a 686+
> class does not necessarily mean it has CMOVcc.
I know, to my own detriment . I had a Via based firewall that didn't, and when the Smooth Wall went to a newer kernel version, it suddenly failed because the kernel was compiled with P6 compat. But that was like 8 years ago.
The oldest PC I still use (home+work) is a low power E-350 work server, but that is up for replacement this year (probably by a Ryzen based Athlon 200).
So then a mix of Ivy Bridges and one Sandy Bridge i5-2500 will be the eldest. Though that is partially bad luck since we had quite a big batch of 2nd generation Core2's, but the used mainboard of that generation had caps that weren't very durable. So they retired themselves basically
Many linux distros are already phasing out 32-bit versions....
Complete thread:
- rebuilding NASM 0.98.39 (2005) for 16-bit 8086 host - Rugxulo, 14.03.2020, 08:13 (Developers)
- rebuilding NASM 0.98.39 (2005) for 16-bit 8086 host - Rugxulo, 16.03.2020, 01:24
- rebuilding NASM 0.98.39 (2005) for 16-bit 8086 host - rr, 16.03.2020, 15:22
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 17.03.2020, 05:20
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - ecm, 17.03.2020, 06:58
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 22.03.2020, 00:48
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - ecm, 22.03.2020, 10:13
- rebuilding NASM 2.09 and NASM compatibility - ecm, 22.03.2020, 11:45
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - ecm, 06.09.2020, 23:09
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - ecm, 22.03.2020, 10:13
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 22.03.2020, 00:48
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 22.03.2020, 00:42
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - marcov, 22.03.2020, 13:08
- CMOV - ecm, 22.03.2020, 14:26
- CMOV - marcov, 22.03.2020, 18:32
- CMOV - marcov, 23.03.2020, 12:52
- CMOV - marcov, 22.03.2020, 18:32
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 23.03.2020, 04:27
- NASM 0.98.39 (MSC 7, "286", not full instruction support) - Rugxulo, 24.03.2020, 20:36
- NASM 0.98.39 (not full instruction support) - Rugxulo, 24.03.2020, 21:16
- NASM 0.98.39 (not full instruction support) - ecm, 24.03.2020, 22:55
- NASM 0.98.39 (not full instruction support) - Rugxulo, 24.03.2020, 23:17
- NASM 0.98.39 (not full instruction support) ... LOADALL - Rugxulo, 31.03.2020, 20:07
- NASM 0.98.39 (not full instruction support) - ecm, 24.03.2020, 22:55
- NASM 0.98.39 (not full instruction support) - Rugxulo, 24.03.2020, 21:16
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 13.04.2020, 07:16
- NASM 0.98.39 (MSC 7, "286", not full instruction support) - Rugxulo, 24.03.2020, 20:36
- deprecated MMX and obsolete 3DNow! - Rugxulo, 24.03.2020, 17:54
- CMOV - ecm, 22.03.2020, 14:26
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - marcov, 22.03.2020, 13:08
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - ecm, 17.03.2020, 06:58
- rebuilding NASM 0.98.39 (without MMX/3DNOW/686/SSE) - Rugxulo, 17.03.2020, 05:20
- rebuilding NASM 0.98.39 (2005) for 16-bit 8086 host - rr, 16.03.2020, 15:22
- rebuilding NASM 0.98.39 (2005) for 16-bit 8086 host - Rugxulo, 16.03.2020, 01:24