[llvm] [X86] LowerShiftByScalarImmediate - vXi8 shl(X,2) - prefer PADDB+PADDB pair over PSLLW+PAND (PR #186095)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 2 02:28:26 PDT 2026


================
@@ -149,11 +149,12 @@ define <32 x i8> @vshift11(<32 x i8> %a) {
 define <32 x i8> @vshift12(<32 x i8> %a) {
 ; CHECK-LABEL: vshift12:
 ; CHECK:       # %bb.0:
-; CHECK-NEXT:    vpsllw $2, %xmm0, %xmm1
+; CHECK-NEXT:    vpaddb %xmm0, %xmm0, %xmm1
+; CHECK-NEXT:    vpaddb %xmm1, %xmm1, %xmm1
 ; CHECK-NEXT:    vextractf128 $1, %ymm0, %xmm0
-; CHECK-NEXT:    vpsllw $2, %xmm0, %xmm0
+; CHECK-NEXT:    vpaddb %xmm0, %xmm0, %xmm0
+; CHECK-NEXT:    vpaddb %xmm0, %xmm0, %xmm0
 ; CHECK-NEXT:    vinsertf128 $1, %xmm0, %ymm1, %ymm0
-; CHECK-NEXT:    vandps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
----------------
RKSimon wrote:

btver2 actually prefers it - sandybridge doesn't care - lower #instructions but a 32-byte constant pool entry can be a tricky tradeoff

https://github.com/llvm/llvm-project/pull/186095


More information about the llvm-commits mailing list