1 ; RUN: llc -march=hexagon -O0 < %s | FileCheck %s 2 3 ; CHECK-LABEL: @test00 4 ; CHECK: = cmp.eq(r1:0, r3:2) 5 define i32 @test00(i64 %Rs, i64 %Rt) #0 { 6 entry: 7 %0 = tail call i32 @llvm.hexagon.C2.cmpeqp(i64 %Rs, i64 %Rt) 8 ret i32 %0 9 } 10 11 ; CHECK-LABEL: @test01 12 ; CHECK: = cmp.gt(r1:0, r3:2) 13 define i32 @test01(i64 %Rs, i64 %Rt) #0 { 14 entry: 15 %0 = tail call i32 @llvm.hexagon.C2.cmpgtp(i64 %Rs, i64 %Rt) 16 ret i32 %0 17 } 18 19 ; CHECK-LABEL: @test02 20 ; CHECK: = cmp.gtu(r1:0, r3:2) 21 define i32 @test02(i64 %Rs, i64 %Rt) #0 { 22 entry: 23 %0 = tail call i32 @llvm.hexagon.C2.cmpgtup(i64 %Rs, i64 %Rt) 24 ret i32 %0 25 } 26 27 ; CHECK-LABEL: @test10 28 ; CHECK: = cmp.eq(r0, r1) 29 define i32 @test10(i32 %Rs, i32 %Rt) #0 { 30 entry: 31 %0 = tail call i32 @llvm.hexagon.A4.rcmpeq(i32 %Rs, i32 %Rt) 32 ret i32 %0 33 } 34 35 ; CHECK-LABEL: @test11 36 ; CHECK: = !cmp.eq(r0, r1) 37 define i32 @test11(i32 %Rs, i32 %Rt) #0 { 38 entry: 39 %0 = tail call i32 @llvm.hexagon.A4.rcmpneq(i32 %Rs, i32 %Rt) 40 ret i32 %0 41 } 42 43 ; CHECK-LABEL: @test12 44 ; CHECK: = cmp.eq(r0, #23) 45 define i32 @test12(i32 %Rs) #0 { 46 entry: 47 %0 = tail call i32 @llvm.hexagon.A4.rcmpeqi(i32 %Rs, i32 23) 48 ret i32 %0 49 } 50 51 ; CHECK-LABEL: @test13 52 ; CHECK: = !cmp.eq(r0, #47) 53 define i32 @test13(i32 %Rs) #0 { 54 entry: 55 %0 = tail call i32 @llvm.hexagon.A4.rcmpneqi(i32 %Rs, i32 47) 56 ret i32 %0 57 } 58 59 ; CHECK-LABEL: @test20 60 ; CHECK: = cmpb.eq(r0, r1) 61 define i32 @test20(i32 %Rs, i32 %Rt) #0 { 62 entry: 63 %0 = tail call i32 @llvm.hexagon.A4.cmpbeq(i32 %Rs, i32 %Rt) 64 ret i32 %0 65 } 66 67 ; CHECK-LABEL: @test21 68 ; CHECK: = cmpb.gt(r0, r1) 69 define i32 @test21(i32 %Rs, i32 %Rt) #0 { 70 entry: 71 %0 = tail call i32 @llvm.hexagon.A4.cmpbgt(i32 %Rs, i32 %Rt) 72 ret i32 %0 73 } 74 75 ; CHECK-LABEL: @test22 76 ; CHECK: = cmpb.gtu(r0, r1) 77 define i32 @test22(i32 %Rs, i32 %Rt) #0 { 78 entry: 79 %0 = tail call i32 @llvm.hexagon.A4.cmpbgtu(i32 %Rs, i32 %Rt) 80 ret i32 %0 81 } 82 83 ; CHECK-LABEL: @test23 84 ; CHECK: = cmpb.eq(r0, #56) 85 define i32 @test23(i32 %Rs) #0 { 86 entry: 87 %0 = tail call i32 @llvm.hexagon.A4.cmpbeqi(i32 %Rs, i32 56) 88 ret i32 %0 89 } 90 91 ; CHECK-LABEL: @test24 92 ; CHECK: = cmpb.gt(r0, #29) 93 define i32 @test24(i32 %Rs) #0 { 94 entry: 95 %0 = tail call i32 @llvm.hexagon.A4.cmpbgti(i32 %Rs, i32 29) 96 ret i32 %0 97 } 98 99 ; CHECK-LABEL: @test25 100 ; CHECK: = cmpb.gtu(r0, #111) 101 define i32 @test25(i32 %Rs) #0 { 102 entry: 103 %0 = tail call i32 @llvm.hexagon.A4.cmpbgtui(i32 %Rs, i32 111) 104 ret i32 %0 105 } 106 107 ; CHECK-LABEL: @test30 108 ; CHECK: = cmph.eq(r0, r1) 109 define i32 @test30(i32 %Rs, i32 %Rt) #0 { 110 entry: 111 %0 = tail call i32 @llvm.hexagon.A4.cmpheq(i32 %Rs, i32 %Rt) 112 ret i32 %0 113 } 114 115 ; CHECK-LABEL: @test31 116 ; CHECK: = cmph.gt(r0, r1) 117 define i32 @test31(i32 %Rs, i32 %Rt) #0 { 118 entry: 119 %0 = tail call i32 @llvm.hexagon.A4.cmphgt(i32 %Rs, i32 %Rt) 120 ret i32 %0 121 } 122 123 ; CHECK-LABEL: @test32 124 ; CHECK: = cmph.gtu(r0, r1) 125 define i32 @test32(i32 %Rs, i32 %Rt) #0 { 126 entry: 127 %0 = tail call i32 @llvm.hexagon.A4.cmphgtu(i32 %Rs, i32 %Rt) 128 ret i32 %0 129 } 130 131 ; CHECK-LABEL: @test33 132 ; CHECK: = cmph.eq(r0, #-123) 133 define i32 @test33(i32 %Rs) #0 { 134 entry: 135 %0 = tail call i32 @llvm.hexagon.A4.cmpheqi(i32 %Rs, i32 -123) 136 ret i32 %0 137 } 138 139 ; CHECK-LABEL: @test34 140 ; CHECK: = cmph.gt(r0, #-3) 141 define i32 @test34(i32 %Rs) #0 { 142 entry: 143 %0 = tail call i32 @llvm.hexagon.A4.cmphgti(i32 %Rs, i32 -3) 144 ret i32 %0 145 } 146 147 ; CHECK-LABEL: @test35 148 ; CHECK: = cmph.gtu(r0, #13) 149 define i32 @test35(i32 %Rs) #0 { 150 entry: 151 %0 = tail call i32 @llvm.hexagon.A4.cmphgtui(i32 %Rs, i32 13) 152 ret i32 %0 153 } 154 155 ; CHECK-LABEL: @test40 156 ; CHECK: = vmux(p0, r3:2, r5:4) 157 define i64 @test40(i32 %Pu, i64 %Rs, i64 %Rt) #0 { 158 entry: 159 %0 = tail call i64 @llvm.hexagon.C2.vmux(i32 %Pu, i64 %Rs, i64 %Rt) 160 ret i64 %0 161 } 162 163 ; CHECK-LABEL: @test41 164 ; CHECK: = any8(vcmpb.eq(r1:0, r3:2)) 165 define i32 @test41(i64 %Rs, i64 %Rt) #0 { 166 entry: 167 %0 = tail call i32 @llvm.hexagon.A4.vcmpbeq.any(i64 %Rs, i64 %Rt) 168 ret i32 %0 169 } 170 171 ; CHECK-LABEL: @test50 172 ; CHECK: = add(r1:0, r3:2) 173 define i64 @test50(i64 %Rs, i64 %Rt) #0 { 174 entry: 175 %0 = tail call i64 @llvm.hexagon.A2.addp(i64 %Rs, i64 %Rt) 176 ret i64 %0 177 } 178 179 ; CHECK-LABEL: @test51 180 ; CHECK: = add(r1:0, r3:2):sat 181 define i64 @test51(i64 %Rs, i64 %Rt) #0 { 182 entry: 183 %0 = tail call i64 @llvm.hexagon.A2.addpsat(i64 %Rs, i64 %Rt) 184 ret i64 %0 185 } 186 187 ; CHECK-LABEL: @test52 188 ; CHECK: = sub(r1:0, r3:2) 189 define i64 @test52(i64 %Rs, i64 %Rt) #0 { 190 entry: 191 %0 = tail call i64 @llvm.hexagon.A2.subp(i64 %Rs, i64 %Rt) 192 ret i64 %0 193 } 194 195 ; CHECK-LABEL: @test53 196 ; CHECK: = add(r1:0, r3:2):raw: 197 define i64 @test53(i32 %Rs, i64 %Rt) #0 { 198 entry: 199 %0 = tail call i64 @llvm.hexagon.A2.addsp(i32 %Rs, i64 %Rt) 200 ret i64 %0 201 } 202 203 ; CHECK-LABEL: @test54 204 ; CHECK: = and(r1:0, r3:2) 205 define i64 @test54(i64 %Rs, i64 %Rt) #0 { 206 entry: 207 %0 = tail call i64 @llvm.hexagon.A2.andp(i64 %Rs, i64 %Rt) 208 ret i64 %0 209 } 210 211 ; CHECK-LABEL: @test55 212 ; CHECK: = or(r1:0, r3:2) 213 define i64 @test55(i64 %Rs, i64 %Rt) #0 { 214 entry: 215 %0 = tail call i64 @llvm.hexagon.A2.orp(i64 %Rs, i64 %Rt) 216 ret i64 %0 217 } 218 219 ; CHECK-LABEL: @test56 220 ; CHECK: = xor(r1:0, r3:2) 221 define i64 @test56(i64 %Rs, i64 %Rt) #0 { 222 entry: 223 %0 = tail call i64 @llvm.hexagon.A2.xorp(i64 %Rs, i64 %Rt) 224 ret i64 %0 225 } 226 227 ; CHECK-LABEL: @test57 228 ; CHECK: = and(r1:0, ~r3:2) 229 define i64 @test57(i64 %Rs, i64 %Rt) #0 { 230 entry: 231 %0 = tail call i64 @llvm.hexagon.A4.andnp(i64 %Rs, i64 %Rt) 232 ret i64 %0 233 } 234 235 ; CHECK-LABEL: @test58 236 ; CHECK: = or(r1:0, ~r3:2) 237 define i64 @test58(i64 %Rs, i64 %Rt) #0 { 238 entry: 239 %0 = tail call i64 @llvm.hexagon.A4.ornp(i64 %Rs, i64 %Rt) 240 ret i64 %0 241 } 242 243 ; CHECK-LABEL: @test60 244 ; CHECK: = add(r0.l, r1.l) 245 define i32 @test60(i32 %Rs, i32 %Rt) #0 { 246 entry: 247 %0 = tail call i32 @llvm.hexagon.A2.addh.l16.ll(i32 %Rs, i32 %Rt) 248 ret i32 %0 249 } 250 251 ; CHECK-LABEL: @test61 252 ; CHECK: = add(r0.l, r1.h) 253 define i32 @test61(i32 %Rs, i32 %Rt) #0 { 254 entry: 255 %0 = tail call i32 @llvm.hexagon.A2.addh.l16.hl(i32 %Rs, i32 %Rt) 256 ret i32 %0 257 } 258 259 ; CHECK-LABEL: @test62 260 ; CHECK: = add(r0.l, r1.l):sat 261 define i32 @test62(i32 %Rs, i32 %Rt) #0 { 262 entry: 263 %0 = tail call i32 @llvm.hexagon.A2.addh.l16.sat.ll(i32 %Rs, i32 %Rt) 264 ret i32 %0 265 } 266 267 ; CHECK-LABEL: @test63 268 ; CHECK: = add(r0.l, r1.h):sat 269 define i32 @test63(i32 %Rs, i32 %Rt) #0 { 270 entry: 271 %0 = tail call i32 @llvm.hexagon.A2.addh.l16.sat.hl(i32 %Rs, i32 %Rt) 272 ret i32 %0 273 } 274 275 ; CHECK-LABEL: @test64 276 ; CHECK: = add(r0.l, r1.l):<<16 277 define i32 @test64(i32 %Rs, i32 %Rt) #0 { 278 entry: 279 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.ll(i32 %Rs, i32 %Rt) 280 ret i32 %0 281 } 282 283 ; CHECK-LABEL: @test65 284 ; CHECK: = add(r0.l, r1.h):<<16 285 define i32 @test65(i32 %Rs, i32 %Rt) #0 { 286 entry: 287 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.lh(i32 %Rs, i32 %Rt) 288 ret i32 %0 289 } 290 291 ; CHECK-LABEL: @test66 292 ; CHECK: = add(r0.h, r1.l):<<16 293 define i32 @test66(i32 %Rs, i32 %Rt) #0 { 294 entry: 295 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.hl(i32 %Rs, i32 %Rt) 296 ret i32 %0 297 } 298 299 ; CHECK-LABEL: @test67 300 ; CHECK: = add(r0.h, r1.h):<<16 301 define i32 @test67(i32 %Rs, i32 %Rt) #0 { 302 entry: 303 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.hh(i32 %Rs, i32 %Rt) 304 ret i32 %0 305 } 306 307 ; CHECK-LABEL: @test68 308 ; CHECK: = add(r0.l, r1.l):sat:<<16 309 define i32 @test68(i32 %Rs, i32 %Rt) #0 { 310 entry: 311 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.ll(i32 %Rs, i32 %Rt) 312 ret i32 %0 313 } 314 315 ; CHECK-LABEL: @test69 316 ; CHECK: = add(r0.l, r1.h):sat:<<16 317 define i32 @test69(i32 %Rs, i32 %Rt) #0 { 318 entry: 319 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.lh(i32 %Rs, i32 %Rt) 320 ret i32 %0 321 } 322 323 ; CHECK-LABEL: @test6A 324 ; CHECK: = add(r0.h, r1.l):sat:<<16 325 define i32 @test6A(i32 %Rs, i32 %Rt) #0 { 326 entry: 327 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.hl(i32 %Rs, i32 %Rt) 328 ret i32 %0 329 } 330 331 ; CHECK-LABEL: @test6B 332 ; CHECK: = add(r0.h, r1.h):sat:<<16 333 define i32 @test6B(i32 %Rs, i32 %Rt) #0 { 334 entry: 335 %0 = tail call i32 @llvm.hexagon.A2.addh.h16.sat.hh(i32 %Rs, i32 %Rt) 336 ret i32 %0 337 } 338 339 ; CHECK-LABEL: @test70 340 ; CHECK: = sub(r0.l, r1.l) 341 define i32 @test70(i32 %Rs, i32 %Rt) #0 { 342 entry: 343 %0 = tail call i32 @llvm.hexagon.A2.subh.l16.ll(i32 %Rs, i32 %Rt) 344 ret i32 %0 345 } 346 347 ; CHECK-LABEL: @test71 348 ; CHECK: = sub(r0.l, r1.h) 349 define i32 @test71(i32 %Rs, i32 %Rt) #0 { 350 entry: 351 %0 = tail call i32 @llvm.hexagon.A2.subh.l16.hl(i32 %Rs, i32 %Rt) 352 ret i32 %0 353 } 354 355 ; CHECK-LABEL: @test72 356 ; CHECK: = sub(r0.l, r1.l):sat 357 define i32 @test72(i32 %Rs, i32 %Rt) #0 { 358 entry: 359 %0 = tail call i32 @llvm.hexagon.A2.subh.l16.sat.ll(i32 %Rs, i32 %Rt) 360 ret i32 %0 361 } 362 363 ; CHECK-LABEL: @test73 364 ; CHECK: = sub(r0.l, r1.h):sat 365 define i32 @test73(i32 %Rs, i32 %Rt) #0 { 366 entry: 367 %0 = tail call i32 @llvm.hexagon.A2.subh.l16.sat.hl(i32 %Rs, i32 %Rt) 368 ret i32 %0 369 } 370 371 ; CHECK-LABEL: @test74 372 ; CHECK: = sub(r0.l, r1.l):<<16 373 define i32 @test74(i32 %Rs, i32 %Rt) #0 { 374 entry: 375 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.ll(i32 %Rs, i32 %Rt) 376 ret i32 %0 377 } 378 379 ; CHECK-LABEL: @test75 380 ; CHECK: = sub(r0.l, r1.h):<<16 381 define i32 @test75(i32 %Rs, i32 %Rt) #0 { 382 entry: 383 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.lh(i32 %Rs, i32 %Rt) 384 ret i32 %0 385 } 386 387 ; CHECK-LABEL: @test76 388 ; CHECK: = sub(r0.h, r1.l):<<16 389 define i32 @test76(i32 %Rs, i32 %Rt) #0 { 390 entry: 391 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.hl(i32 %Rs, i32 %Rt) 392 ret i32 %0 393 } 394 395 ; CHECK-LABEL: @test77 396 ; CHECK: = sub(r0.h, r1.h):<<16 397 define i32 @test77(i32 %Rs, i32 %Rt) #0 { 398 entry: 399 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.hh(i32 %Rs, i32 %Rt) 400 ret i32 %0 401 } 402 403 ; CHECK-LABEL: @test78 404 ; CHECK: = sub(r0.l, r1.l):sat:<<16 405 define i32 @test78(i32 %Rs, i32 %Rt) #0 { 406 entry: 407 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.ll(i32 %Rs, i32 %Rt) 408 ret i32 %0 409 } 410 411 ; CHECK-LABEL: @test79 412 ; CHECK: = sub(r0.l, r1.h):sat:<<16 413 define i32 @test79(i32 %Rs, i32 %Rt) #0 { 414 entry: 415 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.lh(i32 %Rs, i32 %Rt) 416 ret i32 %0 417 } 418 419 ; CHECK-LABEL: @test7A 420 ; CHECK: = sub(r0.h, r1.l):sat:<<16 421 define i32 @test7A(i32 %Rs, i32 %Rt) #0 { 422 entry: 423 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.hl(i32 %Rs, i32 %Rt) 424 ret i32 %0 425 } 426 427 ; CHECK-LABEL: @test7B 428 ; CHECK: = sub(r0.h, r1.h):sat:<<16 429 define i32 @test7B(i32 %Rs, i32 %Rt) #0 { 430 entry: 431 %0 = tail call i32 @llvm.hexagon.A2.subh.h16.sat.hh(i32 %Rs, i32 %Rt) 432 ret i32 %0 433 } 434 435 ; CHECK-LABEL: @test90 436 ; CHECK: = and(#1, asl(r0, #2)) 437 define i32 @test90(i32 %Rs) #0 { 438 entry: 439 %0 = tail call i32 @llvm.hexagon.S4.andi.asl.ri(i32 1, i32 %Rs, i32 2) 440 ret i32 %0 441 } 442 443 ; CHECK-LABEL: @test91 444 ; CHECK: = or(#1, asl(r0, #2)) 445 define i32 @test91(i32 %Rs) #0 { 446 entry: 447 %0 = tail call i32 @llvm.hexagon.S4.ori.asl.ri(i32 1, i32 %Rs, i32 2) 448 ret i32 %0 449 } 450 451 ; CHECK-LABEL: @test92 452 ; CHECK: = add(#1, asl(r0, #2)) 453 define i32 @test92(i32 %Rs) #0 { 454 entry: 455 %0 = tail call i32 @llvm.hexagon.S4.addi.asl.ri(i32 1, i32 %Rs, i32 2) 456 ret i32 %0 457 } 458 459 ; CHECK-LABEL: @test93 460 ; CHECK: = sub(#1, asl(r0, #2)) 461 define i32 @test93(i32 %Rs) #0 { 462 entry: 463 %0 = tail call i32 @llvm.hexagon.S4.subi.asl.ri(i32 1, i32 %Rs, i32 2) 464 ret i32 %0 465 } 466 467 ; CHECK-LABEL: @test94 468 ; CHECK: = and(#1, lsr(r0, #2)) 469 define i32 @test94(i32 %Rs) #0 { 470 entry: 471 %0 = tail call i32 @llvm.hexagon.S4.andi.lsr.ri(i32 1, i32 %Rs, i32 2) 472 ret i32 %0 473 } 474 475 ; CHECK-LABEL: @test95 476 ; CHECK: = or(#1, lsr(r0, #2)) 477 define i32 @test95(i32 %Rs) #0 { 478 entry: 479 %0 = tail call i32 @llvm.hexagon.S4.ori.lsr.ri(i32 1, i32 %Rs, i32 2) 480 ret i32 %0 481 } 482 483 ; CHECK-LABEL: @test96 484 ; CHECK: = add(#1, lsr(r0, #2)) 485 define i32 @test96(i32 %Rs) #0 { 486 entry: 487 %0 = tail call i32 @llvm.hexagon.S4.addi.lsr.ri(i32 1, i32 %Rs, i32 2) 488 ret i32 %0 489 } 490 491 ; CHECK-LABEL: @test97 492 ; CHECK: = sub(#1, lsr(r0, #2)) 493 define i32 @test97(i32 %Rs) #0 { 494 entry: 495 %0 = tail call i32 @llvm.hexagon.S4.subi.lsr.ri(i32 1, i32 %Rs, i32 2) 496 ret i32 %0 497 } 498 499 ; CHECK-LABEL: @test100 500 ; CHECK: = bitsplit(r0, r1) 501 define i64 @test100(i32 %Rs, i32 %Rt) #0 { 502 entry: 503 %0 = tail call i64 @llvm.hexagon.A4.bitsplit(i32 %Rs, i32 %Rt) 504 ret i64 %0 505 } 506 507 ; CHECK-LABEL: @test101 508 ; CHECK: = modwrap(r0, r1) 509 define i32 @test101(i32 %Rs, i32 %Rt) #0 { 510 entry: 511 %0 = tail call i32 @llvm.hexagon.A4.modwrapu(i32 %Rs, i32 %Rt) 512 ret i32 %0 513 } 514 515 ; CHECK-LABEL: @test102 516 ; CHECK: = parity(r1:0, r3:2) 517 define i32 @test102(i64 %Rs, i64 %Rt) #0 { 518 entry: 519 %0 = tail call i32 @llvm.hexagon.S2.parityp(i64 %Rs, i64 %Rt) 520 ret i32 %0 521 } 522 523 ; CHECK-LABEL: @test103 524 ; CHECK: = parity(r0, r1) 525 define i32 @test103(i32 %Rs, i32 %Rt) #0 { 526 entry: 527 %0 = tail call i32 @llvm.hexagon.S4.parity(i32 %Rs, i32 %Rt) 528 ret i32 %0 529 } 530 531 declare i32 @llvm.hexagon.C2.cmpeqp(i64, i64) #1 532 declare i32 @llvm.hexagon.C2.cmpgtp(i64, i64) #1 533 declare i32 @llvm.hexagon.C2.cmpgtup(i64, i64) #1 534 declare i32 @llvm.hexagon.A4.rcmpeq(i32, i32) #1 535 declare i32 @llvm.hexagon.A4.rcmpneq(i32, i32) #1 536 declare i32 @llvm.hexagon.A4.rcmpeqi(i32, i32) #1 537 declare i32 @llvm.hexagon.A4.rcmpneqi(i32, i32) #1 538 declare i32 @llvm.hexagon.A4.cmpbeq(i32, i32) #1 539 declare i32 @llvm.hexagon.A4.cmpbgt(i32, i32) #1 540 declare i32 @llvm.hexagon.A4.cmpbgtu(i32, i32) #1 541 declare i32 @llvm.hexagon.A4.cmpbeqi(i32, i32) #1 542 declare i32 @llvm.hexagon.A4.cmpbgti(i32, i32) #1 543 declare i32 @llvm.hexagon.A4.cmpbgtui(i32, i32) #1 544 declare i32 @llvm.hexagon.A4.cmpheq(i32, i32) #1 545 declare i32 @llvm.hexagon.A4.cmphgt(i32, i32) #1 546 declare i32 @llvm.hexagon.A4.cmphgtu(i32, i32) #1 547 declare i32 @llvm.hexagon.A4.cmpheqi(i32, i32) #1 548 declare i32 @llvm.hexagon.A4.cmphgti(i32, i32) #1 549 declare i32 @llvm.hexagon.A4.cmphgtui(i32, i32) #1 550 declare i64 @llvm.hexagon.C2.vmux(i32, i64, i64) #1 551 declare i32 @llvm.hexagon.A4.vcmpbeq.any(i64, i64) #1 552 declare i64 @llvm.hexagon.A2.addp(i64, i64) #1 553 declare i64 @llvm.hexagon.A2.addpsat(i64, i64) #1 554 declare i64 @llvm.hexagon.A2.subp(i64, i64) #1 555 declare i64 @llvm.hexagon.A2.addsp(i32, i64) #1 556 declare i64 @llvm.hexagon.A2.andp(i64, i64) #1 557 declare i64 @llvm.hexagon.A2.orp(i64, i64) #1 558 declare i64 @llvm.hexagon.A2.xorp(i64, i64) #1 559 declare i64 @llvm.hexagon.A4.ornp(i64, i64) #1 560 declare i64 @llvm.hexagon.A4.andnp(i64, i64) #1 561 declare i32 @llvm.hexagon.A2.addh.l16.ll(i32, i32) #1 562 declare i32 @llvm.hexagon.A2.addh.l16.hl(i32, i32) #1 563 declare i32 @llvm.hexagon.A2.addh.l16.sat.ll(i32, i32) #1 564 declare i32 @llvm.hexagon.A2.addh.l16.sat.hl(i32, i32) #1 565 declare i32 @llvm.hexagon.A2.addh.h16.ll(i32, i32) #1 566 declare i32 @llvm.hexagon.A2.addh.h16.lh(i32, i32) #1 567 declare i32 @llvm.hexagon.A2.addh.h16.hl(i32, i32) #1 568 declare i32 @llvm.hexagon.A2.addh.h16.hh(i32, i32) #1 569 declare i32 @llvm.hexagon.A2.addh.h16.sat.ll(i32, i32) #1 570 declare i32 @llvm.hexagon.A2.addh.h16.sat.lh(i32, i32) #1 571 declare i32 @llvm.hexagon.A2.addh.h16.sat.hl(i32, i32) #1 572 declare i32 @llvm.hexagon.A2.addh.h16.sat.hh(i32, i32) #1 573 declare i32 @llvm.hexagon.A2.subh.l16.ll(i32, i32) #1 574 declare i32 @llvm.hexagon.A2.subh.l16.hl(i32, i32) #1 575 declare i32 @llvm.hexagon.A2.subh.l16.sat.ll(i32, i32) #1 576 declare i32 @llvm.hexagon.A2.subh.l16.sat.hl(i32, i32) #1 577 declare i32 @llvm.hexagon.A2.subh.h16.ll(i32, i32) #1 578 declare i32 @llvm.hexagon.A2.subh.h16.lh(i32, i32) #1 579 declare i32 @llvm.hexagon.A2.subh.h16.hl(i32, i32) #1 580 declare i32 @llvm.hexagon.A2.subh.h16.hh(i32, i32) #1 581 declare i32 @llvm.hexagon.A2.subh.h16.sat.ll(i32, i32) #1 582 declare i32 @llvm.hexagon.A2.subh.h16.sat.lh(i32, i32) #1 583 declare i32 @llvm.hexagon.A2.subh.h16.sat.hl(i32, i32) #1 584 declare i32 @llvm.hexagon.A2.subh.h16.sat.hh(i32, i32) #1 585 declare i64 @llvm.hexagon.A4.bitsplit(i32, i32) #1 586 declare i32 @llvm.hexagon.A4.modwrapu(i32, i32) #1 587 declare i32 @llvm.hexagon.S2.parityp(i64, i64) #1 588 declare i32 @llvm.hexagon.S4.parity(i32, i32) #1 589 declare i32 @llvm.hexagon.S4.andi.asl.ri(i32, i32, i32) #1 590 declare i32 @llvm.hexagon.S4.ori.asl.ri(i32, i32, i32) #1 591 declare i32 @llvm.hexagon.S4.addi.asl.ri(i32, i32, i32) #1 592 declare i32 @llvm.hexagon.S4.subi.asl.ri(i32, i32, i32) #1 593 declare i32 @llvm.hexagon.S4.andi.lsr.ri(i32, i32, i32) #1 594 declare i32 @llvm.hexagon.S4.ori.lsr.ri(i32, i32, i32) #1 595 declare i32 @llvm.hexagon.S4.addi.lsr.ri(i32, i32, i32) #1 596 declare i32 @llvm.hexagon.S4.subi.lsr.ri(i32, i32, i32) #1 597 598 attributes #0 = { nounwind readnone "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 599 attributes #1 = { nounwind readnone } 600