blob: dab5dd144f064a9c4f4035bd7b6760baa0d3de46 [file] [log] [blame]
Dan Gohman0a063102009-09-08 23:54:48 +00001; RUN: llc < %s -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}