blob: d6726be1db6a3cce3062d62a2feb7c9bced10c32 [file] [log] [blame]
Evan Cheng6c249332008-03-24 21:52:23 +00001; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse41 -o %t -f
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}