gpt4 book ai didi

c++ - 如何将两组 4 条短裤加载到 XMM 寄存器中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:30 30 4
gpt4 key购买 nike

我刚刚开始使用 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}

请注意,AB 没有对齐要求。但我建议无论如何都将它们都对齐到 8 个字节。

关于c++ - 如何将两组 4 条短裤加载到 XMM 寄存器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226984/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com