1 ; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=corei7-avx | FileCheck %s 2 3 define <4 x i3> @test1(<4 x i3>* %in) nounwind { 4 %ret = load <4 x i3>* %in, align 1 5 ret <4 x i3> %ret 6 } 7 8 ; CHECK: test1 9 ; CHECK: movzwl 10 ; CHECK: shrl $3 11 ; CHECK: andl $7 12 ; CHECK: andl $7 13 ; CHECK: vmovd 14 ; CHECK: pinsrd $1 15 ; CHECK: shrl $6 16 ; CHECK: andl $7 17 ; CHECK: pinsrd $2 18 ; CHECK: shrl $9 19 ; CHECK: andl $7 20 ; CHECK: pinsrd $3 21 ; CHECK: ret 22 23 define <4 x i1> @test2(<4 x i1>* %in) nounwind { 24 %ret = load <4 x i1>* %in, align 1 25 ret <4 x i1> %ret 26 } 27 28 ; CHECK: test2 29 ; CHECK: movzbl 30 ; CHECK: shrl 31 ; CHECK: andl $1 32 ; CHECK: andl $1 33 ; CHECK: vmovd 34 ; CHECK: pinsrd $1 35 ; CHECK: shrl $2 36 ; CHECK: andl $1 37 ; CHECK: pinsrd $2 38 ; CHECK: shrl $3 39 ; CHECK: andl $1 40 ; CHECK: pinsrd $3 41 ; CHECK: ret 42 43 define <4 x i64> @test3(<4 x i1>* %in) nounwind { 44 %wide.load35 = load <4 x i1>* %in, align 1 45 %sext = sext <4 x i1> %wide.load35 to <4 x i64> 46 ret <4 x i64> %sext 47 } 48 49 ; CHECK: test3 50 ; CHECK: movzbl 51 ; CHECK: shrl 52 ; CHECK: andl $1 53 ; CHECK: andl $1 54 ; CHECK: vmovd 55 ; CHECK: pinsrd $1 56 ; CHECK: shrl $2 57 ; CHECK: andl $1 58 ; CHECK: pinsrd $2 59 ; CHECK: shrl $3 60 ; CHECK: andl $1 61 ; CHECK: pinsrd $3 62 ; CHECK: pslld 63 ; CHECK: psrad 64 ; CHECK: pmovsxdq 65 ; CHECK: pmovsxdq 66 ; CHECK: ret 67