[llvm] 0aad055 - [X86] Add test showing failure to fold freeze(insertps(x,y,i)) -> insertps(freeze(x),freeze(y),i) (#160852)

via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 26 04:07:00 PDT 2025


Author: Simon Pilgrim
Date: 2025-09-26T11:06:55Z
New Revision: 0aad055f30d8148057a71a2f5f1cdb2d1bab2eee

URL: https://github.com/llvm/llvm-project/commit/0aad055f30d8148057a71a2f5f1cdb2d1bab2eee
DIFF: https://github.com/llvm/llvm-project/commit/0aad055f30d8148057a71a2f5f1cdb2d1bab2eee.diff

LOG: [X86] Add test showing failure to fold freeze(insertps(x,y,i)) -> insertps(freeze(x),freeze(y),i) (#160852)

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/vector-shuffle-combining-sse41.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/vector-shuffle-combining-sse41.ll b/llvm/test/CodeGen/X86/vector-shuffle-combining-sse41.ll
index d3e4906450e43..bec33492bbf1e 100644
--- a/llvm/test/CodeGen/X86/vector-shuffle-combining-sse41.ll
+++ b/llvm/test/CodeGen/X86/vector-shuffle-combining-sse41.ll
@@ -7,6 +7,7 @@
 ; Combine tests involving SSE41 target shuffles (BLEND,INSERTPS,MOVZX)
 
 declare <16 x i8> @llvm.x86.ssse3.pshuf.b.128(<16 x i8>, <16 x i8>)
+declare <4 x float> @llvm.x86.sse41.insertps(<4 x float>, <4 x float>, i8)
 
 define <16 x i8> @combine_vpshufb_as_movzx(<16 x i8> %a0) {
 ; SSE-LABEL: combine_vpshufb_as_movzx:
@@ -58,6 +59,25 @@ define <4 x i32> @combine_blend_of_permutes_v4i32(<2 x i64> %a0, <2 x i64> %a1)
   ret <4 x i32> %r
 }
 
+define <4 x float> @freeze_insertps(<4 x float> %a0, <4 x float> %a1) {
+; SSE-LABEL: freeze_insertps:
+; SSE:       # %bb.0:
+; SSE-NEXT:    insertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]
+; SSE-NEXT:    insertps {{.*#+}} xmm1 = xmm0[1],xmm1[1,2,3]
+; SSE-NEXT:    movaps %xmm1, %xmm0
+; SSE-NEXT:    retq
+;
+; AVX-LABEL: freeze_insertps:
+; AVX:       # %bb.0:
+; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]
+; AVX-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[1],xmm1[1,2,3]
+; AVX-NEXT:    retq
+  %s0 = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a0, <4 x float> %a1, i8 16)
+  %f0 = freeze <4 x float> %s0
+  %s1 = call <4 x float> @llvm.x86.sse41.insertps(<4 x float> %a1, <4 x float> %f0, i8 64)
+  ret <4 x float> %s1
+}
+
 define <16 x i8> @PR50049(ptr %p1, ptr %p2) {
 ; SSE-LABEL: PR50049:
 ; SSE:       # %bb.0:


        


More information about the llvm-commits mailing list