1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mcpu=pwr7 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s \ 3*9880d681SAndroid Build Coastguard Worker; RUN: --check-prefix=CHECK-BE 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test0f(<4 x float> %a) { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x float> %a to <16 x i8> 8*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3> 9*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x float> 10*9880d681SAndroid Build Coastguard Worker ret <4 x float> %2 11*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test0f 12*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 3 13*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test0f 14*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 0 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test1f(<4 x float> %a) { 18*9880d681SAndroid Build Coastguard Workerentry: 19*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x float> %a to <16 x i8> 20*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7> 21*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x float> 22*9880d681SAndroid Build Coastguard Worker ret <4 x float> %2 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1f 24*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 2 25*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test1f 26*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 1 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test2f(<4 x float> %a) { 30*9880d681SAndroid Build Coastguard Workerentry: 31*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x float> %a to <16 x i8> 32*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11> 33*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x float> 34*9880d681SAndroid Build Coastguard Worker ret <4 x float> %2 35*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2f 36*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 1 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2f 38*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 2 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test3f(<4 x float> %a) { 42*9880d681SAndroid Build Coastguard Workerentry: 43*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x float> %a to <16 x i8> 44*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15> 45*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x float> 46*9880d681SAndroid Build Coastguard Worker ret <4 x float> %2 47*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3f 48*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 0 49*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test3f 50*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 3 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test0si(<4 x i32> %a) { 54*9880d681SAndroid Build Coastguard Workerentry: 55*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 56*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3> 57*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 58*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 59*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test0si 60*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 3 61*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test0si 62*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 0 63*9880d681SAndroid Build Coastguard Worker} 64*9880d681SAndroid Build Coastguard Worker 65*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test1si(<4 x i32> %a) { 66*9880d681SAndroid Build Coastguard Workerentry: 67*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 68*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7> 69*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 70*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 71*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1si 72*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 2 73*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test1si 74*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 1 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test2si(<4 x i32> %a) { 78*9880d681SAndroid Build Coastguard Workerentry: 79*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 80*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11> 81*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 82*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 83*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2si 84*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 1 85*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test2si 86*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 2 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test3si(<4 x i32> %a) { 90*9880d681SAndroid Build Coastguard Workerentry: 91*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 92*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15> 93*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 94*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 95*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3si 96*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 0 97*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test3si 98*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 3 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test0ui(<4 x i32> %a) { 102*9880d681SAndroid Build Coastguard Workerentry: 103*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 104*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3, i32 0, i32 1, i32 2, i32 3> 105*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 106*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 107*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test0ui 108*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 3 109*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test0ui 110*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 0 111*9880d681SAndroid Build Coastguard Worker} 112*9880d681SAndroid Build Coastguard Worker 113*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test1ui(<4 x i32> %a) { 114*9880d681SAndroid Build Coastguard Workerentry: 115*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 116*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7, i32 4, i32 5, i32 6, i32 7> 117*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 118*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 119*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test1ui 120*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 2 121*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test1ui 122*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 1 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test2ui(<4 x i32> %a) { 126*9880d681SAndroid Build Coastguard Workerentry: 127*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 128*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11, i32 8, i32 9, i32 10, i32 11> 129*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 130*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 131*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test2ui 132*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 1 133*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test2ui 134*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 2 135*9880d681SAndroid Build Coastguard Worker} 136*9880d681SAndroid Build Coastguard Worker 137*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test3ui(<4 x i32> %a) { 138*9880d681SAndroid Build Coastguard Workerentry: 139*9880d681SAndroid Build Coastguard Worker %0 = bitcast <4 x i32> %a to <16 x i8> 140*9880d681SAndroid Build Coastguard Worker %1 = shufflevector <16 x i8> %0, <16 x i8> undef, <16 x i32> <i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15, i32 12, i32 13, i32 14, i32 15> 141*9880d681SAndroid Build Coastguard Worker %2 = bitcast <16 x i8> %1 to <4 x i32> 142*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 143*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: test3ui 144*9880d681SAndroid Build Coastguard Worker; CHECK xxspltw: 34, 34, 0 145*9880d681SAndroid Build Coastguard Worker; CHECK-BE-LABEL: test3ui 146*9880d681SAndroid Build Coastguard Worker; CHECK-BE: xxspltw 34, 34, 3 147*9880d681SAndroid Build Coastguard Worker} 148