Re[5]: Как обойти strict aliasing rule?
От: Erop Россия  
Дата: 18.06.16 12:24
Оценка:
Здравствуйте, Eeel, Вы писали:

E>>Ну, например
a + b - (1ull<<32)&((a+b)^~(a^b))
И пусть себе там компилятор разбирается, как оптимизировать?


E>MSVC 2015 Update 2, похоже, не разобрался, а просто дубово выполняет битовые операции.


E>
E>    mov    rax, QWORD PTR [rcx]
E>    lea    rcx, QWORD PTR [rax+rdx]
E>    xor    rax, rdx
E>    not    rax
E>    xor    rax, rcx
E>    and    rax, rcx
E>    ret    0
E>


А где тут минус

и and с чем-то не тем...
Тут или какой-то хитрый рюх или 1<<32 не в то посчитался, (лучше, конечно, 1ULL<<32 писать) или ещё чего...
Если таки это эквивалентный код, во что трудно поверить, то может он и быстрее, кстати...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.