764 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64 -run-pass=aarch64-postlegalizer-lowering -mattr=+fullfp16 -verify-machineinstrs %s -o - | FileCheck %s3...4---5name: oeq6alignment: 47legalized: true8body: |9 bb.0:10 liveins: $q0, $q111 ; CHECK-LABEL: name: oeq12 ; CHECK: liveins: $q0, $q113 ; CHECK-NEXT: {{ $}}14 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q015 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q116 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<2 x s64>) = G_FCMEQ %lhs, %rhs(<2 x s64>)17 ; CHECK-NEXT: $q0 = COPY [[FCMEQ]](<2 x s64>)18 ; CHECK-NEXT: RET_ReallyLR implicit $q019 %lhs:_(<2 x s64>) = COPY $q020 %rhs:_(<2 x s64>) = COPY $q121 %fcmp:_(<2 x s64>) = G_FCMP floatpred(oeq), %lhs(<2 x s64>), %rhs22 $q0 = COPY %fcmp(<2 x s64>)23 RET_ReallyLR implicit $q024 25...26---27name: oeq_zero28alignment: 429legalized: true30body: |31 bb.0:32 liveins: $q0, $q133 34 ; Should be inverted. Needs two compares.35 36 ; CHECK-LABEL: name: oeq_zero37 ; CHECK: liveins: $q0, $q138 ; CHECK-NEXT: {{ $}}39 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q040 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 041 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)42 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<2 x s64>) = G_FCMEQ %lhs, %zero_vec(<2 x s64>)43 ; CHECK-NEXT: $q0 = COPY [[FCMEQ]](<2 x s64>)44 ; CHECK-NEXT: RET_ReallyLR implicit $q045 %lhs:_(<2 x s64>) = COPY $q046 %zero:_(s64) = G_CONSTANT i64 047 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero48 %fcmp:_(<2 x s64>) = G_FCMP floatpred(oeq), %lhs(<2 x s64>), %zero_vec49 $q0 = COPY %fcmp(<2 x s64>)50 RET_ReallyLR implicit $q051 52 53...54---55name: ogt56alignment: 457legalized: true58body: |59 bb.0:60 liveins: $q0, $q161 ; CHECK-LABEL: name: ogt62 ; CHECK: liveins: $q0, $q163 ; CHECK-NEXT: {{ $}}64 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q065 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q166 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %lhs, %rhs(<2 x s64>)67 ; CHECK-NEXT: $q0 = COPY [[FCMGT]](<2 x s64>)68 ; CHECK-NEXT: RET_ReallyLR implicit $q069 %lhs:_(<2 x s64>) = COPY $q070 %rhs:_(<2 x s64>) = COPY $q171 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ogt), %lhs(<2 x s64>), %rhs72 $q0 = COPY %fcmp(<2 x s64>)73 RET_ReallyLR implicit $q074 75...76---77name: ogt_zero78alignment: 479legalized: true80body: |81 bb.0:82 liveins: $q0, $q183 ; CHECK-LABEL: name: ogt_zero84 ; CHECK: liveins: $q0, $q185 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q087 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 088 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)89 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %lhs, %zero_vec(<2 x s64>)90 ; CHECK-NEXT: $q0 = COPY [[FCMGT]](<2 x s64>)91 ; CHECK-NEXT: RET_ReallyLR implicit $q092 %lhs:_(<2 x s64>) = COPY $q093 %zero:_(s64) = G_CONSTANT i64 094 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero95 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ogt), %lhs(<2 x s64>), %zero_vec96 $q0 = COPY %fcmp(<2 x s64>)97 RET_ReallyLR implicit $q098 99...100---101name: oge102alignment: 4103legalized: true104body: |105 bb.0:106 liveins: $q0, $q1107 ; CHECK-LABEL: name: oge108 ; CHECK: liveins: $q0, $q1109 ; CHECK-NEXT: {{ $}}110 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0111 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1112 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %lhs, %rhs(<2 x s64>)113 ; CHECK-NEXT: $q0 = COPY [[FCMGE]](<2 x s64>)114 ; CHECK-NEXT: RET_ReallyLR implicit $q0115 %lhs:_(<2 x s64>) = COPY $q0116 %rhs:_(<2 x s64>) = COPY $q1117 %fcmp:_(<2 x s64>) = G_FCMP floatpred(oge), %lhs(<2 x s64>), %rhs118 $q0 = COPY %fcmp(<2 x s64>)119 RET_ReallyLR implicit $q0120 121...122---123name: oge_zero124alignment: 4125legalized: true126body: |127 bb.0:128 liveins: $q0, $q1129 130 ; Should be inverted. Needs two compares.131 132 ; CHECK-LABEL: name: oge_zero133 ; CHECK: liveins: $q0, $q1134 ; CHECK-NEXT: {{ $}}135 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0136 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0137 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)138 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %lhs, %zero_vec(<2 x s64>)139 ; CHECK-NEXT: $q0 = COPY [[FCMGE]](<2 x s64>)140 ; CHECK-NEXT: RET_ReallyLR implicit $q0141 %lhs:_(<2 x s64>) = COPY $q0142 %zero:_(s64) = G_CONSTANT i64 0143 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero144 %fcmp:_(<2 x s64>) = G_FCMP floatpred(oge), %lhs(<2 x s64>), %zero_vec145 $q0 = COPY %fcmp(<2 x s64>)146 RET_ReallyLR implicit $q0147 148 149...150---151name: olt152alignment: 4153legalized: true154body: |155 bb.0:156 liveins: $q0, $q1157 ; CHECK-LABEL: name: olt158 ; CHECK: liveins: $q0, $q1159 ; CHECK-NEXT: {{ $}}160 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0161 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1162 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %rhs, %lhs(<2 x s64>)163 ; CHECK-NEXT: $q0 = COPY [[FCMGT]](<2 x s64>)164 ; CHECK-NEXT: RET_ReallyLR implicit $q0165 %lhs:_(<2 x s64>) = COPY $q0166 %rhs:_(<2 x s64>) = COPY $q1167 %fcmp:_(<2 x s64>) = G_FCMP floatpred(olt), %lhs(<2 x s64>), %rhs168 $q0 = COPY %fcmp(<2 x s64>)169 RET_ReallyLR implicit $q0170 171...172---173name: olt_zero174alignment: 4175legalized: true176body: |177 bb.0:178 liveins: $q0, $q1179 ; CHECK-LABEL: name: olt_zero180 ; CHECK: liveins: $q0, $q1181 ; CHECK-NEXT: {{ $}}182 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0183 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0184 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)185 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %zero_vec, %lhs(<2 x s64>)186 ; CHECK-NEXT: $q0 = COPY [[FCMGT]](<2 x s64>)187 ; CHECK-NEXT: RET_ReallyLR implicit $q0188 %lhs:_(<2 x s64>) = COPY $q0189 %zero:_(s64) = G_CONSTANT i64 0190 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero191 %fcmp:_(<2 x s64>) = G_FCMP floatpred(olt), %lhs(<2 x s64>), %zero_vec192 $q0 = COPY %fcmp(<2 x s64>)193 RET_ReallyLR implicit $q0194 195...196---197name: ole198alignment: 4199legalized: true200body: |201 bb.0:202 liveins: $q0, $q1203 ; CHECK-LABEL: name: ole204 ; CHECK: liveins: $q0, $q1205 ; CHECK-NEXT: {{ $}}206 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0207 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1208 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %rhs, %lhs(<2 x s64>)209 ; CHECK-NEXT: $q0 = COPY [[FCMGE]](<2 x s64>)210 ; CHECK-NEXT: RET_ReallyLR implicit $q0211 %lhs:_(<2 x s64>) = COPY $q0212 %rhs:_(<2 x s64>) = COPY $q1213 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ole), %lhs(<2 x s64>), %rhs214 $q0 = COPY %fcmp(<2 x s64>)215 RET_ReallyLR implicit $q0216 217...218---219name: ole_zero220alignment: 4221legalized: true222body: |223 bb.0:224 liveins: $q0, $q1225 ; CHECK-LABEL: name: ole_zero226 ; CHECK: liveins: $q0, $q1227 ; CHECK-NEXT: {{ $}}228 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0229 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0230 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)231 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %zero_vec, %lhs(<2 x s64>)232 ; CHECK-NEXT: $q0 = COPY [[FCMGE]](<2 x s64>)233 ; CHECK-NEXT: RET_ReallyLR implicit $q0234 %lhs:_(<2 x s64>) = COPY $q0235 %zero:_(s64) = G_CONSTANT i64 0236 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero237 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ole), %lhs(<2 x s64>), %zero_vec238 $q0 = COPY %fcmp(<2 x s64>)239 RET_ReallyLR implicit $q0240 241...242---243name: one244alignment: 4245legalized: true246body: |247 bb.0:248 liveins: $q0, $q1249 250 ; Two compares.251 252 ; CHECK-LABEL: name: one253 ; CHECK: liveins: $q0, $q1254 ; CHECK-NEXT: {{ $}}255 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0256 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1257 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %lhs, %rhs(<2 x s64>)258 ; CHECK-NEXT: [[FCMGT1:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %rhs, %lhs(<2 x s64>)259 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<2 x s64>) = G_OR [[FCMGT1]], [[FCMGT]]260 ; CHECK-NEXT: $q0 = COPY [[OR]](<2 x s64>)261 ; CHECK-NEXT: RET_ReallyLR implicit $q0262 %lhs:_(<2 x s64>) = COPY $q0263 %rhs:_(<2 x s64>) = COPY $q1264 %fcmp:_(<2 x s64>) = G_FCMP floatpred(one), %lhs(<2 x s64>), %rhs265 $q0 = COPY %fcmp(<2 x s64>)266 RET_ReallyLR implicit $q0267 268...269---270name: one_zero271alignment: 4272legalized: true273body: |274 bb.0:275 liveins: $q0, $q1276 277 ; Two compares.278 279 ; CHECK-LABEL: name: one_zero280 ; CHECK: liveins: $q0, $q1281 ; CHECK-NEXT: {{ $}}282 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0283 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0284 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)285 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %lhs, %zero_vec(<2 x s64>)286 ; CHECK-NEXT: [[FCMGT1:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %zero_vec, %lhs(<2 x s64>)287 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<2 x s64>) = G_OR [[FCMGT1]], [[FCMGT]]288 ; CHECK-NEXT: $q0 = COPY [[OR]](<2 x s64>)289 ; CHECK-NEXT: RET_ReallyLR implicit $q0290 %lhs:_(<2 x s64>) = COPY $q0291 %zero:_(s64) = G_CONSTANT i64 0292 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero293 %fcmp:_(<2 x s64>) = G_FCMP floatpred(one), %lhs(<2 x s64>), %zero_vec294 $q0 = COPY %fcmp(<2 x s64>)295 RET_ReallyLR implicit $q0296 297...298---299name: uno300alignment: 4301legalized: true302body: |303 bb.0:304 liveins: $q0, $q1305 306 ; Should be inverted. Needs two compares.307 308 ; CHECK-LABEL: name: uno309 ; CHECK: liveins: $q0, $q1310 ; CHECK-NEXT: {{ $}}311 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0312 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1313 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %lhs, %rhs(<2 x s64>)314 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %rhs, %lhs(<2 x s64>)315 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<2 x s64>) = G_OR [[FCMGT]], [[FCMGE]]316 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1317 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)318 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[OR]], [[BUILD_VECTOR]]319 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)320 ; CHECK-NEXT: RET_ReallyLR implicit $q0321 %lhs:_(<2 x s64>) = COPY $q0322 %rhs:_(<2 x s64>) = COPY $q1323 %fcmp:_(<2 x s64>) = G_FCMP floatpred(uno), %lhs(<2 x s64>), %rhs324 $q0 = COPY %fcmp(<2 x s64>)325 RET_ReallyLR implicit $q0326 327...328---329name: uno_zero330alignment: 4331legalized: true332body: |333 bb.0:334 liveins: $q0, $q1335 336 337 ; CHECK-LABEL: name: uno_zero338 ; CHECK: liveins: $q0, $q1339 ; CHECK-NEXT: {{ $}}340 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0341 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<2 x s64>) = G_FCMEQ %lhs, %lhs(<2 x s64>)342 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1343 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)344 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMEQ]], [[BUILD_VECTOR]]345 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)346 ; CHECK-NEXT: RET_ReallyLR implicit $q0347 %lhs:_(<2 x s64>) = COPY $q0348 %zero:_(s64) = G_CONSTANT i64 0349 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero350 %fcmp:_(<2 x s64>) = G_FCMP floatpred(uno), %lhs(<2 x s64>), %zero_vec351 $q0 = COPY %fcmp(<2 x s64>)352 RET_ReallyLR implicit $q0353 354...355---356name: ord357alignment: 4358legalized: true359body: |360 bb.0:361 liveins: $q0, $q1362 363 ; Needs two compares. No invert.364 365 ; CHECK-LABEL: name: ord366 ; CHECK: liveins: $q0, $q1367 ; CHECK-NEXT: {{ $}}368 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0369 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1370 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %lhs, %rhs(<2 x s64>)371 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %rhs, %lhs(<2 x s64>)372 ; CHECK-NEXT: [[OR:%[0-9]+]]:_(<2 x s64>) = G_OR [[FCMGT]], [[FCMGE]]373 ; CHECK-NEXT: $q0 = COPY [[OR]](<2 x s64>)374 ; CHECK-NEXT: RET_ReallyLR implicit $q0375 %lhs:_(<2 x s64>) = COPY $q0376 %rhs:_(<2 x s64>) = COPY $q1377 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ord), %lhs(<2 x s64>), %rhs378 $q0 = COPY %fcmp(<2 x s64>)379 RET_ReallyLR implicit $q0380 381...382---383name: ord_zero384alignment: 4385legalized: true386body: |387 bb.0:388 liveins: $q0, $q1389 390 ; Needs two compares. No invert.391 392 ; CHECK-LABEL: name: ord_zero393 ; CHECK: liveins: $q0, $q1394 ; CHECK-NEXT: {{ $}}395 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0396 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<2 x s64>) = G_FCMEQ %lhs, %lhs(<2 x s64>)397 ; CHECK-NEXT: $q0 = COPY [[FCMEQ]](<2 x s64>)398 ; CHECK-NEXT: RET_ReallyLR implicit $q0399 %lhs:_(<2 x s64>) = COPY $q0400 %zero:_(s64) = G_CONSTANT i64 0401 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero402 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ord), %lhs(<2 x s64>), %zero_vec403 $q0 = COPY %fcmp(<2 x s64>)404 RET_ReallyLR implicit $q0405 406...407---408name: ult409alignment: 4410legalized: true411body: |412 bb.0:413 liveins: $q0, $q1414 415 ; Should be inverted. Needs two compares.416 417 ; CHECK-LABEL: name: ult418 ; CHECK: liveins: $q0, $q1419 ; CHECK-NEXT: {{ $}}420 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0421 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1422 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %lhs, %rhs(<2 x s64>)423 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1424 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)425 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGE]], [[BUILD_VECTOR]]426 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)427 ; CHECK-NEXT: RET_ReallyLR implicit $q0428 %lhs:_(<2 x s64>) = COPY $q0429 %rhs:_(<2 x s64>) = COPY $q1430 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ult), %lhs(<2 x s64>), %rhs431 $q0 = COPY %fcmp(<2 x s64>)432 RET_ReallyLR implicit $q0433 434...435---436name: ueq_zero437alignment: 4438legalized: true439body: |440 bb.0:441 liveins: $q0, $q1442 443 ; Should be inverted. Needs two compares.444 445 ; CHECK-LABEL: name: ueq_zero446 ; CHECK: liveins: $q0, $q1447 ; CHECK-NEXT: {{ $}}448 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0449 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0450 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)451 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %lhs, %zero_vec(<2 x s64>)452 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1453 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)454 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGE]], [[BUILD_VECTOR]]455 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)456 ; CHECK-NEXT: RET_ReallyLR implicit $q0457 %lhs:_(<2 x s64>) = COPY $q0458 %zero:_(s64) = G_CONSTANT i64 0459 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero460 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ult), %lhs(<2 x s64>), %zero_vec461 $q0 = COPY %fcmp(<2 x s64>)462 RET_ReallyLR implicit $q0463 464...465---466name: ule467alignment: 4468legalized: true469body: |470 bb.0:471 liveins: $q0, $q1472 473 ; Should be inverted. Needs two compares.474 475 ; CHECK-LABEL: name: ule476 ; CHECK: liveins: $q0, $q1477 ; CHECK-NEXT: {{ $}}478 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0479 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1480 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %lhs, %rhs(<2 x s64>)481 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1482 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)483 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGT]], [[BUILD_VECTOR]]484 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)485 ; CHECK-NEXT: RET_ReallyLR implicit $q0486 %lhs:_(<2 x s64>) = COPY $q0487 %rhs:_(<2 x s64>) = COPY $q1488 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ule), %lhs(<2 x s64>), %rhs489 $q0 = COPY %fcmp(<2 x s64>)490 RET_ReallyLR implicit $q0491 492...493---494name: ule_zero495alignment: 4496legalized: true497body: |498 bb.0:499 liveins: $q0, $q1500 501 ; Should be inverted. Needs two compares.502 503 ; CHECK-LABEL: name: ule_zero504 ; CHECK: liveins: $q0, $q1505 ; CHECK-NEXT: {{ $}}506 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0507 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0508 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)509 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %lhs, %zero_vec(<2 x s64>)510 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1511 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)512 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGT]], [[BUILD_VECTOR]]513 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)514 ; CHECK-NEXT: RET_ReallyLR implicit $q0515 %lhs:_(<2 x s64>) = COPY $q0516 %zero:_(s64) = G_CONSTANT i64 0517 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero518 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ule), %lhs(<2 x s64>), %zero_vec519 $q0 = COPY %fcmp(<2 x s64>)520 RET_ReallyLR implicit $q0521 522...523---524name: ugt525alignment: 4526legalized: true527body: |528 bb.0:529 liveins: $q0, $q1530 531 ; Should be inverted. Needs two compares.532 533 ; CHECK-LABEL: name: ugt534 ; CHECK: liveins: $q0, $q1535 ; CHECK-NEXT: {{ $}}536 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0537 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1538 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %rhs, %lhs(<2 x s64>)539 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1540 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)541 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGE]], [[BUILD_VECTOR]]542 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)543 ; CHECK-NEXT: RET_ReallyLR implicit $q0544 %lhs:_(<2 x s64>) = COPY $q0545 %rhs:_(<2 x s64>) = COPY $q1546 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ugt), %lhs(<2 x s64>), %rhs547 $q0 = COPY %fcmp(<2 x s64>)548 RET_ReallyLR implicit $q0549 550...551---552name: ugt_zero553alignment: 4554legalized: true555body: |556 bb.0:557 liveins: $q0, $q1558 559 ; Should be inverted. Needs two compares.560 561 ; CHECK-LABEL: name: ugt_zero562 ; CHECK: liveins: $q0, $q1563 ; CHECK-NEXT: {{ $}}564 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0565 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0566 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)567 ; CHECK-NEXT: [[FCMGE:%[0-9]+]]:_(<2 x s64>) = G_FCMGE %zero_vec, %lhs(<2 x s64>)568 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1569 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)570 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGE]], [[BUILD_VECTOR]]571 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)572 ; CHECK-NEXT: RET_ReallyLR implicit $q0573 %lhs:_(<2 x s64>) = COPY $q0574 %zero:_(s64) = G_CONSTANT i64 0575 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero576 %fcmp:_(<2 x s64>) = G_FCMP floatpred(ugt), %lhs(<2 x s64>), %zero_vec577 $q0 = COPY %fcmp(<2 x s64>)578 RET_ReallyLR implicit $q0579 580...581---582name: uge583alignment: 4584legalized: true585body: |586 bb.0:587 liveins: $q0, $q1588 589 ; Should be inverted. Needs two compares.590 591 ; CHECK-LABEL: name: uge592 ; CHECK: liveins: $q0, $q1593 ; CHECK-NEXT: {{ $}}594 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0595 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1596 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %rhs, %lhs(<2 x s64>)597 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1598 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)599 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGT]], [[BUILD_VECTOR]]600 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)601 ; CHECK-NEXT: RET_ReallyLR implicit $q0602 %lhs:_(<2 x s64>) = COPY $q0603 %rhs:_(<2 x s64>) = COPY $q1604 %fcmp:_(<2 x s64>) = G_FCMP floatpred(uge), %lhs(<2 x s64>), %rhs605 $q0 = COPY %fcmp(<2 x s64>)606 RET_ReallyLR implicit $q0607 608...609---610name: uge_zero611alignment: 4612legalized: true613body: |614 bb.0:615 liveins: $q0, $q1616 617 ; Should be inverted. Needs two compares.618 619 ; CHECK-LABEL: name: uge_zero620 ; CHECK: liveins: $q0, $q1621 ; CHECK-NEXT: {{ $}}622 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0623 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0624 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)625 ; CHECK-NEXT: [[FCMGT:%[0-9]+]]:_(<2 x s64>) = G_FCMGT %zero_vec, %lhs(<2 x s64>)626 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1627 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)628 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMGT]], [[BUILD_VECTOR]]629 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)630 ; CHECK-NEXT: RET_ReallyLR implicit $q0631 %lhs:_(<2 x s64>) = COPY $q0632 %zero:_(s64) = G_CONSTANT i64 0633 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero634 %fcmp:_(<2 x s64>) = G_FCMP floatpred(uge), %lhs(<2 x s64>), %zero_vec635 $q0 = COPY %fcmp(<2 x s64>)636 RET_ReallyLR implicit $q0637 638...639---640name: une641alignment: 4642legalized: true643body: |644 bb.0:645 liveins: $q0, $q1646 647 ; Negated EQ.648 649 ; CHECK-LABEL: name: une650 ; CHECK: liveins: $q0, $q1651 ; CHECK-NEXT: {{ $}}652 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0653 ; CHECK-NEXT: %rhs:_(<2 x s64>) = COPY $q1654 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<2 x s64>) = G_FCMEQ %lhs, %rhs(<2 x s64>)655 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1656 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)657 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMEQ]], [[BUILD_VECTOR]]658 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)659 ; CHECK-NEXT: RET_ReallyLR implicit $q0660 %lhs:_(<2 x s64>) = COPY $q0661 %rhs:_(<2 x s64>) = COPY $q1662 %fcmp:_(<2 x s64>) = G_FCMP floatpred(une), %lhs(<2 x s64>), %rhs663 $q0 = COPY %fcmp(<2 x s64>)664 RET_ReallyLR implicit $q0665 666...667---668name: une_zero669alignment: 4670legalized: true671body: |672 bb.0:673 liveins: $q0, $q1674 675 ; Negated EQ.676 677 ; CHECK-LABEL: name: une_zero678 ; CHECK: liveins: $q0, $q1679 ; CHECK-NEXT: {{ $}}680 ; CHECK-NEXT: %lhs:_(<2 x s64>) = COPY $q0681 ; CHECK-NEXT: %zero:_(s64) = G_CONSTANT i64 0682 ; CHECK-NEXT: %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero(s64), %zero(s64)683 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<2 x s64>) = G_FCMEQ %lhs, %zero_vec(<2 x s64>)684 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -1685 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[C]](s64), [[C]](s64)686 ; CHECK-NEXT: [[XOR:%[0-9]+]]:_(<2 x s64>) = G_XOR [[FCMEQ]], [[BUILD_VECTOR]]687 ; CHECK-NEXT: $q0 = COPY [[XOR]](<2 x s64>)688 ; CHECK-NEXT: RET_ReallyLR implicit $q0689 %lhs:_(<2 x s64>) = COPY $q0690 %zero:_(s64) = G_CONSTANT i64 0691 %zero_vec:_(<2 x s64>) = G_BUILD_VECTOR %zero, %zero692 %fcmp:_(<2 x s64>) = G_FCMP floatpred(une), %lhs(<2 x s64>), %zero_vec693 $q0 = COPY %fcmp(<2 x s64>)694 RET_ReallyLR implicit $q0695 696...697---698name: lower_v8s16699alignment: 4700legalized: true701body: |702 bb.0:703 liveins: $q0, $q1704 705 ; CHECK-LABEL: name: lower_v8s16706 ; CHECK: liveins: $q0, $q1707 ; CHECK-NEXT: {{ $}}708 ; CHECK-NEXT: %lhs:_(<8 x s16>) = COPY $q0709 ; CHECK-NEXT: %rhs:_(<8 x s16>) = COPY $q1710 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<8 x s16>) = G_FCMEQ %lhs, %rhs(<8 x s16>)711 ; CHECK-NEXT: $q0 = COPY [[FCMEQ]](<8 x s16>)712 ; CHECK-NEXT: RET_ReallyLR implicit $q0713 %lhs:_(<8 x s16>) = COPY $q0714 %rhs:_(<8 x s16>) = COPY $q1715 %fcmp:_(<8 x s16>) = G_FCMP floatpred(oeq), %lhs(<8 x s16>), %rhs716 $q0 = COPY %fcmp(<8 x s16>)717 RET_ReallyLR implicit $q0718 719...720---721name: lower_v4s16722alignment: 4723legalized: true724body: |725 bb.0:726 liveins: $d0, $d1727 728 ; CHECK-LABEL: name: lower_v4s16729 ; CHECK: liveins: $d0, $d1730 ; CHECK-NEXT: {{ $}}731 ; CHECK-NEXT: %lhs:_(<4 x s16>) = COPY $d0732 ; CHECK-NEXT: %rhs:_(<4 x s16>) = COPY $d1733 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<4 x s16>) = G_FCMEQ %lhs, %rhs(<4 x s16>)734 ; CHECK-NEXT: $d0 = COPY [[FCMEQ]](<4 x s16>)735 ; CHECK-NEXT: RET_ReallyLR implicit $d0736 %lhs:_(<4 x s16>) = COPY $d0737 %rhs:_(<4 x s16>) = COPY $d1738 %fcmp:_(<4 x s16>) = G_FCMP floatpred(oeq), %lhs(<4 x s16>), %rhs739 $d0 = COPY %fcmp(<4 x s16>)740 RET_ReallyLR implicit $d0741 742...743---744name: is_not_nan745alignment: 4746legalized: true747body: |748 bb.0:749 liveins: $q0, $q1750 751 ; CHECK-LABEL: name: is_not_nan752 ; CHECK: liveins: $q0, $q1753 ; CHECK-NEXT: {{ $}}754 ; CHECK-NEXT: %lhs:_(<4 x s32>) = COPY $q0755 ; CHECK-NEXT: [[FCMEQ:%[0-9]+]]:_(<4 x s32>) = G_FCMEQ %lhs, %lhs(<4 x s32>)756 ; CHECK-NEXT: $q0 = COPY [[FCMEQ]](<4 x s32>)757 ; CHECK-NEXT: RET_ReallyLR implicit $q0758 %lhs:_(<4 x s32>) = COPY $q0759 %zero:_(s32) = G_FCONSTANT float 0.000000e+00760 %veczero:_(<4 x s32>) = G_BUILD_VECTOR %zero, %zero, %zero, %zero761 %fcmp:_(<4 x s32>) = G_FCMP floatpred(ord), %lhs(<4 x s32>), %veczero762 $q0 = COPY %fcmp(<4 x s32>)763 RET_ReallyLR implicit $q0764