[llvm] [X86] LowerShiftByScalarImmediate - move shl(x,1) -> add(freeze(x),freeze(x)) to X86FixupInstTunings (PR #161007)
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 28 08:16:39 PDT 2025
================
@@ -3543,26 +3543,26 @@ define <2 x i64> @test_128_i64_x_2_140737488289792_mask_shl_18(<2 x i64> %a0) {
define <2 x i64> @test_128_i64_x_2_18446744065119617024_mask_shl_1(<2 x i64> %a0) {
; X86-SSE2-LABEL: test_128_i64_x_2_18446744065119617024_mask_shl_1:
; X86-SSE2: # %bb.0:
-; X86-SSE2-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
; X86-SSE2-NEXT: paddq %xmm0, %xmm0
+; X86-SSE2-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0
; X86-SSE2-NEXT: retl
;
; X86-AVX-LABEL: test_128_i64_x_2_18446744065119617024_mask_shl_1:
; X86-AVX: # %bb.0:
-; X86-AVX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
; X86-AVX-NEXT: vpaddq %xmm0, %xmm0, %xmm0
+; X86-AVX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}, %xmm0, %xmm0
; X86-AVX-NEXT: retl
;
; X64-SSE2-LABEL: test_128_i64_x_2_18446744065119617024_mask_shl_1:
; X64-SSE2: # %bb.0:
-; X64-SSE2-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
; X64-SSE2-NEXT: paddq %xmm0, %xmm0
+; X64-SSE2-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
; X64-SSE2-NEXT: retq
;
; X64-AVX-LABEL: test_128_i64_x_2_18446744065119617024_mask_shl_1:
; X64-AVX: # %bb.0:
-; X64-AVX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
; X64-AVX-NEXT: vpaddq %xmm0, %xmm0, %xmm0
+; X64-AVX-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
----------------
RKSimon wrote:
The constant has changed as you'd expect:
```
.LCPI0_0:
.quad -8589934592 # 0xfffffffe00000000
.quad -8589934592 # 0xfffffffe00000000
test_128_i64_x_2_18446744065119617024_mask_shl_1: # @test_128_i64_x_2_18446744065119617024_mask_shl_1
pand .LCPI0_0(%rip), %xmm0
paddq %xmm0, %xmm0
retq
```
->
```
.LCPI0_0:
.quad -17179869184 # 0xfffffffc00000000
.quad -17179869184 # 0xfffffffc00000000
test_128_i64_x_2_18446744065119617024_mask_shl_1: # @test_128_i64_x_2_18446744065119617024_mask_shl_1
paddq %xmm0, %xmm0
pand .LCPI0_0(%rip), %xmm0
retq
```
https://github.com/llvm/llvm-project/pull/161007
More information about the llvm-commits
mailing list