1; RUN: llc -march=mipsel -mattr=+dsp < %s | FileCheck %s 2 3define i32 @test__builtin_mips_extr_w1(i32 %i0, i32, i64 %a0) nounwind { 4entry: 5; CHECK: extr.w 6 7 %1 = tail call i32 @llvm.mips.extr.w(i64 %a0, i32 15) 8 ret i32 %1 9} 10 11declare i32 @llvm.mips.extr.w(i64, i32) nounwind 12 13define i32 @test__builtin_mips_extr_w2(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 14entry: 15; CHECK: extrv.w 16 17 %1 = tail call i32 @llvm.mips.extr.w(i64 %a0, i32 %a1) 18 ret i32 %1 19} 20 21define i32 @test__builtin_mips_extr_r_w1(i32 %i0, i32, i64 %a0) nounwind { 22entry: 23; CHECK: extr_r.w 24 25 %1 = tail call i32 @llvm.mips.extr.r.w(i64 %a0, i32 15) 26 ret i32 %1 27} 28 29declare i32 @llvm.mips.extr.r.w(i64, i32) nounwind 30 31define i32 @test__builtin_mips_extr_s_h1(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 32entry: 33; CHECK: extrv_s.h 34 35 %1 = tail call i32 @llvm.mips.extr.s.h(i64 %a0, i32 %a1) 36 ret i32 %1 37} 38 39declare i32 @llvm.mips.extr.s.h(i64, i32) nounwind 40 41define i32 @test__builtin_mips_extr_rs_w1(i32 %i0, i32, i64 %a0) nounwind { 42entry: 43; CHECK: extr_rs.w 44 45 %1 = tail call i32 @llvm.mips.extr.rs.w(i64 %a0, i32 15) 46 ret i32 %1 47} 48 49declare i32 @llvm.mips.extr.rs.w(i64, i32) nounwind 50 51define i32 @test__builtin_mips_extr_rs_w2(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 52entry: 53; CHECK: extrv_rs.w 54 55 %1 = tail call i32 @llvm.mips.extr.rs.w(i64 %a0, i32 %a1) 56 ret i32 %1 57} 58 59define i32 @test__builtin_mips_extr_s_h2(i32 %i0, i32, i64 %a0) nounwind { 60entry: 61; CHECK: extr_s.h 62 63 %1 = tail call i32 @llvm.mips.extr.s.h(i64 %a0, i32 15) 64 ret i32 %1 65} 66 67define i32 @test__builtin_mips_extr_r_w2(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 68entry: 69; CHECK: extrv_r.w 70 71 %1 = tail call i32 @llvm.mips.extr.r.w(i64 %a0, i32 %a1) 72 ret i32 %1 73} 74 75define i32 @test__builtin_mips_extp1(i32 %i0, i32, i64 %a0) nounwind { 76entry: 77; CHECK: extp ${{[0-9]+}} 78 79 %1 = tail call i32 @llvm.mips.extp(i64 %a0, i32 15) 80 ret i32 %1 81} 82 83declare i32 @llvm.mips.extp(i64, i32) nounwind 84 85define i32 @test__builtin_mips_extp2(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 86entry: 87; CHECK: extpv 88 89 %1 = tail call i32 @llvm.mips.extp(i64 %a0, i32 %a1) 90 ret i32 %1 91} 92 93define i32 @test__builtin_mips_extpdp1(i32 %i0, i32, i64 %a0) nounwind { 94entry: 95; CHECK: extpdp ${{[0-9]+}} 96 97 %1 = tail call i32 @llvm.mips.extpdp(i64 %a0, i32 15) 98 ret i32 %1 99} 100 101declare i32 @llvm.mips.extpdp(i64, i32) nounwind 102 103define i32 @test__builtin_mips_extpdp2(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 104entry: 105; CHECK: extpdpv 106 107 %1 = tail call i32 @llvm.mips.extpdp(i64 %a0, i32 %a1) 108 ret i32 %1 109} 110 111define i64 @test__builtin_mips_dpau_h_qbl1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 112entry: 113; CHECK: dpau.h.qbl 114 115 %1 = bitcast i32 %a1.coerce to <4 x i8> 116 %2 = bitcast i32 %a2.coerce to <4 x i8> 117 %3 = tail call i64 @llvm.mips.dpau.h.qbl(i64 %a0, <4 x i8> %1, <4 x i8> %2) 118 ret i64 %3 119} 120 121declare i64 @llvm.mips.dpau.h.qbl(i64, <4 x i8>, <4 x i8>) nounwind readnone 122 123define i64 @test__builtin_mips_dpau_h_qbr1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 124entry: 125; CHECK: dpau.h.qbr 126 127 %1 = bitcast i32 %a1.coerce to <4 x i8> 128 %2 = bitcast i32 %a2.coerce to <4 x i8> 129 %3 = tail call i64 @llvm.mips.dpau.h.qbr(i64 %a0, <4 x i8> %1, <4 x i8> %2) 130 ret i64 %3 131} 132 133declare i64 @llvm.mips.dpau.h.qbr(i64, <4 x i8>, <4 x i8>) nounwind readnone 134 135define i64 @test__builtin_mips_dpsu_h_qbl1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 136entry: 137; CHECK: dpsu.h.qbl 138 139 %1 = bitcast i32 %a1.coerce to <4 x i8> 140 %2 = bitcast i32 %a2.coerce to <4 x i8> 141 %3 = tail call i64 @llvm.mips.dpsu.h.qbl(i64 %a0, <4 x i8> %1, <4 x i8> %2) 142 ret i64 %3 143} 144 145declare i64 @llvm.mips.dpsu.h.qbl(i64, <4 x i8>, <4 x i8>) nounwind readnone 146 147define i64 @test__builtin_mips_dpsu_h_qbr1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 148entry: 149; CHECK: dpsu.h.qbr 150 151 %1 = bitcast i32 %a1.coerce to <4 x i8> 152 %2 = bitcast i32 %a2.coerce to <4 x i8> 153 %3 = tail call i64 @llvm.mips.dpsu.h.qbr(i64 %a0, <4 x i8> %1, <4 x i8> %2) 154 ret i64 %3 155} 156 157declare i64 @llvm.mips.dpsu.h.qbr(i64, <4 x i8>, <4 x i8>) nounwind readnone 158 159define i64 @test__builtin_mips_dpaq_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 160entry: 161; CHECK: dpaq_s.w.ph 162 163 %1 = bitcast i32 %a1.coerce to <2 x i16> 164 %2 = bitcast i32 %a2.coerce to <2 x i16> 165 %3 = tail call i64 @llvm.mips.dpaq.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 166 ret i64 %3 167} 168 169declare i64 @llvm.mips.dpaq.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 170 171define i64 @test__builtin_mips_dpaq_sa_l_w1(i32 %i0, i32, i64 %a0, i32 %a1, i32 %a2) nounwind { 172entry: 173; CHECK: dpaq_sa.l.w 174 175 %1 = tail call i64 @llvm.mips.dpaq.sa.l.w(i64 %a0, i32 %a1, i32 %a2) 176 ret i64 %1 177} 178 179declare i64 @llvm.mips.dpaq.sa.l.w(i64, i32, i32) nounwind 180 181define i64 @test__builtin_mips_dpsq_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 182entry: 183; CHECK: dpsq_s.w.ph 184 185 %1 = bitcast i32 %a1.coerce to <2 x i16> 186 %2 = bitcast i32 %a2.coerce to <2 x i16> 187 %3 = tail call i64 @llvm.mips.dpsq.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 188 ret i64 %3 189} 190 191declare i64 @llvm.mips.dpsq.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 192 193define i64 @test__builtin_mips_dpsq_sa_l_w1(i32 %i0, i32, i64 %a0, i32 %a1, i32 %a2) nounwind { 194entry: 195; CHECK: dpsq_sa.l.w 196 197 %1 = tail call i64 @llvm.mips.dpsq.sa.l.w(i64 %a0, i32 %a1, i32 %a2) 198 ret i64 %1 199} 200 201declare i64 @llvm.mips.dpsq.sa.l.w(i64, i32, i32) nounwind 202 203define i64 @test__builtin_mips_mulsaq_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 204entry: 205; CHECK: mulsaq_s.w.ph 206 207 %1 = bitcast i32 %a1.coerce to <2 x i16> 208 %2 = bitcast i32 %a2.coerce to <2 x i16> 209 %3 = tail call i64 @llvm.mips.mulsaq.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 210 ret i64 %3 211} 212 213declare i64 @llvm.mips.mulsaq.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 214 215define i64 @test__builtin_mips_maq_s_w_phl1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 216entry: 217; CHECK: maq_s.w.phl 218 219 %1 = bitcast i32 %a1.coerce to <2 x i16> 220 %2 = bitcast i32 %a2.coerce to <2 x i16> 221 %3 = tail call i64 @llvm.mips.maq.s.w.phl(i64 %a0, <2 x i16> %1, <2 x i16> %2) 222 ret i64 %3 223} 224 225declare i64 @llvm.mips.maq.s.w.phl(i64, <2 x i16>, <2 x i16>) nounwind 226 227define i64 @test__builtin_mips_maq_s_w_phr1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 228entry: 229; CHECK: maq_s.w.phr 230 231 %1 = bitcast i32 %a1.coerce to <2 x i16> 232 %2 = bitcast i32 %a2.coerce to <2 x i16> 233 %3 = tail call i64 @llvm.mips.maq.s.w.phr(i64 %a0, <2 x i16> %1, <2 x i16> %2) 234 ret i64 %3 235} 236 237declare i64 @llvm.mips.maq.s.w.phr(i64, <2 x i16>, <2 x i16>) nounwind 238 239define i64 @test__builtin_mips_maq_sa_w_phl1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 240entry: 241; CHECK: maq_sa.w.phl 242 243 %1 = bitcast i32 %a1.coerce to <2 x i16> 244 %2 = bitcast i32 %a2.coerce to <2 x i16> 245 %3 = tail call i64 @llvm.mips.maq.sa.w.phl(i64 %a0, <2 x i16> %1, <2 x i16> %2) 246 ret i64 %3 247} 248 249declare i64 @llvm.mips.maq.sa.w.phl(i64, <2 x i16>, <2 x i16>) nounwind 250 251define i64 @test__builtin_mips_maq_sa_w_phr1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 252entry: 253; CHECK: maq_sa.w.phr 254 255 %1 = bitcast i32 %a1.coerce to <2 x i16> 256 %2 = bitcast i32 %a2.coerce to <2 x i16> 257 %3 = tail call i64 @llvm.mips.maq.sa.w.phr(i64 %a0, <2 x i16> %1, <2 x i16> %2) 258 ret i64 %3 259} 260 261declare i64 @llvm.mips.maq.sa.w.phr(i64, <2 x i16>, <2 x i16>) nounwind 262 263define i64 @test__builtin_mips_shilo1(i32 %i0, i32, i64 %a0) nounwind readnone { 264entry: 265; CHECK: shilo $ac{{[0-9]}} 266 267 %1 = tail call i64 @llvm.mips.shilo(i64 %a0, i32 0) 268 ret i64 %1 269} 270 271declare i64 @llvm.mips.shilo(i64, i32) nounwind readnone 272 273define i64 @test__builtin_mips_shilo2(i32 %i0, i32, i64 %a0, i32 %a1) nounwind readnone { 274entry: 275; CHECK: shilov 276 277 %1 = tail call i64 @llvm.mips.shilo(i64 %a0, i32 %a1) 278 ret i64 %1 279} 280 281define i64 @test__builtin_mips_mthlip1(i32 %i0, i32, i64 %a0, i32 %a1) nounwind { 282entry: 283; CHECK: mthlip ${{[0-9]+}} 284 285 %1 = tail call i64 @llvm.mips.mthlip(i64 %a0, i32 %a1) 286 ret i64 %1 287} 288 289declare i64 @llvm.mips.mthlip(i64, i32) nounwind 290 291define i32 @test__builtin_mips_bposge321(i32 %i0) nounwind readonly { 292entry: 293; CHECK: bposge32 $BB{{[0-9]+}} 294 295 %0 = tail call i32 @llvm.mips.bposge32() 296 ret i32 %0 297} 298 299declare i32 @llvm.mips.bposge32() nounwind readonly 300 301define i64 @test__builtin_mips_madd1(i32 %i0, i32, i64 %a0, i32 %a1, i32 %a2) nounwind readnone { 302entry: 303; CHECK: madd $ac{{[0-9]}} 304 305 %1 = tail call i64 @llvm.mips.madd(i64 %a0, i32 %a1, i32 %a2) 306 ret i64 %1 307} 308 309declare i64 @llvm.mips.madd(i64, i32, i32) nounwind readnone 310 311define i64 @test__builtin_mips_maddu1(i32 %i0, i32, i64 %a0, i32 %a1, i32 %a2) nounwind readnone { 312entry: 313; CHECK: maddu $ac{{[0-9]}} 314 315 %1 = tail call i64 @llvm.mips.maddu(i64 %a0, i32 %a1, i32 %a2) 316 ret i64 %1 317} 318 319declare i64 @llvm.mips.maddu(i64, i32, i32) nounwind readnone 320 321define i64 @test__builtin_mips_msub1(i32 %i0, i32, i64 %a0, i32 %a1, i32 %a2) nounwind readnone { 322entry: 323; CHECK: msub $ac{{[0-9]}} 324 325 %1 = tail call i64 @llvm.mips.msub(i64 %a0, i32 %a1, i32 %a2) 326 ret i64 %1 327} 328 329declare i64 @llvm.mips.msub(i64, i32, i32) nounwind readnone 330 331define i64 @test__builtin_mips_msubu1(i32 %i0, i32, i64 %a0, i32 %a1, i32 %a2) nounwind readnone { 332entry: 333; CHECK: msubu $ac{{[0-9]}} 334 335 %1 = tail call i64 @llvm.mips.msubu(i64 %a0, i32 %a1, i32 %a2) 336 ret i64 %1 337} 338 339declare i64 @llvm.mips.msubu(i64, i32, i32) nounwind readnone 340 341define i64 @test__builtin_mips_mult1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 342entry: 343; CHECK: mult $ac{{[0-9]}} 344 345 %0 = tail call i64 @llvm.mips.mult(i32 %a0, i32 %a1) 346 ret i64 %0 347} 348 349declare i64 @llvm.mips.mult(i32, i32) nounwind readnone 350 351define i64 @test__builtin_mips_multu1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 352entry: 353; CHECK: multu $ac{{[0-9]}} 354 355 %0 = tail call i64 @llvm.mips.multu(i32 %a0, i32 %a1) 356 ret i64 %0 357} 358 359declare i64 @llvm.mips.multu(i32, i32) nounwind readnone 360 361define { i32 } @test__builtin_mips_addq_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 362entry: 363; CHECK: addq.ph 364 365 %0 = bitcast i32 %a0.coerce to <2 x i16> 366 %1 = bitcast i32 %a1.coerce to <2 x i16> 367 %2 = tail call <2 x i16> @llvm.mips.addq.ph(<2 x i16> %0, <2 x i16> %1) 368 %3 = bitcast <2 x i16> %2 to i32 369 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 370 ret { i32 } %.fca.0.insert 371} 372 373declare <2 x i16> @llvm.mips.addq.ph(<2 x i16>, <2 x i16>) nounwind 374 375define { i32 } @test__builtin_mips_addq_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 376entry: 377; CHECK: addq_s.ph 378 379 %0 = bitcast i32 %a0.coerce to <2 x i16> 380 %1 = bitcast i32 %a1.coerce to <2 x i16> 381 %2 = tail call <2 x i16> @llvm.mips.addq.s.ph(<2 x i16> %0, <2 x i16> %1) 382 %3 = bitcast <2 x i16> %2 to i32 383 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 384 ret { i32 } %.fca.0.insert 385} 386 387declare <2 x i16> @llvm.mips.addq.s.ph(<2 x i16>, <2 x i16>) nounwind 388 389define i32 @test__builtin_mips_addq_s_w1(i32 %i0, i32 %a0, i32 %a1) nounwind { 390entry: 391; CHECK: addq_s.w 392 393 %0 = tail call i32 @llvm.mips.addq.s.w(i32 %a0, i32 %a1) 394 ret i32 %0 395} 396 397declare i32 @llvm.mips.addq.s.w(i32, i32) nounwind 398 399define { i32 } @test__builtin_mips_addu_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 400entry: 401; CHECK: addu.qb 402 403 %0 = bitcast i32 %a0.coerce to <4 x i8> 404 %1 = bitcast i32 %a1.coerce to <4 x i8> 405 %2 = tail call <4 x i8> @llvm.mips.addu.qb(<4 x i8> %0, <4 x i8> %1) 406 %3 = bitcast <4 x i8> %2 to i32 407 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 408 ret { i32 } %.fca.0.insert 409} 410 411declare <4 x i8> @llvm.mips.addu.qb(<4 x i8>, <4 x i8>) nounwind 412 413define { i32 } @test__builtin_mips_addu_s_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 414entry: 415; CHECK: addu_s.qb 416 417 %0 = bitcast i32 %a0.coerce to <4 x i8> 418 %1 = bitcast i32 %a1.coerce to <4 x i8> 419 %2 = tail call <4 x i8> @llvm.mips.addu.s.qb(<4 x i8> %0, <4 x i8> %1) 420 %3 = bitcast <4 x i8> %2 to i32 421 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 422 ret { i32 } %.fca.0.insert 423} 424 425declare <4 x i8> @llvm.mips.addu.s.qb(<4 x i8>, <4 x i8>) nounwind 426 427define { i32 } @test__builtin_mips_subq_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 428entry: 429; CHECK: subq.ph 430 431 %0 = bitcast i32 %a0.coerce to <2 x i16> 432 %1 = bitcast i32 %a1.coerce to <2 x i16> 433 %2 = tail call <2 x i16> @llvm.mips.subq.ph(<2 x i16> %0, <2 x i16> %1) 434 %3 = bitcast <2 x i16> %2 to i32 435 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 436 ret { i32 } %.fca.0.insert 437} 438 439declare <2 x i16> @llvm.mips.subq.ph(<2 x i16>, <2 x i16>) nounwind 440 441define { i32 } @test__builtin_mips_subq_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 442entry: 443; CHECK: subq_s.ph 444 445 %0 = bitcast i32 %a0.coerce to <2 x i16> 446 %1 = bitcast i32 %a1.coerce to <2 x i16> 447 %2 = tail call <2 x i16> @llvm.mips.subq.s.ph(<2 x i16> %0, <2 x i16> %1) 448 %3 = bitcast <2 x i16> %2 to i32 449 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 450 ret { i32 } %.fca.0.insert 451} 452 453declare <2 x i16> @llvm.mips.subq.s.ph(<2 x i16>, <2 x i16>) nounwind 454 455define i32 @test__builtin_mips_subq_s_w1(i32 %i0, i32 %a0, i32 %a1) nounwind { 456entry: 457; CHECK: subq_s.w 458 459 %0 = tail call i32 @llvm.mips.subq.s.w(i32 %a0, i32 %a1) 460 ret i32 %0 461} 462 463declare i32 @llvm.mips.subq.s.w(i32, i32) nounwind 464 465define { i32 } @test__builtin_mips_subu_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 466entry: 467; CHECK: subu.qb 468 469 %0 = bitcast i32 %a0.coerce to <4 x i8> 470 %1 = bitcast i32 %a1.coerce to <4 x i8> 471 %2 = tail call <4 x i8> @llvm.mips.subu.qb(<4 x i8> %0, <4 x i8> %1) 472 %3 = bitcast <4 x i8> %2 to i32 473 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 474 ret { i32 } %.fca.0.insert 475} 476 477declare <4 x i8> @llvm.mips.subu.qb(<4 x i8>, <4 x i8>) nounwind 478 479define { i32 } @test__builtin_mips_subu_s_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 480entry: 481; CHECK: subu_s.qb 482 483 %0 = bitcast i32 %a0.coerce to <4 x i8> 484 %1 = bitcast i32 %a1.coerce to <4 x i8> 485 %2 = tail call <4 x i8> @llvm.mips.subu.s.qb(<4 x i8> %0, <4 x i8> %1) 486 %3 = bitcast <4 x i8> %2 to i32 487 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 488 ret { i32 } %.fca.0.insert 489} 490 491declare <4 x i8> @llvm.mips.subu.s.qb(<4 x i8>, <4 x i8>) nounwind 492 493define i32 @test__builtin_mips_addsc1(i32 %i0, i32 %a0, i32 %a1) nounwind { 494entry: 495; CHECK: addsc ${{[0-9]+}} 496 497 %0 = tail call i32 @llvm.mips.addsc(i32 %a0, i32 %a1) 498 ret i32 %0 499} 500 501declare i32 @llvm.mips.addsc(i32, i32) nounwind 502 503define i32 @test__builtin_mips_addwc1(i32 %i0, i32 %a0, i32 %a1) nounwind { 504entry: 505; CHECK: addwc ${{[0-9]+}} 506 507 %0 = tail call i32 @llvm.mips.addwc(i32 %a0, i32 %a1) 508 ret i32 %0 509} 510 511declare i32 @llvm.mips.addwc(i32, i32) nounwind 512 513define i32 @test__builtin_mips_modsub1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 514entry: 515; CHECK: modsub ${{[0-9]+}} 516 517 %0 = tail call i32 @llvm.mips.modsub(i32 %a0, i32 %a1) 518 ret i32 %0 519} 520 521declare i32 @llvm.mips.modsub(i32, i32) nounwind readnone 522 523define i32 @test__builtin_mips_raddu_w_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone { 524entry: 525; CHECK: raddu.w.qb 526 527 %0 = bitcast i32 %a0.coerce to <4 x i8> 528 %1 = tail call i32 @llvm.mips.raddu.w.qb(<4 x i8> %0) 529 ret i32 %1 530} 531 532declare i32 @llvm.mips.raddu.w.qb(<4 x i8>) nounwind readnone 533 534define { i32 } @test__builtin_mips_muleu_s_ph_qbl1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 535entry: 536; CHECK: muleu_s.ph.qbl 537 538 %0 = bitcast i32 %a0.coerce to <4 x i8> 539 %1 = bitcast i32 %a1.coerce to <2 x i16> 540 %2 = tail call <2 x i16> @llvm.mips.muleu.s.ph.qbl(<4 x i8> %0, <2 x i16> %1) 541 %3 = bitcast <2 x i16> %2 to i32 542 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 543 ret { i32 } %.fca.0.insert 544} 545 546declare <2 x i16> @llvm.mips.muleu.s.ph.qbl(<4 x i8>, <2 x i16>) nounwind 547 548define { i32 } @test__builtin_mips_muleu_s_ph_qbr1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 549entry: 550; CHECK: muleu_s.ph.qbr 551 552 %0 = bitcast i32 %a0.coerce to <4 x i8> 553 %1 = bitcast i32 %a1.coerce to <2 x i16> 554 %2 = tail call <2 x i16> @llvm.mips.muleu.s.ph.qbr(<4 x i8> %0, <2 x i16> %1) 555 %3 = bitcast <2 x i16> %2 to i32 556 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 557 ret { i32 } %.fca.0.insert 558} 559 560declare <2 x i16> @llvm.mips.muleu.s.ph.qbr(<4 x i8>, <2 x i16>) nounwind 561 562define { i32 } @test__builtin_mips_mulq_rs_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 563entry: 564; CHECK: mulq_rs.ph 565 566 %0 = bitcast i32 %a0.coerce to <2 x i16> 567 %1 = bitcast i32 %a1.coerce to <2 x i16> 568 %2 = tail call <2 x i16> @llvm.mips.mulq.rs.ph(<2 x i16> %0, <2 x i16> %1) 569 %3 = bitcast <2 x i16> %2 to i32 570 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 571 ret { i32 } %.fca.0.insert 572} 573 574declare <2 x i16> @llvm.mips.mulq.rs.ph(<2 x i16>, <2 x i16>) nounwind 575 576define i32 @test__builtin_mips_muleq_s_w_phl1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 577entry: 578; CHECK: muleq_s.w.phl 579 580 %0 = bitcast i32 %a0.coerce to <2 x i16> 581 %1 = bitcast i32 %a1.coerce to <2 x i16> 582 %2 = tail call i32 @llvm.mips.muleq.s.w.phl(<2 x i16> %0, <2 x i16> %1) 583 ret i32 %2 584} 585 586declare i32 @llvm.mips.muleq.s.w.phl(<2 x i16>, <2 x i16>) nounwind 587 588define i32 @test__builtin_mips_muleq_s_w_phr1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 589entry: 590; CHECK: muleq_s.w.phr 591 592 %0 = bitcast i32 %a0.coerce to <2 x i16> 593 %1 = bitcast i32 %a1.coerce to <2 x i16> 594 %2 = tail call i32 @llvm.mips.muleq.s.w.phr(<2 x i16> %0, <2 x i16> %1) 595 ret i32 %2 596} 597 598declare i32 @llvm.mips.muleq.s.w.phr(<2 x i16>, <2 x i16>) nounwind 599 600define { i32 } @test__builtin_mips_precrq_qb_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 601entry: 602; CHECK: precrq.qb.ph 603 604 %0 = bitcast i32 %a0.coerce to <2 x i16> 605 %1 = bitcast i32 %a1.coerce to <2 x i16> 606 %2 = tail call <4 x i8> @llvm.mips.precrq.qb.ph(<2 x i16> %0, <2 x i16> %1) 607 %3 = bitcast <4 x i8> %2 to i32 608 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 609 ret { i32 } %.fca.0.insert 610} 611 612declare <4 x i8> @llvm.mips.precrq.qb.ph(<2 x i16>, <2 x i16>) nounwind readnone 613 614define { i32 } @test__builtin_mips_precrq_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 615entry: 616; CHECK: precrq.ph.w 617 618 %0 = tail call <2 x i16> @llvm.mips.precrq.ph.w(i32 %a0, i32 %a1) 619 %1 = bitcast <2 x i16> %0 to i32 620 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 621 ret { i32 } %.fca.0.insert 622} 623 624declare <2 x i16> @llvm.mips.precrq.ph.w(i32, i32) nounwind readnone 625 626define { i32 } @test__builtin_mips_precrq_rs_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind { 627entry: 628; CHECK: precrq_rs.ph.w 629 630 %0 = tail call <2 x i16> @llvm.mips.precrq.rs.ph.w(i32 %a0, i32 %a1) 631 %1 = bitcast <2 x i16> %0 to i32 632 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 633 ret { i32 } %.fca.0.insert 634} 635 636declare <2 x i16> @llvm.mips.precrq.rs.ph.w(i32, i32) nounwind 637 638define { i32 } @test__builtin_mips_precrqu_s_qb_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 639entry: 640; CHECK: precrqu_s.qb.ph 641 642 %0 = bitcast i32 %a0.coerce to <2 x i16> 643 %1 = bitcast i32 %a1.coerce to <2 x i16> 644 %2 = tail call <4 x i8> @llvm.mips.precrqu.s.qb.ph(<2 x i16> %0, <2 x i16> %1) 645 %3 = bitcast <4 x i8> %2 to i32 646 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 647 ret { i32 } %.fca.0.insert 648} 649 650declare <4 x i8> @llvm.mips.precrqu.s.qb.ph(<2 x i16>, <2 x i16>) nounwind 651 652 653define i32 @test__builtin_mips_cmpu_eq_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 654entry: 655; CHECK: cmpu.eq.qb 656 657 %0 = bitcast i32 %a0.coerce to <4 x i8> 658 %1 = bitcast i32 %a1.coerce to <4 x i8> 659 tail call void @llvm.mips.cmpu.eq.qb(<4 x i8> %0, <4 x i8> %1) 660 %2 = tail call i32 @llvm.mips.rddsp(i32 31) 661 ret i32 %2 662} 663 664declare void @llvm.mips.cmpu.eq.qb(<4 x i8>, <4 x i8>) nounwind 665 666declare i32 @llvm.mips.rddsp(i32) nounwind readonly 667 668define i32 @test__builtin_mips_cmpu_lt_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 669entry: 670; CHECK: cmpu.lt.qb 671 672 %0 = bitcast i32 %a0.coerce to <4 x i8> 673 %1 = bitcast i32 %a1.coerce to <4 x i8> 674 tail call void @llvm.mips.cmpu.lt.qb(<4 x i8> %0, <4 x i8> %1) 675 %2 = tail call i32 @llvm.mips.rddsp(i32 31) 676 ret i32 %2 677} 678 679declare void @llvm.mips.cmpu.lt.qb(<4 x i8>, <4 x i8>) nounwind 680 681define i32 @test__builtin_mips_cmpu_le_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 682entry: 683; CHECK: cmpu.le.qb 684 685 %0 = bitcast i32 %a0.coerce to <4 x i8> 686 %1 = bitcast i32 %a1.coerce to <4 x i8> 687 tail call void @llvm.mips.cmpu.le.qb(<4 x i8> %0, <4 x i8> %1) 688 %2 = tail call i32 @llvm.mips.rddsp(i32 31) 689 ret i32 %2 690} 691 692declare void @llvm.mips.cmpu.le.qb(<4 x i8>, <4 x i8>) nounwind 693 694define i32 @test__builtin_mips_cmpgu_eq_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 695entry: 696; CHECK: cmpgu.eq.qb 697 698 %0 = bitcast i32 %a0.coerce to <4 x i8> 699 %1 = bitcast i32 %a1.coerce to <4 x i8> 700 %2 = tail call i32 @llvm.mips.cmpgu.eq.qb(<4 x i8> %0, <4 x i8> %1) 701 ret i32 %2 702} 703 704declare i32 @llvm.mips.cmpgu.eq.qb(<4 x i8>, <4 x i8>) nounwind 705 706define i32 @test__builtin_mips_cmpgu_lt_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 707entry: 708; CHECK: cmpgu.lt.qb 709 710 %0 = bitcast i32 %a0.coerce to <4 x i8> 711 %1 = bitcast i32 %a1.coerce to <4 x i8> 712 %2 = tail call i32 @llvm.mips.cmpgu.lt.qb(<4 x i8> %0, <4 x i8> %1) 713 ret i32 %2 714} 715 716declare i32 @llvm.mips.cmpgu.lt.qb(<4 x i8>, <4 x i8>) nounwind 717 718define i32 @test__builtin_mips_cmpgu_le_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 719entry: 720; CHECK: cmpgu.le.qb 721 722 %0 = bitcast i32 %a0.coerce to <4 x i8> 723 %1 = bitcast i32 %a1.coerce to <4 x i8> 724 %2 = tail call i32 @llvm.mips.cmpgu.le.qb(<4 x i8> %0, <4 x i8> %1) 725 ret i32 %2 726} 727 728declare i32 @llvm.mips.cmpgu.le.qb(<4 x i8>, <4 x i8>) nounwind 729 730define i32 @test__builtin_mips_cmp_eq_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 731entry: 732; CHECK: cmp.eq.ph 733 734 %0 = bitcast i32 %a0.coerce to <2 x i16> 735 %1 = bitcast i32 %a1.coerce to <2 x i16> 736 tail call void @llvm.mips.cmp.eq.ph(<2 x i16> %0, <2 x i16> %1) 737 %2 = tail call i32 @llvm.mips.rddsp(i32 31) 738 ret i32 %2 739} 740 741declare void @llvm.mips.cmp.eq.ph(<2 x i16>, <2 x i16>) nounwind 742 743define i32 @test__builtin_mips_cmp_lt_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 744entry: 745; CHECK: cmp.lt.ph 746 747 %0 = bitcast i32 %a0.coerce to <2 x i16> 748 %1 = bitcast i32 %a1.coerce to <2 x i16> 749 tail call void @llvm.mips.cmp.lt.ph(<2 x i16> %0, <2 x i16> %1) 750 %2 = tail call i32 @llvm.mips.rddsp(i32 31) 751 ret i32 %2 752} 753 754declare void @llvm.mips.cmp.lt.ph(<2 x i16>, <2 x i16>) nounwind 755 756define i32 @test__builtin_mips_cmp_le_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 757entry: 758; CHECK: cmp.le.ph 759 760 %0 = bitcast i32 %a0.coerce to <2 x i16> 761 %1 = bitcast i32 %a1.coerce to <2 x i16> 762 tail call void @llvm.mips.cmp.le.ph(<2 x i16> %0, <2 x i16> %1) 763 %2 = tail call i32 @llvm.mips.rddsp(i32 31) 764 ret i32 %2 765} 766 767declare void @llvm.mips.cmp.le.ph(<2 x i16>, <2 x i16>) nounwind 768 769define { i32 } @test__builtin_mips_pick_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readonly { 770entry: 771; CHECK: pick.qb 772 773 %0 = bitcast i32 %a0.coerce to <4 x i8> 774 %1 = bitcast i32 %a1.coerce to <4 x i8> 775 %2 = tail call <4 x i8> @llvm.mips.pick.qb(<4 x i8> %0, <4 x i8> %1) 776 %3 = bitcast <4 x i8> %2 to i32 777 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 778 ret { i32 } %.fca.0.insert 779} 780 781declare <4 x i8> @llvm.mips.pick.qb(<4 x i8>, <4 x i8>) nounwind readonly 782 783define { i32 } @test__builtin_mips_pick_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readonly { 784entry: 785; CHECK: pick.ph 786 787 %0 = bitcast i32 %a0.coerce to <2 x i16> 788 %1 = bitcast i32 %a1.coerce to <2 x i16> 789 %2 = tail call <2 x i16> @llvm.mips.pick.ph(<2 x i16> %0, <2 x i16> %1) 790 %3 = bitcast <2 x i16> %2 to i32 791 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 792 ret { i32 } %.fca.0.insert 793} 794 795declare <2 x i16> @llvm.mips.pick.ph(<2 x i16>, <2 x i16>) nounwind readonly 796 797define { i32 } @test__builtin_mips_packrl_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 798entry: 799; CHECK: packrl.ph 800 801 %0 = bitcast i32 %a0.coerce to <2 x i16> 802 %1 = bitcast i32 %a1.coerce to <2 x i16> 803 %2 = tail call <2 x i16> @llvm.mips.packrl.ph(<2 x i16> %0, <2 x i16> %1) 804 %3 = bitcast <2 x i16> %2 to i32 805 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 806 ret { i32 } %.fca.0.insert 807} 808 809declare <2 x i16> @llvm.mips.packrl.ph(<2 x i16>, <2 x i16>) nounwind readnone 810 811define i32 @test__builtin_mips_rddsp1(i32 %i0) nounwind readonly { 812entry: 813; CHECK: rddsp ${{[0-9]+}} 814 815 %0 = tail call i32 @llvm.mips.rddsp(i32 31) 816 ret i32 %0 817} 818 819define { i32 } @test__builtin_mips_shll_qb1(i32 %i0, i32 %a0.coerce) nounwind { 820entry: 821; CHECK: shll.qb 822 823 %0 = bitcast i32 %a0.coerce to <4 x i8> 824 %1 = tail call <4 x i8> @llvm.mips.shll.qb(<4 x i8> %0, i32 3) 825 %2 = bitcast <4 x i8> %1 to i32 826 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 827 ret { i32 } %.fca.0.insert 828} 829 830declare <4 x i8> @llvm.mips.shll.qb(<4 x i8>, i32) nounwind 831 832define { i32 } @test__builtin_mips_shll_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind { 833entry: 834; CHECK: shllv.qb 835 836 %0 = bitcast i32 %a0.coerce to <4 x i8> 837 %1 = tail call <4 x i8> @llvm.mips.shll.qb(<4 x i8> %0, i32 %a1) 838 %2 = bitcast <4 x i8> %1 to i32 839 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 840 ret { i32 } %.fca.0.insert 841} 842 843define { i32 } @test__builtin_mips_shll_ph1(i32 %i0, i32 %a0.coerce) nounwind { 844entry: 845; CHECK: shll.ph 846 847 %0 = bitcast i32 %a0.coerce to <2 x i16> 848 %1 = tail call <2 x i16> @llvm.mips.shll.ph(<2 x i16> %0, i32 7) 849 %2 = bitcast <2 x i16> %1 to i32 850 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 851 ret { i32 } %.fca.0.insert 852} 853 854declare <2 x i16> @llvm.mips.shll.ph(<2 x i16>, i32) nounwind 855 856define { i32 } @test__builtin_mips_shll_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind { 857entry: 858; CHECK: shllv.ph 859 860 %0 = bitcast i32 %a0.coerce to <2 x i16> 861 %1 = tail call <2 x i16> @llvm.mips.shll.ph(<2 x i16> %0, i32 %a1) 862 %2 = bitcast <2 x i16> %1 to i32 863 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 864 ret { i32 } %.fca.0.insert 865} 866 867define { i32 } @test__builtin_mips_shll_s_ph1(i32 %i0, i32 %a0.coerce) nounwind { 868entry: 869; CHECK: shll_s.ph 870 871 %0 = bitcast i32 %a0.coerce to <2 x i16> 872 %1 = tail call <2 x i16> @llvm.mips.shll.s.ph(<2 x i16> %0, i32 7) 873 %2 = bitcast <2 x i16> %1 to i32 874 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 875 ret { i32 } %.fca.0.insert 876} 877 878declare <2 x i16> @llvm.mips.shll.s.ph(<2 x i16>, i32) nounwind 879 880define { i32 } @test__builtin_mips_shll_s_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind { 881entry: 882; CHECK: shllv_s.ph 883 884 %0 = bitcast i32 %a0.coerce to <2 x i16> 885 %1 = tail call <2 x i16> @llvm.mips.shll.s.ph(<2 x i16> %0, i32 %a1) 886 %2 = bitcast <2 x i16> %1 to i32 887 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 888 ret { i32 } %.fca.0.insert 889} 890 891define i32 @test__builtin_mips_shll_s_w1(i32 %i0, i32 %a0) nounwind { 892entry: 893; CHECK: shll_s.w 894 895 %0 = tail call i32 @llvm.mips.shll.s.w(i32 %a0, i32 15) 896 ret i32 %0 897} 898 899declare i32 @llvm.mips.shll.s.w(i32, i32) nounwind 900 901define i32 @test__builtin_mips_shll_s_w2(i32 %i0, i32 %a0, i32 %a1) nounwind { 902entry: 903; CHECK: shllv_s.w 904 905 %0 = tail call i32 @llvm.mips.shll.s.w(i32 %a0, i32 %a1) 906 ret i32 %0 907} 908 909define { i32 } @test__builtin_mips_shrl_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone { 910entry: 911; CHECK: shrl.qb 912 913 %0 = bitcast i32 %a0.coerce to <4 x i8> 914 %1 = tail call <4 x i8> @llvm.mips.shrl.qb(<4 x i8> %0, i32 3) 915 %2 = bitcast <4 x i8> %1 to i32 916 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 917 ret { i32 } %.fca.0.insert 918} 919 920declare <4 x i8> @llvm.mips.shrl.qb(<4 x i8>, i32) nounwind readnone 921 922define { i32 } @test__builtin_mips_shrl_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone { 923entry: 924; CHECK: shrlv.qb 925 926 %0 = bitcast i32 %a0.coerce to <4 x i8> 927 %1 = tail call <4 x i8> @llvm.mips.shrl.qb(<4 x i8> %0, i32 %a1) 928 %2 = bitcast <4 x i8> %1 to i32 929 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 930 ret { i32 } %.fca.0.insert 931} 932 933define { i32 } @test__builtin_mips_shra_ph1(i32 %i0, i32 %a0.coerce) nounwind readnone { 934entry: 935; CHECK: shra.ph 936 937 %0 = bitcast i32 %a0.coerce to <2 x i16> 938 %1 = tail call <2 x i16> @llvm.mips.shra.ph(<2 x i16> %0, i32 7) 939 %2 = bitcast <2 x i16> %1 to i32 940 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 941 ret { i32 } %.fca.0.insert 942} 943 944declare <2 x i16> @llvm.mips.shra.ph(<2 x i16>, i32) nounwind readnone 945 946define { i32 } @test__builtin_mips_shra_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone { 947entry: 948; CHECK: shrav.ph 949 950 %0 = bitcast i32 %a0.coerce to <2 x i16> 951 %1 = tail call <2 x i16> @llvm.mips.shra.ph(<2 x i16> %0, i32 %a1) 952 %2 = bitcast <2 x i16> %1 to i32 953 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 954 ret { i32 } %.fca.0.insert 955} 956 957define { i32 } @test__builtin_mips_shra_r_ph1(i32 %i0, i32 %a0.coerce) nounwind readnone { 958entry: 959; CHECK: shra_r.ph 960 961 %0 = bitcast i32 %a0.coerce to <2 x i16> 962 %1 = tail call <2 x i16> @llvm.mips.shra.r.ph(<2 x i16> %0, i32 7) 963 %2 = bitcast <2 x i16> %1 to i32 964 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 965 ret { i32 } %.fca.0.insert 966} 967 968declare <2 x i16> @llvm.mips.shra.r.ph(<2 x i16>, i32) nounwind readnone 969 970define { i32 } @test__builtin_mips_shra_r_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone { 971entry: 972; CHECK: shrav_r.ph 973 974 %0 = bitcast i32 %a0.coerce to <2 x i16> 975 %1 = tail call <2 x i16> @llvm.mips.shra.r.ph(<2 x i16> %0, i32 %a1) 976 %2 = bitcast <2 x i16> %1 to i32 977 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 978 ret { i32 } %.fca.0.insert 979} 980 981define i32 @test__builtin_mips_shra_r_w1(i32 %i0, i32 %a0) nounwind readnone { 982entry: 983; CHECK: shra_r.w 984 985 %0 = tail call i32 @llvm.mips.shra.r.w(i32 %a0, i32 15) 986 ret i32 %0 987} 988 989declare i32 @llvm.mips.shra.r.w(i32, i32) nounwind readnone 990 991define i32 @test__builtin_mips_shra_r_w2(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 992entry: 993; CHECK: shrav_r.w 994 995 %0 = tail call i32 @llvm.mips.shra.r.w(i32 %a0, i32 %a1) 996 ret i32 %0 997} 998 999define { i32 } @test__builtin_mips_absq_s_ph1(i32 %i0, i32 %a0.coerce) nounwind { 1000entry: 1001; CHECK: absq_s.ph 1002 1003 %0 = bitcast i32 %a0.coerce to <2 x i16> 1004 %1 = tail call <2 x i16> @llvm.mips.absq.s.ph(<2 x i16> %0) 1005 %2 = bitcast <2 x i16> %1 to i32 1006 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1007 ret { i32 } %.fca.0.insert 1008} 1009 1010declare <2 x i16> @llvm.mips.absq.s.ph(<2 x i16>) nounwind 1011 1012define i32 @test__builtin_mips_absq_s_w1(i32 %i0, i32 %a0) nounwind { 1013entry: 1014; CHECK: absq_s.w 1015 1016 %0 = tail call i32 @llvm.mips.absq.s.w(i32 %a0) 1017 ret i32 %0 1018} 1019 1020declare i32 @llvm.mips.absq.s.w(i32) nounwind 1021 1022define i32 @test__builtin_mips_preceq_w_phl1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1023entry: 1024; CHECK: preceq.w.phl 1025 1026 %0 = bitcast i32 %a0.coerce to <2 x i16> 1027 %1 = tail call i32 @llvm.mips.preceq.w.phl(<2 x i16> %0) 1028 ret i32 %1 1029} 1030 1031declare i32 @llvm.mips.preceq.w.phl(<2 x i16>) nounwind readnone 1032 1033define i32 @test__builtin_mips_preceq_w_phr1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1034entry: 1035; CHECK: preceq.w.phr 1036 1037 %0 = bitcast i32 %a0.coerce to <2 x i16> 1038 %1 = tail call i32 @llvm.mips.preceq.w.phr(<2 x i16> %0) 1039 ret i32 %1 1040} 1041 1042declare i32 @llvm.mips.preceq.w.phr(<2 x i16>) nounwind readnone 1043 1044define { i32 } @test__builtin_mips_precequ_ph_qbl1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1045entry: 1046; CHECK: precequ.ph.qbl 1047 1048 %0 = bitcast i32 %a0.coerce to <4 x i8> 1049 %1 = tail call <2 x i16> @llvm.mips.precequ.ph.qbl(<4 x i8> %0) 1050 %2 = bitcast <2 x i16> %1 to i32 1051 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1052 ret { i32 } %.fca.0.insert 1053} 1054 1055declare <2 x i16> @llvm.mips.precequ.ph.qbl(<4 x i8>) nounwind readnone 1056 1057define { i32 } @test__builtin_mips_precequ_ph_qbr1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1058entry: 1059; CHECK: precequ.ph.qbr 1060 1061 %0 = bitcast i32 %a0.coerce to <4 x i8> 1062 %1 = tail call <2 x i16> @llvm.mips.precequ.ph.qbr(<4 x i8> %0) 1063 %2 = bitcast <2 x i16> %1 to i32 1064 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1065 ret { i32 } %.fca.0.insert 1066} 1067 1068declare <2 x i16> @llvm.mips.precequ.ph.qbr(<4 x i8>) nounwind readnone 1069 1070define { i32 } @test__builtin_mips_precequ_ph_qbla1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1071entry: 1072; CHECK: precequ.ph.qbla 1073 1074 %0 = bitcast i32 %a0.coerce to <4 x i8> 1075 %1 = tail call <2 x i16> @llvm.mips.precequ.ph.qbla(<4 x i8> %0) 1076 %2 = bitcast <2 x i16> %1 to i32 1077 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1078 ret { i32 } %.fca.0.insert 1079} 1080 1081declare <2 x i16> @llvm.mips.precequ.ph.qbla(<4 x i8>) nounwind readnone 1082 1083define { i32 } @test__builtin_mips_precequ_ph_qbra1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1084entry: 1085; CHECK: precequ.ph.qbra 1086 1087 %0 = bitcast i32 %a0.coerce to <4 x i8> 1088 %1 = tail call <2 x i16> @llvm.mips.precequ.ph.qbra(<4 x i8> %0) 1089 %2 = bitcast <2 x i16> %1 to i32 1090 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1091 ret { i32 } %.fca.0.insert 1092} 1093 1094declare <2 x i16> @llvm.mips.precequ.ph.qbra(<4 x i8>) nounwind readnone 1095 1096define { i32 } @test__builtin_mips_preceu_ph_qbl1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1097entry: 1098; CHECK: preceu.ph.qbl 1099 1100 %0 = bitcast i32 %a0.coerce to <4 x i8> 1101 %1 = tail call <2 x i16> @llvm.mips.preceu.ph.qbl(<4 x i8> %0) 1102 %2 = bitcast <2 x i16> %1 to i32 1103 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1104 ret { i32 } %.fca.0.insert 1105} 1106 1107declare <2 x i16> @llvm.mips.preceu.ph.qbl(<4 x i8>) nounwind readnone 1108 1109define { i32 } @test__builtin_mips_preceu_ph_qbr1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1110entry: 1111; CHECK: preceu.ph.qbr 1112 1113 %0 = bitcast i32 %a0.coerce to <4 x i8> 1114 %1 = tail call <2 x i16> @llvm.mips.preceu.ph.qbr(<4 x i8> %0) 1115 %2 = bitcast <2 x i16> %1 to i32 1116 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1117 ret { i32 } %.fca.0.insert 1118} 1119 1120declare <2 x i16> @llvm.mips.preceu.ph.qbr(<4 x i8>) nounwind readnone 1121 1122define { i32 } @test__builtin_mips_preceu_ph_qbla1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1123entry: 1124; CHECK: preceu.ph.qbla 1125 1126 %0 = bitcast i32 %a0.coerce to <4 x i8> 1127 %1 = tail call <2 x i16> @llvm.mips.preceu.ph.qbla(<4 x i8> %0) 1128 %2 = bitcast <2 x i16> %1 to i32 1129 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1130 ret { i32 } %.fca.0.insert 1131} 1132 1133declare <2 x i16> @llvm.mips.preceu.ph.qbla(<4 x i8>) nounwind readnone 1134 1135define { i32 } @test__builtin_mips_preceu_ph_qbra1(i32 %i0, i32 %a0.coerce) nounwind readnone { 1136entry: 1137; CHECK: preceu.ph.qbra 1138 1139 %0 = bitcast i32 %a0.coerce to <4 x i8> 1140 %1 = tail call <2 x i16> @llvm.mips.preceu.ph.qbra(<4 x i8> %0) 1141 %2 = bitcast <2 x i16> %1 to i32 1142 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 1143 ret { i32 } %.fca.0.insert 1144} 1145 1146declare <2 x i16> @llvm.mips.preceu.ph.qbra(<4 x i8>) nounwind readnone 1147 1148define { i32 } @test__builtin_mips_repl_qb1(i32 %i0) nounwind readnone { 1149entry: 1150; CHECK: repl.qb 1151 1152 %0 = tail call <4 x i8> @llvm.mips.repl.qb(i32 127) 1153 %1 = bitcast <4 x i8> %0 to i32 1154 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 1155 ret { i32 } %.fca.0.insert 1156} 1157 1158declare <4 x i8> @llvm.mips.repl.qb(i32) nounwind readnone 1159 1160define { i32 } @test__builtin_mips_repl_qb2(i32 %i0, i32 %a0) nounwind readnone { 1161entry: 1162; CHECK: replv.qb 1163 1164 %0 = tail call <4 x i8> @llvm.mips.repl.qb(i32 %a0) 1165 %1 = bitcast <4 x i8> %0 to i32 1166 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 1167 ret { i32 } %.fca.0.insert 1168} 1169 1170define { i32 } @test__builtin_mips_repl_ph1(i32 %i0) nounwind readnone { 1171entry: 1172; CHECK: repl.ph 1173 1174 %0 = tail call <2 x i16> @llvm.mips.repl.ph(i32 0) 1175 %1 = bitcast <2 x i16> %0 to i32 1176 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 1177 ret { i32 } %.fca.0.insert 1178} 1179 1180declare <2 x i16> @llvm.mips.repl.ph(i32) nounwind readnone 1181 1182define { i32 } @test__builtin_mips_repl_ph2(i32 %i0, i32 %a0) nounwind readnone { 1183entry: 1184; CHECK: replv.ph 1185 1186 %0 = tail call <2 x i16> @llvm.mips.repl.ph(i32 %a0) 1187 %1 = bitcast <2 x i16> %0 to i32 1188 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 1189 ret { i32 } %.fca.0.insert 1190} 1191 1192define i32 @test__builtin_mips_bitrev1(i32 %i0, i32 %a0) nounwind readnone { 1193entry: 1194; CHECK: bitrev ${{[0-9]+}} 1195 1196 %0 = tail call i32 @llvm.mips.bitrev(i32 %a0) 1197 ret i32 %0 1198} 1199 1200declare i32 @llvm.mips.bitrev(i32) nounwind readnone 1201 1202define i32 @test__builtin_mips_lbux1(i32 %i0, i8* %a0, i32 %a1) nounwind readonly { 1203entry: 1204; CHECK: lbux ${{[0-9]+}} 1205 1206 %0 = tail call i32 @llvm.mips.lbux(i8* %a0, i32 %a1) 1207 ret i32 %0 1208} 1209 1210declare i32 @llvm.mips.lbux(i8*, i32) nounwind readonly 1211 1212define i32 @test__builtin_mips_lhx1(i32 %i0, i8* %a0, i32 %a1) nounwind readonly { 1213entry: 1214; CHECK: lhx ${{[0-9]+}} 1215 1216 %0 = tail call i32 @llvm.mips.lhx(i8* %a0, i32 %a1) 1217 ret i32 %0 1218} 1219 1220declare i32 @llvm.mips.lhx(i8*, i32) nounwind readonly 1221 1222define i32 @test__builtin_mips_lwx1(i32 %i0, i8* %a0, i32 %a1) nounwind readonly { 1223entry: 1224; CHECK: lwx ${{[0-9]+}} 1225 1226 %0 = tail call i32 @llvm.mips.lwx(i8* %a0, i32 %a1) 1227 ret i32 %0 1228} 1229 1230declare i32 @llvm.mips.lwx(i8*, i32) nounwind readonly 1231 1232define i32 @test__builtin_mips_wrdsp1(i32 %i0, i32 %a0) nounwind { 1233entry: 1234; CHECK: wrdsp ${{[0-9]+}} 1235 1236 tail call void @llvm.mips.wrdsp(i32 %a0, i32 31) 1237 %0 = tail call i32 @llvm.mips.rddsp(i32 31) 1238 ret i32 %0 1239} 1240 1241declare void @llvm.mips.wrdsp(i32, i32) nounwind 1242