作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚开始使用 Visual C++ 2012 使用 SSE 内部函数,我需要一些指导(没有双关语意)。
我有两个数组,每个数组包含 4 个 signed short
(因此每个数组都是 64 位的,总共 128 个)。我想将一个加载到 XMM 寄存器的高位,另一个加载到低位。我可以使用 SSE 内在函数有效地完成这项工作吗?如果是,怎么办?
最佳答案
SSE2:
short A[] = {0,1,2,3};
short B[] = {4,5,6,7};
__m128i a,b,v;
a = _mm_loadl_epi64((const __m128i*)A);
b = _mm_loadl_epi64((const __m128i*)B);
v = _mm_unpacklo_epi64(a,b);
// v = {0,1,2,3,4,5,6,7}
SSE4.1 + x64:
short A[] = {0,1,2,3};
short B[] = {4,5,6,7};
__m128i v;
v = _mm_loadl_epi64((const __m128i*)A);
v = _mm_insert_epi64(v,*(const long long*)B,1);
// v = {0,1,2,3,4,5,6,7}
请注意,A
或 B
没有对齐要求。但我建议无论如何都将它们都对齐到 8 个字节。
关于c++ - 如何将两组 4 条短裤加载到 XMM 寄存器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226984/
我将如何编写一段代码来与短片的第一个字节而不是第二部分? 例子:我有一个名为 inputShort 的 short,我希望这个 short 删除第二个字节中的所有值。所以我想用逻辑运算符将其与。 好吧
我写了一些使用字符串表示时间的代码,例如“0620”,但经过仔细思考后我意识到这些可以解析为短裤以比较性能和存储 yield 。 在单元测试中,我将一个短写为 0620 的值与返回值 620 进行比较
我是一名优秀的程序员,十分优秀!