Этот вопрос возник в патче встроенного шифрования Power8. Патч обеспечивает AES с использованием встроенных функций Power8. При загрузке регистра VSX нам необходимо выполнить 128-битный обратный порядок байтов при работе на машине с прямым порядком байтов, чтобы убедиться, что регистр VSX загружает правильное значение.
Во время компиляции мы можем проверять такие макросы, как __BYTE_ORDER__
. Однако я считаю, что мы должны проверять регистр состояния машины во время выполнения. Если msr.le=1
, то выполняем endian swap. Также см. Руководство по среде программирования AltiVec, раздел 3.1.4. , п. 3-5.
Как проверить регистр состояния машины во время выполнения с помощью встроенных функций?