Merging r259798, r259835:
[oota-llvm.git] / test / CodeGen / PowerPC / vec_shuffle_p8vector_le.ll
1 ; RUN: llc -mcpu=pwr8 -mtriple=powerpc64le-unknown-linux-gnu -mattr=+power8-vector < %s | FileCheck %s
2
3 define void @VPKUDUM_unary(<2 x i64>* %A) {
4 entry:
5         %tmp = load <2 x i64>, <2 x i64>* %A
6         %tmp2 = bitcast <2 x i64> %tmp to <4 x i32>
7         %tmp3 = extractelement <4 x i32> %tmp2, i32 0
8         %tmp4 = extractelement <4 x i32> %tmp2, i32 2
9         %tmp5 = insertelement <4 x i32> undef, i32 %tmp3, i32 0
10         %tmp6 = insertelement <4 x i32> %tmp5, i32 %tmp4, i32 1
11         %tmp7 = insertelement <4 x i32> %tmp6, i32 %tmp3, i32 2
12         %tmp8 = insertelement <4 x i32> %tmp7, i32 %tmp4, i32 3
13         %tmp9 = bitcast <4 x i32> %tmp8 to <2 x i64>
14         store <2 x i64> %tmp9, <2 x i64>* %A
15         ret void
16 }
17
18 ; CHECK-LABEL: @VPKUDUM_unary
19 ; CHECK-NOT:   vperm
20 ; CHECK:       vpkudum
21
22 define void @VPKUDUM(<2 x i64>* %A, <2 x i64>* %B) {
23 entry:
24         %tmp = load <2 x i64>, <2 x i64>* %A
25         %tmp2 = bitcast <2 x i64> %tmp to <4 x i32>
26         %tmp3 = load <2 x i64>, <2 x i64>* %B
27         %tmp4 = bitcast <2 x i64> %tmp3 to <4 x i32>
28         %tmp5 = extractelement <4 x i32> %tmp2, i32 0
29         %tmp6 = extractelement <4 x i32> %tmp2, i32 2
30         %tmp7 = extractelement <4 x i32> %tmp4, i32 0
31         %tmp8 = extractelement <4 x i32> %tmp4, i32 2
32         %tmp9 = insertelement <4 x i32> undef, i32 %tmp5, i32 0
33         %tmp10 = insertelement <4 x i32> %tmp9, i32 %tmp6, i32 1
34         %tmp11 = insertelement <4 x i32> %tmp10, i32 %tmp7, i32 2
35         %tmp12 = insertelement <4 x i32> %tmp11, i32 %tmp8, i32 3
36         %tmp13 = bitcast <4 x i32> %tmp12 to <2 x i64>
37         store <2 x i64> %tmp13, <2 x i64>* %A
38         ret void
39 }
40
41 ; CHECK-LABEL: @VPKUDUM
42 ; CHECK-NOT:   vperm
43 ; CHECK:       vpkudum