相关疑难解决方法(0)

如何使用SSE执行uint32/float转换?

在SSE中有一个函数_mm_cvtepi32_ps(__m128i input),它接受32位宽的有符号整数(int32_t)的输入向量并将它们转换为floats.

现在,我想将输入整数解释为未签名.但是没有功能_mm_cvtepu32_ps,我找不到一个实现.你知道我在哪里可以找到这样的功能,或者至少对实现有所暗示吗?为了说明结果的差异:

unsigned int a = 2480160505; // 10010011 11010100 00111110 11111001   
float a1 = a; // 01001111 00010011 11010100 00111111;  
float a2 = (signed int)a; // 11001110 11011000 01010111 10000010
Run Code Online (Sandbox Code Playgroud)

c x86 sse simd

7
推荐指数
2
解决办法
2057
查看次数

将整数向量转换为0到1之间的浮点数的最快速精确方法

考虑随机生成的__m256i向量.是否有更快的精确方法将它们转换为(包含)和(仅)__m256之间的浮动向量而不是除以?01float(1ull<<32)

这是我到目前为止所尝试的,iRand输入在哪里,ans是输出:

const __m256 fRand = _mm256_cvtepi32_ps(iRand);
const __m256 normalized = _mm256_div_ps(fRand, _mm256_set1_ps(float(1ull<<32)));
const __m256 ans = _mm256_add_ps(normalized, _mm256_set1_ps(0.5f));
Run Code Online (Sandbox Code Playgroud)

c random simd vectorization avx2

6
推荐指数
1
解决办法
240
查看次数

标签 统计

c ×2

simd ×2

avx2 ×1

random ×1

sse ×1

vectorization ×1

x86 ×1