Displaying 3 results from an estimated 3 matches for "cmovll".
Did you mean:
cmovel
2019 Sep 14
2
Side-channel resistant values
...ses where __builtin_unpredictable() works at all. Even if we ignore cmp/br into switch conversion, it still doesn’t work:
int test_cmov(int left, int right, int *alt) {
return __builtin_unpredictable(left < right) ? *alt : 999;
}
Should generate:
test_cmov:
movl $999, %eax
cmpl %esi, %edi
cmovll (%rdx), %eax
retq
But currently generates:
test_cmov:
movl $999, %eax
cmpl %esi, %edi
jge .LBB0_2
movl (%rdx), %eax
.LBB0_2:
retq
> On Sep 14, 2019, at 12:18 AM, Sanjay Patel <spatel at rotateright.com> wrote:
>
> I'm not sure if this is the entire problem, but Simpli...
2019 Sep 14
2
Side-channel resistant values
...gt;> int test_cmov(int left, int right, int *alt) {
>> return __builtin_unpredictable(left < right) ? *alt : 999;
>> }
>>
>> Should generate:
>>
>> test_cmov:
>> movl $999, %eax
>> cmpl %esi, %edi
>> cmovll (%rdx), %eax
>> retq
>>
>> But currently generates:
>>
>> test_cmov:
>> movl $999, %eax
>> cmpl %esi, %edi
>> jge .LBB0_2
>> movl (%rdx), %eax
>> .LBB0_2:
>> retq
>&g...
2019 Sep 13
3
Side-channel resistant values
> On Sep 13, 2019, at 10:45 AM, Chandler Carruth <chandlerc at gmail.com> wrote:
>
> On Fri, Sep 13, 2019 at 1:33 AM David Zarzycki via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> Hi Chandler,
>
> The data-invariant feature sounds great but what about the general case? When performance tuning code, people sometimes need