1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=+crypto < %s | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 < %s | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker; FIXME: llc -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s 6*9880d681SAndroid Build Coastguard Worker; FIXME: The original intent was to add a check-next for the blr after every check. 7*9880d681SAndroid Build Coastguard Worker; However, this currently fails since we don't eliminate stores of the unused 8*9880d681SAndroid Build Coastguard Worker; locals. These stores are sometimes scheduled after the crypto instruction 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 11*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vpmsumb() #0 { 12*9880d681SAndroid Build Coastguard Workerentry: 13*9880d681SAndroid Build Coastguard Worker %a = alloca <16 x i8>, align 16 14*9880d681SAndroid Build Coastguard Worker %b = alloca <16 x i8>, align 16 15*9880d681SAndroid Build Coastguard Worker store <16 x i8> <i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15, i8 16>, <16 x i8>* %a, align 16 16*9880d681SAndroid Build Coastguard Worker store <16 x i8> <i8 113, i8 114, i8 115, i8 116, i8 117, i8 118, i8 119, i8 120, i8 121, i8 122, i8 123, i8 124, i8 125, i8 126, i8 127, i8 112>, <16 x i8>* %b, align 16 17*9880d681SAndroid Build Coastguard Worker %0 = load <16 x i8>, <16 x i8>* %a, align 16 18*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %b, align 16 19*9880d681SAndroid Build Coastguard Worker %2 = call <16 x i8> @llvm.ppc.altivec.crypto.vpmsumb(<16 x i8> %0, <16 x i8> %1) 20*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %2 21*9880d681SAndroid Build Coastguard Worker; CHECK: vpmsumb 2, 22*9880d681SAndroid Build Coastguard Worker} 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 25*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.ppc.altivec.crypto.vpmsumb(<16 x i8>, <16 x i8>) #1 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 28*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vpmsumh() #0 { 29*9880d681SAndroid Build Coastguard Workerentry: 30*9880d681SAndroid Build Coastguard Worker %a = alloca <8 x i16>, align 16 31*9880d681SAndroid Build Coastguard Worker %b = alloca <8 x i16>, align 16 32*9880d681SAndroid Build Coastguard Worker store <8 x i16> <i16 258, i16 772, i16 1286, i16 1800, i16 2314, i16 2828, i16 3342, i16 3856>, <8 x i16>* %a, align 16 33*9880d681SAndroid Build Coastguard Worker store <8 x i16> <i16 29042, i16 29556, i16 30070, i16 30584, i16 31098, i16 31612, i16 32126, i16 32624>, <8 x i16>* %b, align 16 34*9880d681SAndroid Build Coastguard Worker %0 = load <8 x i16>, <8 x i16>* %a, align 16 35*9880d681SAndroid Build Coastguard Worker %1 = load <8 x i16>, <8 x i16>* %b, align 16 36*9880d681SAndroid Build Coastguard Worker %2 = call <8 x i16> @llvm.ppc.altivec.crypto.vpmsumh(<8 x i16> %0, <8 x i16> %1) 37*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %2 38*9880d681SAndroid Build Coastguard Worker; CHECK: vpmsumh 2, 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 42*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.ppc.altivec.crypto.vpmsumh(<8 x i16>, <8 x i16>) #1 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 45*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vpmsumw() #0 { 46*9880d681SAndroid Build Coastguard Workerentry: 47*9880d681SAndroid Build Coastguard Worker %a = alloca <4 x i32>, align 16 48*9880d681SAndroid Build Coastguard Worker %b = alloca <4 x i32>, align 16 49*9880d681SAndroid Build Coastguard Worker store <4 x i32> <i32 16909060, i32 84281096, i32 151653132, i32 219025168>, <4 x i32>* %a, align 16 50*9880d681SAndroid Build Coastguard Worker store <4 x i32> <i32 1903326068, i32 1970698104, i32 2038070140, i32 2105442160>, <4 x i32>* %b, align 16 51*9880d681SAndroid Build Coastguard Worker %0 = load <4 x i32>, <4 x i32>* %a, align 16 52*9880d681SAndroid Build Coastguard Worker %1 = load <4 x i32>, <4 x i32>* %b, align 16 53*9880d681SAndroid Build Coastguard Worker %2 = call <4 x i32> @llvm.ppc.altivec.crypto.vpmsumw(<4 x i32> %0, <4 x i32> %1) 54*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %2 55*9880d681SAndroid Build Coastguard Worker; CHECK: vpmsumw 2, 56*9880d681SAndroid Build Coastguard Worker} 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 59*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.ppc.altivec.crypto.vpmsumw(<4 x i32>, <4 x i32>) #1 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 62*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vpmsumd() #0 { 63*9880d681SAndroid Build Coastguard Workerentry: 64*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 65*9880d681SAndroid Build Coastguard Worker %b = alloca <2 x i64>, align 16 66*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 67*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %b, align 16 68*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 69*9880d681SAndroid Build Coastguard Worker %1 = load <2 x i64>, <2 x i64>* %b, align 16 70*9880d681SAndroid Build Coastguard Worker %2 = call <2 x i64> @llvm.ppc.altivec.crypto.vpmsumd(<2 x i64> %0, <2 x i64> %1) 71*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %2 72*9880d681SAndroid Build Coastguard Worker; CHECK: vpmsumd 2, 73*9880d681SAndroid Build Coastguard Worker} 74*9880d681SAndroid Build Coastguard Worker 75*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 76*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vpmsumd(<2 x i64>, <2 x i64>) #1 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 79*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vsbox() #0 { 80*9880d681SAndroid Build Coastguard Workerentry: 81*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 82*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 83*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 84*9880d681SAndroid Build Coastguard Worker %1 = call <2 x i64> @llvm.ppc.altivec.crypto.vsbox(<2 x i64> %0) 85*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %1 86*9880d681SAndroid Build Coastguard Worker; CHECK: vsbox 2, 87*9880d681SAndroid Build Coastguard Worker} 88*9880d681SAndroid Build Coastguard Worker 89*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 90*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vsbox(<2 x i64>) #1 91*9880d681SAndroid Build Coastguard Worker 92*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 93*9880d681SAndroid Build Coastguard Workerdefine <16 x i8> @test_vpermxorb() #0 { 94*9880d681SAndroid Build Coastguard Workerentry: 95*9880d681SAndroid Build Coastguard Worker %a = alloca <16 x i8>, align 16 96*9880d681SAndroid Build Coastguard Worker %b = alloca <16 x i8>, align 16 97*9880d681SAndroid Build Coastguard Worker %c = alloca <16 x i8>, align 16 98*9880d681SAndroid Build Coastguard Worker store <16 x i8> <i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 9, i8 10, i8 11, i8 12, i8 13, i8 14, i8 15, i8 16>, <16 x i8>* %a, align 16 99*9880d681SAndroid Build Coastguard Worker store <16 x i8> <i8 113, i8 114, i8 115, i8 116, i8 117, i8 118, i8 119, i8 120, i8 121, i8 122, i8 123, i8 124, i8 125, i8 126, i8 127, i8 112>, <16 x i8>* %b, align 16 100*9880d681SAndroid Build Coastguard Worker store <16 x i8> <i8 113, i8 114, i8 115, i8 116, i8 117, i8 118, i8 119, i8 120, i8 121, i8 122, i8 123, i8 124, i8 125, i8 126, i8 127, i8 112>, <16 x i8>* %c, align 16 101*9880d681SAndroid Build Coastguard Worker %0 = load <16 x i8>, <16 x i8>* %a, align 16 102*9880d681SAndroid Build Coastguard Worker %1 = load <16 x i8>, <16 x i8>* %b, align 16 103*9880d681SAndroid Build Coastguard Worker %2 = load <16 x i8>, <16 x i8>* %c, align 16 104*9880d681SAndroid Build Coastguard Worker %3 = call <16 x i8> @llvm.ppc.altivec.crypto.vpermxor(<16 x i8> %0, <16 x i8> %1, <16 x i8> %2) 105*9880d681SAndroid Build Coastguard Worker ret <16 x i8> %3 106*9880d681SAndroid Build Coastguard Worker; CHECK: vpermxor 2, 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 110*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.ppc.altivec.crypto.vpermxor(<16 x i8>, <16 x i8>, <16 x i8>) #1 111*9880d681SAndroid Build Coastguard Worker 112*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 113*9880d681SAndroid Build Coastguard Workerdefine <8 x i16> @test_vpermxorh() #0 { 114*9880d681SAndroid Build Coastguard Workerentry: 115*9880d681SAndroid Build Coastguard Worker %a = alloca <8 x i16>, align 16 116*9880d681SAndroid Build Coastguard Worker %b = alloca <8 x i16>, align 16 117*9880d681SAndroid Build Coastguard Worker %c = alloca <8 x i16>, align 16 118*9880d681SAndroid Build Coastguard Worker store <8 x i16> <i16 258, i16 772, i16 1286, i16 1800, i16 2314, i16 2828, i16 3342, i16 3856>, <8 x i16>* %a, align 16 119*9880d681SAndroid Build Coastguard Worker store <8 x i16> <i16 29042, i16 29556, i16 30070, i16 30584, i16 31098, i16 31612, i16 32126, i16 32624>, <8 x i16>* %b, align 16 120*9880d681SAndroid Build Coastguard Worker store <8 x i16> <i16 29042, i16 29556, i16 30070, i16 30584, i16 31098, i16 31612, i16 32126, i16 32624>, <8 x i16>* %c, align 16 121*9880d681SAndroid Build Coastguard Worker %0 = load <8 x i16>, <8 x i16>* %a, align 16 122*9880d681SAndroid Build Coastguard Worker %1 = bitcast <8 x i16> %0 to <16 x i8> 123*9880d681SAndroid Build Coastguard Worker %2 = load <8 x i16>, <8 x i16>* %b, align 16 124*9880d681SAndroid Build Coastguard Worker %3 = bitcast <8 x i16> %2 to <16 x i8> 125*9880d681SAndroid Build Coastguard Worker %4 = load <8 x i16>, <8 x i16>* %c, align 16 126*9880d681SAndroid Build Coastguard Worker %5 = bitcast <8 x i16> %4 to <16 x i8> 127*9880d681SAndroid Build Coastguard Worker %6 = call <16 x i8> @llvm.ppc.altivec.crypto.vpermxor(<16 x i8> %1, <16 x i8> %3, <16 x i8> %5) 128*9880d681SAndroid Build Coastguard Worker %7 = bitcast <16 x i8> %6 to <8 x i16> 129*9880d681SAndroid Build Coastguard Worker ret <8 x i16> %7 130*9880d681SAndroid Build Coastguard Worker; CHECK: vpermxor 2, 131*9880d681SAndroid Build Coastguard Worker} 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 134*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vpermxorw() #0 { 135*9880d681SAndroid Build Coastguard Workerentry: 136*9880d681SAndroid Build Coastguard Worker %a = alloca <4 x i32>, align 16 137*9880d681SAndroid Build Coastguard Worker %b = alloca <4 x i32>, align 16 138*9880d681SAndroid Build Coastguard Worker %c = alloca <4 x i32>, align 16 139*9880d681SAndroid Build Coastguard Worker store <4 x i32> <i32 16909060, i32 84281096, i32 151653132, i32 219025168>, <4 x i32>* %a, align 16 140*9880d681SAndroid Build Coastguard Worker store <4 x i32> <i32 1903326068, i32 1970698104, i32 2038070140, i32 2105442160>, <4 x i32>* %b, align 16 141*9880d681SAndroid Build Coastguard Worker store <4 x i32> <i32 1903326068, i32 1970698104, i32 2038070140, i32 2105442160>, <4 x i32>* %c, align 16 142*9880d681SAndroid Build Coastguard Worker %0 = load <4 x i32>, <4 x i32>* %a, align 16 143*9880d681SAndroid Build Coastguard Worker %1 = bitcast <4 x i32> %0 to <16 x i8> 144*9880d681SAndroid Build Coastguard Worker %2 = load <4 x i32>, <4 x i32>* %b, align 16 145*9880d681SAndroid Build Coastguard Worker %3 = bitcast <4 x i32> %2 to <16 x i8> 146*9880d681SAndroid Build Coastguard Worker %4 = load <4 x i32>, <4 x i32>* %c, align 16 147*9880d681SAndroid Build Coastguard Worker %5 = bitcast <4 x i32> %4 to <16 x i8> 148*9880d681SAndroid Build Coastguard Worker %6 = call <16 x i8> @llvm.ppc.altivec.crypto.vpermxor(<16 x i8> %1, <16 x i8> %3, <16 x i8> %5) 149*9880d681SAndroid Build Coastguard Worker %7 = bitcast <16 x i8> %6 to <4 x i32> 150*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %7 151*9880d681SAndroid Build Coastguard Worker; CHECK: vpermxor 2, 152*9880d681SAndroid Build Coastguard Worker} 153*9880d681SAndroid Build Coastguard Worker 154*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 155*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vpermxord() #0 { 156*9880d681SAndroid Build Coastguard Workerentry: 157*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 158*9880d681SAndroid Build Coastguard Worker %b = alloca <2 x i64>, align 16 159*9880d681SAndroid Build Coastguard Worker %c = alloca <2 x i64>, align 16 160*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 161*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %b, align 16 162*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %c, align 16 163*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 164*9880d681SAndroid Build Coastguard Worker %1 = bitcast <2 x i64> %0 to <16 x i8> 165*9880d681SAndroid Build Coastguard Worker %2 = load <2 x i64>, <2 x i64>* %b, align 16 166*9880d681SAndroid Build Coastguard Worker %3 = bitcast <2 x i64> %2 to <16 x i8> 167*9880d681SAndroid Build Coastguard Worker %4 = load <2 x i64>, <2 x i64>* %c, align 16 168*9880d681SAndroid Build Coastguard Worker %5 = bitcast <2 x i64> %4 to <16 x i8> 169*9880d681SAndroid Build Coastguard Worker %6 = call <16 x i8> @llvm.ppc.altivec.crypto.vpermxor(<16 x i8> %1, <16 x i8> %3, <16 x i8> %5) 170*9880d681SAndroid Build Coastguard Worker %7 = bitcast <16 x i8> %6 to <2 x i64> 171*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %7 172*9880d681SAndroid Build Coastguard Worker; CHECK: vpermxor 2, 173*9880d681SAndroid Build Coastguard Worker} 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 176*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vcipher() #0 { 177*9880d681SAndroid Build Coastguard Workerentry: 178*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 179*9880d681SAndroid Build Coastguard Worker %b = alloca <2 x i64>, align 16 180*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 181*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %b, align 16 182*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 183*9880d681SAndroid Build Coastguard Worker %1 = load <2 x i64>, <2 x i64>* %b, align 16 184*9880d681SAndroid Build Coastguard Worker %2 = call <2 x i64> @llvm.ppc.altivec.crypto.vcipher(<2 x i64> %0, <2 x i64> %1) 185*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %2 186*9880d681SAndroid Build Coastguard Worker; CHECK: vcipher 2, 187*9880d681SAndroid Build Coastguard Worker} 188*9880d681SAndroid Build Coastguard Worker 189*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 190*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vcipher(<2 x i64>, <2 x i64>) #1 191*9880d681SAndroid Build Coastguard Worker 192*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 193*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vcipherlast() #0 { 194*9880d681SAndroid Build Coastguard Workerentry: 195*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 196*9880d681SAndroid Build Coastguard Worker %b = alloca <2 x i64>, align 16 197*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 198*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %b, align 16 199*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 200*9880d681SAndroid Build Coastguard Worker %1 = load <2 x i64>, <2 x i64>* %b, align 16 201*9880d681SAndroid Build Coastguard Worker %2 = call <2 x i64> @llvm.ppc.altivec.crypto.vcipherlast(<2 x i64> %0, <2 x i64> %1) 202*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %2 203*9880d681SAndroid Build Coastguard Worker; CHECK: vcipherlast 2, 204*9880d681SAndroid Build Coastguard Worker} 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 207*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vcipherlast(<2 x i64>, <2 x i64>) #1 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 210*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vncipher() #0 { 211*9880d681SAndroid Build Coastguard Workerentry: 212*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 213*9880d681SAndroid Build Coastguard Worker %b = alloca <2 x i64>, align 16 214*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 215*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %b, align 16 216*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 217*9880d681SAndroid Build Coastguard Worker %1 = load <2 x i64>, <2 x i64>* %b, align 16 218*9880d681SAndroid Build Coastguard Worker %2 = call <2 x i64> @llvm.ppc.altivec.crypto.vncipher(<2 x i64> %0, <2 x i64> %1) 219*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %2 220*9880d681SAndroid Build Coastguard Worker; CHECK: vncipher 2, 221*9880d681SAndroid Build Coastguard Worker} 222*9880d681SAndroid Build Coastguard Worker 223*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 224*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vncipher(<2 x i64>, <2 x i64>) #1 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 227*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vncipherlast() #0 { 228*9880d681SAndroid Build Coastguard Workerentry: 229*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 230*9880d681SAndroid Build Coastguard Worker %b = alloca <2 x i64>, align 16 231*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 72623859790382856, i64 651345242494996240>, <2 x i64>* %a, align 16 232*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %b, align 16 233*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 234*9880d681SAndroid Build Coastguard Worker %1 = load <2 x i64>, <2 x i64>* %b, align 16 235*9880d681SAndroid Build Coastguard Worker %2 = call <2 x i64> @llvm.ppc.altivec.crypto.vncipherlast(<2 x i64> %0, <2 x i64> %1) 236*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %2 237*9880d681SAndroid Build Coastguard Worker; CHECK: vncipherlast 2, 238*9880d681SAndroid Build Coastguard Worker} 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 241*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vncipherlast(<2 x i64>, <2 x i64>) #1 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 244*9880d681SAndroid Build Coastguard Workerdefine <4 x i32> @test_vshasigmaw() #0 { 245*9880d681SAndroid Build Coastguard Workerentry: 246*9880d681SAndroid Build Coastguard Worker %a = alloca <4 x i32>, align 16 247*9880d681SAndroid Build Coastguard Worker store <4 x i32> <i32 16909060, i32 84281096, i32 151653132, i32 219025168>, <4 x i32>* %a, align 16 248*9880d681SAndroid Build Coastguard Worker %0 = load <4 x i32>, <4 x i32>* %a, align 16 249*9880d681SAndroid Build Coastguard Worker %1 = call <4 x i32> @llvm.ppc.altivec.crypto.vshasigmaw(<4 x i32> %0, i32 1, i32 15) 250*9880d681SAndroid Build Coastguard Worker ret <4 x i32> %1 251*9880d681SAndroid Build Coastguard Worker; CHECK: vshasigmaw 2, 252*9880d681SAndroid Build Coastguard Worker} 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 255*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.ppc.altivec.crypto.vshasigmaw(<4 x i32>, i32, i32) #1 256*9880d681SAndroid Build Coastguard Worker 257*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 258*9880d681SAndroid Build Coastguard Workerdefine <2 x i64> @test_vshasigmad() #0 { 259*9880d681SAndroid Build Coastguard Workerentry: 260*9880d681SAndroid Build Coastguard Worker %a = alloca <2 x i64>, align 16 261*9880d681SAndroid Build Coastguard Worker store <2 x i64> <i64 8174723217654970232, i64 8753444600359583600>, <2 x i64>* %a, align 16 262*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* %a, align 16 263*9880d681SAndroid Build Coastguard Worker %1 = call <2 x i64> @llvm.ppc.altivec.crypto.vshasigmad(<2 x i64> %0, i32 1, i32 15) 264*9880d681SAndroid Build Coastguard Worker ret <2 x i64> %1 265*9880d681SAndroid Build Coastguard Worker; CHECK: vshasigmad 2, 266*9880d681SAndroid Build Coastguard Worker} 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind readnone 269*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.ppc.altivec.crypto.vshasigmad(<2 x i64>, i32, i32) #1 270*9880d681SAndroid Build Coastguard Worker 271*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 272*9880d681SAndroid Build Coastguard Workerattributes #1 = { nounwind readnone } 273*9880d681SAndroid Build Coastguard Worker 274*9880d681SAndroid Build Coastguard Worker!llvm.ident = !{!0} 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Worker!0 = !{!"clang version 3.7.0 (trunk 230949) (llvm/trunk 230946)"} 277