1; RUN: llc -march=mips -mattr=+msa,+fp64,+mips32r2 -relocation-model=pic < %s \ 2; RUN: | FileCheck %s -check-prefixes=CHECK,MSA32 3; RUN: llc -march=mips64 -mattr=+msa,+fp64 -relocation-model=pic -target-abi n32 < %s \ 4; RUN: | FileCheck %s -check-prefixes=CHECK,MSA64,MSA64N32 5; RUN: llc -march=mips64 -mattr=+msa,+fp64 -relocation-model=pic -target-abi n64 < %s \ 6; RUN: | FileCheck %s -check-prefixes=CHECK,MSA64,MSA64N64 7 8; Test that the immediate intrinsics don't crash LLVM. 9 10; Some of the intrinsics lower to equivalent forms. 11 12define void @addvi_b(<16 x i8> * %ptr) { 13entry: 14; CHECK-LABEL: addvi_b: 15; CHECK: addvi.b 16 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 17 %r = call <16 x i8> @llvm.mips.addvi.b(<16 x i8> %a, i32 25) 18 store <16 x i8> %r, <16 x i8> * %ptr, align 16 19 ret void 20} 21 22define void @andi_b(<16 x i8> * %ptr) { 23entry: 24; CHECK-LABEL: andi_b: 25; CHECK: andi.b 26 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 27 %r = call <16 x i8> @llvm.mips.andi.b(<16 x i8> %a, i32 25) 28 store <16 x i8> %r, <16 x i8> * %ptr, align 16 29 ret void 30} 31 32define void @bclri_b(<16 x i8> * %ptr) { 33entry: 34; CHECK-LABEL: bclri_b: 35; CHECK: andi.b 36 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 37 %r = call <16 x i8> @llvm.mips.bclri.b(<16 x i8> %a, i32 3) 38 store <16 x i8> %r, <16 x i8> * %ptr, align 16 39 ret void 40} 41 42define void @binsli_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) { 43entry: 44; CHECK-LABEL: binsli_b: 45; CHECK: binsli.b 46 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 47 %b = load <16 x i8>, <16 x i8> * %ptr2, align 16 48 %r = call <16 x i8> @llvm.mips.binsli.b(<16 x i8> %a, <16 x i8> %b, i32 3) 49 store <16 x i8> %r, <16 x i8> * %ptr, align 16 50 ret void 51} 52 53define void @binsri_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) { 54entry: 55; CHECK-LABEL: binsri_b: 56; CHECK: binsri.b 57 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 58 %b = load <16 x i8>, <16 x i8> * %ptr2, align 16 59 %r = call <16 x i8> @llvm.mips.binsri.b(<16 x i8> %a, <16 x i8> %b, i32 5) 60 store <16 x i8> %r, <16 x i8> * %ptr, align 16 61 ret void 62} 63 64define void @bmnzi_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) { 65entry: 66; CHECK-LABEL: bmnzi_b: 67; CHECK: bmnzi.b 68 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 69 %b = load <16 x i8>, <16 x i8> * %ptr2, align 16 70 %r = call <16 x i8> @llvm.mips.bmnzi.b(<16 x i8> %a, <16 x i8> %b, i32 25) 71 store <16 x i8> %r, <16 x i8> * %ptr, align 16 72 ret void 73} 74 75define void @bmzi_b(<16 x i8> * %ptr, <16 x i8> * %ptr2) { 76entry: 77; CHECK-LABEL: bmzi_b: 78; CHECK: bmnzi.b 79 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 80 %b = load <16 x i8>, <16 x i8> * %ptr2, align 16 81 %r = call <16 x i8> @llvm.mips.bmzi.b(<16 x i8> %a, <16 x i8> %b, i32 25) 82 store <16 x i8> %r, <16 x i8> * %ptr, align 16 83 ret void 84} 85 86define void @bnegi_b(<16 x i8> * %ptr) { 87entry: 88; CHECK-LABEL: bnegi_b: 89; CHECK: bnegi.b 90 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 91 %r = call <16 x i8> @llvm.mips.bnegi.b(<16 x i8> %a, i32 6) 92 store <16 x i8> %r, <16 x i8> * %ptr, align 16 93 ret void 94} 95 96define void @bseli_b(<16 x i8> * %ptr) { 97entry: 98; CHECK-LABEL: bseli_b: 99; CHECK: bseli.b 100 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 101 %r = call <16 x i8> @llvm.mips.bseli.b(<16 x i8> %a, <16 x i8> %a, i32 25) 102 store <16 x i8> %r, <16 x i8> * %ptr, align 16 103 ret void 104} 105 106define void @bseti_b(<16 x i8> * %ptr) { 107entry: 108; CHECK-LABEL: bseti_b: 109; CHECK: bseti.b 110 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 111 %r = call <16 x i8> @llvm.mips.bseti.b(<16 x i8> %a, i32 5) 112 store <16 x i8> %r, <16 x i8> * %ptr, align 16 113 ret void 114} 115 116define void @clei_s_b(<16 x i8> * %ptr) { 117entry: 118; CHECK-LABEL: clei_s_b: 119; CHECK: clei_s.b 120 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 121 %r = call <16 x i8> @llvm.mips.clei.s.b(<16 x i8> %a, i32 12) 122 store <16 x i8> %r, <16 x i8> * %ptr, align 16 123 ret void 124} 125 126define void @clei_u_b(<16 x i8> * %ptr) { 127entry: 128; CHECK-LABEL: clei_u_b: 129; CHECK: clei_u.b 130 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 131 %r = call <16 x i8> @llvm.mips.clei.u.b(<16 x i8> %a, i32 25) 132 store <16 x i8> %r, <16 x i8> * %ptr, align 16 133 ret void 134} 135 136define void @clti_s_b(<16 x i8> * %ptr) { 137entry: 138; CHECK-LABEL: clti_s_b: 139; CHECK: clti_s.b 140 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 141 %r = call <16 x i8> @llvm.mips.clti.s.b(<16 x i8> %a, i32 15) 142 store <16 x i8> %r, <16 x i8> * %ptr, align 16 143 ret void 144} 145 146define void @clti_u_b(<16 x i8> * %ptr) { 147entry: 148; CHECK-LABEL: clti_u_b: 149; CHECK: clti_u.b 150 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 151 %r = call <16 x i8> @llvm.mips.clti.u.b(<16 x i8> %a, i32 25) 152 store <16 x i8> %r, <16 x i8> * %ptr, align 16 153 ret void 154} 155 156define void @ldi_b(<16 x i8> * %ptr) { 157entry: 158; CHECK-LABEL: ldi_b: 159; CHECK: ldi.b 160 %r = call <16 x i8> @llvm.mips.ldi.b(i32 3) 161 store <16 x i8> %r, <16 x i8> * %ptr, align 16 162 ret void 163} 164 165define void @maxi_s_b(<16 x i8> * %ptr) { 166entry: 167; CHECK-LABEL: maxi_s_b: 168; CHECK: maxi_s.b 169 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 170 %r = call <16 x i8> @llvm.mips.maxi.s.b(<16 x i8> %a, i32 2) 171 store <16 x i8> %r, <16 x i8> * %ptr, align 16 172 ret void 173} 174 175define void @maxi_u_b(<16 x i8> * %ptr) { 176entry: 177; CHECK-LABEL: maxi_u_b: 178; CHECK: maxi_u.b 179 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 180 %r = call <16 x i8> @llvm.mips.maxi.u.b(<16 x i8> %a, i32 2) 181 store <16 x i8> %r, <16 x i8> * %ptr, align 16 182 ret void 183} 184 185define void @mini_s_b(<16 x i8> * %ptr) { 186entry: 187; CHECK-LABEL: mini_s_b: 188; CHECK: mini_s.b 189 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 190 %r = call <16 x i8> @llvm.mips.mini.s.b(<16 x i8> %a, i32 2) 191 store <16 x i8> %r, <16 x i8> * %ptr, align 16 192 ret void 193} 194 195define void @mini_u_b(<16 x i8> * %ptr) { 196entry: 197; CHECK-LABEL: mini_u_b: 198; CHECK: mini_u.b 199 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 200 %r = call <16 x i8> @llvm.mips.mini.u.b(<16 x i8> %a, i32 2) 201 store <16 x i8> %r, <16 x i8> * %ptr, align 16 202 ret void 203} 204 205define void @nori_b(<16 x i8> * %ptr) { 206entry: 207; CHECK-LABEL: nori_b: 208; CHECK: nori.b 209 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 210 %r = call <16 x i8> @llvm.mips.nori.b(<16 x i8> %a, i32 25) 211 store <16 x i8> %r, <16 x i8> * %ptr, align 16 212 ret void 213} 214 215define void @ori_b(<16 x i8> * %ptr) { 216entry: 217; CHECK-LABEL: ori_b: 218; CHECK: ori.b 219 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 220 %r = call <16 x i8> @llvm.mips.ori.b(<16 x i8> %a, i32 25) 221 store <16 x i8> %r, <16 x i8> * %ptr, align 16 222 ret void 223} 224 225define void @sldi_b(<16 x i8> * %ptr) { 226entry: 227; CHECK-LABEL: sldi_b: 228; CHECK: sldi.b 229 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 230 %r = call <16 x i8> @llvm.mips.sldi.b(<16 x i8> %a, <16 x i8> %a, i32 7) 231 store <16 x i8> %r, <16 x i8> * %ptr, align 16 232 ret void 233} 234 235define void @slli_b(<16 x i8> * %ptr) { 236entry: 237; CHECK-LABEL: slli_b: 238; CHECK: slli.b 239 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 240 %r = call <16 x i8> @llvm.mips.slli.b(<16 x i8> %a, i32 3) 241 store <16 x i8> %r, <16 x i8> * %ptr, align 16 242 ret void 243} 244 245define void @splati_b(<16 x i8> * %ptr) { 246entry: 247; CHECK-LABEL: splati_b: 248; CHECK: splati.b 249 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 250 %r = call <16 x i8> @llvm.mips.splati.b(<16 x i8> %a, i32 3) 251 store <16 x i8> %r, <16 x i8> * %ptr, align 16 252 ret void 253} 254 255define void @srai_b(<16 x i8> * %ptr) { 256entry: 257; CHECK-LABEL: srai_b: 258; CHECK: srai.b 259 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 260 %r = call <16 x i8> @llvm.mips.srai.b(<16 x i8> %a, i32 3) 261 store <16 x i8> %r, <16 x i8> * %ptr, align 16 262 ret void 263} 264 265define void @srari_b(<16 x i8> * %ptr) { 266entry: 267; CHECK-LABEL: srari_b: 268; CHECK: srari.b 269 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 270 %r = call <16 x i8> @llvm.mips.srari.b(<16 x i8> %a, i32 3) 271 store <16 x i8> %r, <16 x i8> * %ptr, align 16 272 ret void 273} 274 275define void @srli_b(<16 x i8> * %ptr) { 276entry: 277; CHECK-LABEL: srli_b: 278; CHECK: srli.b 279 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 280 %r = call <16 x i8> @llvm.mips.srli.b(<16 x i8> %a, i32 3) 281 store <16 x i8> %r, <16 x i8> * %ptr, align 16 282 ret void 283} 284 285define void @srlri_b(<16 x i8> * %ptr) { 286entry: 287; CHECK-LABEL: srlri_b: 288; CHECK: srlri.b 289 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 290 %r = call <16 x i8> @llvm.mips.srlri.b(<16 x i8> %a, i32 3) 291 store <16 x i8> %r, <16 x i8> * %ptr, align 16 292 ret void 293} 294 295define void @addvi_w(<4 x i32> * %ptr) { 296entry: 297; CHECK-LABEL: addvi_w: 298; CHECK: addvi.w 299 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 300 %r = call <4 x i32> @llvm.mips.addvi.w(<4 x i32> %a, i32 25) 301 store <4 x i32> %r, <4 x i32> * %ptr, align 16 302 ret void 303} 304 305define void @bclri_w(<4 x i32> * %ptr) { 306entry: 307; CHECK-LABEL: bclri_w: 308; CHECK: bclri.w 309 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 310 %r = call <4 x i32> @llvm.mips.bclri.w(<4 x i32> %a, i32 25) 311 store <4 x i32> %r, <4 x i32> * %ptr, align 16 312 ret void 313} 314 315define void @binsli_w(<4 x i32> * %ptr, <4 x i32> * %ptr2) { 316entry: 317; CHECK-LABEL: binsli_w: 318; CHECK: binsli.w 319 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 320 %b = load <4 x i32>, <4 x i32> * %ptr2, align 16 321 %r = call <4 x i32> @llvm.mips.binsli.w(<4 x i32> %a, <4 x i32> %b, i32 25) 322 store <4 x i32> %r, <4 x i32> * %ptr, align 16 323 ret void 324} 325 326define void @binsri_w(<4 x i32> * %ptr, <4 x i32> * %ptr2) { 327entry: 328; CHECK-LABEL: binsri_w: 329; CHECK: binsri.w 330 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 331 %b = load <4 x i32>, <4 x i32> * %ptr2, align 16 332 %r = call <4 x i32> @llvm.mips.binsri.w(<4 x i32> %a, <4 x i32> %b, i32 25) 333 store <4 x i32> %r, <4 x i32> * %ptr, align 16 334 ret void 335} 336 337define void @bnegi_w(<4 x i32> * %ptr) { 338entry: 339; CHECK-LABEL: bnegi_w: 340; CHECK: bnegi.w 341 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 342 %r = call <4 x i32> @llvm.mips.bnegi.w(<4 x i32> %a, i32 25) 343 store <4 x i32> %r, <4 x i32> * %ptr, align 16 344 ret void 345} 346 347define void @bseti_w(<4 x i32> * %ptr) { 348entry: 349; CHECK-LABEL: bseti_w: 350; CHECK: bseti.w 351 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 352 %r = call <4 x i32> @llvm.mips.bseti.w(<4 x i32> %a, i32 25) 353 store <4 x i32> %r, <4 x i32> * %ptr, align 16 354 ret void 355} 356 357define void @clei_s_w(<4 x i32> * %ptr) { 358entry: 359; CHECK-LABEL: clei_s_w: 360; CHECK: clei_s.w 361 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 362 %r = call <4 x i32> @llvm.mips.clei.s.w(<4 x i32> %a, i32 14) 363 store <4 x i32> %r, <4 x i32> * %ptr, align 16 364 ret void 365} 366 367define void @clei_u_w(<4 x i32> * %ptr) { 368entry: 369; CHECK-LABEL: clei_u_w: 370; CHECK: clei_u.w 371 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 372 %r = call <4 x i32> @llvm.mips.clei.u.w(<4 x i32> %a, i32 25) 373 store <4 x i32> %r, <4 x i32> * %ptr, align 16 374 ret void 375} 376 377define void @clti_s_w(<4 x i32> * %ptr) { 378entry: 379; CHECK-LABEL: clti_s_w: 380; CHECK: clti_s.w 381 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 382 %r = call <4 x i32> @llvm.mips.clti.s.w(<4 x i32> %a, i32 15) 383 store <4 x i32> %r, <4 x i32> * %ptr, align 16 384 ret void 385} 386 387define void @clti_u_w(<4 x i32> * %ptr) { 388entry: 389; CHECK-LABEL: clti_u_w: 390; CHECK: clti_u.w 391 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 392 %r = call <4 x i32> @llvm.mips.clti.u.w(<4 x i32> %a, i32 25) 393 store <4 x i32> %r, <4 x i32> * %ptr, align 16 394 ret void 395} 396 397define void @maxi_s_w(<4 x i32> * %ptr) { 398entry: 399; CHECK-LABEL: maxi_s_w: 400; CHECK: maxi_s.w 401 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 402 %r = call <4 x i32> @llvm.mips.maxi.s.w(<4 x i32> %a, i32 2) 403 store <4 x i32> %r, <4 x i32> * %ptr, align 16 404 ret void 405} 406 407define void @maxi_u_w(<4 x i32> * %ptr) { 408entry: 409; CHECK-LABEL: maxi_u_w: 410; CHECK: maxi_u.w 411 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 412 %r = call <4 x i32> @llvm.mips.maxi.u.w(<4 x i32> %a, i32 2) 413 store <4 x i32> %r, <4 x i32> * %ptr, align 16 414 ret void 415} 416 417define void @mini_s_w(<4 x i32> * %ptr) { 418entry: 419; CHECK-LABEL: mini_s_w: 420; CHECK: mini_s.w 421 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 422 %r = call <4 x i32> @llvm.mips.mini.s.w(<4 x i32> %a, i32 2) 423 store <4 x i32> %r, <4 x i32> * %ptr, align 16 424 ret void 425} 426 427define void @mini_u_w(<4 x i32> * %ptr) { 428entry: 429; CHECK-LABEL: mini_u_w: 430; CHECK: mini_u.w 431 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 432 %r = call <4 x i32> @llvm.mips.mini.u.w(<4 x i32> %a, i32 2) 433 store <4 x i32> %r, <4 x i32> * %ptr, align 16 434 ret void 435} 436 437define void @ldi_w(<4 x i32> * %ptr) { 438entry: 439; CHECK-LABEL: ldi_w: 440; CHECK: ldi.w 441 %r = call <4 x i32> @llvm.mips.ldi.w(i32 3) 442 store <4 x i32> %r, <4 x i32> * %ptr, align 16 443 ret void 444} 445 446define void @sldi_w(<4 x i32> * %ptr) { 447entry: 448; CHECK-LABEL: sldi_w: 449; CHECK: sldi.w 450 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 451 %r = call <4 x i32> @llvm.mips.sldi.w(<4 x i32> %a, <4 x i32> %a, i32 2) 452 store <4 x i32> %r, <4 x i32> * %ptr, align 16 453 ret void 454} 455 456define void @slli_w(<4 x i32> * %ptr) { 457entry: 458; CHECK-LABEL: slli_w: 459; CHECK: slli.w 460 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 461 %r = call <4 x i32> @llvm.mips.slli.w(<4 x i32> %a, i32 3) 462 store <4 x i32> %r, <4 x i32> * %ptr, align 16 463 ret void 464} 465 466define void @splati_w(<4 x i32> * %ptr) { 467entry: 468; CHECK-LABEL: splati_w: 469; CHECK: splati.w 470 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 471 %r = call <4 x i32> @llvm.mips.splati.w(<4 x i32> %a, i32 3) 472 store <4 x i32> %r, <4 x i32> * %ptr, align 16 473 ret void 474} 475 476define void @srai_w(<4 x i32> * %ptr) { 477entry: 478; CHECK-LABEL: srai_w: 479; CHECK: srai.w 480 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 481 %r = call <4 x i32> @llvm.mips.srai.w(<4 x i32> %a, i32 3) 482 store <4 x i32> %r, <4 x i32> * %ptr, align 16 483 ret void 484} 485 486define void @srari_w(<4 x i32> * %ptr) { 487entry: 488; CHECK-LABEL: srari_w: 489; CHECK: srari.w 490 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 491 %r = call <4 x i32> @llvm.mips.srari.w(<4 x i32> %a, i32 3) 492 store <4 x i32> %r, <4 x i32> * %ptr, align 16 493 ret void 494} 495 496define void @srli_w(<4 x i32> * %ptr) { 497entry: 498; CHECK-LABEL: srli_w: 499; CHECK: srli.w 500 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 501 %r = call <4 x i32> @llvm.mips.srli.w(<4 x i32> %a, i32 3) 502 store <4 x i32> %r, <4 x i32> * %ptr, align 16 503 ret void 504} 505 506define void @srlri_w(<4 x i32> * %ptr) { 507entry: 508; CHECK-LABEL: srlri_w: 509; CHECK: srlri.w 510 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 511 %r = call <4 x i32> @llvm.mips.srlri.w(<4 x i32> %a, i32 3) 512 store <4 x i32> %r, <4 x i32> * %ptr, align 16 513 ret void 514} 515 516define void @addvi_h(<8 x i16> * %ptr) { 517entry: 518; CHECK-LABEL: addvi_h: 519; CHECK: addvi.h 520 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 521 %r = call <8 x i16> @llvm.mips.addvi.h(<8 x i16> %a, i32 25) 522 store <8 x i16> %r, <8 x i16> * %ptr, align 16 523 ret void 524} 525 526define void @bclri_h(<8 x i16> * %ptr) { 527entry: 528; CHECK-LABEL: bclri_h: 529; CHECK: bclri.h 530 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 531 %r = call <8 x i16> @llvm.mips.bclri.h(<8 x i16> %a, i32 8) 532 store <8 x i16> %r, <8 x i16> * %ptr, align 16 533 ret void 534} 535 536define void @binsli_h(<8 x i16> * %ptr, <8 x i16> * %ptr2) { 537entry: 538; CHECK-LABEL: binsli_h: 539; CHECK: binsli.h 540 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 541 %b = load <8 x i16>, <8 x i16> * %ptr2, align 16 542 %r = call <8 x i16> @llvm.mips.binsli.h(<8 x i16> %a, <8 x i16> %b, i32 8) 543 store <8 x i16> %r, <8 x i16> * %ptr, align 16 544 ret void 545} 546 547define void @binsri_h(<8 x i16> * %ptr, <8 x i16> * %ptr2) { 548entry: 549; CHECK-LABEL: binsri_h: 550; CHECK: binsri.h 551 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 552 %b = load <8 x i16>, <8 x i16> * %ptr2, align 16 553 %r = call <8 x i16> @llvm.mips.binsri.h(<8 x i16> %a, <8 x i16> %b, i32 14) 554 store <8 x i16> %r, <8 x i16> * %ptr, align 16 555 ret void 556} 557 558define void @bnegi_h(<8 x i16> * %ptr) { 559entry: 560; CHECK-LABEL: bnegi_h: 561; CHECK: bnegi.h 562 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 563 %r = call <8 x i16> @llvm.mips.bnegi.h(<8 x i16> %a, i32 14) 564 store <8 x i16> %r, <8 x i16> * %ptr, align 16 565 ret void 566} 567 568define void @bseti_h(<8 x i16> * %ptr) { 569entry: 570; CHECK-LABEL: bseti_h: 571; CHECK: bseti.h 572 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 573 %r = call <8 x i16> @llvm.mips.bseti.h(<8 x i16> %a, i32 15) 574 store <8 x i16> %r, <8 x i16> * %ptr, align 16 575 ret void 576} 577 578define void @clei_s_h(<8 x i16> * %ptr) { 579entry: 580; CHECK-LABEL: clei_s_h: 581; CHECK: clei_s.h 582 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 583 %r = call <8 x i16> @llvm.mips.clei.s.h(<8 x i16> %a, i32 13) 584 store <8 x i16> %r, <8 x i16> * %ptr, align 16 585 ret void 586} 587 588define void @clei_u_h(<8 x i16> * %ptr) { 589entry: 590; CHECK-LABEL: clei_u_h: 591; CHECK: clei_u.h 592 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 593 %r = call <8 x i16> @llvm.mips.clei.u.h(<8 x i16> %a, i32 25) 594 store <8 x i16> %r, <8 x i16> * %ptr, align 16 595 ret void 596} 597 598define void @clti_s_h(<8 x i16> * %ptr) { 599entry: 600; CHECK-LABEL: clti_s_h: 601; CHECK: clti_s.h 602 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 603 %r = call <8 x i16> @llvm.mips.clti.s.h(<8 x i16> %a, i32 15) 604 store <8 x i16> %r, <8 x i16> * %ptr, align 16 605 ret void 606} 607 608define void @clti_u_h(<8 x i16> * %ptr) { 609entry: 610; CHECK-LABEL: clti_u_h: 611; CHECK: clti_u.h 612 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 613 %r = call <8 x i16> @llvm.mips.clti.u.h(<8 x i16> %a, i32 25) 614 store <8 x i16> %r, <8 x i16> * %ptr, align 16 615 ret void 616} 617 618define void @maxi_s_h(<8 x i16> * %ptr) { 619entry: 620; CHECK-LABEL: maxi_s_h: 621; CHECK: maxi_s.h 622 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 623 %r = call <8 x i16> @llvm.mips.maxi.s.h(<8 x i16> %a, i32 2) 624 store <8 x i16> %r, <8 x i16> * %ptr, align 16 625 ret void 626} 627 628define void @maxi_u_h(<8 x i16> * %ptr) { 629entry: 630; CHECK-LABEL: maxi_u_h: 631; CHECK: maxi_u.h 632 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 633 %r = call <8 x i16> @llvm.mips.maxi.u.h(<8 x i16> %a, i32 2) 634 store <8 x i16> %r, <8 x i16> * %ptr, align 16 635 ret void 636} 637 638define void @mini_s_h(<8 x i16> * %ptr) { 639entry: 640; CHECK-LABEL: mini_s_h: 641; CHECK: mini_s.h 642 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 643 %r = call <8 x i16> @llvm.mips.mini.s.h(<8 x i16> %a, i32 2) 644 store <8 x i16> %r, <8 x i16> * %ptr, align 16 645 ret void 646} 647 648define void @mini_u_h(<8 x i16> * %ptr) { 649entry: 650; CHECK-LABEL: mini_u_h: 651; CHECK: mini_u.h 652 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 653 %r = call <8 x i16> @llvm.mips.mini.u.h(<8 x i16> %a, i32 2) 654 store <8 x i16> %r, <8 x i16> * %ptr, align 16 655 ret void 656} 657 658define void @ldi_h(<8 x i16> * %ptr) { 659entry: 660; CHECK-LABEL: ldi_h: 661; CHECK: ldi.h 662 %r = call <8 x i16> @llvm.mips.ldi.h(i32 3) 663 store <8 x i16> %r, <8 x i16> * %ptr, align 16 664 ret void 665} 666 667define void @sldi_h(<8 x i16> * %ptr) { 668entry: 669; CHECK-LABEL: sldi_h: 670; CHECK: sldi.h 671 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 672 %r = call <8 x i16> @llvm.mips.sldi.h(<8 x i16> %a, <8 x i16> %a, i32 3) 673 store <8 x i16> %r, <8 x i16> * %ptr, align 16 674 ret void 675} 676 677define void @slli_h(<8 x i16> * %ptr) { 678entry: 679; CHECK-LABEL: slli_h: 680; CHECK: slli.h 681 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 682 %r = call <8 x i16> @llvm.mips.slli.h(<8 x i16> %a, i32 3) 683 store <8 x i16> %r, <8 x i16> * %ptr, align 16 684 ret void 685} 686 687define void @splati_h(<8 x i16> * %ptr) { 688entry: 689; CHECK-LABEL: splati_h: 690; CHECK: splati.h 691 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 692 %r = call <8 x i16> @llvm.mips.splati.h(<8 x i16> %a, i32 3) 693 store <8 x i16> %r, <8 x i16> * %ptr, align 16 694 ret void 695} 696 697define void @srai_h(<8 x i16> * %ptr) { 698entry: 699; CHECK-LABEL: srai_h: 700; CHECK: srai.h 701 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 702 %r = call <8 x i16> @llvm.mips.srai.h(<8 x i16> %a, i32 3) 703 store <8 x i16> %r, <8 x i16> * %ptr, align 16 704 ret void 705} 706 707define void @srari_h(<8 x i16> * %ptr) { 708entry: 709; CHECK-LABEL: srari_h: 710; CHECK: srari.h 711 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 712 %r = call <8 x i16> @llvm.mips.srari.h(<8 x i16> %a, i32 3) 713 store <8 x i16> %r, <8 x i16> * %ptr, align 16 714 ret void 715} 716 717define void @srli_h(<8 x i16> * %ptr) { 718entry: 719; CHECK-LABEL: srli_h: 720; CHECK: srli.h 721 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 722 %r = call <8 x i16> @llvm.mips.srli.h(<8 x i16> %a, i32 3) 723 store <8 x i16> %r, <8 x i16> * %ptr, align 16 724 ret void 725} 726 727define void @srlri_h(<8 x i16> * %ptr) { 728entry: 729; CHECK-LABEL: srlri_h: 730; CHECK: srlri.h 731 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 732 %r = call <8 x i16> @llvm.mips.srlri.h(<8 x i16> %a, i32 3) 733 store <8 x i16> %r, <8 x i16> * %ptr, align 16 734 ret void 735} 736 737define i32 @copy_s_b(<16 x i8> * %ptr) { 738entry: 739; CHECK-LABEL: copy_s_b: 740; CHECK: copy_s.b 741 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 742 %r = call i32 @llvm.mips.copy.s.b(<16 x i8> %a, i32 1) 743 ret i32 %r 744} 745define i32 @copy_s_h(<8 x i16> * %ptr) { 746entry: 747; CHECK-LABEL: copy_s_h: 748; CHECK: copy_s.h 749 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 750 %r = call i32 @llvm.mips.copy.s.h(<8 x i16> %a, i32 1) 751 ret i32 %r 752} 753define i32 @copy_s_w(<4 x i32> * %ptr) { 754entry: 755; CHECK-LABEL: copy_s_w: 756; CHECK: copy_s.w 757 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 758 %r = call i32 @llvm.mips.copy.s.w(<4 x i32> %a, i32 1) 759 ret i32 %r 760} 761define i32 @copy_u_b(<16 x i8> * %ptr) { 762entry: 763; CHECK-LABEL: copy_u_b: 764; CHECK: copy_u.b 765 %a = load <16 x i8>, <16 x i8> * %ptr, align 16 766 %r = call i32 @llvm.mips.copy.u.b(<16 x i8> %a, i32 1) 767 ret i32 %r 768} 769define i32 @copy_u_h(<8 x i16> * %ptr) { 770entry: 771; CHECK-LABEL: copy_u_h: 772; CHECK: copy_u.h 773 %a = load <8 x i16>, <8 x i16> * %ptr, align 16 774 %r = call i32 @llvm.mips.copy.u.h(<8 x i16> %a, i32 1) 775 ret i32 %r 776} 777define i32 @copy_u_w(<4 x i32> * %ptr) { 778entry: 779; CHECK-LABEL: copy_u_w: 780; MSA32: copy_s.w 781; MSA64: copy_u.w 782 %a = load <4 x i32>, <4 x i32> * %ptr, align 16 783 %r = call i32 @llvm.mips.copy.u.w(<4 x i32> %a, i32 1) 784 ret i32 %r 785} 786 787define i64 @copy_s_d(<2 x i64> * %ptr) { 788entry: 789; CHECK-LABEL: copy_s_d: 790; MSA32: copy_s.w 791; MSA32: copy_s.w 792; MSA64: copy_s.d 793 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 794 %r = call i64 @llvm.mips.copy.s.d(<2 x i64> %a, i32 1) 795 ret i64 %r 796} 797 798define i64 @copy_u_d(<2 x i64> * %ptr) { 799entry: 800; CHECK-LABEL: copy_u_d: 801; MSA32: copy_s.w 802; MSA32: copy_s.w 803; MSA64: copy_s.d 804 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 805 %r = call i64 @llvm.mips.copy.u.d(<2 x i64> %a, i32 1) 806 ret i64 %r 807} 808 809define void @addvi_d(<2 x i64> * %ptr) { 810entry: 811; CHECK-LABEL: addvi_d: 812; CHECK: addvi.d 813 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 814 %r = call <2 x i64> @llvm.mips.addvi.d(<2 x i64> %a, i32 25) 815 store <2 x i64> %r, <2 x i64> * %ptr, align 16 816 ret void 817} 818 819define void @bclri_d(<2 x i64> * %ptr) { 820entry: 821; CHECK-LABEL: bclri_d: 822; CHECK: bclri.d 823 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 824 %r = call <2 x i64> @llvm.mips.bclri.d(<2 x i64> %a, i32 16) 825 store <2 x i64> %r, <2 x i64> * %ptr, align 16 826 ret void 827} 828 829define void @binsli_d(<2 x i64> * %ptr, <2 x i64> * %ptr2) { 830entry: 831; CHECK-LABEL: binsli_d: 832; CHECK: binsli.d 833 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 834 %b = load <2 x i64>, <2 x i64> * %ptr2, align 16 835 %r = call <2 x i64> @llvm.mips.binsli.d(<2 x i64> %a, <2 x i64> %b, i32 4) 836 store <2 x i64> %r, <2 x i64> * %ptr, align 16 837 ret void 838} 839 840define void @binsri_d(<2 x i64> * %ptr, <2 x i64> * %ptr2) { 841entry: 842; CHECK-LABEL: binsri_d: 843; CHECK: binsri.d 844 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 845 %b = load <2 x i64>, <2 x i64> * %ptr2, align 16 846 %r = call <2 x i64> @llvm.mips.binsri.d(<2 x i64> %a, <2 x i64> %b, i32 5) 847 store <2 x i64> %r, <2 x i64> * %ptr, align 16 848 ret void 849} 850 851define void @bnegi_d(<2 x i64> * %ptr) { 852entry: 853; CHECK-LABEL: bnegi_d: 854; CHECK: bnegi.d 855 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 856 %r = call <2 x i64> @llvm.mips.bnegi.d(<2 x i64> %a, i32 9) 857 store <2 x i64> %r, <2 x i64> * %ptr, align 16 858 ret void 859} 860 861define void @bseti_d(<2 x i64> * %ptr) { 862entry: 863; CHECK-LABEL: bseti_d: 864; CHECK: bseti.d 865 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 866 %r = call <2 x i64> @llvm.mips.bseti.d(<2 x i64> %a, i32 25) 867 store <2 x i64> %r, <2 x i64> * %ptr, align 16 868 ret void 869} 870 871define void @clei_s_d(<2 x i64> * %ptr) { 872entry: 873; CHECK-LABEL: clei_s_d: 874; CHECK: clei_s.d 875 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 876 %r = call <2 x i64> @llvm.mips.clei.s.d(<2 x i64> %a, i32 15) 877 store <2 x i64> %r, <2 x i64> * %ptr, align 16 878 ret void 879} 880 881define void @clei_u_d(<2 x i64> * %ptr) { 882entry: 883; CHECK-LABEL: clei_u_d: 884; CHECK: clei_u.d 885 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 886 %r = call <2 x i64> @llvm.mips.clei.u.d(<2 x i64> %a, i32 25) 887 store <2 x i64> %r, <2 x i64> * %ptr, align 16 888 ret void 889} 890 891define void @clti_s_d(<2 x i64> * %ptr) { 892entry: 893; CHECK-LABEL: clti_s_d: 894; CHECK: clti_s.d 895 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 896 %r = call <2 x i64> @llvm.mips.clti.s.d(<2 x i64> %a, i32 15) 897 store <2 x i64> %r, <2 x i64> * %ptr, align 16 898 ret void 899} 900 901define void @clti_u_d(<2 x i64> * %ptr) { 902entry: 903; CHECK-LABEL: clti_u_d: 904; CHECK: clti_u.d 905 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 906 %r = call <2 x i64> @llvm.mips.clti.u.d(<2 x i64> %a, i32 25) 907 store <2 x i64> %r, <2 x i64> * %ptr, align 16 908 ret void 909} 910 911define void @ldi_d(<2 x i64> * %ptr) { 912entry: 913; CHECK-LABEL: ldi_d: 914; CHECK: ldi.d 915 %r = call <2 x i64> @llvm.mips.ldi.d(i32 3) 916 store <2 x i64> %r, <2 x i64> * %ptr, align 16 917 ret void 918} 919 920define void @maxi_s_d(<2 x i64> * %ptr) { 921entry: 922; CHECK-LABEL: maxi_s_d: 923; CHECK: maxi_s.d 924 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 925 %r = call <2 x i64> @llvm.mips.maxi.s.d(<2 x i64> %a, i32 2) 926 store <2 x i64> %r, <2 x i64> * %ptr, align 16 927 ret void 928} 929 930define void @maxi_u_d(<2 x i64> * %ptr) { 931entry: 932; CHECK-LABEL: maxi_u_d: 933; CHECK: maxi_u.d 934 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 935 %r = call <2 x i64> @llvm.mips.maxi.u.d(<2 x i64> %a, i32 2) 936 store <2 x i64> %r, <2 x i64> * %ptr, align 16 937 ret void 938} 939 940define void @mini_s_d(<2 x i64> * %ptr) { 941entry: 942; CHECK-LABEL: mini_s_d: 943; CHECK: mini_s.d 944 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 945 %r = call <2 x i64> @llvm.mips.mini.s.d(<2 x i64> %a, i32 2) 946 store <2 x i64> %r, <2 x i64> * %ptr, align 16 947 ret void 948} 949 950define void @mini_u_d(<2 x i64> * %ptr) { 951entry: 952; CHECK-LABEL: mini_u_d: 953; CHECK: mini_u.d 954 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 955 %r = call <2 x i64> @llvm.mips.mini.u.d(<2 x i64> %a, i32 2) 956 store <2 x i64> %r, <2 x i64> * %ptr, align 16 957 ret void 958} 959 960define void @sldi_d(<2 x i64> * %ptr) { 961entry: 962; CHECK-LABEL: sldi_d: 963; CHECK: sldi.d 964 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 965 %r = call <2 x i64> @llvm.mips.sldi.d(<2 x i64> %a, <2 x i64> %a, i32 1) 966 store <2 x i64> %r, <2 x i64> * %ptr, align 16 967 ret void 968} 969 970define void @slli_d(<2 x i64> * %ptr) { 971entry: 972; CHECK-LABEL: slli_d: 973; CHECK: slli.d 974 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 975 %r = call <2 x i64> @llvm.mips.slli.d(<2 x i64> %a, i32 3) 976 store <2 x i64> %r, <2 x i64> * %ptr, align 16 977 ret void 978} 979 980define void @srai_d(<2 x i64> * %ptr) { 981entry: 982; CHECK-LABEL: srai_d: 983; CHECK: srai.d 984 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 985 %r = call <2 x i64> @llvm.mips.srai.d(<2 x i64> %a, i32 3) 986 store <2 x i64> %r, <2 x i64> * %ptr, align 16 987 ret void 988} 989 990define void @srari_d(<2 x i64> * %ptr) { 991entry: 992; CHECK-LABEL: srari_d: 993; CHECK: srari.d 994 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 995 %r = call <2 x i64> @llvm.mips.srari.d(<2 x i64> %a, i32 3) 996 store <2 x i64> %r, <2 x i64> * %ptr, align 16 997 ret void 998} 999 1000define void @srli_d(<2 x i64> * %ptr) { 1001entry: 1002; CHECK-LABEL: srli_d: 1003; CHECK: srli.d 1004 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 1005 %r = call <2 x i64> @llvm.mips.srli.d(<2 x i64> %a, i32 3) 1006 store <2 x i64> %r, <2 x i64> * %ptr, align 16 1007 ret void 1008} 1009 1010define void @srlri_d(<2 x i64> * %ptr) { 1011entry: 1012; CHECK-LABEL: srlri_d: 1013; CHECK: srlri.d 1014 %a = load <2 x i64>, <2 x i64> * %ptr, align 16 1015 %r = call <2 x i64> @llvm.mips.srlri.d(<2 x i64> %a, i32 3) 1016 store <2 x i64> %r, <2 x i64> * %ptr, align 16 1017 ret void 1018} 1019 1020define void @ld_d2(<2 x i64> * %ptr, i8 * %ldptr) { 1021entry: 1022; CHECK-LABEL: ld_d2 1023; MSA32: addiu $[[R0:[0-9]]], $5, 4096 1024; MSA64N32: sll $[[R1:[0-9]]], $5, 0 1025; MSA64N32: addiu $[[R0:[0-9]]], $[[R1]], 4096 1026; MSA64N64: daddiu $[[R0:[0-9]]], $5, 4096 1027; CHECK: ld.d $w{{[0-9]+}}, 0($[[R0]]) 1028 %a = call <2 x i64> @llvm.mips.ld.d(i8* %ldptr, i32 4096) 1029 store <2 x i64> %a, <2 x i64> * %ptr, align 16 1030 ret void 1031} 1032 1033declare <8 x i16> @llvm.mips.ldi.h(i32) 1034declare <8 x i16> @llvm.mips.addvi.h(<8 x i16>, i32) 1035declare <8 x i16> @llvm.mips.bclri.h(<8 x i16>, i32) 1036declare <8 x i16> @llvm.mips.binsli.h(<8 x i16>, <8 x i16>, i32) 1037declare <8 x i16> @llvm.mips.binsri.h(<8 x i16>, <8 x i16>, i32) 1038declare <8 x i16> @llvm.mips.bnegi.h(<8 x i16>, i32) 1039declare <8 x i16> @llvm.mips.bseti.h(<8 x i16>, i32) 1040declare <8 x i16> @llvm.mips.clei.s.h(<8 x i16>, i32) 1041declare <8 x i16> @llvm.mips.clei.u.h(<8 x i16>, i32) 1042declare <8 x i16> @llvm.mips.clti.s.h(<8 x i16>, i32) 1043declare <8 x i16> @llvm.mips.clti.u.h(<8 x i16>, i32) 1044declare <8 x i16> @llvm.mips.maxi.s.h(<8 x i16>, i32) 1045declare <8 x i16> @llvm.mips.maxi.u.h(<8 x i16>, i32) 1046declare <8 x i16> @llvm.mips.mini.s.h(<8 x i16>, i32) 1047declare <8 x i16> @llvm.mips.mini.u.h(<8 x i16>, i32) 1048declare <8 x i16> @llvm.mips.sldi.h(<8 x i16>, <8 x i16>, i32) 1049declare <8 x i16> @llvm.mips.slli.h(<8 x i16>, i32) 1050declare <8 x i16> @llvm.mips.splati.h(<8 x i16>, i32) 1051declare <8 x i16> @llvm.mips.srai.h(<8 x i16>, i32) 1052declare <8 x i16> @llvm.mips.srari.h(<8 x i16>, i32) 1053declare <8 x i16> @llvm.mips.srli.h(<8 x i16>, i32) 1054declare <8 x i16> @llvm.mips.srlri.h(<8 x i16>, i32) 1055declare <4 x i32> @llvm.mips.addvi.w(<4 x i32>, i32) 1056declare <4 x i32> @llvm.mips.bclri.w(<4 x i32>, i32) 1057declare <4 x i32> @llvm.mips.binsli.w(<4 x i32>, <4 x i32>, i32) 1058declare <4 x i32> @llvm.mips.binsri.w(<4 x i32>, <4 x i32>, i32) 1059declare <4 x i32> @llvm.mips.bnegi.w(<4 x i32>, i32) 1060declare <4 x i32> @llvm.mips.bseti.w(<4 x i32>, i32) 1061declare <4 x i32> @llvm.mips.ldi.w(i32) 1062declare <4 x i32> @llvm.mips.clei.s.w(<4 x i32>, i32) 1063declare <4 x i32> @llvm.mips.clei.u.w(<4 x i32>, i32) 1064declare <4 x i32> @llvm.mips.clti.s.w(<4 x i32>, i32) 1065declare <4 x i32> @llvm.mips.clti.u.w(<4 x i32>, i32) 1066declare <4 x i32> @llvm.mips.maxi.s.w(<4 x i32>, i32) 1067declare <4 x i32> @llvm.mips.maxi.u.w(<4 x i32>, i32) 1068declare <4 x i32> @llvm.mips.mini.s.w(<4 x i32>, i32) 1069declare <4 x i32> @llvm.mips.mini.u.w(<4 x i32>, i32) 1070declare <4 x i32> @llvm.mips.sldi.w(<4 x i32>, <4 x i32>, i32) 1071declare <4 x i32> @llvm.mips.slli.w(<4 x i32>, i32) 1072declare <4 x i32> @llvm.mips.splati.w(<4 x i32>, i32) 1073declare <4 x i32> @llvm.mips.srai.w(<4 x i32>, i32) 1074declare <4 x i32> @llvm.mips.srari.w(<4 x i32>, i32) 1075declare <4 x i32> @llvm.mips.srli.w(<4 x i32>, i32) 1076declare <4 x i32> @llvm.mips.srlri.w(<4 x i32>, i32) 1077declare <2 x i64> @llvm.mips.ldi.d(i32) 1078declare <2 x i64> @llvm.mips.addvi.d(<2 x i64>, i32) 1079declare <2 x i64> @llvm.mips.bclri.d(<2 x i64>, i32) 1080declare <2 x i64> @llvm.mips.binsli.d(<2 x i64>, <2 x i64>, i32) 1081declare <2 x i64> @llvm.mips.binsri.d(<2 x i64>, <2 x i64>, i32) 1082declare <2 x i64> @llvm.mips.bnegi.d(<2 x i64>, i32) 1083declare <2 x i64> @llvm.mips.bseti.d(<2 x i64>, i32) 1084declare <2 x i64> @llvm.mips.clei.s.d(<2 x i64>, i32) 1085declare <2 x i64> @llvm.mips.clei.u.d(<2 x i64>, i32) 1086declare <2 x i64> @llvm.mips.clti.s.d(<2 x i64>, i32) 1087declare <2 x i64> @llvm.mips.clti.u.d(<2 x i64>, i32) 1088declare <2 x i64> @llvm.mips.maxi.s.d(<2 x i64>, i32) 1089declare <2 x i64> @llvm.mips.maxi.u.d(<2 x i64>, i32) 1090declare <2 x i64> @llvm.mips.mini.s.d(<2 x i64>, i32) 1091declare <2 x i64> @llvm.mips.mini.u.d(<2 x i64>, i32) 1092declare <2 x i64> @llvm.mips.sldi.d(<2 x i64>, <2 x i64>, i32) 1093declare <2 x i64> @llvm.mips.slli.d(<2 x i64>, i32) 1094declare <2 x i64> @llvm.mips.splati.d(<2 x i64>, i32) 1095declare <2 x i64> @llvm.mips.srai.d(<2 x i64>, i32) 1096declare <2 x i64> @llvm.mips.srari.d(<2 x i64>, i32) 1097declare <2 x i64> @llvm.mips.srli.d(<2 x i64>, i32) 1098declare <2 x i64> @llvm.mips.srlri.d(<2 x i64>, i32) 1099declare <16 x i8> @llvm.mips.ldi.b(i32) 1100declare <16 x i8> @llvm.mips.addvi.b(<16 x i8>, i32) 1101declare <16 x i8> @llvm.mips.andi.b(<16 x i8>, i32) 1102declare <16 x i8> @llvm.mips.bclri.b(<16 x i8>, i32) 1103declare <16 x i8> @llvm.mips.binsli.b(<16 x i8>, <16 x i8>, i32) 1104declare <16 x i8> @llvm.mips.binsri.b(<16 x i8>, <16 x i8>, i32) 1105declare <16 x i8> @llvm.mips.bmnzi.b(<16 x i8>, <16 x i8>, i32) 1106declare <16 x i8> @llvm.mips.bnegi.b(<16 x i8>, i32) 1107declare <16 x i8> @llvm.mips.bseli.b(<16 x i8>, <16 x i8>, i32) 1108declare <16 x i8> @llvm.mips.bseti.b(<16 x i8>, i32) 1109declare <16 x i8> @llvm.mips.clei.s.b(<16 x i8>, i32) 1110declare <16 x i8> @llvm.mips.clei.u.b(<16 x i8>, i32) 1111declare <16 x i8> @llvm.mips.clti.s.b(<16 x i8>, i32) 1112declare <16 x i8> @llvm.mips.clti.u.b(<16 x i8>, i32) 1113declare <16 x i8> @llvm.mips.maxi.s.b(<16 x i8>, i32) 1114declare <16 x i8> @llvm.mips.maxi.u.b(<16 x i8>, i32) 1115declare <16 x i8> @llvm.mips.mini.s.b(<16 x i8>, i32) 1116declare <16 x i8> @llvm.mips.mini.u.b(<16 x i8>, i32) 1117declare <16 x i8> @llvm.mips.nori.b(<16 x i8>, i32) 1118declare <16 x i8> @llvm.mips.ori.b(<16 x i8>, i32) 1119declare <16 x i8> @llvm.mips.sldi.b(<16 x i8>, <16 x i8>, i32) 1120declare <16 x i8> @llvm.mips.slli.b(<16 x i8>, i32) 1121declare <16 x i8> @llvm.mips.splati.b(<16 x i8>, i32) 1122declare <16 x i8> @llvm.mips.srai.b(<16 x i8>, i32) 1123declare <16 x i8> @llvm.mips.srari.b(<16 x i8>, i32) 1124declare <16 x i8> @llvm.mips.srli.b(<16 x i8>, i32) 1125declare <16 x i8> @llvm.mips.srlri.b(<16 x i8>, i32) 1126declare i32 @llvm.mips.copy.s.h(<8 x i16>, i32) 1127declare i32 @llvm.mips.copy.u.h(<8 x i16>, i32) 1128declare i32 @llvm.mips.copy.s.w(<4 x i32>, i32) 1129declare i32 @llvm.mips.copy.u.w(<4 x i32>, i32) 1130declare i64 @llvm.mips.copy.s.d(<2 x i64>, i32) 1131declare i64 @llvm.mips.copy.u.d(<2 x i64>, i32) 1132declare i32 @llvm.mips.copy.s.b(<16 x i8>, i32) 1133declare i32 @llvm.mips.copy.u.b(<16 x i8>, i32) 1134declare <16 x i8> @llvm.mips.bmzi.b(<16 x i8>, <16 x i8>, i32) 1135declare <16 x i8> @llvm.mips.ld.b(i8*, i32) 1136declare <8 x i16> @llvm.mips.ld.h(i8*, i32) 1137declare <4 x i32> @llvm.mips.ld.w(i8*, i32) 1138declare <2 x i64> @llvm.mips.ld.d(i8*, i32) 1139declare void @llvm.mips.st.b(<16 x i8>, i8*, i32) 1140declare void @llvm.mips.st.h(<8 x i16>, i8*, i32) 1141declare void @llvm.mips.st.w(<4 x i32>, i8*, i32) 1142declare void @llvm.mips.st.d(<2 x i64>, i8*, i32) 1143