Displaying 7 results from an estimated 7 matches for "cmova".
Did you mean:
cmov
2008 May 27
3
[LLVMdev] Float compare-for-equality and select optimization opportunity
...ov edx,edi
cmove edx,ecx
cmove ecx,esi
cmove esi,edi
Compared to the original C syntax code this looks pretty straightforward.
Curiously, when I replace the compare-for-equality with something like a
less-than, it does generate such compact code (using comiss and cmova). And
the not-equal case looks like this:
movss xmm0,dword ptr [ecx+4]
ucomiss xmm0,dword ptr [ecx+8]
mov esi,ecx
cmove esi,edx
cmovne ecx,eax
cmove edx,eax
So this generates compact code but with an unordered compare.
Anyway, it looks like t...
2008 May 27
1
[LLVMdev] Float compare-for-equality and select optimizationopportunity
...ov edx,edi
cmove edx,ecx
cmove ecx,esi
cmove esi,edi
Compared to the original C syntax code this looks pretty straightforward.
Curiously, when I replace the compare-for-equality with something like a
less-than, it does generate such compact code (using comiss and cmova). And
the not-equal case looks like this:
movss xmm0,dword ptr [ecx+4]
ucomiss xmm0,dword ptr [ecx+8]
mov esi,ecx
cmove esi,edx
cmovne ecx,eax
cmove edx,eax
So this generates compact code but with an unordered compare.
Anyway, it looks like t...
2008 May 27
0
[LLVMdev] Float compare-for-equality and select optimizationopportunity
...ov edx,edi
cmove edx,ecx
cmove ecx,esi
cmove esi,edi
Compared to the original C syntax code this looks pretty straightforward.
Curiously, when I replace the compare-for-equality with something like a
less-than, it does generate such compact code (using comiss and cmova). And
the not-equal case looks like this:
movss xmm0,dword ptr [ecx+4]
ucomiss xmm0,dword ptr [ecx+8]
mov esi,ecx
cmove esi,edx
cmovne ecx,eax
cmove edx,eax
So this generates compact code but with an unordered compare.
Anyway, it looks like t...
2008 May 27
1
[LLVMdev] Float compare-for-equality andselect optimizationopportunity
...ov edx,edi
cmove edx,ecx
cmove ecx,esi
cmove esi,edi
Compared to the original C syntax code this looks pretty straightforward.
Curiously, when I replace the compare-for-equality with something like a
less-than, it does generate such compact code (using comiss and cmova). And
the not-equal case looks like this:
movss xmm0,dword ptr [ecx+4]
ucomiss xmm0,dword ptr [ecx+8]
mov esi,ecx
cmove esi,edx
cmovne ecx,eax
cmove edx,eax
So this generates compact code but with an unordered compare.
Anyway, it looks like t...
2017 Apr 19
3
[cfe-dev] FE_INEXACT being set for an exact conversion from float to unsigned long long
...ero
>> movaps xmm2, xmm0
>> subss xmm2, xmm1
>> cvttss2si rax, xmm2
>> movabs rcx, -9223372036854775808
>> xor rcx, rax
>> cvttss2si rax, xmm0
>> ucomiss xmm0, xmm1
>> cmovae rax, rcx
>> ret
>>
>> GCC lowering (sets flags correctly):
>>
>> fcvt_lu(float):
>> ucomiss xmm0, DWORD PTR .LC0[rip]
>> jnb .L4
>> cvttss2si rax, xmm0
>> ret
>> .L4:
>> s...
2017 Apr 20
4
[cfe-dev] FE_INEXACT being set for an exact conversion from float to unsigned long long
...movss xmm1, dword ptr [rip + .LCPI1_0] # xmm1 = mem[0],zero,zero,zero
movaps xmm2, xmm0
subss xmm2, xmm1
cvttss2si rax, xmm2
movabs rcx, -9223372036854775808
xor rcx, rax
cvttss2si rax, xmm0
ucomiss xmm0, xmm1
cmovae rax, rcx
ret
GCC lowering (sets flags correctly):
fcvt_lu(float):
ucomiss xmm0, DWORD PTR .LC0[rip]
jnb .L4
cvttss2si rax, xmm0
ret
.L4:
subss xmm0, DWORD PTR .LC0[rip]
movabs rdx, -9223372036854775808
cvttss2si...
2017 Apr 21
2
[cfe-dev] FE_INEXACT being set for an exact conversion from float to unsigned long long
...movss xmm1, dword ptr [rip + .LCPI1_0] # xmm1 = mem[0],zero,zero,zero
movaps xmm2, xmm0
subss xmm2, xmm1
cvttss2si rax, xmm2
movabs rcx, -9223372036854775808
xor rcx, rax
cvttss2si rax, xmm0
ucomiss xmm0, xmm1
cmovae rax, rcx
ret
GCC lowering (sets flags correctly):
fcvt_lu(float):
ucomiss xmm0, DWORD PTR .LC0[rip]
jnb .L4
cvttss2si rax, xmm0
ret
.L4:
subss xmm0, DWORD PTR .LC0[rip]
movabs rdx, -9223372036854775808
cvttss2si...