[llvm] 59d0e0d - [X86] Add test coverage for shl with freeze
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 14 05:36:16 PDT 2022
Author: Simon Pilgrim
Date: 2022-08-14T13:32:58+01:00
New Revision: 59d0e0d92a80236066e8d40eae6234ed6a51d512
URL: https://github.com/llvm/llvm-project/commit/59d0e0d92a80236066e8d40eae6234ed6a51d512
DIFF: https://github.com/llvm/llvm-project/commit/59d0e0d92a80236066e8d40eae6234ed6a51d512.diff
LOG: [X86] Add test coverage for shl with freeze
Added:
Modified:
llvm/test/CodeGen/X86/freeze-binary.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/freeze-binary.ll b/llvm/test/CodeGen/X86/freeze-binary.ll
index 53799357c6c7..8ed94b482959 100644
--- a/llvm/test/CodeGen/X86/freeze-binary.ll
+++ b/llvm/test/CodeGen/X86/freeze-binary.ll
@@ -321,3 +321,82 @@ define <8 x i16> @freeze_mul_vec_undef(<8 x i16> %a0) nounwind {
%z = mul <8 x i16> %y, <i16 4, i16 3, i16 2, i16 1, i16 1, i16 2, i16 undef, i16 4>
ret <8 x i16> %z
}
+
+define i32 @freeze_shl(i32 %a0) nounwind {
+; X86-LABEL: freeze_shl:
+; X86: # %bb.0:
+; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT: addl %eax, %eax
+; X86-NEXT: shll $2, %eax
+; X86-NEXT: retl
+;
+; X64-LABEL: freeze_shl:
+; X64: # %bb.0:
+; X64-NEXT: # kill: def $edi killed $edi def $rdi
+; X64-NEXT: leal (%rdi,%rdi), %eax
+; X64-NEXT: shll $2, %eax
+; X64-NEXT: retq
+ %x = shl i32 %a0, 1
+ %y = freeze i32 %x
+ %z = shl i32 %y, 2
+ ret i32 %z
+}
+
+define i32 @freeze_shl_outofrange(i32 %a0) nounwind {
+; X86-LABEL: freeze_shl_outofrange:
+; X86: # %bb.0:
+; X86-NEXT: shll $2, %eax
+; X86-NEXT: retl
+;
+; X64-LABEL: freeze_shl_outofrange:
+; X64: # %bb.0:
+; X64-NEXT: shll $2, %eax
+; X64-NEXT: retq
+ %x = shl i32 %a0, 32
+ %y = freeze i32 %x
+ %z = shl i32 %y, 2
+ ret i32 %z
+}
+
+define <2 x i64> @freeze_shl_vec(<2 x i64> %a0) nounwind {
+; X86-LABEL: freeze_shl_vec:
+; X86: # %bb.0:
+; X86-NEXT: movdqa %xmm0, %xmm1
+; X86-NEXT: psllq $2, %xmm1
+; X86-NEXT: psllq $1, %xmm0
+; X86-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
+; X86-NEXT: movapd %xmm0, %xmm1
+; X86-NEXT: psllq $2, %xmm1
+; X86-NEXT: psllq $1, %xmm0
+; X86-NEXT: movsd {{.*#+}} xmm0 = xmm1[0],xmm0[1]
+; X86-NEXT: retl
+;
+; X64-LABEL: freeze_shl_vec:
+; X64: # %bb.0:
+; X64-NEXT: vmovdqa {{.*#+}} xmm1 = [2,1]
+; X64-NEXT: vpsllvq %xmm1, %xmm0, %xmm0
+; X64-NEXT: vpsllvq %xmm1, %xmm0, %xmm0
+; X64-NEXT: retq
+ %x = shl <2 x i64> %a0, <i64 2, i64 1>
+ %y = freeze <2 x i64> %x
+ %z = shl <2 x i64> %y, <i64 2, i64 1>
+ ret <2 x i64> %z
+}
+
+define <2 x i64> @freeze_shl_vec_outofrange(<2 x i64> %a0) nounwind {
+; X86-LABEL: freeze_shl_vec_outofrange:
+; X86: # %bb.0:
+; X86-NEXT: psllq $1, %xmm0
+; X86-NEXT: psllq $2, %xmm0
+; X86-NEXT: retl
+;
+; X64-LABEL: freeze_shl_vec_outofrange:
+; X64: # %bb.0:
+; X64-NEXT: vpsllvq {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
+; X64-NEXT: vpsllq $2, %xmm0, %xmm0
+; X64-NEXT: retq
+ %x = shl <2 x i64> %a0, <i64 1, i64 64>
+ %y = freeze <2 x i64> %x
+ %z = shl <2 x i64> %y, <i64 2, i64 2>
+ ret <2 x i64> %z
+}
More information about the llvm-commits
mailing list