Начну издалека. Многим известно, что разрядность процессора не совпадает с разрядностью АЛУ, что приводит к невозможности использовании больших констант на битовых операциях (причем это проявляется не только при использовании ассемблеров, но и, к примеру языка C). Например, на современных amd64 системах, АЛУ 32-разрядный, поэтому чтоб например сделать битовый сдвиг влево на 52 бита придется делать:
Код: Выделить всё
так
a=(a<<31)<<21;
или так
a*=0x10000000000000;Соотвественно можно замерить что быстрее выполняется (на x86 умножение/деление настолько кривое, что я почти не сомневаюсь, что два сдвига быстрее).
А теперь вопрос, как с этим обстоят дела на GPU?