- 它们是您可以在计算机上执行的最简单的“指令”之一(它们是我亲自实施的第一个指令)
- 执行 NOT(AND(x, y)) 会使执行时间 AND 依赖链长度 AND 代码大小加倍
- BMI1 引入了“andnot”,这是一个有意义的补充,是一个独特的操作 - 为什么不是这个问题标题中的那些?
- 您通常会在“它们占用宝贵的操作码空间”行中阅读答案,但随后我会查看 AVX512 引入的所有 kmask 操作,顺便说一句,其中包括 NAND 和 XNOR...... ............
- 优化编译器可以生成更好的代码
- SIMD 的情况会变得更糟 => 没有 NOT 指令,这需要三倍的执行时间、依赖链长度(编辑:<= not true;感谢@Peter Cordes)和代码大小,而不是加倍:
vpcmpeqd xmm15, xmm15, xmm15
vpor xmm0, xmm0, xmm1
vpandn xmm0, xmm0, xmm15
Run Code Online (Sandbox Code Playgroud)