1; Test the MSA intrinsics that are encoded with the I5 instruction format. 2; There are lots of these so this covers those beginning with 'b' 3 4; RUN: llc -march=mips -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s 5; RUN: llc -march=mipsel -mattr=+msa,+fp64 -relocation-model=pic < %s | FileCheck %s 6 7@llvm_mips_bclri_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 8@llvm_mips_bclri_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 9 10define void @llvm_mips_bclri_b_test() nounwind { 11entry: 12 %0 = load <16 x i8>, <16 x i8>* @llvm_mips_bclri_b_ARG1 13 %1 = tail call <16 x i8> @llvm.mips.bclri.b(<16 x i8> %0, i32 7) 14 store <16 x i8> %1, <16 x i8>* @llvm_mips_bclri_b_RES 15 ret void 16} 17 18declare <16 x i8> @llvm.mips.bclri.b(<16 x i8>, i32) nounwind 19 20; CHECK: llvm_mips_bclri_b_test: 21; CHECK: ld.b 22; andi.b is equivalent to bclri.b 23; CHECK: andi.b {{\$w[0-9]}}, {{\$w[0-9]}}, 127 24; CHECK: st.b 25; CHECK: .size llvm_mips_bclri_b_test 26; 27@llvm_mips_bclri_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@llvm_mips_bclri_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 30define void @llvm_mips_bclri_h_test() nounwind { 31entry: 32 %0 = load <8 x i16>, <8 x i16>* @llvm_mips_bclri_h_ARG1 33 %1 = tail call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %0, i32 7) 34 store <8 x i16> %1, <8 x i16>* @llvm_mips_bclri_h_RES 35 ret void 36} 37 38declare <8 x i16> @llvm.mips.bclri.h(<8 x i16>, i32) nounwind 39 40; CHECK: llvm_mips_bclri_h_test: 41; CHECK: ld.h 42; CHECK: bclri.h 43; CHECK: st.h 44; CHECK: .size llvm_mips_bclri_h_test 45; 46@llvm_mips_bclri_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 47@llvm_mips_bclri_w_RES = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16 48 49define void @llvm_mips_bclri_w_test() nounwind { 50entry: 51 %0 = load <4 x i32>, <4 x i32>* @llvm_mips_bclri_w_ARG1 52 %1 = tail call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %0, i32 7) 53 store <4 x i32> %1, <4 x i32>* @llvm_mips_bclri_w_RES 54 ret void 55} 56 57declare <4 x i32> @llvm.mips.bclri.w(<4 x i32>, i32) nounwind 58 59; CHECK: llvm_mips_bclri_w_test: 60; CHECK: ld.w 61; CHECK: bclri.w 62; CHECK: st.w 63; CHECK: .size llvm_mips_bclri_w_test 64; 65@llvm_mips_bclri_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16 66@llvm_mips_bclri_d_RES = global <2 x i64> <i64 0, i64 0>, align 16 67 68define void @llvm_mips_bclri_d_test() nounwind { 69entry: 70 %0 = load <2 x i64>, <2 x i64>* @llvm_mips_bclri_d_ARG1 71 %1 = tail call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %0, i32 7) 72 store <2 x i64> %1, <2 x i64>* @llvm_mips_bclri_d_RES 73 ret void 74} 75 76declare <2 x i64> @llvm.mips.bclri.d(<2 x i64>, i32) nounwind 77 78; CHECK: llvm_mips_bclri_d_test: 79; CHECK: ld.d 80; CHECK: bclri.d 81; CHECK: st.d 82; CHECK: .size llvm_mips_bclri_d_test 83; 84@llvm_mips_binsli_b_ARG1 = global <16 x i8> zeroinitializer, align 16 85@llvm_mips_binsli_b_ARG2 = 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 86@llvm_mips_binsli_b_RES = global <16 x i8> zeroinitializer, align 16 87 88define void @llvm_mips_binsli_b_test() nounwind { 89entry: 90 %0 = load <16 x i8>, <16 x i8>* @llvm_mips_binsli_b_ARG1 91 %1 = load <16 x i8>, <16 x i8>* @llvm_mips_binsli_b_ARG2 92 %2 = tail call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %0, <16 x i8> %1, i32 7) 93 store <16 x i8> %2, <16 x i8>* @llvm_mips_binsli_b_RES 94 ret void 95} 96 97declare <16 x i8> @llvm.mips.binsli.b(<16 x i8>, <16 x i8>, i32) nounwind 98 99; CHECK: llvm_mips_binsli_b_test: 100; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsli_b_ARG1)( 101; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsli_b_ARG2)( 102; CHECK-DAG: ld.b [[R3:\$w[0-9]+]], 0([[R1]]) 103; CHECK-DAG: ld.b [[R4:\$w[0-9]+]], 0([[R2]]) 104; CHECK-DAG: binsli.b [[R3]], [[R4]], 7 105; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsli_b_RES)( 106; CHECK-DAG: st.b [[R3]], 0([[R5]]) 107; CHECK: .size llvm_mips_binsli_b_test 108 109@llvm_mips_binsli_h_ARG1 = global <8 x i16> zeroinitializer, align 16 110@llvm_mips_binsli_h_ARG2 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 111@llvm_mips_binsli_h_RES = global <8 x i16> zeroinitializer, align 16 112 113define void @llvm_mips_binsli_h_test() nounwind { 114entry: 115 %0 = load <8 x i16>, <8 x i16>* @llvm_mips_binsli_h_ARG1 116 %1 = load <8 x i16>, <8 x i16>* @llvm_mips_binsli_h_ARG2 117 %2 = tail call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %0, <8 x i16> %1, i32 7) 118 store <8 x i16> %2, <8 x i16>* @llvm_mips_binsli_h_RES 119 ret void 120} 121 122declare <8 x i16> @llvm.mips.binsli.h(<8 x i16>, <8 x i16>, i32) nounwind 123 124; CHECK: llvm_mips_binsli_h_test: 125; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsli_h_ARG1)( 126; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsli_h_ARG2)( 127; CHECK-DAG: ld.h [[R3:\$w[0-9]+]], 0([[R1]]) 128; CHECK-DAG: ld.h [[R4:\$w[0-9]+]], 0([[R2]]) 129; CHECK-DAG: binsli.h [[R3]], [[R4]], 7 130; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsli_h_RES)( 131; CHECK-DAG: st.h [[R3]], 0([[R5]]) 132; CHECK: .size llvm_mips_binsli_h_test 133 134@llvm_mips_binsli_w_ARG1 = global <4 x i32> zeroinitializer, align 16 135@llvm_mips_binsli_w_ARG2 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 136@llvm_mips_binsli_w_RES = global <4 x i32> zeroinitializer, align 16 137 138define void @llvm_mips_binsli_w_test() nounwind { 139entry: 140 %0 = load <4 x i32>, <4 x i32>* @llvm_mips_binsli_w_ARG1 141 %1 = load <4 x i32>, <4 x i32>* @llvm_mips_binsli_w_ARG2 142 %2 = tail call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %0, <4 x i32> %1, i32 7) 143 store <4 x i32> %2, <4 x i32>* @llvm_mips_binsli_w_RES 144 ret void 145} 146 147declare <4 x i32> @llvm.mips.binsli.w(<4 x i32>, <4 x i32>, i32) nounwind 148 149; CHECK: llvm_mips_binsli_w_test: 150; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsli_w_ARG1)( 151; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsli_w_ARG2)( 152; CHECK-DAG: ld.w [[R3:\$w[0-9]+]], 0([[R1]]) 153; CHECK-DAG: ld.w [[R4:\$w[0-9]+]], 0([[R2]]) 154; CHECK-DAG: binsli.w [[R3]], [[R4]], 7 155; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsli_w_RES)( 156; CHECK-DAG: st.w [[R3]], 0([[R5]]) 157; CHECK: .size llvm_mips_binsli_w_test 158 159@llvm_mips_binsli_d_ARG1 = global <2 x i64> zeroinitializer, align 16 160@llvm_mips_binsli_d_ARG2 = global <2 x i64> <i64 0, i64 1>, align 16 161@llvm_mips_binsli_d_RES = global <2 x i64> zeroinitializer, align 16 162 163define void @llvm_mips_binsli_d_test() nounwind { 164entry: 165 %0 = load <2 x i64>, <2 x i64>* @llvm_mips_binsli_d_ARG1 166 %1 = load <2 x i64>, <2 x i64>* @llvm_mips_binsli_d_ARG2 167 ; TODO: We use a particularly wide mask here to work around a legalization 168 ; issue. If the mask doesn't fit within a 10-bit immediate, it gets 169 ; legalized into a constant pool. We should add a test to cover the 170 ; other cases once they correctly select binsli.d. 171 %2 = tail call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %0, <2 x i64> %1, i32 61) 172 store <2 x i64> %2, <2 x i64>* @llvm_mips_binsli_d_RES 173 ret void 174} 175 176declare <2 x i64> @llvm.mips.binsli.d(<2 x i64>, <2 x i64>, i32) nounwind 177 178; CHECK: llvm_mips_binsli_d_test: 179; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsli_d_ARG1)( 180; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsli_d_ARG2)( 181; CHECK-DAG: ld.d [[R3:\$w[0-9]+]], 0([[R1]]) 182; CHECK-DAG: ld.d [[R4:\$w[0-9]+]], 0([[R2]]) 183; CHECK-DAG: binsli.d [[R3]], [[R4]], 61 184; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsli_d_RES)( 185; CHECK-DAG: st.d [[R3]], 0([[R5]]) 186; CHECK: .size llvm_mips_binsli_d_test 187 188@llvm_mips_binsri_b_ARG1 = global <16 x i8> zeroinitializer, align 16 189@llvm_mips_binsri_b_ARG2 = 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 190@llvm_mips_binsri_b_RES = global <16 x i8> zeroinitializer, align 16 191 192define void @llvm_mips_binsri_b_test() nounwind { 193entry: 194 %0 = load <16 x i8>, <16 x i8>* @llvm_mips_binsri_b_ARG1 195 %1 = load <16 x i8>, <16 x i8>* @llvm_mips_binsri_b_ARG2 196 %2 = tail call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %0, <16 x i8> %1, i32 7) 197 store <16 x i8> %2, <16 x i8>* @llvm_mips_binsri_b_RES 198 ret void 199} 200 201declare <16 x i8> @llvm.mips.binsri.b(<16 x i8>, <16 x i8>, i32) nounwind 202 203; CHECK: llvm_mips_binsri_b_test: 204; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsri_b_ARG1)( 205; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsri_b_ARG2)( 206; CHECK-DAG: ld.b [[R3:\$w[0-9]+]], 0([[R1]]) 207; CHECK-DAG: ld.b [[R4:\$w[0-9]+]], 0([[R2]]) 208; CHECK-DAG: binsri.b [[R3]], [[R4]], 7 209; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsri_b_RES)( 210; CHECK-DAG: st.b [[R3]], 0([[R5]]) 211; CHECK: .size llvm_mips_binsri_b_test 212 213@llvm_mips_binsri_h_ARG1 = global <8 x i16> zeroinitializer, align 16 214@llvm_mips_binsri_h_ARG2 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 215@llvm_mips_binsri_h_RES = global <8 x i16> zeroinitializer, align 16 216 217define void @llvm_mips_binsri_h_test() nounwind { 218entry: 219 %0 = load <8 x i16>, <8 x i16>* @llvm_mips_binsri_h_ARG1 220 %1 = load <8 x i16>, <8 x i16>* @llvm_mips_binsri_h_ARG2 221 %2 = tail call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %0, <8 x i16> %1, i32 7) 222 store <8 x i16> %2, <8 x i16>* @llvm_mips_binsri_h_RES 223 ret void 224} 225 226declare <8 x i16> @llvm.mips.binsri.h(<8 x i16>, <8 x i16>, i32) nounwind 227 228; CHECK: llvm_mips_binsri_h_test: 229; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsri_h_ARG1)( 230; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsri_h_ARG2)( 231; CHECK-DAG: ld.h [[R3:\$w[0-9]+]], 0([[R1]]) 232; CHECK-DAG: ld.h [[R4:\$w[0-9]+]], 0([[R2]]) 233; CHECK-DAG: binsri.h [[R3]], [[R4]], 7 234; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsri_h_RES)( 235; CHECK-DAG: st.h [[R3]], 0([[R5]]) 236; CHECK: .size llvm_mips_binsri_h_test 237 238@llvm_mips_binsri_w_ARG1 = global <4 x i32> zeroinitializer, align 16 239@llvm_mips_binsri_w_ARG2 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 240@llvm_mips_binsri_w_RES = global <4 x i32> zeroinitializer, align 16 241 242define void @llvm_mips_binsri_w_test() nounwind { 243entry: 244 %0 = load <4 x i32>, <4 x i32>* @llvm_mips_binsri_w_ARG1 245 %1 = load <4 x i32>, <4 x i32>* @llvm_mips_binsri_w_ARG2 246 %2 = tail call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %0, <4 x i32> %1, i32 7) 247 store <4 x i32> %2, <4 x i32>* @llvm_mips_binsri_w_RES 248 ret void 249} 250 251declare <4 x i32> @llvm.mips.binsri.w(<4 x i32>, <4 x i32>, i32) nounwind 252 253; CHECK: llvm_mips_binsri_w_test: 254; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsri_w_ARG1)( 255; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsri_w_ARG2)( 256; CHECK-DAG: ld.w [[R3:\$w[0-9]+]], 0([[R1]]) 257; CHECK-DAG: ld.w [[R4:\$w[0-9]+]], 0([[R2]]) 258; CHECK-DAG: binsri.w [[R3]], [[R4]], 7 259; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsri_w_RES)( 260; CHECK-DAG: st.w [[R3]], 0([[R5]]) 261; CHECK: .size llvm_mips_binsri_w_test 262 263@llvm_mips_binsri_d_ARG1 = global <2 x i64> zeroinitializer, align 16 264@llvm_mips_binsri_d_ARG2 = global <2 x i64> <i64 0, i64 1>, align 16 265@llvm_mips_binsri_d_RES = global <2 x i64> zeroinitializer, align 16 266 267define void @llvm_mips_binsri_d_test() nounwind { 268entry: 269 %0 = load <2 x i64>, <2 x i64>* @llvm_mips_binsri_d_ARG1 270 %1 = load <2 x i64>, <2 x i64>* @llvm_mips_binsri_d_ARG2 271 %2 = tail call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %0, <2 x i64> %1, i32 7) 272 store <2 x i64> %2, <2 x i64>* @llvm_mips_binsri_d_RES 273 ret void 274} 275 276declare <2 x i64> @llvm.mips.binsri.d(<2 x i64>, <2 x i64>, i32) nounwind 277 278; CHECK: llvm_mips_binsri_d_test: 279; CHECK-DAG: lw [[R1:\$[0-9]+]], %got(llvm_mips_binsri_d_ARG1)( 280; CHECK-DAG: lw [[R2:\$[0-9]+]], %got(llvm_mips_binsri_d_ARG2)( 281; CHECK-DAG: ld.d [[R3:\$w[0-9]+]], 0([[R1]]) 282; CHECK-DAG: ld.d [[R4:\$w[0-9]+]], 0([[R2]]) 283; CHECK-DAG: binsri.d [[R3]], [[R4]], 7 284; CHECK-DAG: lw [[R5:\$[0-9]+]], %got(llvm_mips_binsri_d_RES)( 285; CHECK-DAG: st.d [[R3]], 0([[R5]]) 286; CHECK: .size llvm_mips_binsri_d_test 287 288@llvm_mips_bnegi_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 289@llvm_mips_bnegi_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 290 291define void @llvm_mips_bnegi_b_test() nounwind { 292entry: 293 %0 = load <16 x i8>, <16 x i8>* @llvm_mips_bnegi_b_ARG1 294 %1 = tail call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %0, i32 7) 295 store <16 x i8> %1, <16 x i8>* @llvm_mips_bnegi_b_RES 296 ret void 297} 298 299declare <16 x i8> @llvm.mips.bnegi.b(<16 x i8>, i32) nounwind 300 301; CHECK: llvm_mips_bnegi_b_test: 302; CHECK: ld.b 303; CHECK: bnegi.b 304; CHECK: st.b 305; CHECK: .size llvm_mips_bnegi_b_test 306; 307@llvm_mips_bnegi_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 308@llvm_mips_bnegi_h_RES = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16 309 310define void @llvm_mips_bnegi_h_test() nounwind { 311entry: 312 %0 = load <8 x i16>, <8 x i16>* @llvm_mips_bnegi_h_ARG1 313 %1 = tail call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %0, i32 7) 314 store <8 x i16> %1, <8 x i16>* @llvm_mips_bnegi_h_RES 315 ret void 316} 317 318declare <8 x i16> @llvm.mips.bnegi.h(<8 x i16>, i32) nounwind 319 320; CHECK: llvm_mips_bnegi_h_test: 321; CHECK: ld.h 322; CHECK: bnegi.h 323; CHECK: st.h 324; CHECK: .size llvm_mips_bnegi_h_test 325; 326@llvm_mips_bnegi_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 327@llvm_mips_bnegi_w_RES = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16 328 329define void @llvm_mips_bnegi_w_test() nounwind { 330entry: 331 %0 = load <4 x i32>, <4 x i32>* @llvm_mips_bnegi_w_ARG1 332 %1 = tail call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %0, i32 7) 333 store <4 x i32> %1, <4 x i32>* @llvm_mips_bnegi_w_RES 334 ret void 335} 336 337declare <4 x i32> @llvm.mips.bnegi.w(<4 x i32>, i32) nounwind 338 339; CHECK: llvm_mips_bnegi_w_test: 340; CHECK: ld.w 341; CHECK: bnegi.w 342; CHECK: st.w 343; CHECK: .size llvm_mips_bnegi_w_test 344; 345@llvm_mips_bnegi_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16 346@llvm_mips_bnegi_d_RES = global <2 x i64> <i64 0, i64 0>, align 16 347 348define void @llvm_mips_bnegi_d_test() nounwind { 349entry: 350 %0 = load <2 x i64>, <2 x i64>* @llvm_mips_bnegi_d_ARG1 351 %1 = tail call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %0, i32 7) 352 store <2 x i64> %1, <2 x i64>* @llvm_mips_bnegi_d_RES 353 ret void 354} 355 356declare <2 x i64> @llvm.mips.bnegi.d(<2 x i64>, i32) nounwind 357 358; CHECK: llvm_mips_bnegi_d_test: 359; CHECK: ld.d 360; CHECK: bnegi.d 361; CHECK: st.d 362; CHECK: .size llvm_mips_bnegi_d_test 363; 364@llvm_mips_bseti_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 365@llvm_mips_bseti_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 366 367define void @llvm_mips_bseti_b_test() nounwind { 368entry: 369 %0 = load <16 x i8>, <16 x i8>* @llvm_mips_bseti_b_ARG1 370 %1 = tail call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %0, i32 7) 371 store <16 x i8> %1, <16 x i8>* @llvm_mips_bseti_b_RES 372 ret void 373} 374 375declare <16 x i8> @llvm.mips.bseti.b(<16 x i8>, i32) nounwind 376 377; CHECK: llvm_mips_bseti_b_test: 378; CHECK: ld.b 379; CHECK: bseti.b 380; CHECK: st.b 381; CHECK: .size llvm_mips_bseti_b_test 382; 383@llvm_mips_bseti_h_ARG1 = global <8 x i16> <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>, align 16 384@llvm_mips_bseti_h_RES = global <8 x i16> <i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0, i16 0>, align 16 385 386define void @llvm_mips_bseti_h_test() nounwind { 387entry: 388 %0 = load <8 x i16>, <8 x i16>* @llvm_mips_bseti_h_ARG1 389 %1 = tail call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %0, i32 7) 390 store <8 x i16> %1, <8 x i16>* @llvm_mips_bseti_h_RES 391 ret void 392} 393 394declare <8 x i16> @llvm.mips.bseti.h(<8 x i16>, i32) nounwind 395 396; CHECK: llvm_mips_bseti_h_test: 397; CHECK: ld.h 398; CHECK: bseti.h 399; CHECK: st.h 400; CHECK: .size llvm_mips_bseti_h_test 401; 402@llvm_mips_bseti_w_ARG1 = global <4 x i32> <i32 0, i32 1, i32 2, i32 3>, align 16 403@llvm_mips_bseti_w_RES = global <4 x i32> <i32 0, i32 0, i32 0, i32 0>, align 16 404 405define void @llvm_mips_bseti_w_test() nounwind { 406entry: 407 %0 = load <4 x i32>, <4 x i32>* @llvm_mips_bseti_w_ARG1 408 %1 = tail call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %0, i32 7) 409 store <4 x i32> %1, <4 x i32>* @llvm_mips_bseti_w_RES 410 ret void 411} 412 413declare <4 x i32> @llvm.mips.bseti.w(<4 x i32>, i32) nounwind 414 415; CHECK: llvm_mips_bseti_w_test: 416; CHECK: ld.w 417; CHECK: bseti.w 418; CHECK: st.w 419; CHECK: .size llvm_mips_bseti_w_test 420; 421@llvm_mips_bseti_d_ARG1 = global <2 x i64> <i64 0, i64 1>, align 16 422@llvm_mips_bseti_d_RES = global <2 x i64> <i64 0, i64 0>, align 16 423 424define void @llvm_mips_bseti_d_test() nounwind { 425entry: 426 %0 = load <2 x i64>, <2 x i64>* @llvm_mips_bseti_d_ARG1 427 %1 = tail call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %0, i32 7) 428 store <2 x i64> %1, <2 x i64>* @llvm_mips_bseti_d_RES 429 ret void 430} 431 432declare <2 x i64> @llvm.mips.bseti.d(<2 x i64>, i32) nounwind 433 434; CHECK: llvm_mips_bseti_d_test: 435; CHECK: ld.d 436; CHECK: bseti.d 437; CHECK: st.d 438; CHECK: .size llvm_mips_bseti_d_test 439; 440