如何将标志从一个 __m256 中的浮点数复制到另一个 __m256 中? [复制]

Posted

技术标签:

【中文标题】如何将标志从一个 __m256 中的浮点数复制到另一个 __m256 中? [复制]【英文标题】:How to copy the signs from floats in one __m256 into another __m256? [duplicate] 【发布时间】:2021-01-06 17:41:44 【问题描述】:

例如,将符号从40 复制到-104.2 必须产生104.2

我试过了:

__mm256 currVal = _mm256_set1_ps(-104.2f);
__m256 takeMySign = _mm256_set1_ps(40);
_mm256_blend_ps(currVal, takeMySign, 1<<31);

但它不起作用:(

【问题讨论】:

blend 需要一些位并使用它们来选择整个元素,而不是元素的位 @SeverinPappadeux 不太好,我正在尝试将一个元素的符号粘贴到另一个元素中。 【参考方案1】:

对于 AVX 和 AVX2,单精度(浮点)和双精度(双精度)已经解决了这个问题

https://***.com/a/57872652/9007125

【讨论】:

当您发现重复项并且没有更多内容可添加以调整问题详细信息的答案时,请将问题标记为重复项,而不是仅使用链接发布答案。我认为根据您自己的问题,您可以单枪匹马地关闭副本,就像金徽章持有者可以做到的那样。 @PeterCordes:这是我最初的反应,但这指向了一个相关但绝不重复的问题中的特定答案。 (这就是我投赞成票的原因。) @Bathsheba:如果您需要指定副本上的哪个答案最有用,则问题下的评论通常就足够了。 (或者可能是对问题的编辑,尽管通常问题不应该包含答案。)但在这种情况下,它只是链接到最佳答案,并且两个答案都非常相似。如果有的话,我会链接到 Bee 的更简单的答案,这让编译器不要对向量常量做任何愚蠢的事情。 (在ps和pd之间移植很简单)

以上是关于如何将标志从一个 __m256 中的浮点数复制到另一个 __m256 中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

使用最少的指令将 4 个单精度浮点数加载并复制到打包的 __m256 变量中

是否有相当于 _mm_slli_si128(__m128i a, int num) 的浮点数?

如何将小数字转换为python中的浮点数? [复制]

将 __m256 拆分为两个 __m128 寄存器

正确使用 _mm256_maskload_ps 将少于 8 个浮点数加载到 __m256

如何将“20,54”解析为 js 中的浮点数? [复制]