blob: c1d431f1c1c71d01cbf9b21b9c27af09b53469d6 [file] [log] [blame]
Dan Gohman2d65d352009-08-25 15:38:29 +00001; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse41 -o %t
Evan Cheng411fc172008-05-13 08:35:03 +00002; RUN: grep extractps %t | count 1
3; RUN: grep pextrd %t | count 1
4; RUN: not grep pshufd %t
5; RUN: not grep movss %t
Evan Cheng6c249332008-03-24 21:52:23 +00006
Evan Cheng411fc172008-05-13 08:35:03 +00007define void @t1(float* %R, <4 x float>* %P1) nounwind {
Evan Cheng6c249332008-03-24 21:52:23 +00008 %X = load <4 x float>* %P1
9 %tmp = extractelement <4 x float> %X, i32 3
10 store float %tmp, float* %R
11 ret void
12}
13
Evan Cheng411fc172008-05-13 08:35:03 +000014define float @t2(<4 x float>* %P1) nounwind {
Evan Cheng6c249332008-03-24 21:52:23 +000015 %X = load <4 x float>* %P1
16 %tmp = extractelement <4 x float> %X, i32 2
17 ret float %tmp
18}
19
Evan Cheng411fc172008-05-13 08:35:03 +000020define void @t3(i32* %R, <4 x i32>* %P1) nounwind {
Evan Cheng6c249332008-03-24 21:52:23 +000021 %X = load <4 x i32>* %P1
22 %tmp = extractelement <4 x i32> %X, i32 3
23 store i32 %tmp, i32* %R
24 ret void
25}
26
Evan Cheng411fc172008-05-13 08:35:03 +000027define i32 @t4(<4 x i32>* %P1) nounwind {
Evan Cheng6c249332008-03-24 21:52:23 +000028 %X = load <4 x i32>* %P1
29 %tmp = extractelement <4 x i32> %X, i32 3
30 ret i32 %tmp
31}