[llvm] r283880 - [X86][SSE] Regenerate vsplit and tests

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 11 06:51:44 PDT 2016


Author: rksimon
Date: Tue Oct 11 08:51:44 2016
New Revision: 283880

URL: http://llvm.org/viewvc/llvm-project?rev=283880&view=rev
Log:
[X86][SSE] Regenerate vsplit and tests

To make it more obvious how bad some of that truncation code is....

Modified:
    llvm/trunk/test/CodeGen/X86/vsplit-and.ll

Modified: llvm/trunk/test/CodeGen/X86/vsplit-and.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/vsplit-and.ll?rev=283880&r1=283879&r2=283880&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/vsplit-and.ll (original)
+++ llvm/trunk/test/CodeGen/X86/vsplit-and.ll Tue Oct 11 08:51:44 2016
@@ -1,9 +1,17 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc < %s -mtriple=x86_64-linux -mcpu=penryn |  FileCheck %s
 
 define void @t0(<2 x i64>* %dst, <2 x i64> %src1, <2 x i64> %src2) nounwind readonly {
-; CHECK: t0
-; CHECK: pand
-; CHECK: ret
+; CHECK-LABEL: t0:
+; CHECK:       # BB#0:
+; CHECK-NEXT:    pxor %xmm2, %xmm2
+; CHECK-NEXT:    pcmpeqq %xmm2, %xmm0
+; CHECK-NEXT:    pcmpeqd %xmm3, %xmm3
+; CHECK-NEXT:    pxor %xmm0, %xmm3
+; CHECK-NEXT:    pcmpeqq %xmm2, %xmm1
+; CHECK-NEXT:    pandn %xmm3, %xmm1
+; CHECK-NEXT:    movdqa %xmm1, (%rdi)
+; CHECK-NEXT:    retq
   %cmp1 = icmp ne <2 x i64> %src1, zeroinitializer
   %cmp2 = icmp ne <2 x i64> %src2, zeroinitializer
   %t1 = and <2 x i1> %cmp1, %cmp2
@@ -13,9 +21,48 @@ define void @t0(<2 x i64>* %dst, <2 x i6
 }
 
 define void @t2(<3 x i64>* %dst, <3 x i64> %src1, <3 x i64> %src2) nounwind readonly {
-; CHECK: t2
-; CHECK: pand
-; CHECK: ret
+; CHECK-LABEL: t2:
+; CHECK:       # BB#0:
+; CHECK-NEXT:    movd %r9, %xmm1
+; CHECK-NEXT:    movd %r8, %xmm0
+; CHECK-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
+; CHECK-NEXT:    movd %rdx, %xmm1
+; CHECK-NEXT:    movd %rsi, %xmm2
+; CHECK-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm1[0]
+; CHECK-NEXT:    movd %rcx, %xmm1
+; CHECK-NEXT:    movq {{.*#+}} xmm3 = mem[0],zero
+; CHECK-NEXT:    pxor %xmm4, %xmm4
+; CHECK-NEXT:    pcmpeqq %xmm4, %xmm1
+; CHECK-NEXT:    pcmpeqd %xmm5, %xmm5
+; CHECK-NEXT:    pxor %xmm5, %xmm1
+; CHECK-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[0,1,0,2]
+; CHECK-NEXT:    pcmpeqq %xmm4, %xmm2
+; CHECK-NEXT:    pxor %xmm5, %xmm2
+; CHECK-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[0,2,2,3]
+; CHECK-NEXT:    pblendw {{.*#+}} xmm2 = xmm2[0,1,2,3],xmm1[4,5,6,7]
+; CHECK-NEXT:    pslld $31, %xmm2
+; CHECK-NEXT:    psrad $31, %xmm2
+; CHECK-NEXT:    pcmpeqq %xmm4, %xmm3
+; CHECK-NEXT:    pxor %xmm5, %xmm3
+; CHECK-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[0,1,0,2]
+; CHECK-NEXT:    pcmpeqq %xmm4, %xmm0
+; CHECK-NEXT:    pxor %xmm5, %xmm0
+; CHECK-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[0,2,2,3]
+; CHECK-NEXT:    pblendw {{.*#+}} xmm0 = xmm0[0,1,2,3],xmm1[4,5,6,7]
+; CHECK-NEXT:    pslld $31, %xmm0
+; CHECK-NEXT:    psrad $31, %xmm0
+; CHECK-NEXT:    pand %xmm2, %xmm0
+; CHECK-NEXT:    pmovzxdq {{.*#+}} xmm1 = xmm0[0],zero,xmm0[1],zero
+; CHECK-NEXT:    psllq $63, %xmm1
+; CHECK-NEXT:    psrad $31, %xmm1
+; CHECK-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
+; CHECK-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[2,2,3,3]
+; CHECK-NEXT:    psllq $63, %xmm0
+; CHECK-NEXT:    psrad $31, %xmm0
+; CHECK-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,3,3]
+; CHECK-NEXT:    movq %xmm0, 16(%rdi)
+; CHECK-NEXT:    movdqa %xmm1, (%rdi)
+; CHECK-NEXT:    retq
   %cmp1 = icmp ne <3 x i64> %src1, zeroinitializer
   %cmp2 = icmp ne <3 x i64> %src2, zeroinitializer
   %t1 = and <3 x i1> %cmp1, %cmp2




More information about the llvm-commits mailing list