Самый эффективный способ преобразовать вектор uint32 в вектор с плавающей запятой?

x86 не имеет инструкции SSE для преобразования из unsigned int32 в числа с плавающей запятой. Какая последовательность инструкций была бы наиболее эффективной для достижения этого?

РЕДАКТИРОВАТЬ: Чтобы уточнить, я хочу выполнить векторную последовательность следующей скалярной операции:

unsigned int x = ...
float res = (float)x;

EDIT2: Вот наивный алгоритм для выполнения скалярного преобразования.

unsigned int x = ...
float bias = 0.f;
if (x > 0x7fffffff) {
    bias = (float)0x80000000;
    x -= 0x80000000;
}
res = signed_convert(x) + bias;
5
задан ZachB 14 March 2018 в 22:29
поделиться