58 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-linux -mcpu=penryn | FileCheck %s3 4define void @t0(ptr %dst, <2 x i64> %src1, <2 x i64> %src2) nounwind readonly {5; CHECK-LABEL: t0:6; CHECK: # %bb.0:7; CHECK-NEXT: pxor %xmm2, %xmm28; CHECK-NEXT: pcmpeqq %xmm2, %xmm09; CHECK-NEXT: pcmpeqq %xmm2, %xmm110; CHECK-NEXT: por %xmm0, %xmm111; CHECK-NEXT: pcmpeqd %xmm0, %xmm012; CHECK-NEXT: pxor %xmm1, %xmm013; CHECK-NEXT: movdqa %xmm0, (%rdi)14; CHECK-NEXT: retq15 %cmp1 = icmp ne <2 x i64> %src1, zeroinitializer16 %cmp2 = icmp ne <2 x i64> %src2, zeroinitializer17 %t1 = and <2 x i1> %cmp1, %cmp218 %t2 = sext <2 x i1> %t1 to <2 x i64>19 store <2 x i64> %t2, ptr %dst20 ret void21}22 23define void @t2(ptr %dst, <3 x i64> %src1, <3 x i64> %src2) nounwind readonly {24; CHECK-LABEL: t2:25; CHECK: # %bb.0:26; CHECK-NEXT: movq %r9, %xmm027; CHECK-NEXT: movq %r8, %xmm128; CHECK-NEXT: punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm0[0]29; CHECK-NEXT: movq %rdx, %xmm030; CHECK-NEXT: movq %rsi, %xmm231; CHECK-NEXT: punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm0[0]32; CHECK-NEXT: movq %rcx, %xmm033; CHECK-NEXT: movq {{.*#+}} xmm3 = mem[0],zero34; CHECK-NEXT: pxor %xmm4, %xmm435; CHECK-NEXT: pcmpeqq %xmm4, %xmm236; CHECK-NEXT: pcmpeqq %xmm4, %xmm037; CHECK-NEXT: pcmpeqd %xmm5, %xmm538; CHECK-NEXT: pcmpeqq %xmm4, %xmm139; CHECK-NEXT: por %xmm2, %xmm140; CHECK-NEXT: pcmpeqq %xmm4, %xmm341; CHECK-NEXT: por %xmm0, %xmm342; CHECK-NEXT: packssdw %xmm3, %xmm143; CHECK-NEXT: pxor %xmm5, %xmm144; CHECK-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,2,2,2]45; CHECK-NEXT: pslld $31, %xmm046; CHECK-NEXT: psrad $31, %xmm047; CHECK-NEXT: pmovsxdq %xmm1, %xmm148; CHECK-NEXT: movdqa %xmm1, (%rdi)49; CHECK-NEXT: movq %xmm0, 16(%rdi)50; CHECK-NEXT: retq51 %cmp1 = icmp ne <3 x i64> %src1, zeroinitializer52 %cmp2 = icmp ne <3 x i64> %src2, zeroinitializer53 %t1 = and <3 x i1> %cmp1, %cmp254 %t2 = sext <3 x i1> %t1 to <3 x i64>55 store <3 x i64> %t2, ptr %dst56 ret void57}58