При компиляции под x32 __uint64_t-переменные не желает сдвигаться на 32 разряда, что не так?
Переменная сдвигается не значения < 32, но но при сдвиге сильнее, значение обнуляется. По сути, переменная ведёт себя как 32-разрядная, но я же обьявляю её как unsigned long long int.
С чем связано подобное поведение?
В х32 в независимости от типа аргументов байтовый сдвиг всегда возвращает тип под размер регистра. Так что если значение уехало за х32 - то все, хотя ассемблерная вставка может помочь.