在AVX2中的钻头不/补充
Bitwise NOT/complement in AVX2
似乎在Avx2中没有固有的固有性。我是否想念它,还是应该做类似_mm256_xor_si256(a, _mm256_set1_epi64x(-1LL))
之类的事情?如果后者,它是最佳的吗?汇编中是否也没有矢量说明?
是的,唯一的simd bitwise不是pxor/xorps,in mmx,sse*和avx1/2。
avx512f可以避免使用vpternlogd same,same,same
的单独的向量常数,并立即使用0x55
。(有关它的更多详细信息与vpxord
:AVX中没有缺少我的副本的答案?)
理想情况下,您可以安排算法,以避免实际不需要任何东西。例如,使用PANDN
代替PAND
。或以后倒转作为其他事物的一部分。但是,如果您最终需要倒转,那就是
可以使用vpcmpeqd same,same,same
生成全部常数。使用固有的内容,让编译器通过编写_mm256_set1_epi32(-1)
为您做到这一点。(元素大小显然与set1(-1)
无关,使用任何对您的算法具有语义意义的方法。)
相关文章:
- 使用 SSE2 和 AVX2 编译库
- AVX2 整数乘以有符号 8 位元素,产生有符号 16 位结果?
- AVX2:计算 512 个浮点数组的点积
- 使用 AVX2 C++进行选择性加载
- 是否有任何 2 补充平台/编译器,其中有符号移位不做通常的事情?
- 使用 AVX2 指令左移 128 位数字
- AVX2 代码比没有 AVX2 的代码慢
- 在AVX2中再现_mm256_sllv_epi16和_mm256-slv_epi8
- AVX2收集指令使用详细信息
- 防止gcc破坏我的AVX2内部复制到REP MOVS
- AVX2列填充计数算法分别针对每个位列
- AVX2 SIMD Instrinsics 16 位到 8 位,反之亦然
- 当我在支持 avx2 的机器上编译并在另一台仅支持 avx 的机器上运行二进制文件时会发生什么?
- 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压缩到__m256的最快方法
- SSE 整数 2^n 的 2 次方,对于没有 AVX2 的 32 位整数
- 如何在 AVX2 中实现车道交叉逻辑逐位移位/旋转(左和右)
- AVX2浮子比较并获得0.0或1.0,而不是all-0或全零件
- 用AVX上的AVX2/AVX512编译C 代码
- AVX2:分配给类成员时出现分段错误__m256i
- 在AVX2中的钻头不/补充