Home | History | Annotate | Download | only in PowerPC
      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
     44