brintos

brintos / llvm-project-archived public Read only

0
0
Text · 25.2 KiB · 591dafc Raw
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