1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=x86_64-linux-gnu -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s 3# RUN: llc -mtriple=i386-linux-gnu -mattr=+sse2 -run-pass=legalizer -verify-machineinstrs %s -o - | FileCheck %s 4 5# TODO: x87/SSE1-only test coverage 6 7--- | 8 9 define i1 @fcmp_float_oeq(float %x, float %y) { 10 %1 = fcmp oeq float %x, %y 11 ret i1 %1 12 } 13 14 define i1 @fcmp_float_ogt(float %x, float %y) { 15 %1 = fcmp ogt float %x, %y 16 ret i1 %1 17 } 18 19 define i1 @fcmp_float_oge(float %x, float %y) { 20 %1 = fcmp oge float %x, %y 21 ret i1 %1 22 } 23 24 define i1 @fcmp_float_olt(float %x, float %y) { 25 %1 = fcmp olt float %x, %y 26 ret i1 %1 27 } 28 29 define i1 @fcmp_float_ole(float %x, float %y) { 30 %1 = fcmp ole float %x, %y 31 ret i1 %1 32 } 33 34 define i1 @fcmp_float_one(float %x, float %y) { 35 %1 = fcmp one float %x, %y 36 ret i1 %1 37 } 38 39 define i1 @fcmp_float_ord(float %x, float %y) { 40 %1 = fcmp ord float %x, %y 41 ret i1 %1 42 } 43 44 define i1 @fcmp_float_uno(float %x, float %y) { 45 %1 = fcmp uno float %x, %y 46 ret i1 %1 47 } 48 49 define i1 @fcmp_float_ueq(float %x, float %y) { 50 %1 = fcmp ueq float %x, %y 51 ret i1 %1 52 } 53 54 define i1 @fcmp_float_ugt(float %x, float %y) { 55 %1 = fcmp ugt float %x, %y 56 ret i1 %1 57 } 58 59 define i1 @fcmp_float_uge(float %x, float %y) { 60 %1 = fcmp uge float %x, %y 61 ret i1 %1 62 } 63 64 define i1 @fcmp_float_ult(float %x, float %y) { 65 %1 = fcmp ult float %x, %y 66 ret i1 %1 67 } 68 69 define i1 @fcmp_float_ule(float %x, float %y) { 70 %1 = fcmp ule float %x, %y 71 ret i1 %1 72 } 73 74 define i1 @fcmp_float_une(float %x, float %y) { 75 %1 = fcmp une float %x, %y 76 ret i1 %1 77 } 78 79 define i1 @fcmp_double_oeq(double %x, double %y) { 80 %1 = fcmp oeq double %x, %y 81 ret i1 %1 82 } 83 84 define i1 @fcmp_double_ogt(double %x, double %y) { 85 %1 = fcmp ogt double %x, %y 86 ret i1 %1 87 } 88 89 define i1 @fcmp_double_oge(double %x, double %y) { 90 %1 = fcmp oge double %x, %y 91 ret i1 %1 92 } 93 94 define i1 @fcmp_double_olt(double %x, double %y) { 95 %1 = fcmp olt double %x, %y 96 ret i1 %1 97 } 98 99 define i1 @fcmp_double_ole(double %x, double %y) { 100 %1 = fcmp ole double %x, %y 101 ret i1 %1 102 } 103 104 define i1 @fcmp_double_one(double %x, double %y) { 105 %1 = fcmp one double %x, %y 106 ret i1 %1 107 } 108 109 define i1 @fcmp_double_ord(double %x, double %y) { 110 %1 = fcmp ord double %x, %y 111 ret i1 %1 112 } 113 114 define i1 @fcmp_double_uno(double %x, double %y) { 115 %1 = fcmp uno double %x, %y 116 ret i1 %1 117 } 118 119 define i1 @fcmp_double_ueq(double %x, double %y) { 120 %1 = fcmp ueq double %x, %y 121 ret i1 %1 122 } 123 124 define i1 @fcmp_double_ugt(double %x, double %y) { 125 %1 = fcmp ugt double %x, %y 126 ret i1 %1 127 } 128 129 define i1 @fcmp_double_uge(double %x, double %y) { 130 %1 = fcmp uge double %x, %y 131 ret i1 %1 132 } 133 134 define i1 @fcmp_double_ult(double %x, double %y) { 135 %1 = fcmp ult double %x, %y 136 ret i1 %1 137 } 138 139 define i1 @fcmp_double_ule(double %x, double %y) { 140 %1 = fcmp ule double %x, %y 141 ret i1 %1 142 } 143 144 define i1 @fcmp_double_une(double %x, double %y) { 145 %1 = fcmp une double %x, %y 146 ret i1 %1 147 } 148 149... 150--- 151name: fcmp_float_oeq 152alignment: 16 153tracksRegLiveness: true 154registers: 155 - { id: 0, class: _ } 156 - { id: 1, class: _ } 157 - { id: 2, class: _ } 158 - { id: 3, class: _ } 159 - { id: 4, class: _ } 160 - { id: 5, class: _ } 161body: | 162 bb.1 (%ir-block.0): 163 liveins: $xmm0, $xmm1 164 165 ; CHECK-LABEL: name: fcmp_float_oeq 166 ; CHECK: liveins: $xmm0, $xmm1 167 ; CHECK-NEXT: {{ $}} 168 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 169 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 170 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 171 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 172 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s32), [[TRUNC1]] 173 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 174 ; CHECK-NEXT: RET 0, implicit $al 175 %2:_(s128) = COPY $xmm0 176 %0:_(s32) = G_TRUNC %2(s128) 177 %3:_(s128) = COPY $xmm1 178 %1:_(s32) = G_TRUNC %3(s128) 179 %4:_(s1) = G_FCMP floatpred(oeq), %0(s32), %1 180 %5:_(s8) = G_ANYEXT %4(s1) 181 $al = COPY %5(s8) 182 RET 0, implicit $al 183 184... 185--- 186name: fcmp_float_ogt 187alignment: 16 188tracksRegLiveness: true 189registers: 190 - { id: 0, class: _ } 191 - { id: 1, class: _ } 192 - { id: 2, class: _ } 193 - { id: 3, class: _ } 194 - { id: 4, class: _ } 195 - { id: 5, class: _ } 196body: | 197 bb.1 (%ir-block.0): 198 liveins: $xmm0, $xmm1 199 200 ; CHECK-LABEL: name: fcmp_float_ogt 201 ; CHECK: liveins: $xmm0, $xmm1 202 ; CHECK-NEXT: {{ $}} 203 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 204 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 205 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 206 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 207 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s32), [[TRUNC1]] 208 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 209 ; CHECK-NEXT: RET 0, implicit $al 210 %2:_(s128) = COPY $xmm0 211 %0:_(s32) = G_TRUNC %2(s128) 212 %3:_(s128) = COPY $xmm1 213 %1:_(s32) = G_TRUNC %3(s128) 214 %4:_(s1) = G_FCMP floatpred(ogt), %0(s32), %1 215 %5:_(s8) = G_ANYEXT %4(s1) 216 $al = COPY %5(s8) 217 RET 0, implicit $al 218 219... 220--- 221name: fcmp_float_oge 222alignment: 16 223tracksRegLiveness: true 224registers: 225 - { id: 0, class: _ } 226 - { id: 1, class: _ } 227 - { id: 2, class: _ } 228 - { id: 3, class: _ } 229 - { id: 4, class: _ } 230 - { id: 5, class: _ } 231body: | 232 bb.1 (%ir-block.0): 233 liveins: $xmm0, $xmm1 234 235 ; CHECK-LABEL: name: fcmp_float_oge 236 ; CHECK: liveins: $xmm0, $xmm1 237 ; CHECK-NEXT: {{ $}} 238 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 239 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 240 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 241 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 242 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oge), [[TRUNC]](s32), [[TRUNC1]] 243 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 244 ; CHECK-NEXT: RET 0, implicit $al 245 %2:_(s128) = COPY $xmm0 246 %0:_(s32) = G_TRUNC %2(s128) 247 %3:_(s128) = COPY $xmm1 248 %1:_(s32) = G_TRUNC %3(s128) 249 %4:_(s1) = G_FCMP floatpred(oge), %0(s32), %1 250 %5:_(s8) = G_ANYEXT %4(s1) 251 $al = COPY %5(s8) 252 RET 0, implicit $al 253 254... 255--- 256name: fcmp_float_olt 257alignment: 16 258tracksRegLiveness: true 259registers: 260 - { id: 0, class: _ } 261 - { id: 1, class: _ } 262 - { id: 2, class: _ } 263 - { id: 3, class: _ } 264 - { id: 4, class: _ } 265 - { id: 5, class: _ } 266body: | 267 bb.1 (%ir-block.0): 268 liveins: $xmm0, $xmm1 269 270 ; CHECK-LABEL: name: fcmp_float_olt 271 ; CHECK: liveins: $xmm0, $xmm1 272 ; CHECK-NEXT: {{ $}} 273 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 274 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 275 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 276 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 277 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(olt), [[TRUNC]](s32), [[TRUNC1]] 278 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 279 ; CHECK-NEXT: RET 0, implicit $al 280 %2:_(s128) = COPY $xmm0 281 %0:_(s32) = G_TRUNC %2(s128) 282 %3:_(s128) = COPY $xmm1 283 %1:_(s32) = G_TRUNC %3(s128) 284 %4:_(s1) = G_FCMP floatpred(olt), %0(s32), %1 285 %5:_(s8) = G_ANYEXT %4(s1) 286 $al = COPY %5(s8) 287 RET 0, implicit $al 288 289... 290--- 291name: fcmp_float_ole 292alignment: 16 293tracksRegLiveness: true 294registers: 295 - { id: 0, class: _ } 296 - { id: 1, class: _ } 297 - { id: 2, class: _ } 298 - { id: 3, class: _ } 299 - { id: 4, class: _ } 300 - { id: 5, class: _ } 301body: | 302 bb.1 (%ir-block.0): 303 liveins: $xmm0, $xmm1 304 305 ; CHECK-LABEL: name: fcmp_float_ole 306 ; CHECK: liveins: $xmm0, $xmm1 307 ; CHECK-NEXT: {{ $}} 308 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 309 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 310 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 311 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 312 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ole), [[TRUNC]](s32), [[TRUNC1]] 313 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 314 ; CHECK-NEXT: RET 0, implicit $al 315 %2:_(s128) = COPY $xmm0 316 %0:_(s32) = G_TRUNC %2(s128) 317 %3:_(s128) = COPY $xmm1 318 %1:_(s32) = G_TRUNC %3(s128) 319 %4:_(s1) = G_FCMP floatpred(ole), %0(s32), %1 320 %5:_(s8) = G_ANYEXT %4(s1) 321 $al = COPY %5(s8) 322 RET 0, implicit $al 323 324... 325--- 326name: fcmp_float_one 327alignment: 16 328tracksRegLiveness: true 329registers: 330 - { id: 0, class: _ } 331 - { id: 1, class: _ } 332 - { id: 2, class: _ } 333 - { id: 3, class: _ } 334 - { id: 4, class: _ } 335 - { id: 5, class: _ } 336body: | 337 bb.1 (%ir-block.0): 338 liveins: $xmm0, $xmm1 339 340 ; CHECK-LABEL: name: fcmp_float_one 341 ; CHECK: liveins: $xmm0, $xmm1 342 ; CHECK-NEXT: {{ $}} 343 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 344 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 345 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 346 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 347 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(one), [[TRUNC]](s32), [[TRUNC1]] 348 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 349 ; CHECK-NEXT: RET 0, implicit $al 350 %2:_(s128) = COPY $xmm0 351 %0:_(s32) = G_TRUNC %2(s128) 352 %3:_(s128) = COPY $xmm1 353 %1:_(s32) = G_TRUNC %3(s128) 354 %4:_(s1) = G_FCMP floatpred(one), %0(s32), %1 355 %5:_(s8) = G_ANYEXT %4(s1) 356 $al = COPY %5(s8) 357 RET 0, implicit $al 358 359... 360--- 361name: fcmp_float_ord 362alignment: 16 363tracksRegLiveness: true 364registers: 365 - { id: 0, class: _ } 366 - { id: 1, class: _ } 367 - { id: 2, class: _ } 368 - { id: 3, class: _ } 369 - { id: 4, class: _ } 370 - { id: 5, class: _ } 371body: | 372 bb.1 (%ir-block.0): 373 liveins: $xmm0, $xmm1 374 375 ; CHECK-LABEL: name: fcmp_float_ord 376 ; CHECK: liveins: $xmm0, $xmm1 377 ; CHECK-NEXT: {{ $}} 378 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 379 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 380 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 381 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 382 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ord), [[TRUNC]](s32), [[TRUNC1]] 383 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 384 ; CHECK-NEXT: RET 0, implicit $al 385 %2:_(s128) = COPY $xmm0 386 %0:_(s32) = G_TRUNC %2(s128) 387 %3:_(s128) = COPY $xmm1 388 %1:_(s32) = G_TRUNC %3(s128) 389 %4:_(s1) = G_FCMP floatpred(ord), %0(s32), %1 390 %5:_(s8) = G_ANYEXT %4(s1) 391 $al = COPY %5(s8) 392 RET 0, implicit $al 393 394... 395--- 396name: fcmp_float_uno 397alignment: 16 398tracksRegLiveness: true 399registers: 400 - { id: 0, class: _ } 401 - { id: 1, class: _ } 402 - { id: 2, class: _ } 403 - { id: 3, class: _ } 404 - { id: 4, class: _ } 405 - { id: 5, class: _ } 406body: | 407 bb.1 (%ir-block.0): 408 liveins: $xmm0, $xmm1 409 410 ; CHECK-LABEL: name: fcmp_float_uno 411 ; CHECK: liveins: $xmm0, $xmm1 412 ; CHECK-NEXT: {{ $}} 413 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 414 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 415 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 416 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 417 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uno), [[TRUNC]](s32), [[TRUNC1]] 418 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 419 ; CHECK-NEXT: RET 0, implicit $al 420 %2:_(s128) = COPY $xmm0 421 %0:_(s32) = G_TRUNC %2(s128) 422 %3:_(s128) = COPY $xmm1 423 %1:_(s32) = G_TRUNC %3(s128) 424 %4:_(s1) = G_FCMP floatpred(uno), %0(s32), %1 425 %5:_(s8) = G_ANYEXT %4(s1) 426 $al = COPY %5(s8) 427 RET 0, implicit $al 428 429... 430--- 431name: fcmp_float_ueq 432alignment: 16 433tracksRegLiveness: true 434registers: 435 - { id: 0, class: _ } 436 - { id: 1, class: _ } 437 - { id: 2, class: _ } 438 - { id: 3, class: _ } 439 - { id: 4, class: _ } 440 - { id: 5, class: _ } 441body: | 442 bb.1 (%ir-block.0): 443 liveins: $xmm0, $xmm1 444 445 ; CHECK-LABEL: name: fcmp_float_ueq 446 ; CHECK: liveins: $xmm0, $xmm1 447 ; CHECK-NEXT: {{ $}} 448 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 449 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 450 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 451 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 452 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s32), [[TRUNC1]] 453 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 454 ; CHECK-NEXT: RET 0, implicit $al 455 %2:_(s128) = COPY $xmm0 456 %0:_(s32) = G_TRUNC %2(s128) 457 %3:_(s128) = COPY $xmm1 458 %1:_(s32) = G_TRUNC %3(s128) 459 %4:_(s1) = G_FCMP floatpred(ueq), %0(s32), %1 460 %5:_(s8) = G_ANYEXT %4(s1) 461 $al = COPY %5(s8) 462 RET 0, implicit $al 463 464... 465--- 466name: fcmp_float_ugt 467alignment: 16 468tracksRegLiveness: true 469registers: 470 - { id: 0, class: _ } 471 - { id: 1, class: _ } 472 - { id: 2, class: _ } 473 - { id: 3, class: _ } 474 - { id: 4, class: _ } 475 - { id: 5, class: _ } 476body: | 477 bb.1 (%ir-block.0): 478 liveins: $xmm0, $xmm1 479 480 ; CHECK-LABEL: name: fcmp_float_ugt 481 ; CHECK: liveins: $xmm0, $xmm1 482 ; CHECK-NEXT: {{ $}} 483 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 484 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 485 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 486 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 487 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s32), [[TRUNC1]] 488 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 489 ; CHECK-NEXT: RET 0, implicit $al 490 %2:_(s128) = COPY $xmm0 491 %0:_(s32) = G_TRUNC %2(s128) 492 %3:_(s128) = COPY $xmm1 493 %1:_(s32) = G_TRUNC %3(s128) 494 %4:_(s1) = G_FCMP floatpred(ugt), %0(s32), %1 495 %5:_(s8) = G_ANYEXT %4(s1) 496 $al = COPY %5(s8) 497 RET 0, implicit $al 498 499... 500--- 501name: fcmp_float_uge 502alignment: 16 503tracksRegLiveness: true 504registers: 505 - { id: 0, class: _ } 506 - { id: 1, class: _ } 507 - { id: 2, class: _ } 508 - { id: 3, class: _ } 509 - { id: 4, class: _ } 510 - { id: 5, class: _ } 511body: | 512 bb.1 (%ir-block.0): 513 liveins: $xmm0, $xmm1 514 515 ; CHECK-LABEL: name: fcmp_float_uge 516 ; CHECK: liveins: $xmm0, $xmm1 517 ; CHECK-NEXT: {{ $}} 518 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 519 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 520 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 521 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 522 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uge), [[TRUNC]](s32), [[TRUNC1]] 523 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 524 ; CHECK-NEXT: RET 0, implicit $al 525 %2:_(s128) = COPY $xmm0 526 %0:_(s32) = G_TRUNC %2(s128) 527 %3:_(s128) = COPY $xmm1 528 %1:_(s32) = G_TRUNC %3(s128) 529 %4:_(s1) = G_FCMP floatpred(uge), %0(s32), %1 530 %5:_(s8) = G_ANYEXT %4(s1) 531 $al = COPY %5(s8) 532 RET 0, implicit $al 533 534... 535--- 536name: fcmp_float_ult 537alignment: 16 538tracksRegLiveness: true 539registers: 540 - { id: 0, class: _ } 541 - { id: 1, class: _ } 542 - { id: 2, class: _ } 543 - { id: 3, class: _ } 544 - { id: 4, class: _ } 545 - { id: 5, class: _ } 546body: | 547 bb.1 (%ir-block.0): 548 liveins: $xmm0, $xmm1 549 550 ; CHECK-LABEL: name: fcmp_float_ult 551 ; CHECK: liveins: $xmm0, $xmm1 552 ; CHECK-NEXT: {{ $}} 553 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 554 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 555 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 556 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 557 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ult), [[TRUNC]](s32), [[TRUNC1]] 558 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 559 ; CHECK-NEXT: RET 0, implicit $al 560 %2:_(s128) = COPY $xmm0 561 %0:_(s32) = G_TRUNC %2(s128) 562 %3:_(s128) = COPY $xmm1 563 %1:_(s32) = G_TRUNC %3(s128) 564 %4:_(s1) = G_FCMP floatpred(ult), %0(s32), %1 565 %5:_(s8) = G_ANYEXT %4(s1) 566 $al = COPY %5(s8) 567 RET 0, implicit $al 568 569... 570--- 571name: fcmp_float_ule 572alignment: 16 573tracksRegLiveness: true 574registers: 575 - { id: 0, class: _ } 576 - { id: 1, class: _ } 577 - { id: 2, class: _ } 578 - { id: 3, class: _ } 579 - { id: 4, class: _ } 580 - { id: 5, class: _ } 581body: | 582 bb.1 (%ir-block.0): 583 liveins: $xmm0, $xmm1 584 585 ; CHECK-LABEL: name: fcmp_float_ule 586 ; CHECK: liveins: $xmm0, $xmm1 587 ; CHECK-NEXT: {{ $}} 588 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 589 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 590 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 591 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 592 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ule), [[TRUNC]](s32), [[TRUNC1]] 593 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 594 ; CHECK-NEXT: RET 0, implicit $al 595 %2:_(s128) = COPY $xmm0 596 %0:_(s32) = G_TRUNC %2(s128) 597 %3:_(s128) = COPY $xmm1 598 %1:_(s32) = G_TRUNC %3(s128) 599 %4:_(s1) = G_FCMP floatpred(ule), %0(s32), %1 600 %5:_(s8) = G_ANYEXT %4(s1) 601 $al = COPY %5(s8) 602 RET 0, implicit $al 603 604... 605--- 606name: fcmp_float_une 607alignment: 16 608tracksRegLiveness: true 609registers: 610 - { id: 0, class: _ } 611 - { id: 1, class: _ } 612 - { id: 2, class: _ } 613 - { id: 3, class: _ } 614 - { id: 4, class: _ } 615 - { id: 5, class: _ } 616body: | 617 bb.1 (%ir-block.0): 618 liveins: $xmm0, $xmm1 619 620 ; CHECK-LABEL: name: fcmp_float_une 621 ; CHECK: liveins: $xmm0, $xmm1 622 ; CHECK-NEXT: {{ $}} 623 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 624 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s128) 625 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 626 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[COPY1]](s128) 627 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(une), [[TRUNC]](s32), [[TRUNC1]] 628 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 629 ; CHECK-NEXT: RET 0, implicit $al 630 %2:_(s128) = COPY $xmm0 631 %0:_(s32) = G_TRUNC %2(s128) 632 %3:_(s128) = COPY $xmm1 633 %1:_(s32) = G_TRUNC %3(s128) 634 %4:_(s1) = G_FCMP floatpred(une), %0(s32), %1 635 %5:_(s8) = G_ANYEXT %4(s1) 636 $al = COPY %5(s8) 637 RET 0, implicit $al 638 639... 640--- 641name: fcmp_double_oeq 642alignment: 16 643tracksRegLiveness: true 644registers: 645 - { id: 0, class: _ } 646 - { id: 1, class: _ } 647 - { id: 2, class: _ } 648 - { id: 3, class: _ } 649 - { id: 4, class: _ } 650 - { id: 5, class: _ } 651body: | 652 bb.1 (%ir-block.0): 653 liveins: $xmm0, $xmm1 654 655 ; CHECK-LABEL: name: fcmp_double_oeq 656 ; CHECK: liveins: $xmm0, $xmm1 657 ; CHECK-NEXT: {{ $}} 658 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 659 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 660 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 661 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 662 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oeq), [[TRUNC]](s64), [[TRUNC1]] 663 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 664 ; CHECK-NEXT: RET 0, implicit $al 665 %2:_(s128) = COPY $xmm0 666 %0:_(s64) = G_TRUNC %2(s128) 667 %3:_(s128) = COPY $xmm1 668 %1:_(s64) = G_TRUNC %3(s128) 669 %4:_(s1) = G_FCMP floatpred(oeq), %0(s64), %1 670 %5:_(s8) = G_ANYEXT %4(s1) 671 $al = COPY %5(s8) 672 RET 0, implicit $al 673 674... 675--- 676name: fcmp_double_ogt 677alignment: 16 678tracksRegLiveness: true 679registers: 680 - { id: 0, class: _ } 681 - { id: 1, class: _ } 682 - { id: 2, class: _ } 683 - { id: 3, class: _ } 684 - { id: 4, class: _ } 685 - { id: 5, class: _ } 686body: | 687 bb.1 (%ir-block.0): 688 liveins: $xmm0, $xmm1 689 690 ; CHECK-LABEL: name: fcmp_double_ogt 691 ; CHECK: liveins: $xmm0, $xmm1 692 ; CHECK-NEXT: {{ $}} 693 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 694 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 695 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 696 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 697 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ogt), [[TRUNC]](s64), [[TRUNC1]] 698 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 699 ; CHECK-NEXT: RET 0, implicit $al 700 %2:_(s128) = COPY $xmm0 701 %0:_(s64) = G_TRUNC %2(s128) 702 %3:_(s128) = COPY $xmm1 703 %1:_(s64) = G_TRUNC %3(s128) 704 %4:_(s1) = G_FCMP floatpred(ogt), %0(s64), %1 705 %5:_(s8) = G_ANYEXT %4(s1) 706 $al = COPY %5(s8) 707 RET 0, implicit $al 708 709... 710--- 711name: fcmp_double_oge 712alignment: 16 713tracksRegLiveness: true 714registers: 715 - { id: 0, class: _ } 716 - { id: 1, class: _ } 717 - { id: 2, class: _ } 718 - { id: 3, class: _ } 719 - { id: 4, class: _ } 720 - { id: 5, class: _ } 721body: | 722 bb.1 (%ir-block.0): 723 liveins: $xmm0, $xmm1 724 725 ; CHECK-LABEL: name: fcmp_double_oge 726 ; CHECK: liveins: $xmm0, $xmm1 727 ; CHECK-NEXT: {{ $}} 728 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 729 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 730 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 731 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 732 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(oge), [[TRUNC]](s64), [[TRUNC1]] 733 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 734 ; CHECK-NEXT: RET 0, implicit $al 735 %2:_(s128) = COPY $xmm0 736 %0:_(s64) = G_TRUNC %2(s128) 737 %3:_(s128) = COPY $xmm1 738 %1:_(s64) = G_TRUNC %3(s128) 739 %4:_(s1) = G_FCMP floatpred(oge), %0(s64), %1 740 %5:_(s8) = G_ANYEXT %4(s1) 741 $al = COPY %5(s8) 742 RET 0, implicit $al 743 744... 745--- 746name: fcmp_double_olt 747alignment: 16 748tracksRegLiveness: true 749registers: 750 - { id: 0, class: _ } 751 - { id: 1, class: _ } 752 - { id: 2, class: _ } 753 - { id: 3, class: _ } 754 - { id: 4, class: _ } 755 - { id: 5, class: _ } 756body: | 757 bb.1 (%ir-block.0): 758 liveins: $xmm0, $xmm1 759 760 ; CHECK-LABEL: name: fcmp_double_olt 761 ; CHECK: liveins: $xmm0, $xmm1 762 ; CHECK-NEXT: {{ $}} 763 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 764 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 765 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 766 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 767 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(olt), [[TRUNC]](s64), [[TRUNC1]] 768 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 769 ; CHECK-NEXT: RET 0, implicit $al 770 %2:_(s128) = COPY $xmm0 771 %0:_(s64) = G_TRUNC %2(s128) 772 %3:_(s128) = COPY $xmm1 773 %1:_(s64) = G_TRUNC %3(s128) 774 %4:_(s1) = G_FCMP floatpred(olt), %0(s64), %1 775 %5:_(s8) = G_ANYEXT %4(s1) 776 $al = COPY %5(s8) 777 RET 0, implicit $al 778 779... 780--- 781name: fcmp_double_ole 782alignment: 16 783tracksRegLiveness: true 784registers: 785 - { id: 0, class: _ } 786 - { id: 1, class: _ } 787 - { id: 2, class: _ } 788 - { id: 3, class: _ } 789 - { id: 4, class: _ } 790 - { id: 5, class: _ } 791body: | 792 bb.1 (%ir-block.0): 793 liveins: $xmm0, $xmm1 794 795 ; CHECK-LABEL: name: fcmp_double_ole 796 ; CHECK: liveins: $xmm0, $xmm1 797 ; CHECK-NEXT: {{ $}} 798 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 799 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 800 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 801 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 802 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ole), [[TRUNC]](s64), [[TRUNC1]] 803 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 804 ; CHECK-NEXT: RET 0, implicit $al 805 %2:_(s128) = COPY $xmm0 806 %0:_(s64) = G_TRUNC %2(s128) 807 %3:_(s128) = COPY $xmm1 808 %1:_(s64) = G_TRUNC %3(s128) 809 %4:_(s1) = G_FCMP floatpred(ole), %0(s64), %1 810 %5:_(s8) = G_ANYEXT %4(s1) 811 $al = COPY %5(s8) 812 RET 0, implicit $al 813 814... 815--- 816name: fcmp_double_one 817alignment: 16 818tracksRegLiveness: true 819registers: 820 - { id: 0, class: _ } 821 - { id: 1, class: _ } 822 - { id: 2, class: _ } 823 - { id: 3, class: _ } 824 - { id: 4, class: _ } 825 - { id: 5, class: _ } 826body: | 827 bb.1 (%ir-block.0): 828 liveins: $xmm0, $xmm1 829 830 ; CHECK-LABEL: name: fcmp_double_one 831 ; CHECK: liveins: $xmm0, $xmm1 832 ; CHECK-NEXT: {{ $}} 833 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 834 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 835 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 836 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 837 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(one), [[TRUNC]](s64), [[TRUNC1]] 838 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 839 ; CHECK-NEXT: RET 0, implicit $al 840 %2:_(s128) = COPY $xmm0 841 %0:_(s64) = G_TRUNC %2(s128) 842 %3:_(s128) = COPY $xmm1 843 %1:_(s64) = G_TRUNC %3(s128) 844 %4:_(s1) = G_FCMP floatpred(one), %0(s64), %1 845 %5:_(s8) = G_ANYEXT %4(s1) 846 $al = COPY %5(s8) 847 RET 0, implicit $al 848 849... 850--- 851name: fcmp_double_ord 852alignment: 16 853tracksRegLiveness: true 854registers: 855 - { id: 0, class: _ } 856 - { id: 1, class: _ } 857 - { id: 2, class: _ } 858 - { id: 3, class: _ } 859 - { id: 4, class: _ } 860 - { id: 5, class: _ } 861body: | 862 bb.1 (%ir-block.0): 863 liveins: $xmm0, $xmm1 864 865 ; CHECK-LABEL: name: fcmp_double_ord 866 ; CHECK: liveins: $xmm0, $xmm1 867 ; CHECK-NEXT: {{ $}} 868 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 869 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 870 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 871 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 872 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ord), [[TRUNC]](s64), [[TRUNC1]] 873 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 874 ; CHECK-NEXT: RET 0, implicit $al 875 %2:_(s128) = COPY $xmm0 876 %0:_(s64) = G_TRUNC %2(s128) 877 %3:_(s128) = COPY $xmm1 878 %1:_(s64) = G_TRUNC %3(s128) 879 %4:_(s1) = G_FCMP floatpred(ord), %0(s64), %1 880 %5:_(s8) = G_ANYEXT %4(s1) 881 $al = COPY %5(s8) 882 RET 0, implicit $al 883 884... 885--- 886name: fcmp_double_uno 887alignment: 16 888tracksRegLiveness: true 889registers: 890 - { id: 0, class: _ } 891 - { id: 1, class: _ } 892 - { id: 2, class: _ } 893 - { id: 3, class: _ } 894 - { id: 4, class: _ } 895 - { id: 5, class: _ } 896body: | 897 bb.1 (%ir-block.0): 898 liveins: $xmm0, $xmm1 899 900 ; CHECK-LABEL: name: fcmp_double_uno 901 ; CHECK: liveins: $xmm0, $xmm1 902 ; CHECK-NEXT: {{ $}} 903 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 904 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 905 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 906 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 907 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uno), [[TRUNC]](s64), [[TRUNC1]] 908 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 909 ; CHECK-NEXT: RET 0, implicit $al 910 %2:_(s128) = COPY $xmm0 911 %0:_(s64) = G_TRUNC %2(s128) 912 %3:_(s128) = COPY $xmm1 913 %1:_(s64) = G_TRUNC %3(s128) 914 %4:_(s1) = G_FCMP floatpred(uno), %0(s64), %1 915 %5:_(s8) = G_ANYEXT %4(s1) 916 $al = COPY %5(s8) 917 RET 0, implicit $al 918 919... 920--- 921name: fcmp_double_ueq 922alignment: 16 923tracksRegLiveness: true 924registers: 925 - { id: 0, class: _ } 926 - { id: 1, class: _ } 927 - { id: 2, class: _ } 928 - { id: 3, class: _ } 929 - { id: 4, class: _ } 930 - { id: 5, class: _ } 931body: | 932 bb.1 (%ir-block.0): 933 liveins: $xmm0, $xmm1 934 935 ; CHECK-LABEL: name: fcmp_double_ueq 936 ; CHECK: liveins: $xmm0, $xmm1 937 ; CHECK-NEXT: {{ $}} 938 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 939 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 940 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 941 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 942 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ueq), [[TRUNC]](s64), [[TRUNC1]] 943 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 944 ; CHECK-NEXT: RET 0, implicit $al 945 %2:_(s128) = COPY $xmm0 946 %0:_(s64) = G_TRUNC %2(s128) 947 %3:_(s128) = COPY $xmm1 948 %1:_(s64) = G_TRUNC %3(s128) 949 %4:_(s1) = G_FCMP floatpred(ueq), %0(s64), %1 950 %5:_(s8) = G_ANYEXT %4(s1) 951 $al = COPY %5(s8) 952 RET 0, implicit $al 953 954... 955--- 956name: fcmp_double_ugt 957alignment: 16 958tracksRegLiveness: true 959registers: 960 - { id: 0, class: _ } 961 - { id: 1, class: _ } 962 - { id: 2, class: _ } 963 - { id: 3, class: _ } 964 - { id: 4, class: _ } 965 - { id: 5, class: _ } 966body: | 967 bb.1 (%ir-block.0): 968 liveins: $xmm0, $xmm1 969 970 ; CHECK-LABEL: name: fcmp_double_ugt 971 ; CHECK: liveins: $xmm0, $xmm1 972 ; CHECK-NEXT: {{ $}} 973 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 974 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 975 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 976 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 977 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ugt), [[TRUNC]](s64), [[TRUNC1]] 978 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 979 ; CHECK-NEXT: RET 0, implicit $al 980 %2:_(s128) = COPY $xmm0 981 %0:_(s64) = G_TRUNC %2(s128) 982 %3:_(s128) = COPY $xmm1 983 %1:_(s64) = G_TRUNC %3(s128) 984 %4:_(s1) = G_FCMP floatpred(ugt), %0(s64), %1 985 %5:_(s8) = G_ANYEXT %4(s1) 986 $al = COPY %5(s8) 987 RET 0, implicit $al 988 989... 990--- 991name: fcmp_double_uge 992alignment: 16 993tracksRegLiveness: true 994registers: 995 - { id: 0, class: _ } 996 - { id: 1, class: _ } 997 - { id: 2, class: _ } 998 - { id: 3, class: _ } 999 - { id: 4, class: _ } 1000 - { id: 5, class: _ } 1001body: | 1002 bb.1 (%ir-block.0): 1003 liveins: $xmm0, $xmm1 1004 1005 ; CHECK-LABEL: name: fcmp_double_uge 1006 ; CHECK: liveins: $xmm0, $xmm1 1007 ; CHECK-NEXT: {{ $}} 1008 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 1009 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 1010 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 1011 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 1012 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(uge), [[TRUNC]](s64), [[TRUNC1]] 1013 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 1014 ; CHECK-NEXT: RET 0, implicit $al 1015 %2:_(s128) = COPY $xmm0 1016 %0:_(s64) = G_TRUNC %2(s128) 1017 %3:_(s128) = COPY $xmm1 1018 %1:_(s64) = G_TRUNC %3(s128) 1019 %4:_(s1) = G_FCMP floatpred(uge), %0(s64), %1 1020 %5:_(s8) = G_ANYEXT %4(s1) 1021 $al = COPY %5(s8) 1022 RET 0, implicit $al 1023 1024... 1025--- 1026name: fcmp_double_ult 1027alignment: 16 1028tracksRegLiveness: true 1029registers: 1030 - { id: 0, class: _ } 1031 - { id: 1, class: _ } 1032 - { id: 2, class: _ } 1033 - { id: 3, class: _ } 1034 - { id: 4, class: _ } 1035 - { id: 5, class: _ } 1036body: | 1037 bb.1 (%ir-block.0): 1038 liveins: $xmm0, $xmm1 1039 1040 ; CHECK-LABEL: name: fcmp_double_ult 1041 ; CHECK: liveins: $xmm0, $xmm1 1042 ; CHECK-NEXT: {{ $}} 1043 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 1044 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 1045 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 1046 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 1047 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ult), [[TRUNC]](s64), [[TRUNC1]] 1048 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 1049 ; CHECK-NEXT: RET 0, implicit $al 1050 %2:_(s128) = COPY $xmm0 1051 %0:_(s64) = G_TRUNC %2(s128) 1052 %3:_(s128) = COPY $xmm1 1053 %1:_(s64) = G_TRUNC %3(s128) 1054 %4:_(s1) = G_FCMP floatpred(ult), %0(s64), %1 1055 %5:_(s8) = G_ANYEXT %4(s1) 1056 $al = COPY %5(s8) 1057 RET 0, implicit $al 1058 1059... 1060--- 1061name: fcmp_double_ule 1062alignment: 16 1063tracksRegLiveness: true 1064registers: 1065 - { id: 0, class: _ } 1066 - { id: 1, class: _ } 1067 - { id: 2, class: _ } 1068 - { id: 3, class: _ } 1069 - { id: 4, class: _ } 1070 - { id: 5, class: _ } 1071body: | 1072 bb.1 (%ir-block.0): 1073 liveins: $xmm0, $xmm1 1074 1075 ; CHECK-LABEL: name: fcmp_double_ule 1076 ; CHECK: liveins: $xmm0, $xmm1 1077 ; CHECK-NEXT: {{ $}} 1078 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 1079 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 1080 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 1081 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 1082 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(ule), [[TRUNC]](s64), [[TRUNC1]] 1083 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 1084 ; CHECK-NEXT: RET 0, implicit $al 1085 %2:_(s128) = COPY $xmm0 1086 %0:_(s64) = G_TRUNC %2(s128) 1087 %3:_(s128) = COPY $xmm1 1088 %1:_(s64) = G_TRUNC %3(s128) 1089 %4:_(s1) = G_FCMP floatpred(ule), %0(s64), %1 1090 %5:_(s8) = G_ANYEXT %4(s1) 1091 $al = COPY %5(s8) 1092 RET 0, implicit $al 1093 1094... 1095--- 1096name: fcmp_double_une 1097alignment: 16 1098tracksRegLiveness: true 1099registers: 1100 - { id: 0, class: _ } 1101 - { id: 1, class: _ } 1102 - { id: 2, class: _ } 1103 - { id: 3, class: _ } 1104 - { id: 4, class: _ } 1105 - { id: 5, class: _ } 1106body: | 1107 bb.1 (%ir-block.0): 1108 liveins: $xmm0, $xmm1 1109 1110 ; CHECK-LABEL: name: fcmp_double_une 1111 ; CHECK: liveins: $xmm0, $xmm1 1112 ; CHECK-NEXT: {{ $}} 1113 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s128) = COPY $xmm0 1114 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s64) = G_TRUNC [[COPY]](s128) 1115 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s128) = COPY $xmm1 1116 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s64) = G_TRUNC [[COPY1]](s128) 1117 ; CHECK-NEXT: [[FCMP:%[0-9]+]]:_(s8) = G_FCMP floatpred(une), [[TRUNC]](s64), [[TRUNC1]] 1118 ; CHECK-NEXT: $al = COPY [[FCMP]](s8) 1119 ; CHECK-NEXT: RET 0, implicit $al 1120 %2:_(s128) = COPY $xmm0 1121 %0:_(s64) = G_TRUNC %2(s128) 1122 %3:_(s128) = COPY $xmm1 1123 %1:_(s64) = G_TRUNC %3(s128) 1124 %4:_(s1) = G_FCMP floatpred(une), %0(s64), %1 1125 %5:_(s8) = G_ANYEXT %4(s1) 1126 $al = COPY %5(s8) 1127 RET 0, implicit $al 1128 1129... 1130