1 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=corei7 | FileCheck %s 2 3 4 define <2 x double> @test_x86_sse41_blend_pd(<2 x double> %a0, <2 x double> %a1) { 5 %1 = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a1, i32 0) 6 ret <2 x double> %1 7 } 8 ; CHECK-LABEL: test_x86_sse41_blend_pd 9 ; CHECK-NOT: blendpd 10 ; CHECK: ret 11 12 13 define <4 x float> @test_x86_sse41_blend_ps(<4 x float> %a0, <4 x float> %a1) { 14 %1 = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a1, i32 0) 15 ret <4 x float> %1 16 } 17 ; CHECK-LABEL: test_x86_sse41_blend_ps 18 ; CHECK-NOT: blendps 19 ; CHECK: ret 20 21 22 define <8 x i16> @test_x86_sse41_pblend_w(<8 x i16> %a0, <8 x i16> %a1) { 23 %1 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i32 0) 24 ret <8 x i16> %1 25 } 26 ; CHECK-LABEL: test_x86_sse41_pblend_w 27 ; CHECK-NOT: pblendw 28 ; CHECK: ret 29 30 31 define <2 x double> @test2_x86_sse41_blend_pd(<2 x double> %a0, <2 x double> %a1) { 32 %1 = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a1, i32 -1) 33 ret <2 x double> %1 34 } 35 ; CHECK-LABEL: test2_x86_sse41_blend_pd 36 ; CHECK-NOT: blendpd 37 ; CHECK: movaps %xmm1, %xmm0 38 ; CHECK-NEXT: ret 39 40 41 define <4 x float> @test2_x86_sse41_blend_ps(<4 x float> %a0, <4 x float> %a1) { 42 %1 = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a1, i32 -1) 43 ret <4 x float> %1 44 } 45 ; CHECK-LABEL: test2_x86_sse41_blend_ps 46 ; CHECK-NOT: blendps 47 ; CHECK: movaps %xmm1, %xmm0 48 ; CHECK-NEXT: ret 49 50 51 define <8 x i16> @test2_x86_sse41_pblend_w(<8 x i16> %a0, <8 x i16> %a1) { 52 %1 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a1, i32 -1) 53 ret <8 x i16> %1 54 } 55 ; CHECK-LABEL: test2_x86_sse41_pblend_w 56 ; CHECK-NOT: pblendw 57 ; CHECK: movaps %xmm1, %xmm0 58 ; CHECK-NEXT: ret 59 60 61 define <2 x double> @test3_x86_sse41_blend_pd(<2 x double> %a0) { 62 %1 = call <2 x double> @llvm.x86.sse41.blendpd(<2 x double> %a0, <2 x double> %a0, i32 7) 63 ret <2 x double> %1 64 } 65 ; CHECK-LABEL: test3_x86_sse41_blend_pd 66 ; CHECK-NOT: blendpd 67 ; CHECK: ret 68 69 70 define <4 x float> @test3_x86_sse41_blend_ps(<4 x float> %a0) { 71 %1 = call <4 x float> @llvm.x86.sse41.blendps(<4 x float> %a0, <4 x float> %a0, i32 7) 72 ret <4 x float> %1 73 } 74 ; CHECK-LABEL: test3_x86_sse41_blend_ps 75 ; CHECK-NOT: blendps 76 ; CHECK: ret 77 78 79 define <8 x i16> @test3_x86_sse41_pblend_w(<8 x i16> %a0) { 80 %1 = call <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16> %a0, <8 x i16> %a0, i32 7) 81 ret <8 x i16> %1 82 } 83 ; CHECK-LABEL: test3_x86_sse41_pblend_w 84 ; CHECK-NOT: pblendw 85 ; CHECK: ret 86 87 88 declare <2 x double> @llvm.x86.sse41.blendpd(<2 x double>, <2 x double>, i32) 89 declare <4 x float> @llvm.x86.sse41.blendps(<4 x float>, <4 x float>, i32) 90 declare <8 x i16> @llvm.x86.sse41.pblendw(<8 x i16>, <8 x i16>, i32) 91 92