[llvm] 914df0e - [X86] known-pow2.ll - add srl vector test for #182562 (#185405)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 9 06:13:50 PDT 2026
Author: Simon Pilgrim
Date: 2026-03-09T13:13:42Z
New Revision: 914df0e7469feb0369552a2d17a05f2e8b52fc56
URL: https://github.com/llvm/llvm-project/commit/914df0e7469feb0369552a2d17a05f2e8b52fc56
DIFF: https://github.com/llvm/llvm-project/commit/914df0e7469feb0369552a2d17a05f2e8b52fc56.diff
LOG: [X86] known-pow2.ll - add srl vector test for #182562 (#185405)
Added:
Modified:
llvm/test/CodeGen/X86/known-pow2.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/known-pow2.ll b/llvm/test/CodeGen/X86/known-pow2.ll
index 677adcc5db1ba..66ceb7f9508f1 100644
--- a/llvm/test/CodeGen/X86/known-pow2.ll
+++ b/llvm/test/CodeGen/X86/known-pow2.ll
@@ -161,6 +161,38 @@ define i1 @pow2_srl(i32 %x, i32 %y) {
ret i1 %r
}
+define i32 @pow2_srl_vec(<4 x i32> %x, <4 x i32> %y, i32 %z, ptr %p) {
+; CHECK-LABEL: pow2_srl_vec:
+; CHECK: # %bb.0:
+; CHECK-NEXT: movl %edi, %eax
+; CHECK-NEXT: pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
+; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[2,3,3,3,4,5,6,7]
+; CHECK-NEXT: movdqa {{.*#+}} xmm2 = [1048576,4294967295,4294967295,0]
+; CHECK-NEXT: movdqa %xmm2, %xmm3
+; CHECK-NEXT: psrld %xmm0, %xmm3
+; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm1[0,1,1,1,4,5,6,7]
+; CHECK-NEXT: movdqa %xmm2, %xmm4
+; CHECK-NEXT: psrld %xmm0, %xmm4
+; CHECK-NEXT: movd %xmm4, %ecx
+; CHECK-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm3[0]
+; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
+; CHECK-NEXT: pshuflw {{.*#+}} xmm0 = xmm0[0,1,1,1,4,5,6,7]
+; CHECK-NEXT: psrld %xmm0, %xmm2
+; CHECK-NEXT: psrldq {{.*#+}} xmm2 = xmm2[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
+; CHECK-NEXT: shufps {{.*#+}} xmm4 = xmm4[0,3],xmm2[0,3]
+; CHECK-NEXT: movaps %xmm4, (%rsi)
+; CHECK-NEXT: xorl %edx, %edx
+; CHECK-NEXT: divl %ecx
+; CHECK-NEXT: movl %edx, %eax
+; CHECK-NEXT: retq
+ %yy = and <4 x i32> %y, splat (i32 7)
+ %d = lshr <4 x i32> <i32 1048576, i32 -1, i32 -1, i32 0>, %yy
+ store <4 x i32> %d, ptr %p
+ %elt = extractelement <4 x i32> %d, i32 0
+ %r = urem i32 %z, %elt
+ ret i32 %r
+}
+
define i1 @pow2_srl_fail0(i32 %x, i32 %y) {
; CHECK-LABEL: pow2_srl_fail0:
; CHECK: # %bb.0:
More information about the llvm-commits
mailing list