SSE intrinsic:如何将值存储到寄存器中
SSE intrinsics: How to store values to the register?
我是非常新的SSE内部和有一个小问题。我需要帮助加载整数值到__m128i
这是我已经有的:
__m128i a = _mm_set_epi16( 1, 1, 2, 2, 3, 3, 4, 4 );
__m128i b = _mm_set_epi16( 5, 5, 6, 6, 7, 7, 8, 8 );
//some magic
__m128i c // = (1,2,3,4,5,6,7,8);
如果你不想动态加载这些值,那么你可以使用set intrinsics:
加载数据到sse寄存器的内部函数
例如:
__m128i c = _mm_set_epi16(1,2,3,4,5,6,7,8); //load 8 16-bit integers to the register
我自己找到解决办法了
__m128i a = _mm_set_epi16( 1, 1, 2, 2, 3, 3, 4, 4 );
__m128i b = _mm_set_epi16( 5, 5, 6, 6, 7, 7, 8, 8 );
//some magic
__m128i mmShufflerVo = _mm_set_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 13, 12, 9, 8,5, 4,1, 0);
__m128i mmShufflerHi = _mm_set_epi8(13, 12, 9, 8, 5, 4, 1, 0, -1, -1, -1,
-1, -1, -1, -1, -1);
__m128i mmResult0_3 = _mm_shuffle_epi8(mmResult0_3, mmShufflerVo);
__m128i mmResult4_7 = _mm_shuffle_epi8(mmResult4_7, mmShufflerHi);
__m128i c = _mm_or_si128(mmResult0_3, mmResult4_7);
相关文章:
- 本质:使用__128寄存器
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在模拟器中使用并集来模拟CPU寄存器有多合适
- 使用英特尔 PIN 修改寄存器
- AVX 指令中寄存器和指针之间的客观差异
- 如何确定我的处理器有多少个 AVX 寄存器?
- 除非使用某些寄存器,否则函数挂钩会崩溃
- 有没有办法强制C++编译器将变量存储在寄存器中?
- 告诉编译器我希望变量始终存储在寄存器中的正确方法是什么
- 视觉 C++编译器在计算其参数之前是否允许将函数 ptr 存储在寄存器中?
- 从LLVM IR中的寄存器中存储该值
- 将临时对象保留在寄存器上以避免虚拟机中的额外存储/加载
- 将EAX寄存器存储在变量中
- 如何从汇编寄存器中获取字符串并将其存储在C++中的变量中
- 如何在"unsigned char"阵列上存储_m128 SSE 寄存器数据?
- 如何在使用高达 SSSE3 的内部函数后存储 16 字节寄存器中的 4 个字节
- 如何在寄存器中存储c++变量
- SSE intrinsic:如何将值存储到寄存器中
- 我实际上是否将对象存储在这里的 cpu 寄存器中
- 为什么我们不能总是在 C 中使用寄存器存储类?