1; RUN: llc -march=mipsel -mattr=+dspr2 < %s | FileCheck %s 2 3define i64 @test__builtin_mips_dpa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 4entry: 5; CHECK: dpa.w.ph 6 7 %1 = bitcast i32 %a1.coerce to <2 x i16> 8 %2 = bitcast i32 %a2.coerce to <2 x i16> 9 %3 = tail call i64 @llvm.mips.dpa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 10 ret i64 %3 11} 12 13declare i64 @llvm.mips.dpa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone 14 15define i64 @test__builtin_mips_dps_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 16entry: 17; CHECK: dps.w.ph 18 19 %1 = bitcast i32 %a1.coerce to <2 x i16> 20 %2 = bitcast i32 %a2.coerce to <2 x i16> 21 %3 = tail call i64 @llvm.mips.dps.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 22 ret i64 %3 23} 24 25declare i64 @llvm.mips.dps.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone 26 27define i64 @test__builtin_mips_mulsa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 28entry: 29; CHECK: mulsa.w.ph 30 31 %1 = bitcast i32 %a1.coerce to <2 x i16> 32 %2 = bitcast i32 %a2.coerce to <2 x i16> 33 %3 = tail call i64 @llvm.mips.mulsa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 34 ret i64 %3 35} 36 37declare i64 @llvm.mips.mulsa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone 38 39define i64 @test__builtin_mips_dpax_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 40entry: 41; CHECK: dpax.w.ph 42 43 %1 = bitcast i32 %a1.coerce to <2 x i16> 44 %2 = bitcast i32 %a2.coerce to <2 x i16> 45 %3 = tail call i64 @llvm.mips.dpax.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 46 ret i64 %3 47} 48 49declare i64 @llvm.mips.dpax.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone 50 51define i64 @test__builtin_mips_dpsx_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind readnone { 52entry: 53; CHECK: dpsx.w.ph 54 55 %1 = bitcast i32 %a1.coerce to <2 x i16> 56 %2 = bitcast i32 %a2.coerce to <2 x i16> 57 %3 = tail call i64 @llvm.mips.dpsx.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 58 ret i64 %3 59} 60 61declare i64 @llvm.mips.dpsx.w.ph(i64, <2 x i16>, <2 x i16>) nounwind readnone 62 63define i64 @test__builtin_mips_dpaqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 64entry: 65; CHECK: dpaqx_s.w.ph 66 67 %1 = bitcast i32 %a1.coerce to <2 x i16> 68 %2 = bitcast i32 %a2.coerce to <2 x i16> 69 %3 = tail call i64 @llvm.mips.dpaqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 70 ret i64 %3 71} 72 73declare i64 @llvm.mips.dpaqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 74 75define i64 @test__builtin_mips_dpaqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 76entry: 77; CHECK: dpaqx_sa.w.ph 78 79 %1 = bitcast i32 %a1.coerce to <2 x i16> 80 %2 = bitcast i32 %a2.coerce to <2 x i16> 81 %3 = tail call i64 @llvm.mips.dpaqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 82 ret i64 %3 83} 84 85declare i64 @llvm.mips.dpaqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 86 87define i64 @test__builtin_mips_dpsqx_s_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 88entry: 89; CHECK: dpsqx_s.w.ph 90 91 %1 = bitcast i32 %a1.coerce to <2 x i16> 92 %2 = bitcast i32 %a2.coerce to <2 x i16> 93 %3 = tail call i64 @llvm.mips.dpsqx.s.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 94 ret i64 %3 95} 96 97declare i64 @llvm.mips.dpsqx.s.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 98 99define i64 @test__builtin_mips_dpsqx_sa_w_ph1(i32 %i0, i32, i64 %a0, i32 %a1.coerce, i32 %a2.coerce) nounwind { 100entry: 101; CHECK: dpsqx_sa.w.ph 102 103 %1 = bitcast i32 %a1.coerce to <2 x i16> 104 %2 = bitcast i32 %a2.coerce to <2 x i16> 105 %3 = tail call i64 @llvm.mips.dpsqx.sa.w.ph(i64 %a0, <2 x i16> %1, <2 x i16> %2) 106 ret i64 %3 107} 108 109declare i64 @llvm.mips.dpsqx.sa.w.ph(i64, <2 x i16>, <2 x i16>) nounwind 110 111define { i32 } @test__builtin_mips_addu_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 112entry: 113; CHECK: addu.ph 114 115 %0 = bitcast i32 %a0.coerce to <2 x i16> 116 %1 = bitcast i32 %a1.coerce to <2 x i16> 117 %2 = tail call <2 x i16> @llvm.mips.addu.ph(<2 x i16> %0, <2 x i16> %1) 118 %3 = bitcast <2 x i16> %2 to i32 119 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 120 ret { i32 } %.fca.0.insert 121} 122 123declare <2 x i16> @llvm.mips.addu.ph(<2 x i16>, <2 x i16>) nounwind 124 125define { i32 } @test__builtin_mips_addu_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 126entry: 127; CHECK: addu_s.ph 128 129 %0 = bitcast i32 %a0.coerce to <2 x i16> 130 %1 = bitcast i32 %a1.coerce to <2 x i16> 131 %2 = tail call <2 x i16> @llvm.mips.addu.s.ph(<2 x i16> %0, <2 x i16> %1) 132 %3 = bitcast <2 x i16> %2 to i32 133 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 134 ret { i32 } %.fca.0.insert 135} 136 137declare <2 x i16> @llvm.mips.addu.s.ph(<2 x i16>, <2 x i16>) nounwind 138 139define { i32 } @test__builtin_mips_mulq_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 140entry: 141; CHECK: mulq_s.ph 142 143 %0 = bitcast i32 %a0.coerce to <2 x i16> 144 %1 = bitcast i32 %a1.coerce to <2 x i16> 145 %2 = tail call <2 x i16> @llvm.mips.mulq.s.ph(<2 x i16> %0, <2 x i16> %1) 146 %3 = bitcast <2 x i16> %2 to i32 147 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 148 ret { i32 } %.fca.0.insert 149} 150 151declare <2 x i16> @llvm.mips.mulq.s.ph(<2 x i16>, <2 x i16>) nounwind 152 153define { i32 } @test__builtin_mips_subu_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 154entry: 155; CHECK: subu.ph 156 157 %0 = bitcast i32 %a0.coerce to <2 x i16> 158 %1 = bitcast i32 %a1.coerce to <2 x i16> 159 %2 = tail call <2 x i16> @llvm.mips.subu.ph(<2 x i16> %0, <2 x i16> %1) 160 %3 = bitcast <2 x i16> %2 to i32 161 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 162 ret { i32 } %.fca.0.insert 163} 164 165declare <2 x i16> @llvm.mips.subu.ph(<2 x i16>, <2 x i16>) nounwind 166 167define { i32 } @test__builtin_mips_subu_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 168entry: 169; CHECK: subu_s.ph 170 171 %0 = bitcast i32 %a0.coerce to <2 x i16> 172 %1 = bitcast i32 %a1.coerce to <2 x i16> 173 %2 = tail call <2 x i16> @llvm.mips.subu.s.ph(<2 x i16> %0, <2 x i16> %1) 174 %3 = bitcast <2 x i16> %2 to i32 175 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 176 ret { i32 } %.fca.0.insert 177} 178 179declare <2 x i16> @llvm.mips.subu.s.ph(<2 x i16>, <2 x i16>) nounwind 180 181define i32 @test__builtin_mips_cmpgdu_eq_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 182entry: 183; CHECK: cmpgdu.eq.qb 184 185 %0 = bitcast i32 %a0.coerce to <4 x i8> 186 %1 = bitcast i32 %a1.coerce to <4 x i8> 187 %2 = tail call i32 @llvm.mips.cmpgdu.eq.qb(<4 x i8> %0, <4 x i8> %1) 188 ret i32 %2 189} 190 191declare i32 @llvm.mips.cmpgdu.eq.qb(<4 x i8>, <4 x i8>) nounwind 192 193define i32 @test__builtin_mips_cmpgdu_lt_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 194entry: 195; CHECK: cmpgdu.lt.qb 196 197 %0 = bitcast i32 %a0.coerce to <4 x i8> 198 %1 = bitcast i32 %a1.coerce to <4 x i8> 199 %2 = tail call i32 @llvm.mips.cmpgdu.lt.qb(<4 x i8> %0, <4 x i8> %1) 200 ret i32 %2 201} 202 203declare i32 @llvm.mips.cmpgdu.lt.qb(<4 x i8>, <4 x i8>) nounwind 204 205define i32 @test__builtin_mips_cmpgdu_le_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 206entry: 207; CHECK: cmpgdu.le.qb 208 209 %0 = bitcast i32 %a0.coerce to <4 x i8> 210 %1 = bitcast i32 %a1.coerce to <4 x i8> 211 %2 = tail call i32 @llvm.mips.cmpgdu.le.qb(<4 x i8> %0, <4 x i8> %1) 212 ret i32 %2 213} 214 215declare i32 @llvm.mips.cmpgdu.le.qb(<4 x i8>, <4 x i8>) nounwind 216 217define { i32 } @test__builtin_mips_precr_qb_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 218entry: 219; CHECK: precr.qb.ph 220 221 %0 = bitcast i32 %a0.coerce to <2 x i16> 222 %1 = bitcast i32 %a1.coerce to <2 x i16> 223 %2 = tail call <4 x i8> @llvm.mips.precr.qb.ph(<2 x i16> %0, <2 x i16> %1) 224 %3 = bitcast <4 x i8> %2 to i32 225 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 226 ret { i32 } %.fca.0.insert 227} 228 229declare <4 x i8> @llvm.mips.precr.qb.ph(<2 x i16>, <2 x i16>) nounwind 230 231define { i32 } @test__builtin_mips_precr_sra_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 232entry: 233; CHECK: precr_sra.ph.w 234 235 %0 = tail call <2 x i16> @llvm.mips.precr.sra.ph.w(i32 %a0, i32 %a1, i32 15) 236 %1 = bitcast <2 x i16> %0 to i32 237 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 238 ret { i32 } %.fca.0.insert 239} 240 241declare <2 x i16> @llvm.mips.precr.sra.ph.w(i32, i32, i32) nounwind readnone 242 243define { i32 } @test__builtin_mips_precr_sra_r_ph_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 244entry: 245; CHECK: precr_sra_r.ph.w 246 247 %0 = tail call <2 x i16> @llvm.mips.precr.sra.r.ph.w(i32 %a0, i32 %a1, i32 15) 248 %1 = bitcast <2 x i16> %0 to i32 249 %.fca.0.insert = insertvalue { i32 } undef, i32 %1, 0 250 ret { i32 } %.fca.0.insert 251} 252 253declare <2 x i16> @llvm.mips.precr.sra.r.ph.w(i32, i32, i32) nounwind readnone 254 255define { i32 } @test__builtin_mips_shra_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone { 256entry: 257; CHECK: shra.qb 258 259 %0 = bitcast i32 %a0.coerce to <4 x i8> 260 %1 = tail call <4 x i8> @llvm.mips.shra.qb(<4 x i8> %0, i32 3) 261 %2 = bitcast <4 x i8> %1 to i32 262 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 263 ret { i32 } %.fca.0.insert 264} 265 266declare <4 x i8> @llvm.mips.shra.qb(<4 x i8>, i32) nounwind readnone 267 268define { i32 } @test__builtin_mips_shra_r_qb1(i32 %i0, i32 %a0.coerce) nounwind readnone { 269entry: 270; CHECK: shra_r.qb 271 272 %0 = bitcast i32 %a0.coerce to <4 x i8> 273 %1 = tail call <4 x i8> @llvm.mips.shra.r.qb(<4 x i8> %0, i32 3) 274 %2 = bitcast <4 x i8> %1 to i32 275 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 276 ret { i32 } %.fca.0.insert 277} 278 279declare <4 x i8> @llvm.mips.shra.r.qb(<4 x i8>, i32) nounwind readnone 280 281define { i32 } @test__builtin_mips_shra_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone { 282entry: 283; CHECK: shrav.qb 284 285 %0 = bitcast i32 %a0.coerce to <4 x i8> 286 %1 = tail call <4 x i8> @llvm.mips.shra.qb(<4 x i8> %0, i32 %a1) 287 %2 = bitcast <4 x i8> %1 to i32 288 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 289 ret { i32 } %.fca.0.insert 290} 291 292define { i32 } @test__builtin_mips_shra_r_qb2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone { 293entry: 294; CHECK: shrav_r.qb 295 296 %0 = bitcast i32 %a0.coerce to <4 x i8> 297 %1 = tail call <4 x i8> @llvm.mips.shra.r.qb(<4 x i8> %0, i32 %a1) 298 %2 = bitcast <4 x i8> %1 to i32 299 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 300 ret { i32 } %.fca.0.insert 301} 302 303define { i32 } @test__builtin_mips_shrl_ph1(i32 %i0, i32 %a0.coerce) nounwind readnone { 304entry: 305; CHECK: shrl.ph 306 307 %0 = bitcast i32 %a0.coerce to <2 x i16> 308 %1 = tail call <2 x i16> @llvm.mips.shrl.ph(<2 x i16> %0, i32 7) 309 %2 = bitcast <2 x i16> %1 to i32 310 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 311 ret { i32 } %.fca.0.insert 312} 313 314declare <2 x i16> @llvm.mips.shrl.ph(<2 x i16>, i32) nounwind readnone 315 316define { i32 } @test__builtin_mips_shrl_ph2(i32 %i0, i32 %a0.coerce, i32 %a1) nounwind readnone { 317entry: 318; CHECK: shrlv.ph 319 320 %0 = bitcast i32 %a0.coerce to <2 x i16> 321 %1 = tail call <2 x i16> @llvm.mips.shrl.ph(<2 x i16> %0, i32 %a1) 322 %2 = bitcast <2 x i16> %1 to i32 323 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 324 ret { i32 } %.fca.0.insert 325} 326 327define { i32 } @test__builtin_mips_absq_s_qb1(i32 %i0, i32 %a0.coerce) nounwind { 328entry: 329; CHECK: absq_s.qb 330 331 %0 = bitcast i32 %a0.coerce to <4 x i8> 332 %1 = tail call <4 x i8> @llvm.mips.absq.s.qb(<4 x i8> %0) 333 %2 = bitcast <4 x i8> %1 to i32 334 %.fca.0.insert = insertvalue { i32 } undef, i32 %2, 0 335 ret { i32 } %.fca.0.insert 336} 337 338declare <4 x i8> @llvm.mips.absq.s.qb(<4 x i8>) nounwind 339 340define { i32 } @test__builtin_mips_mul_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 341entry: 342; CHECK: mul.ph 343 344 %0 = bitcast i32 %a0.coerce to <2 x i16> 345 %1 = bitcast i32 %a1.coerce to <2 x i16> 346 %2 = tail call <2 x i16> @llvm.mips.mul.ph(<2 x i16> %0, <2 x i16> %1) 347 %3 = bitcast <2 x i16> %2 to i32 348 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 349 ret { i32 } %.fca.0.insert 350} 351 352declare <2 x i16> @llvm.mips.mul.ph(<2 x i16>, <2 x i16>) nounwind 353 354define { i32 } @test__builtin_mips_mul_s_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind { 355entry: 356; CHECK: mul_s.ph 357 358 %0 = bitcast i32 %a0.coerce to <2 x i16> 359 %1 = bitcast i32 %a1.coerce to <2 x i16> 360 %2 = tail call <2 x i16> @llvm.mips.mul.s.ph(<2 x i16> %0, <2 x i16> %1) 361 %3 = bitcast <2 x i16> %2 to i32 362 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 363 ret { i32 } %.fca.0.insert 364} 365 366declare <2 x i16> @llvm.mips.mul.s.ph(<2 x i16>, <2 x i16>) nounwind 367 368define i32 @test__builtin_mips_mulq_rs_w1(i32 %i0, i32 %a0, i32 %a1) nounwind { 369entry: 370; CHECK: mulq_rs.w 371 372 %0 = tail call i32 @llvm.mips.mulq.rs.w(i32 %a0, i32 %a1) 373 ret i32 %0 374} 375 376declare i32 @llvm.mips.mulq.rs.w(i32, i32) nounwind 377 378define i32 @test__builtin_mips_mulq_s_w1(i32 %i0, i32 %a0, i32 %a1) nounwind { 379entry: 380; CHECK: mulq_s.w 381 382 %0 = tail call i32 @llvm.mips.mulq.s.w(i32 %a0, i32 %a1) 383 ret i32 %0 384} 385 386declare i32 @llvm.mips.mulq.s.w(i32, i32) nounwind 387 388define { i32 } @test__builtin_mips_adduh_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 389entry: 390; CHECK: adduh.qb 391 392 %0 = bitcast i32 %a0.coerce to <4 x i8> 393 %1 = bitcast i32 %a1.coerce to <4 x i8> 394 %2 = tail call <4 x i8> @llvm.mips.adduh.qb(<4 x i8> %0, <4 x i8> %1) 395 %3 = bitcast <4 x i8> %2 to i32 396 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 397 ret { i32 } %.fca.0.insert 398} 399 400declare <4 x i8> @llvm.mips.adduh.qb(<4 x i8>, <4 x i8>) nounwind readnone 401 402define { i32 } @test__builtin_mips_adduh_r_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 403entry: 404; CHECK: adduh_r.qb 405 406 %0 = bitcast i32 %a0.coerce to <4 x i8> 407 %1 = bitcast i32 %a1.coerce to <4 x i8> 408 %2 = tail call <4 x i8> @llvm.mips.adduh.r.qb(<4 x i8> %0, <4 x i8> %1) 409 %3 = bitcast <4 x i8> %2 to i32 410 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 411 ret { i32 } %.fca.0.insert 412} 413 414declare <4 x i8> @llvm.mips.adduh.r.qb(<4 x i8>, <4 x i8>) nounwind readnone 415 416define { i32 } @test__builtin_mips_subuh_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 417entry: 418; CHECK: subuh.qb 419 420 %0 = bitcast i32 %a0.coerce to <4 x i8> 421 %1 = bitcast i32 %a1.coerce to <4 x i8> 422 %2 = tail call <4 x i8> @llvm.mips.subuh.qb(<4 x i8> %0, <4 x i8> %1) 423 %3 = bitcast <4 x i8> %2 to i32 424 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 425 ret { i32 } %.fca.0.insert 426} 427 428declare <4 x i8> @llvm.mips.subuh.qb(<4 x i8>, <4 x i8>) nounwind readnone 429 430define { i32 } @test__builtin_mips_subuh_r_qb1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 431entry: 432; CHECK: subuh_r.qb 433 434 %0 = bitcast i32 %a0.coerce to <4 x i8> 435 %1 = bitcast i32 %a1.coerce to <4 x i8> 436 %2 = tail call <4 x i8> @llvm.mips.subuh.r.qb(<4 x i8> %0, <4 x i8> %1) 437 %3 = bitcast <4 x i8> %2 to i32 438 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 439 ret { i32 } %.fca.0.insert 440} 441 442declare <4 x i8> @llvm.mips.subuh.r.qb(<4 x i8>, <4 x i8>) nounwind readnone 443 444define { i32 } @test__builtin_mips_addqh_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 445entry: 446; CHECK: addqh.ph 447 448 %0 = bitcast i32 %a0.coerce to <2 x i16> 449 %1 = bitcast i32 %a1.coerce to <2 x i16> 450 %2 = tail call <2 x i16> @llvm.mips.addqh.ph(<2 x i16> %0, <2 x i16> %1) 451 %3 = bitcast <2 x i16> %2 to i32 452 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 453 ret { i32 } %.fca.0.insert 454} 455 456declare <2 x i16> @llvm.mips.addqh.ph(<2 x i16>, <2 x i16>) nounwind readnone 457 458define { i32 } @test__builtin_mips_addqh_r_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 459entry: 460; CHECK: addqh_r.ph 461 462 %0 = bitcast i32 %a0.coerce to <2 x i16> 463 %1 = bitcast i32 %a1.coerce to <2 x i16> 464 %2 = tail call <2 x i16> @llvm.mips.addqh.r.ph(<2 x i16> %0, <2 x i16> %1) 465 %3 = bitcast <2 x i16> %2 to i32 466 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 467 ret { i32 } %.fca.0.insert 468} 469 470declare <2 x i16> @llvm.mips.addqh.r.ph(<2 x i16>, <2 x i16>) nounwind readnone 471 472define i32 @test__builtin_mips_addqh_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 473entry: 474; CHECK: addqh.w 475 476 %0 = tail call i32 @llvm.mips.addqh.w(i32 %a0, i32 %a1) 477 ret i32 %0 478} 479 480declare i32 @llvm.mips.addqh.w(i32, i32) nounwind readnone 481 482define i32 @test__builtin_mips_addqh_r_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 483entry: 484; CHECK: addqh_r.w 485 486 %0 = tail call i32 @llvm.mips.addqh.r.w(i32 %a0, i32 %a1) 487 ret i32 %0 488} 489 490declare i32 @llvm.mips.addqh.r.w(i32, i32) nounwind readnone 491 492define { i32 } @test__builtin_mips_subqh_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 493entry: 494; CHECK: subqh.ph 495 496 %0 = bitcast i32 %a0.coerce to <2 x i16> 497 %1 = bitcast i32 %a1.coerce to <2 x i16> 498 %2 = tail call <2 x i16> @llvm.mips.subqh.ph(<2 x i16> %0, <2 x i16> %1) 499 %3 = bitcast <2 x i16> %2 to i32 500 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 501 ret { i32 } %.fca.0.insert 502} 503 504declare <2 x i16> @llvm.mips.subqh.ph(<2 x i16>, <2 x i16>) nounwind readnone 505 506define { i32 } @test__builtin_mips_subqh_r_ph1(i32 %i0, i32 %a0.coerce, i32 %a1.coerce) nounwind readnone { 507entry: 508; CHECK: subqh_r.ph 509 510 %0 = bitcast i32 %a0.coerce to <2 x i16> 511 %1 = bitcast i32 %a1.coerce to <2 x i16> 512 %2 = tail call <2 x i16> @llvm.mips.subqh.r.ph(<2 x i16> %0, <2 x i16> %1) 513 %3 = bitcast <2 x i16> %2 to i32 514 %.fca.0.insert = insertvalue { i32 } undef, i32 %3, 0 515 ret { i32 } %.fca.0.insert 516} 517 518declare <2 x i16> @llvm.mips.subqh.r.ph(<2 x i16>, <2 x i16>) nounwind readnone 519 520define i32 @test__builtin_mips_subqh_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 521entry: 522; CHECK: subqh.w 523 524 %0 = tail call i32 @llvm.mips.subqh.w(i32 %a0, i32 %a1) 525 ret i32 %0 526} 527 528declare i32 @llvm.mips.subqh.w(i32, i32) nounwind readnone 529 530define i32 @test__builtin_mips_subqh_r_w1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 531entry: 532; CHECK: subqh_r.w 533 534 %0 = tail call i32 @llvm.mips.subqh.r.w(i32 %a0, i32 %a1) 535 ret i32 %0 536} 537 538declare i32 @llvm.mips.subqh.r.w(i32, i32) nounwind readnone 539 540define i32 @test__builtin_mips_append1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 541entry: 542; CHECK: append ${{[0-9]+}} 543 544 %0 = tail call i32 @llvm.mips.append(i32 %a0, i32 %a1, i32 15) 545 ret i32 %0 546} 547 548declare i32 @llvm.mips.append(i32, i32, i32) nounwind readnone 549 550define i32 @test__builtin_mips_balign1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 551entry: 552; CHECK: balign ${{[0-9]+}} 553 554 %0 = tail call i32 @llvm.mips.balign(i32 %a0, i32 %a1, i32 1) 555 ret i32 %0 556} 557 558declare i32 @llvm.mips.balign(i32, i32, i32) nounwind readnone 559 560define i32 @test__builtin_mips_prepend1(i32 %i0, i32 %a0, i32 %a1) nounwind readnone { 561entry: 562; CHECK: prepend ${{[0-9]+}} 563 564 %0 = tail call i32 @llvm.mips.prepend(i32 %a0, i32 %a1, i32 15) 565 ret i32 %0 566} 567 568declare i32 @llvm.mips.prepend(i32, i32, i32) nounwind readnone 569