X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FX86%2Favx-shuffle-x86_32.ll;h=a24bd46af41be72e7abd57bfbbf4c27d419f8cb0;hb=faf046c6c0a561e966f4ac671392c4b8e15c35a2;hp=78b4888cfa16ad0e888668f7f74a93e27250c150;hpb=8b2b8a18354546d534b72f912153a3252ab4b857;p=oota-llvm.git diff --git a/test/CodeGen/X86/avx-shuffle-x86_32.ll b/test/CodeGen/X86/avx-shuffle-x86_32.ll index 78b4888cfa1..a24bd46af41 100644 --- a/test/CodeGen/X86/avx-shuffle-x86_32.ll +++ b/test/CodeGen/X86/avx-shuffle-x86_32.ll @@ -1,8 +1,25 @@ -; RUN: llc < %s -mtriple=i686-pc-win32 -mcpu=corei7-avx -mattr=+avx | FileCheck %s +; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+avx | FileCheck %s +; Avoid unnecessary vinsertf128 define <4 x i64> @test1(<4 x i64> %a) nounwind { +; CHECK-LABEL: test1: +; CHECK: # BB#0: +; CHECK-NEXT: vextractf128 $1, %ymm0, %xmm1 +; CHECK-NEXT: vunpckhpd {{.*#+}} xmm0 = xmm0[1],xmm1[1] +; CHECK-NEXT: retl %b = shufflevector <4 x i64> %a, <4 x i64> undef, <4 x i32> ret <4 x i64>%b - ; CHECK-LABEL: test1: - ; CHECK-NOT: vinsertf128 - } +} + +define <8 x i16> @test2(<4 x i16>* %v) nounwind { +; CHECK-LABEL: test2: +; CHECK: # BB#0: +; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax +; CHECK-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero +; CHECK-NEXT: vmovq {{.*#+}} xmm0 = xmm0[0],zero +; CHECK-NEXT: retl + %v9 = load <4 x i16>, <4 x i16> * %v, align 8 + %v10 = shufflevector <4 x i16> %v9, <4 x i16> undef, <8 x i32> + %v11 = shufflevector <8 x i16> , <8 x i16> %v10, <8 x i32> + ret <8 x i16> %v11 +}