gpt4 book ai didi

assembly - 查找 32 位整数中的最大值

转载 作者:行者123 更新时间:2023-12-02 22:04:32 28 4
gpt4 key购买 nike

SSE/SSE2 中是否有指令能够找到 4 个 32 位整数的最大值/最小值?我尝试搜索一些内容,但只找到了 16/8 位的说明。提前致谢。

https://software.intel.com/sites/landingpage/IntrinsicsGuide/#text=max&expand=4465,4463,3278&techs=SSE,SSE2

最佳答案

没有 SSE4.1 的最佳方法似乎是 32 位比较,然后使用该掩码进行混合:AND(mask, x) OR ANDN(mask, y)

Agner Fog's vector class librarya function for it :

// function max: a > b ? a : b
static inline Vec4i max(Vec4i const & a, Vec4i const & b) {
#if INSTRSET >= 5 // SSE4.1 supported
return _mm_max_epi32(a,b);
#else
__m128i greater = _mm_cmpgt_epi32(a,b);
return selectb(greater,a,b);
#endif
}

我对该库有一些大部分未经测试且尚未合并的更改 on github 。我的大部分更改都是对我有时间研究的几个函数(整数水平求和、四字算术右移、四字乘法)的重大改进。 (欢迎测试/反馈!)

但是很多现有代码都非常好,所以我绝对推荐使用这些包装类。当您在启用优化的情况下进行构建时,它们不会增加开销,并且它们使语法变得更加容易。例如a+b 而不是 _mm_add_epi32(a,b)

关于assembly - 查找 32 位整数中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37636192/

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