1*9880d681SAndroid Build Coastguard Worker; Test the MSA intrinsics that are encoded with the 2R instruction format. 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mips -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=mipsel -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_b_ARG1 = global <16 x i8> <i8 0, 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>, align 16 7*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_b_RES = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nloc_b_test() nounwind { 10*9880d681SAndroid Build Coastguard Workerentry: 11*9880d681SAndroid Build Coastguard Worker %0 = load <16 x i8>, <16 x i8>* @llvm_mips_nloc_b_ARG1 12*9880d681SAndroid Build Coastguard Worker %1 = tail call <16 x i8> @llvm.mips.nloc.b(<16 x i8> %0) 13*9880d681SAndroid Build Coastguard Worker store <16 x i8> %1, <16 x i8>* @llvm_mips_nloc_b_RES 14*9880d681SAndroid Build Coastguard Worker ret void 15*9880d681SAndroid Build Coastguard Worker} 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.nloc.b(<16 x i8>) nounwind 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nloc_b_test: 20*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nloc_b_ARG1) 21*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]]) 22*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nloc.b [[WD:\$w[0-9]+]], [[WS]] 23*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nloc_b_RES) 24*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R2]]) 25*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nloc_b_test 26*9880d681SAndroid Build Coastguard Worker; 27*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 28*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_h_RES = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16 29*9880d681SAndroid Build Coastguard Worker 30*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nloc_h_test() nounwind { 31*9880d681SAndroid Build Coastguard Workerentry: 32*9880d681SAndroid Build Coastguard Worker %0 = load <8 x i16>, <8 x i16>* @llvm_mips_nloc_h_ARG1 33*9880d681SAndroid Build Coastguard Worker %1 = tail call <8 x i16> @llvm.mips.nloc.h(<8 x i16> %0) 34*9880d681SAndroid Build Coastguard Worker store <8 x i16> %1, <8 x i16>* @llvm_mips_nloc_h_RES 35*9880d681SAndroid Build Coastguard Worker ret void 36*9880d681SAndroid Build Coastguard Worker} 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.nloc.h(<8 x i16>) nounwind 39*9880d681SAndroid Build Coastguard Worker 40*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nloc_h_test: 41*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nloc_h_ARG1) 42*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]]) 43*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nloc.h [[WD:\$w[0-9]+]], [[WS]] 44*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nloc_h_RES) 45*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R2]]) 46*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nloc_h_test 47*9880d681SAndroid Build Coastguard Worker; 48*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 49*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_w_RES = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16 50*9880d681SAndroid Build Coastguard Worker 51*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nloc_w_test() nounwind { 52*9880d681SAndroid Build Coastguard Workerentry: 53*9880d681SAndroid Build Coastguard Worker %0 = load <4 x i32>, <4 x i32>* @llvm_mips_nloc_w_ARG1 54*9880d681SAndroid Build Coastguard Worker %1 = tail call <4 x i32> @llvm.mips.nloc.w(<4 x i32> %0) 55*9880d681SAndroid Build Coastguard Worker store <4 x i32> %1, <4 x i32>* @llvm_mips_nloc_w_RES 56*9880d681SAndroid Build Coastguard Worker ret void 57*9880d681SAndroid Build Coastguard Worker} 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.nloc.w(<4 x i32>) nounwind 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nloc_w_test: 62*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nloc_w_ARG1) 63*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]]) 64*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nloc.w [[WD:\$w[0-9]+]], [[WS]] 65*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nloc_w_RES) 66*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R2]]) 67*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nloc_w_test 68*9880d681SAndroid Build Coastguard Worker; 69*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16 70*9880d681SAndroid Build Coastguard Worker@llvm_mips_nloc_d_RES = global <2 x i64> <i64 0, i64 0>, align 16 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nloc_d_test() nounwind { 73*9880d681SAndroid Build Coastguard Workerentry: 74*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* @llvm_mips_nloc_d_ARG1 75*9880d681SAndroid Build Coastguard Worker %1 = tail call <2 x i64> @llvm.mips.nloc.d(<2 x i64> %0) 76*9880d681SAndroid Build Coastguard Worker store <2 x i64> %1, <2 x i64>* @llvm_mips_nloc_d_RES 77*9880d681SAndroid Build Coastguard Worker ret void 78*9880d681SAndroid Build Coastguard Worker} 79*9880d681SAndroid Build Coastguard Worker 80*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.nloc.d(<2 x i64>) nounwind 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nloc_d_test: 83*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nloc_d_ARG1) 84*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]]) 85*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nloc.d [[WD:\$w[0-9]+]], [[WS]] 86*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nloc_d_RES) 87*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R2]]) 88*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nloc_d_test 89*9880d681SAndroid Build Coastguard Worker; 90*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_b_ARG1 = global <16 x i8> <i8 0, 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>, align 16 91*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_b_RES = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nlzc_b_test() nounwind { 94*9880d681SAndroid Build Coastguard Workerentry: 95*9880d681SAndroid Build Coastguard Worker %0 = load <16 x i8>, <16 x i8>* @llvm_mips_nlzc_b_ARG1 96*9880d681SAndroid Build Coastguard Worker %1 = tail call <16 x i8> @llvm.mips.nlzc.b(<16 x i8> %0) 97*9880d681SAndroid Build Coastguard Worker store <16 x i8> %1, <16 x i8>* @llvm_mips_nlzc_b_RES 98*9880d681SAndroid Build Coastguard Worker ret void 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.nlzc.b(<16 x i8>) nounwind 102*9880d681SAndroid Build Coastguard Worker 103*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nlzc_b_test: 104*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nlzc_b_ARG1) 105*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]]) 106*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nlzc.b [[WD:\$w[0-9]+]], [[WS]] 107*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nlzc_b_RES) 108*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R2]]) 109*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nlzc_b_test 110*9880d681SAndroid Build Coastguard Worker; 111*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 112*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_h_RES = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16 113*9880d681SAndroid Build Coastguard Worker 114*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nlzc_h_test() nounwind { 115*9880d681SAndroid Build Coastguard Workerentry: 116*9880d681SAndroid Build Coastguard Worker %0 = load <8 x i16>, <8 x i16>* @llvm_mips_nlzc_h_ARG1 117*9880d681SAndroid Build Coastguard Worker %1 = tail call <8 x i16> @llvm.mips.nlzc.h(<8 x i16> %0) 118*9880d681SAndroid Build Coastguard Worker store <8 x i16> %1, <8 x i16>* @llvm_mips_nlzc_h_RES 119*9880d681SAndroid Build Coastguard Worker ret void 120*9880d681SAndroid Build Coastguard Worker} 121*9880d681SAndroid Build Coastguard Worker 122*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.nlzc.h(<8 x i16>) nounwind 123*9880d681SAndroid Build Coastguard Worker 124*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nlzc_h_test: 125*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nlzc_h_ARG1) 126*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]]) 127*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nlzc.h [[WD:\$w[0-9]+]], [[WS]] 128*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nlzc_h_RES) 129*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R2]]) 130*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nlzc_h_test 131*9880d681SAndroid Build Coastguard Worker; 132*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 133*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_w_RES = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16 134*9880d681SAndroid Build Coastguard Worker 135*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nlzc_w_test() nounwind { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %0 = load <4 x i32>, <4 x i32>* @llvm_mips_nlzc_w_ARG1 138*9880d681SAndroid Build Coastguard Worker %1 = tail call <4 x i32> @llvm.mips.nlzc.w(<4 x i32> %0) 139*9880d681SAndroid Build Coastguard Worker store <4 x i32> %1, <4 x i32>* @llvm_mips_nlzc_w_RES 140*9880d681SAndroid Build Coastguard Worker ret void 141*9880d681SAndroid Build Coastguard Worker} 142*9880d681SAndroid Build Coastguard Worker 143*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.nlzc.w(<4 x i32>) nounwind 144*9880d681SAndroid Build Coastguard Worker 145*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nlzc_w_test: 146*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nlzc_w_ARG1) 147*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]]) 148*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nlzc.w [[WD:\$w[0-9]+]], [[WS]] 149*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nlzc_w_RES) 150*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R2]]) 151*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nlzc_w_test 152*9880d681SAndroid Build Coastguard Worker; 153*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16 154*9880d681SAndroid Build Coastguard Worker@llvm_mips_nlzc_d_RES = global <2 x i64> <i64 0, i64 0>, align 16 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_nlzc_d_test() nounwind { 157*9880d681SAndroid Build Coastguard Workerentry: 158*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* @llvm_mips_nlzc_d_ARG1 159*9880d681SAndroid Build Coastguard Worker %1 = tail call <2 x i64> @llvm.mips.nlzc.d(<2 x i64> %0) 160*9880d681SAndroid Build Coastguard Worker store <2 x i64> %1, <2 x i64>* @llvm_mips_nlzc_d_RES 161*9880d681SAndroid Build Coastguard Worker ret void 162*9880d681SAndroid Build Coastguard Worker} 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.nlzc.d(<2 x i64>) nounwind 165*9880d681SAndroid Build Coastguard Worker 166*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_nlzc_d_test: 167*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_nlzc_d_ARG1) 168*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]]) 169*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: nlzc.d [[WD:\$w[0-9]+]], [[WS]] 170*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_nlzc_d_RES) 171*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R2]]) 172*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_nlzc_d_test 173*9880d681SAndroid Build Coastguard Worker; 174*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_b_ARG1 = global <16 x i8> <i8 0, 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>, align 16 175*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_b_RES = global <16 x i8> <i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0, i8 0>, align 16 176*9880d681SAndroid Build Coastguard Worker 177*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_pcnt_b_test() nounwind { 178*9880d681SAndroid Build Coastguard Workerentry: 179*9880d681SAndroid Build Coastguard Worker %0 = load <16 x i8>, <16 x i8>* @llvm_mips_pcnt_b_ARG1 180*9880d681SAndroid Build Coastguard Worker %1 = tail call <16 x i8> @llvm.mips.pcnt.b(<16 x i8> %0) 181*9880d681SAndroid Build Coastguard Worker store <16 x i8> %1, <16 x i8>* @llvm_mips_pcnt_b_RES 182*9880d681SAndroid Build Coastguard Worker ret void 183*9880d681SAndroid Build Coastguard Worker} 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerdeclare <16 x i8> @llvm.mips.pcnt.b(<16 x i8>) nounwind 186*9880d681SAndroid Build Coastguard Worker 187*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_pcnt_b_test: 188*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_pcnt_b_ARG1) 189*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.b [[WS:\$w[0-9]+]], 0([[R1]]) 190*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: pcnt.b [[WD:\$w[0-9]+]], [[WS]] 191*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_pcnt_b_RES) 192*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.b [[WD]], 0([[R2]]) 193*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_pcnt_b_test 194*9880d681SAndroid Build Coastguard Worker; 195*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 196*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_h_RES = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16 197*9880d681SAndroid Build Coastguard Worker 198*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_pcnt_h_test() nounwind { 199*9880d681SAndroid Build Coastguard Workerentry: 200*9880d681SAndroid Build Coastguard Worker %0 = load <8 x i16>, <8 x i16>* @llvm_mips_pcnt_h_ARG1 201*9880d681SAndroid Build Coastguard Worker %1 = tail call <8 x i16> @llvm.mips.pcnt.h(<8 x i16> %0) 202*9880d681SAndroid Build Coastguard Worker store <8 x i16> %1, <8 x i16>* @llvm_mips_pcnt_h_RES 203*9880d681SAndroid Build Coastguard Worker ret void 204*9880d681SAndroid Build Coastguard Worker} 205*9880d681SAndroid Build Coastguard Worker 206*9880d681SAndroid Build Coastguard Workerdeclare <8 x i16> @llvm.mips.pcnt.h(<8 x i16>) nounwind 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_pcnt_h_test: 209*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_pcnt_h_ARG1) 210*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.h [[WS:\$w[0-9]+]], 0([[R1]]) 211*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: pcnt.h [[WD:\$w[0-9]+]], [[WS]] 212*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_pcnt_h_RES) 213*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.h [[WD]], 0([[R2]]) 214*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_pcnt_h_test 215*9880d681SAndroid Build Coastguard Worker; 216*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 217*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_w_RES = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16 218*9880d681SAndroid Build Coastguard Worker 219*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_pcnt_w_test() nounwind { 220*9880d681SAndroid Build Coastguard Workerentry: 221*9880d681SAndroid Build Coastguard Worker %0 = load <4 x i32>, <4 x i32>* @llvm_mips_pcnt_w_ARG1 222*9880d681SAndroid Build Coastguard Worker %1 = tail call <4 x i32> @llvm.mips.pcnt.w(<4 x i32> %0) 223*9880d681SAndroid Build Coastguard Worker store <4 x i32> %1, <4 x i32>* @llvm_mips_pcnt_w_RES 224*9880d681SAndroid Build Coastguard Worker ret void 225*9880d681SAndroid Build Coastguard Worker} 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Workerdeclare <4 x i32> @llvm.mips.pcnt.w(<4 x i32>) nounwind 228*9880d681SAndroid Build Coastguard Worker 229*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_pcnt_w_test: 230*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_pcnt_w_ARG1) 231*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.w [[WS:\$w[0-9]+]], 0([[R1]]) 232*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: pcnt.w [[WD:\$w[0-9]+]], [[WS]] 233*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_pcnt_w_RES) 234*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.w [[WD]], 0([[R2]]) 235*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_pcnt_w_test 236*9880d681SAndroid Build Coastguard Worker; 237*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16 238*9880d681SAndroid Build Coastguard Worker@llvm_mips_pcnt_d_RES = global <2 x i64> <i64 0, i64 0>, align 16 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Workerdefine void @llvm_mips_pcnt_d_test() nounwind { 241*9880d681SAndroid Build Coastguard Workerentry: 242*9880d681SAndroid Build Coastguard Worker %0 = load <2 x i64>, <2 x i64>* @llvm_mips_pcnt_d_ARG1 243*9880d681SAndroid Build Coastguard Worker %1 = tail call <2 x i64> @llvm.mips.pcnt.d(<2 x i64> %0) 244*9880d681SAndroid Build Coastguard Worker store <2 x i64> %1, <2 x i64>* @llvm_mips_pcnt_d_RES 245*9880d681SAndroid Build Coastguard Worker ret void 246*9880d681SAndroid Build Coastguard Worker} 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Workerdeclare <2 x i64> @llvm.mips.pcnt.d(<2 x i64>) nounwind 249*9880d681SAndroid Build Coastguard Worker 250*9880d681SAndroid Build Coastguard Worker; CHECK: llvm_mips_pcnt_d_test: 251*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_pcnt_d_ARG1) 252*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: ld.d [[WS:\$w[0-9]+]], 0([[R1]]) 253*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: pcnt.d [[WD:\$w[0-9]+]], [[WS]] 254*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_pcnt_d_RES) 255*9880d681SAndroid Build Coastguard Worker; CHECK-DAG: st.d [[WD]], 0([[R2]]) 256*9880d681SAndroid Build Coastguard Worker; CHECK: .size llvm_mips_pcnt_d_test 257*9880d681SAndroid Build Coastguard Worker; 258