1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -O0 -mtriple arm-- -run-pass=instruction-select -verify-machineinstrs %s -o - | FileCheck %s 3--- | 4 define void @test_icmp_eq_s32() { ret void } 5 define void @test_icmp_ne_s32() { ret void } 6 define void @test_icmp_ugt_s32() { ret void } 7 define void @test_icmp_uge_s32() { ret void } 8 define void @test_icmp_ult_s32() { ret void } 9 define void @test_icmp_ule_s32() { ret void } 10 define void @test_icmp_sgt_s32() { ret void } 11 define void @test_icmp_sge_s32() { ret void } 12 define void @test_icmp_slt_s32() { ret void } 13 define void @test_icmp_sle_s32() { ret void } 14 15 define void @test_fcmp_true_s32() #0 { ret void } 16 define void @test_fcmp_false_s32() #0 { ret void } 17 18 define void @test_fcmp_oeq_s32() #0 { ret void } 19 define void @test_fcmp_ogt_s32() #0 { ret void } 20 define void @test_fcmp_oge_s32() #0 { ret void } 21 define void @test_fcmp_olt_s32() #0 { ret void } 22 define void @test_fcmp_ole_s32() #0 { ret void } 23 define void @test_fcmp_ord_s32() #0 { ret void } 24 define void @test_fcmp_ugt_s32() #0 { ret void } 25 define void @test_fcmp_uge_s32() #0 { ret void } 26 define void @test_fcmp_ult_s32() #0 { ret void } 27 define void @test_fcmp_ule_s32() #0 { ret void } 28 define void @test_fcmp_une_s32() #0 { ret void } 29 define void @test_fcmp_uno_s32() #0 { ret void } 30 31 define void @test_fcmp_one_s32() #0 { ret void } 32 define void @test_fcmp_ueq_s32() #0 { ret void } 33 34 define void @test_fcmp_true_s64() #0 { ret void } 35 define void @test_fcmp_false_s64() #0 { ret void } 36 37 define void @test_fcmp_oeq_s64() #0 { ret void } 38 define void @test_fcmp_ogt_s64() #0 { ret void } 39 define void @test_fcmp_oge_s64() #0 { ret void } 40 define void @test_fcmp_olt_s64() #0 { ret void } 41 define void @test_fcmp_ole_s64() #0 { ret void } 42 define void @test_fcmp_ord_s64() #0 { ret void } 43 define void @test_fcmp_ugt_s64() #0 { ret void } 44 define void @test_fcmp_uge_s64() #0 { ret void } 45 define void @test_fcmp_ult_s64() #0 { ret void } 46 define void @test_fcmp_ule_s64() #0 { ret void } 47 define void @test_fcmp_une_s64() #0 { ret void } 48 define void @test_fcmp_uno_s64() #0 { ret void } 49 50 define void @test_fcmp_one_s64() #0 { ret void } 51 define void @test_fcmp_ueq_s64() #0 { ret void } 52 53 attributes #0 = { "target-features"="+vfp2" } 54... 55--- 56name: test_icmp_eq_s32 57legalized: true 58regBankSelected: true 59selected: false 60registers: 61 - { id: 0, class: gprb } 62 - { id: 1, class: gprb } 63 - { id: 2, class: gprb } 64 - { id: 3, class: gprb } 65body: | 66 bb.0: 67 liveins: $r0, $r1 68 69 ; CHECK-LABEL: name: test_icmp_eq_s32 70 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 71 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 72 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 73 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 74 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr 75 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 76 ; CHECK: $r0 = COPY [[ANDri]] 77 ; CHECK: BX_RET 14, $noreg, implicit $r0 78 %0(s32) = COPY $r0 79 %1(s32) = COPY $r1 80 %2(s1) = G_ICMP intpred(eq), %0(s32), %1 81 %3(s32) = G_ZEXT %2(s1) 82 $r0 = COPY %3(s32) 83 BX_RET 14, $noreg, implicit $r0 84... 85--- 86name: test_icmp_ne_s32 87legalized: true 88regBankSelected: true 89selected: false 90registers: 91 - { id: 0, class: gprb } 92 - { id: 1, class: gprb } 93 - { id: 2, class: gprb } 94 - { id: 3, class: gprb } 95body: | 96 bb.0: 97 liveins: $r0, $r1 98 99 ; CHECK-LABEL: name: test_icmp_ne_s32 100 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 101 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 102 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 103 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 104 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1, $cpsr 105 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 106 ; CHECK: $r0 = COPY [[ANDri]] 107 ; CHECK: BX_RET 14, $noreg, implicit $r0 108 %0(s32) = COPY $r0 109 %1(s32) = COPY $r1 110 %2(s1) = G_ICMP intpred(ne), %0(s32), %1 111 %3(s32) = G_ZEXT %2(s1) 112 $r0 = COPY %3(s32) 113 BX_RET 14, $noreg, implicit $r0 114... 115--- 116name: test_icmp_ugt_s32 117legalized: true 118regBankSelected: true 119selected: false 120registers: 121 - { id: 0, class: gprb } 122 - { id: 1, class: gprb } 123 - { id: 2, class: gprb } 124 - { id: 3, class: gprb } 125body: | 126 bb.0: 127 liveins: $r0, $r1 128 129 ; CHECK-LABEL: name: test_icmp_ugt_s32 130 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 131 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 132 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 133 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 134 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8, $cpsr 135 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 136 ; CHECK: $r0 = COPY [[ANDri]] 137 ; CHECK: BX_RET 14, $noreg, implicit $r0 138 %0(s32) = COPY $r0 139 %1(s32) = COPY $r1 140 %2(s1) = G_ICMP intpred(ugt), %0(s32), %1 141 %3(s32) = G_ZEXT %2(s1) 142 $r0 = COPY %3(s32) 143 BX_RET 14, $noreg, implicit $r0 144... 145--- 146name: test_icmp_uge_s32 147legalized: true 148regBankSelected: true 149selected: false 150registers: 151 - { id: 0, class: gprb } 152 - { id: 1, class: gprb } 153 - { id: 2, class: gprb } 154 - { id: 3, class: gprb } 155body: | 156 bb.0: 157 liveins: $r0, $r1 158 159 ; CHECK-LABEL: name: test_icmp_uge_s32 160 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 161 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 162 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 163 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 164 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 2, $cpsr 165 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 166 ; CHECK: $r0 = COPY [[ANDri]] 167 ; CHECK: BX_RET 14, $noreg, implicit $r0 168 %0(s32) = COPY $r0 169 %1(s32) = COPY $r1 170 %2(s1) = G_ICMP intpred(uge), %0(s32), %1 171 %3(s32) = G_ZEXT %2(s1) 172 $r0 = COPY %3(s32) 173 BX_RET 14, $noreg, implicit $r0 174... 175--- 176name: test_icmp_ult_s32 177legalized: true 178regBankSelected: true 179selected: false 180registers: 181 - { id: 0, class: gprb } 182 - { id: 1, class: gprb } 183 - { id: 2, class: gprb } 184 - { id: 3, class: gprb } 185body: | 186 bb.0: 187 liveins: $r0, $r1 188 189 ; CHECK-LABEL: name: test_icmp_ult_s32 190 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 191 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 192 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 193 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 194 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 3, $cpsr 195 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 196 ; CHECK: $r0 = COPY [[ANDri]] 197 ; CHECK: BX_RET 14, $noreg, implicit $r0 198 %0(s32) = COPY $r0 199 %1(s32) = COPY $r1 200 %2(s1) = G_ICMP intpred(ult), %0(s32), %1 201 %3(s32) = G_ZEXT %2(s1) 202 $r0 = COPY %3(s32) 203 BX_RET 14, $noreg, implicit $r0 204... 205--- 206name: test_icmp_ule_s32 207legalized: true 208regBankSelected: true 209selected: false 210registers: 211 - { id: 0, class: gprb } 212 - { id: 1, class: gprb } 213 - { id: 2, class: gprb } 214 - { id: 3, class: gprb } 215body: | 216 bb.0: 217 liveins: $r0, $r1 218 219 ; CHECK-LABEL: name: test_icmp_ule_s32 220 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 221 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 222 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 223 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 224 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9, $cpsr 225 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 226 ; CHECK: $r0 = COPY [[ANDri]] 227 ; CHECK: BX_RET 14, $noreg, implicit $r0 228 %0(s32) = COPY $r0 229 %1(s32) = COPY $r1 230 %2(s1) = G_ICMP intpred(ule), %0(s32), %1 231 %3(s32) = G_ZEXT %2(s1) 232 $r0 = COPY %3(s32) 233 BX_RET 14, $noreg, implicit $r0 234... 235--- 236name: test_icmp_sgt_s32 237legalized: true 238regBankSelected: true 239selected: false 240registers: 241 - { id: 0, class: gprb } 242 - { id: 1, class: gprb } 243 - { id: 2, class: gprb } 244 - { id: 3, class: gprb } 245body: | 246 bb.0: 247 liveins: $r0, $r1 248 249 ; CHECK-LABEL: name: test_icmp_sgt_s32 250 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 251 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 252 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 253 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 254 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr 255 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 256 ; CHECK: $r0 = COPY [[ANDri]] 257 ; CHECK: BX_RET 14, $noreg, implicit $r0 258 %0(s32) = COPY $r0 259 %1(s32) = COPY $r1 260 %2(s1) = G_ICMP intpred(sgt), %0(s32), %1 261 %3(s32) = G_ZEXT %2(s1) 262 $r0 = COPY %3(s32) 263 BX_RET 14, $noreg, implicit $r0 264... 265--- 266name: test_icmp_sge_s32 267legalized: true 268regBankSelected: true 269selected: false 270registers: 271 - { id: 0, class: gprb } 272 - { id: 1, class: gprb } 273 - { id: 2, class: gprb } 274 - { id: 3, class: gprb } 275body: | 276 bb.0: 277 liveins: $r0, $r1 278 279 ; CHECK-LABEL: name: test_icmp_sge_s32 280 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 281 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 282 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 283 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 284 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10, $cpsr 285 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 286 ; CHECK: $r0 = COPY [[ANDri]] 287 ; CHECK: BX_RET 14, $noreg, implicit $r0 288 %0(s32) = COPY $r0 289 %1(s32) = COPY $r1 290 %2(s1) = G_ICMP intpred(sge), %0(s32), %1 291 %3(s32) = G_ZEXT %2(s1) 292 $r0 = COPY %3(s32) 293 BX_RET 14, $noreg, implicit $r0 294... 295--- 296name: test_icmp_slt_s32 297legalized: true 298regBankSelected: true 299selected: false 300registers: 301 - { id: 0, class: gprb } 302 - { id: 1, class: gprb } 303 - { id: 2, class: gprb } 304 - { id: 3, class: gprb } 305body: | 306 bb.0: 307 liveins: $r0, $r1 308 309 ; CHECK-LABEL: name: test_icmp_slt_s32 310 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 311 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 312 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 313 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 314 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11, $cpsr 315 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 316 ; CHECK: $r0 = COPY [[ANDri]] 317 ; CHECK: BX_RET 14, $noreg, implicit $r0 318 %0(s32) = COPY $r0 319 %1(s32) = COPY $r1 320 %2(s1) = G_ICMP intpred(slt), %0(s32), %1 321 %3(s32) = G_ZEXT %2(s1) 322 $r0 = COPY %3(s32) 323 BX_RET 14, $noreg, implicit $r0 324... 325--- 326name: test_icmp_sle_s32 327legalized: true 328regBankSelected: true 329selected: false 330registers: 331 - { id: 0, class: gprb } 332 - { id: 1, class: gprb } 333 - { id: 2, class: gprb } 334 - { id: 3, class: gprb } 335body: | 336 bb.0: 337 liveins: $r0, $r1 338 339 ; CHECK-LABEL: name: test_icmp_sle_s32 340 ; CHECK: [[COPY:%[0-9]+]]:gpr = COPY $r0 341 ; CHECK: [[COPY1:%[0-9]+]]:gpr = COPY $r1 342 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 343 ; CHECK: CMPrr [[COPY]], [[COPY1]], 14, $noreg, implicit-def $cpsr 344 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13, $cpsr 345 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 346 ; CHECK: $r0 = COPY [[ANDri]] 347 ; CHECK: BX_RET 14, $noreg, implicit $r0 348 %0(s32) = COPY $r0 349 %1(s32) = COPY $r1 350 %2(s1) = G_ICMP intpred(sle), %0(s32), %1 351 %3(s32) = G_ZEXT %2(s1) 352 $r0 = COPY %3(s32) 353 BX_RET 14, $noreg, implicit $r0 354... 355--- 356name: test_fcmp_true_s32 357legalized: true 358regBankSelected: true 359selected: false 360registers: 361 - { id: 0, class: fprb } 362 - { id: 1, class: fprb } 363 - { id: 2, class: gprb } 364 - { id: 3, class: gprb } 365body: | 366 bb.0: 367 liveins: $s0, $s1 368 369 ; CHECK-LABEL: name: test_fcmp_true_s32 370 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 1, 14, $noreg, $noreg 371 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg 372 ; CHECK: $r0 = COPY [[ANDri]] 373 ; CHECK: BX_RET 14, $noreg, implicit $r0 374 %0(s32) = COPY $s0 375 %1(s32) = COPY $s1 376 %2(s1) = G_FCMP floatpred(true), %0(s32), %1 377 %3(s32) = G_ZEXT %2(s1) 378 $r0 = COPY %3(s32) 379 BX_RET 14, $noreg, implicit $r0 380... 381--- 382name: test_fcmp_false_s32 383legalized: true 384regBankSelected: true 385selected: false 386registers: 387 - { id: 0, class: fprb } 388 - { id: 1, class: fprb } 389 - { id: 2, class: gprb } 390 - { id: 3, class: gprb } 391body: | 392 bb.0: 393 liveins: $s0, $s1 394 395 ; CHECK-LABEL: name: test_fcmp_false_s32 396 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 397 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg 398 ; CHECK: $r0 = COPY [[ANDri]] 399 ; CHECK: BX_RET 14, $noreg, implicit $r0 400 %0(s32) = COPY $s0 401 %1(s32) = COPY $s1 402 %2(s1) = G_FCMP floatpred(false), %0(s32), %1 403 %3(s32) = G_ZEXT %2(s1) 404 $r0 = COPY %3(s32) 405 BX_RET 14, $noreg, implicit $r0 406... 407--- 408name: test_fcmp_oeq_s32 409legalized: true 410regBankSelected: true 411selected: false 412registers: 413 - { id: 0, class: fprb } 414 - { id: 1, class: fprb } 415 - { id: 2, class: gprb } 416 - { id: 3, class: gprb } 417body: | 418 bb.0: 419 liveins: $s0, $s1 420 421 ; CHECK-LABEL: name: test_fcmp_oeq_s32 422 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 423 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 424 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 425 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 426 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 427 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr 428 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 429 ; CHECK: $r0 = COPY [[ANDri]] 430 ; CHECK: BX_RET 14, $noreg, implicit $r0 431 %0(s32) = COPY $s0 432 %1(s32) = COPY $s1 433 %2(s1) = G_FCMP floatpred(oeq), %0(s32), %1 434 %3(s32) = G_ZEXT %2(s1) 435 $r0 = COPY %3(s32) 436 BX_RET 14, $noreg, implicit $r0 437... 438--- 439name: test_fcmp_ogt_s32 440legalized: true 441regBankSelected: true 442selected: false 443registers: 444 - { id: 0, class: fprb } 445 - { id: 1, class: fprb } 446 - { id: 2, class: gprb } 447 - { id: 3, class: gprb } 448body: | 449 bb.0: 450 liveins: $s0, $s1 451 452 ; CHECK-LABEL: name: test_fcmp_ogt_s32 453 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 454 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 455 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 456 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 457 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 458 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr 459 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 460 ; CHECK: $r0 = COPY [[ANDri]] 461 ; CHECK: BX_RET 14, $noreg, implicit $r0 462 %0(s32) = COPY $s0 463 %1(s32) = COPY $s1 464 %2(s1) = G_FCMP floatpred(ogt), %0(s32), %1 465 %3(s32) = G_ZEXT %2(s1) 466 $r0 = COPY %3(s32) 467 BX_RET 14, $noreg, implicit $r0 468... 469--- 470name: test_fcmp_oge_s32 471legalized: true 472regBankSelected: true 473selected: false 474registers: 475 - { id: 0, class: fprb } 476 - { id: 1, class: fprb } 477 - { id: 2, class: gprb } 478 - { id: 3, class: gprb } 479body: | 480 bb.0: 481 liveins: $s0, $s1 482 483 ; CHECK-LABEL: name: test_fcmp_oge_s32 484 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 485 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 486 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 487 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 488 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 489 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10, $cpsr 490 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 491 ; CHECK: $r0 = COPY [[ANDri]] 492 ; CHECK: BX_RET 14, $noreg, implicit $r0 493 %0(s32) = COPY $s0 494 %1(s32) = COPY $s1 495 %2(s1) = G_FCMP floatpred(oge), %0(s32), %1 496 %3(s32) = G_ZEXT %2(s1) 497 $r0 = COPY %3(s32) 498 BX_RET 14, $noreg, implicit $r0 499... 500--- 501name: test_fcmp_olt_s32 502legalized: true 503regBankSelected: true 504selected: false 505registers: 506 - { id: 0, class: fprb } 507 - { id: 1, class: fprb } 508 - { id: 2, class: gprb } 509 - { id: 3, class: gprb } 510body: | 511 bb.0: 512 liveins: $s0, $s1 513 514 ; CHECK-LABEL: name: test_fcmp_olt_s32 515 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 516 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 517 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 518 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 519 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 520 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 4, $cpsr 521 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 522 ; CHECK: $r0 = COPY [[ANDri]] 523 ; CHECK: BX_RET 14, $noreg, implicit $r0 524 %0(s32) = COPY $s0 525 %1(s32) = COPY $s1 526 %2(s1) = G_FCMP floatpred(olt), %0(s32), %1 527 %3(s32) = G_ZEXT %2(s1) 528 $r0 = COPY %3(s32) 529 BX_RET 14, $noreg, implicit $r0 530... 531--- 532name: test_fcmp_ole_s32 533legalized: true 534regBankSelected: true 535selected: false 536registers: 537 - { id: 0, class: fprb } 538 - { id: 1, class: fprb } 539 - { id: 2, class: gprb } 540 - { id: 3, class: gprb } 541body: | 542 bb.0: 543 liveins: $s0, $s1 544 545 ; CHECK-LABEL: name: test_fcmp_ole_s32 546 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 547 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 548 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 549 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 550 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 551 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9, $cpsr 552 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 553 ; CHECK: $r0 = COPY [[ANDri]] 554 ; CHECK: BX_RET 14, $noreg, implicit $r0 555 %0(s32) = COPY $s0 556 %1(s32) = COPY $s1 557 %2(s1) = G_FCMP floatpred(ole), %0(s32), %1 558 %3(s32) = G_ZEXT %2(s1) 559 $r0 = COPY %3(s32) 560 BX_RET 14, $noreg, implicit $r0 561... 562--- 563name: test_fcmp_ord_s32 564legalized: true 565regBankSelected: true 566selected: false 567registers: 568 - { id: 0, class: fprb } 569 - { id: 1, class: fprb } 570 - { id: 2, class: gprb } 571 - { id: 3, class: gprb } 572body: | 573 bb.0: 574 liveins: $s0, $s1 575 576 ; CHECK-LABEL: name: test_fcmp_ord_s32 577 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 578 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 579 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 580 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 581 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 582 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 7, $cpsr 583 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 584 ; CHECK: $r0 = COPY [[ANDri]] 585 ; CHECK: BX_RET 14, $noreg, implicit $r0 586 %0(s32) = COPY $s0 587 %1(s32) = COPY $s1 588 %2(s1) = G_FCMP floatpred(ord), %0(s32), %1 589 %3(s32) = G_ZEXT %2(s1) 590 $r0 = COPY %3(s32) 591 BX_RET 14, $noreg, implicit $r0 592... 593--- 594name: test_fcmp_ugt_s32 595legalized: true 596regBankSelected: true 597selected: false 598registers: 599 - { id: 0, class: fprb } 600 - { id: 1, class: fprb } 601 - { id: 2, class: gprb } 602 - { id: 3, class: gprb } 603body: | 604 bb.0: 605 liveins: $s0, $s1 606 607 ; CHECK-LABEL: name: test_fcmp_ugt_s32 608 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 609 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 610 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 611 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 612 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 613 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8, $cpsr 614 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 615 ; CHECK: $r0 = COPY [[ANDri]] 616 ; CHECK: BX_RET 14, $noreg, implicit $r0 617 %0(s32) = COPY $s0 618 %1(s32) = COPY $s1 619 %2(s1) = G_FCMP floatpred(ugt), %0(s32), %1 620 %3(s32) = G_ZEXT %2(s1) 621 $r0 = COPY %3(s32) 622 BX_RET 14, $noreg, implicit $r0 623... 624--- 625name: test_fcmp_uge_s32 626legalized: true 627regBankSelected: true 628selected: false 629registers: 630 - { id: 0, class: fprb } 631 - { id: 1, class: fprb } 632 - { id: 2, class: gprb } 633 - { id: 3, class: gprb } 634body: | 635 bb.0: 636 liveins: $s0, $s1 637 638 ; CHECK-LABEL: name: test_fcmp_uge_s32 639 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 640 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 641 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 642 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 643 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 644 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 5, $cpsr 645 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 646 ; CHECK: $r0 = COPY [[ANDri]] 647 ; CHECK: BX_RET 14, $noreg, implicit $r0 648 %0(s32) = COPY $s0 649 %1(s32) = COPY $s1 650 %2(s1) = G_FCMP floatpred(uge), %0(s32), %1 651 %3(s32) = G_ZEXT %2(s1) 652 $r0 = COPY %3(s32) 653 BX_RET 14, $noreg, implicit $r0 654... 655--- 656name: test_fcmp_ult_s32 657legalized: true 658regBankSelected: true 659selected: false 660registers: 661 - { id: 0, class: fprb } 662 - { id: 1, class: fprb } 663 - { id: 2, class: gprb } 664 - { id: 3, class: gprb } 665body: | 666 bb.0: 667 liveins: $s0, $s1 668 669 ; CHECK-LABEL: name: test_fcmp_ult_s32 670 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 671 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 672 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 673 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 674 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 675 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11, $cpsr 676 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 677 ; CHECK: $r0 = COPY [[ANDri]] 678 ; CHECK: BX_RET 14, $noreg, implicit $r0 679 %0(s32) = COPY $s0 680 %1(s32) = COPY $s1 681 %2(s1) = G_FCMP floatpred(ult), %0(s32), %1 682 %3(s32) = G_ZEXT %2(s1) 683 $r0 = COPY %3(s32) 684 BX_RET 14, $noreg, implicit $r0 685... 686--- 687name: test_fcmp_ule_s32 688legalized: true 689regBankSelected: true 690selected: false 691registers: 692 - { id: 0, class: fprb } 693 - { id: 1, class: fprb } 694 - { id: 2, class: gprb } 695 - { id: 3, class: gprb } 696body: | 697 bb.0: 698 liveins: $s0, $s1 699 700 ; CHECK-LABEL: name: test_fcmp_ule_s32 701 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 702 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 703 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 704 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 705 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 706 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13, $cpsr 707 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 708 ; CHECK: $r0 = COPY [[ANDri]] 709 ; CHECK: BX_RET 14, $noreg, implicit $r0 710 %0(s32) = COPY $s0 711 %1(s32) = COPY $s1 712 %2(s1) = G_FCMP floatpred(ule), %0(s32), %1 713 %3(s32) = G_ZEXT %2(s1) 714 $r0 = COPY %3(s32) 715 BX_RET 14, $noreg, implicit $r0 716... 717--- 718name: test_fcmp_une_s32 719legalized: true 720regBankSelected: true 721selected: false 722registers: 723 - { id: 0, class: fprb } 724 - { id: 1, class: fprb } 725 - { id: 2, class: gprb } 726 - { id: 3, class: gprb } 727body: | 728 bb.0: 729 liveins: $s0, $s1 730 731 ; CHECK-LABEL: name: test_fcmp_une_s32 732 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 733 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 734 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 735 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 736 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 737 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1, $cpsr 738 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 739 ; CHECK: $r0 = COPY [[ANDri]] 740 ; CHECK: BX_RET 14, $noreg, implicit $r0 741 %0(s32) = COPY $s0 742 %1(s32) = COPY $s1 743 %2(s1) = G_FCMP floatpred(une), %0(s32), %1 744 %3(s32) = G_ZEXT %2(s1) 745 $r0 = COPY %3(s32) 746 BX_RET 14, $noreg, implicit $r0 747... 748--- 749name: test_fcmp_uno_s32 750legalized: true 751regBankSelected: true 752selected: false 753registers: 754 - { id: 0, class: fprb } 755 - { id: 1, class: fprb } 756 - { id: 2, class: gprb } 757 - { id: 3, class: gprb } 758body: | 759 bb.0: 760 liveins: $s0, $s1 761 762 ; CHECK-LABEL: name: test_fcmp_uno_s32 763 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 764 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 765 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 766 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 767 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 768 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 6, $cpsr 769 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 770 ; CHECK: $r0 = COPY [[ANDri]] 771 ; CHECK: BX_RET 14, $noreg, implicit $r0 772 %0(s32) = COPY $s0 773 %1(s32) = COPY $s1 774 %2(s1) = G_FCMP floatpred(uno), %0(s32), %1 775 %3(s32) = G_ZEXT %2(s1) 776 $r0 = COPY %3(s32) 777 BX_RET 14, $noreg, implicit $r0 778... 779--- 780name: test_fcmp_one_s32 781legalized: true 782regBankSelected: true 783selected: false 784registers: 785 - { id: 0, class: fprb } 786 - { id: 1, class: fprb } 787 - { id: 2, class: gprb } 788 - { id: 3, class: gprb } 789body: | 790 bb.0: 791 liveins: $s0, $s1 792 793 ; CHECK-LABEL: name: test_fcmp_one_s32 794 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 795 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 796 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 797 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 798 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 799 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr 800 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 801 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 802 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 4, $cpsr 803 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg 804 ; CHECK: $r0 = COPY [[ANDri]] 805 ; CHECK: BX_RET 14, $noreg, implicit $r0 806 %0(s32) = COPY $s0 807 %1(s32) = COPY $s1 808 %2(s1) = G_FCMP floatpred(one), %0(s32), %1 809 %3(s32) = G_ZEXT %2(s1) 810 $r0 = COPY %3(s32) 811 BX_RET 14, $noreg, implicit $r0 812... 813--- 814name: test_fcmp_ueq_s32 815legalized: true 816regBankSelected: true 817selected: false 818registers: 819 - { id: 0, class: fprb } 820 - { id: 1, class: fprb } 821 - { id: 2, class: gprb } 822 - { id: 3, class: gprb } 823body: | 824 bb.0: 825 liveins: $s0, $s1 826 827 ; CHECK-LABEL: name: test_fcmp_ueq_s32 828 ; CHECK: [[COPY:%[0-9]+]]:spr = COPY $s0 829 ; CHECK: [[COPY1:%[0-9]+]]:spr = COPY $s1 830 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 831 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 832 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 833 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr 834 ; CHECK: VCMPS [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 835 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 836 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 6, $cpsr 837 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg 838 ; CHECK: $r0 = COPY [[ANDri]] 839 ; CHECK: BX_RET 14, $noreg, implicit $r0 840 %0(s32) = COPY $s0 841 %1(s32) = COPY $s1 842 %2(s1) = G_FCMP floatpred(ueq), %0(s32), %1 843 %3(s32) = G_ZEXT %2(s1) 844 $r0 = COPY %3(s32) 845 BX_RET 14, $noreg, implicit $r0 846... 847--- 848name: test_fcmp_true_s64 849legalized: true 850regBankSelected: true 851selected: false 852registers: 853 - { id: 0, class: fprb } 854 - { id: 1, class: fprb } 855 - { id: 2, class: gprb } 856 - { id: 3, class: gprb } 857body: | 858 bb.0: 859 liveins: $d0, $d1 860 861 ; CHECK-LABEL: name: test_fcmp_true_s64 862 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 1, 14, $noreg, $noreg 863 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg 864 ; CHECK: $r0 = COPY [[ANDri]] 865 ; CHECK: BX_RET 14, $noreg, implicit $r0 866 %0(s64) = COPY $d0 867 %1(s64) = COPY $d1 868 %2(s1) = G_FCMP floatpred(true), %0(s64), %1 869 %3(s32) = G_ZEXT %2(s1) 870 $r0 = COPY %3(s32) 871 BX_RET 14, $noreg, implicit $r0 872... 873--- 874name: test_fcmp_false_s64 875legalized: true 876regBankSelected: true 877selected: false 878registers: 879 - { id: 0, class: fprb } 880 - { id: 1, class: fprb } 881 - { id: 2, class: gprb } 882 - { id: 3, class: gprb } 883body: | 884 bb.0: 885 liveins: $d0, $d1 886 887 ; CHECK-LABEL: name: test_fcmp_false_s64 888 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 889 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVi]], 1, 14, $noreg, $noreg 890 ; CHECK: $r0 = COPY [[ANDri]] 891 ; CHECK: BX_RET 14, $noreg, implicit $r0 892 %0(s64) = COPY $d0 893 %1(s64) = COPY $d1 894 %2(s1) = G_FCMP floatpred(false), %0(s64), %1 895 %3(s32) = G_ZEXT %2(s1) 896 $r0 = COPY %3(s32) 897 BX_RET 14, $noreg, implicit $r0 898... 899--- 900name: test_fcmp_oeq_s64 901legalized: true 902regBankSelected: true 903selected: false 904registers: 905 - { id: 0, class: fprb } 906 - { id: 1, class: fprb } 907 - { id: 2, class: gprb } 908 - { id: 3, class: gprb } 909body: | 910 bb.0: 911 liveins: $d0, $d1 912 913 ; CHECK-LABEL: name: test_fcmp_oeq_s64 914 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 915 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 916 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 917 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 918 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 919 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr 920 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 921 ; CHECK: $r0 = COPY [[ANDri]] 922 ; CHECK: BX_RET 14, $noreg, implicit $r0 923 %0(s64) = COPY $d0 924 %1(s64) = COPY $d1 925 %2(s1) = G_FCMP floatpred(oeq), %0(s64), %1 926 %3(s32) = G_ZEXT %2(s1) 927 $r0 = COPY %3(s32) 928 BX_RET 14, $noreg, implicit $r0 929... 930--- 931name: test_fcmp_ogt_s64 932legalized: true 933regBankSelected: true 934selected: false 935registers: 936 - { id: 0, class: fprb } 937 - { id: 1, class: fprb } 938 - { id: 2, class: gprb } 939 - { id: 3, class: gprb } 940body: | 941 bb.0: 942 liveins: $d0, $d1 943 944 ; CHECK-LABEL: name: test_fcmp_ogt_s64 945 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 946 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 947 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 948 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 949 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 950 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr 951 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 952 ; CHECK: $r0 = COPY [[ANDri]] 953 ; CHECK: BX_RET 14, $noreg, implicit $r0 954 %0(s64) = COPY $d0 955 %1(s64) = COPY $d1 956 %2(s1) = G_FCMP floatpred(ogt), %0(s64), %1 957 %3(s32) = G_ZEXT %2(s1) 958 $r0 = COPY %3(s32) 959 BX_RET 14, $noreg, implicit $r0 960... 961--- 962name: test_fcmp_oge_s64 963legalized: true 964regBankSelected: true 965selected: false 966registers: 967 - { id: 0, class: fprb } 968 - { id: 1, class: fprb } 969 - { id: 2, class: gprb } 970 - { id: 3, class: gprb } 971body: | 972 bb.0: 973 liveins: $d0, $d1 974 975 ; CHECK-LABEL: name: test_fcmp_oge_s64 976 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 977 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 978 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 979 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 980 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 981 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 10, $cpsr 982 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 983 ; CHECK: $r0 = COPY [[ANDri]] 984 ; CHECK: BX_RET 14, $noreg, implicit $r0 985 %0(s64) = COPY $d0 986 %1(s64) = COPY $d1 987 %2(s1) = G_FCMP floatpred(oge), %0(s64), %1 988 %3(s32) = G_ZEXT %2(s1) 989 $r0 = COPY %3(s32) 990 BX_RET 14, $noreg, implicit $r0 991... 992--- 993name: test_fcmp_olt_s64 994legalized: true 995regBankSelected: true 996selected: false 997registers: 998 - { id: 0, class: fprb } 999 - { id: 1, class: fprb } 1000 - { id: 2, class: gprb } 1001 - { id: 3, class: gprb } 1002body: | 1003 bb.0: 1004 liveins: $d0, $d1 1005 1006 ; CHECK-LABEL: name: test_fcmp_olt_s64 1007 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1008 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1009 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1010 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1011 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1012 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 4, $cpsr 1013 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1014 ; CHECK: $r0 = COPY [[ANDri]] 1015 ; CHECK: BX_RET 14, $noreg, implicit $r0 1016 %0(s64) = COPY $d0 1017 %1(s64) = COPY $d1 1018 %2(s1) = G_FCMP floatpred(olt), %0(s64), %1 1019 %3(s32) = G_ZEXT %2(s1) 1020 $r0 = COPY %3(s32) 1021 BX_RET 14, $noreg, implicit $r0 1022... 1023--- 1024name: test_fcmp_ole_s64 1025legalized: true 1026regBankSelected: true 1027selected: false 1028registers: 1029 - { id: 0, class: fprb } 1030 - { id: 1, class: fprb } 1031 - { id: 2, class: gprb } 1032 - { id: 3, class: gprb } 1033body: | 1034 bb.0: 1035 liveins: $d0, $d1 1036 1037 ; CHECK-LABEL: name: test_fcmp_ole_s64 1038 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1039 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1040 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1041 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1042 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1043 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 9, $cpsr 1044 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1045 ; CHECK: $r0 = COPY [[ANDri]] 1046 ; CHECK: BX_RET 14, $noreg, implicit $r0 1047 %0(s64) = COPY $d0 1048 %1(s64) = COPY $d1 1049 %2(s1) = G_FCMP floatpred(ole), %0(s64), %1 1050 %3(s32) = G_ZEXT %2(s1) 1051 $r0 = COPY %3(s32) 1052 BX_RET 14, $noreg, implicit $r0 1053... 1054--- 1055name: test_fcmp_ord_s64 1056legalized: true 1057regBankSelected: true 1058selected: false 1059registers: 1060 - { id: 0, class: fprb } 1061 - { id: 1, class: fprb } 1062 - { id: 2, class: gprb } 1063 - { id: 3, class: gprb } 1064body: | 1065 bb.0: 1066 liveins: $d0, $d1 1067 1068 ; CHECK-LABEL: name: test_fcmp_ord_s64 1069 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1070 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1071 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1072 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1073 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1074 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 7, $cpsr 1075 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1076 ; CHECK: $r0 = COPY [[ANDri]] 1077 ; CHECK: BX_RET 14, $noreg, implicit $r0 1078 %0(s64) = COPY $d0 1079 %1(s64) = COPY $d1 1080 %2(s1) = G_FCMP floatpred(ord), %0(s64), %1 1081 %3(s32) = G_ZEXT %2(s1) 1082 $r0 = COPY %3(s32) 1083 BX_RET 14, $noreg, implicit $r0 1084... 1085--- 1086name: test_fcmp_ugt_s64 1087legalized: true 1088regBankSelected: true 1089selected: false 1090registers: 1091 - { id: 0, class: fprb } 1092 - { id: 1, class: fprb } 1093 - { id: 2, class: gprb } 1094 - { id: 3, class: gprb } 1095body: | 1096 bb.0: 1097 liveins: $d0, $d1 1098 1099 ; CHECK-LABEL: name: test_fcmp_ugt_s64 1100 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1101 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1102 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1103 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1104 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1105 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 8, $cpsr 1106 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1107 ; CHECK: $r0 = COPY [[ANDri]] 1108 ; CHECK: BX_RET 14, $noreg, implicit $r0 1109 %0(s64) = COPY $d0 1110 %1(s64) = COPY $d1 1111 %2(s1) = G_FCMP floatpred(ugt), %0(s64), %1 1112 %3(s32) = G_ZEXT %2(s1) 1113 $r0 = COPY %3(s32) 1114 BX_RET 14, $noreg, implicit $r0 1115... 1116--- 1117name: test_fcmp_uge_s64 1118legalized: true 1119regBankSelected: true 1120selected: false 1121registers: 1122 - { id: 0, class: fprb } 1123 - { id: 1, class: fprb } 1124 - { id: 2, class: gprb } 1125 - { id: 3, class: gprb } 1126body: | 1127 bb.0: 1128 liveins: $d0, $d1 1129 1130 ; CHECK-LABEL: name: test_fcmp_uge_s64 1131 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1132 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1133 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1134 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1135 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1136 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 5, $cpsr 1137 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1138 ; CHECK: $r0 = COPY [[ANDri]] 1139 ; CHECK: BX_RET 14, $noreg, implicit $r0 1140 %0(s64) = COPY $d0 1141 %1(s64) = COPY $d1 1142 %2(s1) = G_FCMP floatpred(uge), %0(s64), %1 1143 %3(s32) = G_ZEXT %2(s1) 1144 $r0 = COPY %3(s32) 1145 BX_RET 14, $noreg, implicit $r0 1146... 1147--- 1148name: test_fcmp_ult_s64 1149legalized: true 1150regBankSelected: true 1151selected: false 1152registers: 1153 - { id: 0, class: fprb } 1154 - { id: 1, class: fprb } 1155 - { id: 2, class: gprb } 1156 - { id: 3, class: gprb } 1157body: | 1158 bb.0: 1159 liveins: $d0, $d1 1160 1161 ; CHECK-LABEL: name: test_fcmp_ult_s64 1162 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1163 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1164 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1165 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1166 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1167 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 11, $cpsr 1168 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1169 ; CHECK: $r0 = COPY [[ANDri]] 1170 ; CHECK: BX_RET 14, $noreg, implicit $r0 1171 %0(s64) = COPY $d0 1172 %1(s64) = COPY $d1 1173 %2(s1) = G_FCMP floatpred(ult), %0(s64), %1 1174 %3(s32) = G_ZEXT %2(s1) 1175 $r0 = COPY %3(s32) 1176 BX_RET 14, $noreg, implicit $r0 1177... 1178--- 1179name: test_fcmp_ule_s64 1180legalized: true 1181regBankSelected: true 1182selected: false 1183registers: 1184 - { id: 0, class: fprb } 1185 - { id: 1, class: fprb } 1186 - { id: 2, class: gprb } 1187 - { id: 3, class: gprb } 1188body: | 1189 bb.0: 1190 liveins: $d0, $d1 1191 1192 ; CHECK-LABEL: name: test_fcmp_ule_s64 1193 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1194 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1195 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1196 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1197 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1198 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 13, $cpsr 1199 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1200 ; CHECK: $r0 = COPY [[ANDri]] 1201 ; CHECK: BX_RET 14, $noreg, implicit $r0 1202 %0(s64) = COPY $d0 1203 %1(s64) = COPY $d1 1204 %2(s1) = G_FCMP floatpred(ule), %0(s64), %1 1205 %3(s32) = G_ZEXT %2(s1) 1206 $r0 = COPY %3(s32) 1207 BX_RET 14, $noreg, implicit $r0 1208... 1209--- 1210name: test_fcmp_une_s64 1211legalized: true 1212regBankSelected: true 1213selected: false 1214registers: 1215 - { id: 0, class: fprb } 1216 - { id: 1, class: fprb } 1217 - { id: 2, class: gprb } 1218 - { id: 3, class: gprb } 1219body: | 1220 bb.0: 1221 liveins: $d0, $d1 1222 1223 ; CHECK-LABEL: name: test_fcmp_une_s64 1224 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1225 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1226 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1227 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1228 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1229 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 1, $cpsr 1230 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1231 ; CHECK: $r0 = COPY [[ANDri]] 1232 ; CHECK: BX_RET 14, $noreg, implicit $r0 1233 %0(s64) = COPY $d0 1234 %1(s64) = COPY $d1 1235 %2(s1) = G_FCMP floatpred(une), %0(s64), %1 1236 %3(s32) = G_ZEXT %2(s1) 1237 $r0 = COPY %3(s32) 1238 BX_RET 14, $noreg, implicit $r0 1239... 1240--- 1241name: test_fcmp_uno_s64 1242legalized: true 1243regBankSelected: true 1244selected: false 1245registers: 1246 - { id: 0, class: fprb } 1247 - { id: 1, class: fprb } 1248 - { id: 2, class: gprb } 1249 - { id: 3, class: gprb } 1250body: | 1251 bb.0: 1252 liveins: $d0, $d1 1253 1254 ; CHECK-LABEL: name: test_fcmp_uno_s64 1255 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1256 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1257 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1258 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1259 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1260 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 6, $cpsr 1261 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi]], 1, 14, $noreg, $noreg 1262 ; CHECK: $r0 = COPY [[ANDri]] 1263 ; CHECK: BX_RET 14, $noreg, implicit $r0 1264 %0(s64) = COPY $d0 1265 %1(s64) = COPY $d1 1266 %2(s1) = G_FCMP floatpred(uno), %0(s64), %1 1267 %3(s32) = G_ZEXT %2(s1) 1268 $r0 = COPY %3(s32) 1269 BX_RET 14, $noreg, implicit $r0 1270... 1271--- 1272name: test_fcmp_one_s64 1273legalized: true 1274regBankSelected: true 1275selected: false 1276registers: 1277 - { id: 0, class: fprb } 1278 - { id: 1, class: fprb } 1279 - { id: 2, class: gprb } 1280 - { id: 3, class: gprb } 1281body: | 1282 bb.0: 1283 liveins: $d0, $d1 1284 1285 ; CHECK-LABEL: name: test_fcmp_one_s64 1286 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1287 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1288 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1289 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1290 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1291 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 12, $cpsr 1292 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1293 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1294 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 4, $cpsr 1295 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg 1296 ; CHECK: $r0 = COPY [[ANDri]] 1297 ; CHECK: BX_RET 14, $noreg, implicit $r0 1298 %0(s64) = COPY $d0 1299 %1(s64) = COPY $d1 1300 %2(s1) = G_FCMP floatpred(one), %0(s64), %1 1301 %3(s32) = G_ZEXT %2(s1) 1302 $r0 = COPY %3(s32) 1303 BX_RET 14, $noreg, implicit $r0 1304... 1305--- 1306name: test_fcmp_ueq_s64 1307legalized: true 1308regBankSelected: true 1309selected: false 1310registers: 1311 - { id: 0, class: fprb } 1312 - { id: 1, class: fprb } 1313 - { id: 2, class: gprb } 1314 - { id: 3, class: gprb } 1315body: | 1316 bb.0: 1317 liveins: $d0, $d1 1318 1319 ; CHECK-LABEL: name: test_fcmp_ueq_s64 1320 ; CHECK: [[COPY:%[0-9]+]]:dpr = COPY $d0 1321 ; CHECK: [[COPY1:%[0-9]+]]:dpr = COPY $d1 1322 ; CHECK: [[MOVi:%[0-9]+]]:gpr = MOVi 0, 14, $noreg, $noreg 1323 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1324 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1325 ; CHECK: [[MOVCCi:%[0-9]+]]:gpr = MOVCCi [[MOVi]], 1, 0, $cpsr 1326 ; CHECK: VCMPD [[COPY]], [[COPY1]], 14, $noreg, implicit-def $fpscr_nzcv 1327 ; CHECK: FMSTAT 14, $noreg, implicit-def $cpsr, implicit $fpscr_nzcv 1328 ; CHECK: [[MOVCCi1:%[0-9]+]]:gpr = MOVCCi [[MOVCCi]], 1, 6, $cpsr 1329 ; CHECK: [[ANDri:%[0-9]+]]:gpr = ANDri [[MOVCCi1]], 1, 14, $noreg, $noreg 1330 ; CHECK: $r0 = COPY [[ANDri]] 1331 ; CHECK: BX_RET 14, $noreg, implicit $r0 1332 %0(s64) = COPY $d0 1333 %1(s64) = COPY $d1 1334 %2(s1) = G_FCMP floatpred(ueq), %0(s64), %1 1335 %3(s32) = G_ZEXT %2(s1) 1336 $r0 = COPY %3(s32) 1337 BX_RET 14, $noreg, implicit $r0 1338... 1339