gpt4 book ai didi

intrinsics - 如何广播__m256i的最低字?

转载 作者:行者123 更新时间:2023-12-04 18:00:53 26 4
gpt4 key购买 nike

我正在尝试使用内在函数编写 AVX2 代码。想知道如何使用 Intel 内在函数将 YMM 中的最低字广播到整个 YMM。我知道用汇编代码我可以写

vpbroadcastw ymm1, xmm0

因为 ymm0 的最低字也是 xmm0 的最低字。我有一个变量 x,它是 YMM 中的一个值。但
_mm256_broadcastw_epi16((__m128i) x)

其中 x 是 __m256i 返回错误——不能转换两个不同大小的东西。
rq_recip3_new.c:381:5: error: can’t convert a value of type ‘__m256i {aka __vector(4) long long int}’ to vector type ‘__vector(2) long long int’ which has different size
我认为这并不重要,但我的机器使用 gcc 6.4.1 和 7.3(分别为 Fedora 25 和 Ubuntu LTS 16.04)。

最佳答案

以下应该工作:

__m256i broadcast_word(__m256i x){
return _mm256_broadcastw_epi16(_mm256_castsi256_si128(x));
}

使用内在函数, _mm256_castsi256_si128是从 256 位转换到 128 位的正确方法。

Godbolt Compiler Explorer这编译为(gcc 7.3):
broadcast_word:
vpbroadcastw ymm0, xmm0
ret

关于intrinsics - 如何广播__m256i的最低字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53968488/

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