Home | History | Annotate | Download | only in InstCombine
      1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
      2 ; RUN: opt < %s -instcombine -S | FileCheck %s
      3 
      4 ; PR15737
      5 define i1 @t8(float %a, double %b) {
      6 ; CHECK-LABEL: @t8(
      7 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord float %a, 0.000000e+00
      8 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double %b, 0.000000e+00
      9 ; CHECK-NEXT:    [[AND:%.*]] = and i1 [[CMP]], [[CMP1]]
     10 ; CHECK-NEXT:    ret i1 [[AND]]
     11 ;
     12   %cmp = fcmp ord float %a, 0.000000e+00
     13   %cmp1 = fcmp ord double %b, 0.000000e+00
     14   %and = and i1 %cmp, %cmp1
     15   ret i1 %and
     16 }
     17 
     18 define <2 x i1> @t9(<2 x float> %a, <2 x double> %b) {
     19 ; CHECK-LABEL: @t9(
     20 ; CHECK-NEXT:    [[CMP:%.*]] = fcmp ord <2 x float> %a, zeroinitializer
     21 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord <2 x double> %b, zeroinitializer
     22 ; CHECK-NEXT:    [[AND:%.*]] = and <2 x i1> [[CMP]], [[CMP1]]
     23 ; CHECK-NEXT:    ret <2 x i1> [[AND]]
     24 ;
     25   %cmp = fcmp ord <2 x float> %a, zeroinitializer
     26   %cmp1 = fcmp ord <2 x double> %b, zeroinitializer
     27   %and = and <2 x i1> %cmp, %cmp1
     28   ret <2 x i1> %and
     29 }
     30 
     31 define i1 @auto_gen_0(double %a, double %b) {
     32 ; CHECK-LABEL: @auto_gen_0(
     33 ; CHECK-NEXT:    ret i1 false
     34 ;
     35   %cmp = fcmp false double %a, %b
     36   %cmp1 = fcmp false double %a, %b
     37   %retval = and i1 %cmp, %cmp1
     38   ret i1 %retval
     39 }
     40 
     41 define i1 @auto_gen_1(double %a, double %b) {
     42 ; CHECK-LABEL: @auto_gen_1(
     43 ; CHECK-NEXT:    ret i1 false
     44 ;
     45   %cmp = fcmp oeq double %a, %b
     46   %cmp1 = fcmp false double %a, %b
     47   %retval = and i1 %cmp, %cmp1
     48   ret i1 %retval
     49 }
     50 
     51 define i1 @auto_gen_2(double %a, double %b) {
     52 ; CHECK-LABEL: @auto_gen_2(
     53 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
     54 ; CHECK-NEXT:    ret i1 [[TMP1]]
     55 ;
     56   %cmp = fcmp oeq double %a, %b
     57   %cmp1 = fcmp oeq double %a, %b
     58   %retval = and i1 %cmp, %cmp1
     59   ret i1 %retval
     60 }
     61 
     62 define i1 @auto_gen_3(double %a, double %b) {
     63 ; CHECK-LABEL: @auto_gen_3(
     64 ; CHECK-NEXT:    ret i1 false
     65 ;
     66   %cmp = fcmp ogt double %a, %b
     67   %cmp1 = fcmp false double %a, %b
     68   %retval = and i1 %cmp, %cmp1
     69   ret i1 %retval
     70 }
     71 
     72 define i1 @auto_gen_4(double %a, double %b) {
     73 ; CHECK-LABEL: @auto_gen_4(
     74 ; CHECK-NEXT:    ret i1 false
     75 ;
     76   %cmp = fcmp ogt double %a, %b
     77   %cmp1 = fcmp oeq double %a, %b
     78   %retval = and i1 %cmp, %cmp1
     79   ret i1 %retval
     80 }
     81 
     82 define i1 @auto_gen_5(double %a, double %b) {
     83 ; CHECK-LABEL: @auto_gen_5(
     84 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
     85 ; CHECK-NEXT:    ret i1 [[TMP1]]
     86 ;
     87   %cmp = fcmp ogt double %a, %b
     88   %cmp1 = fcmp ogt double %a, %b
     89   %retval = and i1 %cmp, %cmp1
     90   ret i1 %retval
     91 }
     92 
     93 define i1 @auto_gen_6(double %a, double %b) {
     94 ; CHECK-LABEL: @auto_gen_6(
     95 ; CHECK-NEXT:    ret i1 false
     96 ;
     97   %cmp = fcmp oge double %a, %b
     98   %cmp1 = fcmp false double %a, %b
     99   %retval = and i1 %cmp, %cmp1
    100   ret i1 %retval
    101 }
    102 
    103 define i1 @auto_gen_7(double %a, double %b) {
    104 ; CHECK-LABEL: @auto_gen_7(
    105 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    106 ; CHECK-NEXT:    ret i1 [[TMP1]]
    107 ;
    108   %cmp = fcmp oge double %a, %b
    109   %cmp1 = fcmp oeq double %a, %b
    110   %retval = and i1 %cmp, %cmp1
    111   ret i1 %retval
    112 }
    113 
    114 define i1 @auto_gen_8(double %a, double %b) {
    115 ; CHECK-LABEL: @auto_gen_8(
    116 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    117 ; CHECK-NEXT:    ret i1 [[TMP1]]
    118 ;
    119   %cmp = fcmp oge double %a, %b
    120   %cmp1 = fcmp ogt double %a, %b
    121   %retval = and i1 %cmp, %cmp1
    122   ret i1 %retval
    123 }
    124 
    125 define i1 @auto_gen_9(double %a, double %b) {
    126 ; CHECK-LABEL: @auto_gen_9(
    127 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double %a, %b
    128 ; CHECK-NEXT:    ret i1 [[TMP1]]
    129 ;
    130   %cmp = fcmp oge double %a, %b
    131   %cmp1 = fcmp oge double %a, %b
    132   %retval = and i1 %cmp, %cmp1
    133   ret i1 %retval
    134 }
    135 
    136 define i1 @auto_gen_10(double %a, double %b) {
    137 ; CHECK-LABEL: @auto_gen_10(
    138 ; CHECK-NEXT:    ret i1 false
    139 ;
    140   %cmp = fcmp olt double %a, %b
    141   %cmp1 = fcmp false double %a, %b
    142   %retval = and i1 %cmp, %cmp1
    143   ret i1 %retval
    144 }
    145 
    146 define i1 @auto_gen_11(double %a, double %b) {
    147 ; CHECK-LABEL: @auto_gen_11(
    148 ; CHECK-NEXT:    ret i1 false
    149 ;
    150   %cmp = fcmp olt double %a, %b
    151   %cmp1 = fcmp oeq double %a, %b
    152   %retval = and i1 %cmp, %cmp1
    153   ret i1 %retval
    154 }
    155 
    156 define i1 @auto_gen_12(double %a, double %b) {
    157 ; CHECK-LABEL: @auto_gen_12(
    158 ; CHECK-NEXT:    ret i1 false
    159 ;
    160   %cmp = fcmp olt double %a, %b
    161   %cmp1 = fcmp ogt double %a, %b
    162   %retval = and i1 %cmp, %cmp1
    163   ret i1 %retval
    164 }
    165 
    166 define i1 @auto_gen_13(double %a, double %b) {
    167 ; CHECK-LABEL: @auto_gen_13(
    168 ; CHECK-NEXT:    ret i1 false
    169 ;
    170   %cmp = fcmp olt double %a, %b
    171   %cmp1 = fcmp oge double %a, %b
    172   %retval = and i1 %cmp, %cmp1
    173   ret i1 %retval
    174 }
    175 
    176 define i1 @auto_gen_14(double %a, double %b) {
    177 ; CHECK-LABEL: @auto_gen_14(
    178 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    179 ; CHECK-NEXT:    ret i1 [[TMP1]]
    180 ;
    181   %cmp = fcmp olt double %a, %b
    182   %cmp1 = fcmp olt double %a, %b
    183   %retval = and i1 %cmp, %cmp1
    184   ret i1 %retval
    185 }
    186 
    187 define i1 @auto_gen_15(double %a, double %b) {
    188 ; CHECK-LABEL: @auto_gen_15(
    189 ; CHECK-NEXT:    ret i1 false
    190 ;
    191   %cmp = fcmp ole double %a, %b
    192   %cmp1 = fcmp false double %a, %b
    193   %retval = and i1 %cmp, %cmp1
    194   ret i1 %retval
    195 }
    196 
    197 define i1 @auto_gen_16(double %a, double %b) {
    198 ; CHECK-LABEL: @auto_gen_16(
    199 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    200 ; CHECK-NEXT:    ret i1 [[TMP1]]
    201 ;
    202   %cmp = fcmp ole double %a, %b
    203   %cmp1 = fcmp oeq double %a, %b
    204   %retval = and i1 %cmp, %cmp1
    205   ret i1 %retval
    206 }
    207 
    208 define i1 @auto_gen_17(double %a, double %b) {
    209 ; CHECK-LABEL: @auto_gen_17(
    210 ; CHECK-NEXT:    ret i1 false
    211 ;
    212   %cmp = fcmp ole double %a, %b
    213   %cmp1 = fcmp ogt double %a, %b
    214   %retval = and i1 %cmp, %cmp1
    215   ret i1 %retval
    216 }
    217 
    218 define i1 @auto_gen_18(double %a, double %b) {
    219 ; CHECK-LABEL: @auto_gen_18(
    220 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    221 ; CHECK-NEXT:    ret i1 [[TMP1]]
    222 ;
    223   %cmp = fcmp ole double %a, %b
    224   %cmp1 = fcmp oge double %a, %b
    225   %retval = and i1 %cmp, %cmp1
    226   ret i1 %retval
    227 }
    228 
    229 define i1 @auto_gen_19(double %a, double %b) {
    230 ; CHECK-LABEL: @auto_gen_19(
    231 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    232 ; CHECK-NEXT:    ret i1 [[TMP1]]
    233 ;
    234   %cmp = fcmp ole double %a, %b
    235   %cmp1 = fcmp olt double %a, %b
    236   %retval = and i1 %cmp, %cmp1
    237   ret i1 %retval
    238 }
    239 
    240 define i1 @auto_gen_20(double %a, double %b) {
    241 ; CHECK-LABEL: @auto_gen_20(
    242 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double %a, %b
    243 ; CHECK-NEXT:    ret i1 [[TMP1]]
    244 ;
    245   %cmp = fcmp ole double %a, %b
    246   %cmp1 = fcmp ole double %a, %b
    247   %retval = and i1 %cmp, %cmp1
    248   ret i1 %retval
    249 }
    250 
    251 define i1 @auto_gen_21(double %a, double %b) {
    252 ; CHECK-LABEL: @auto_gen_21(
    253 ; CHECK-NEXT:    ret i1 false
    254 ;
    255   %cmp = fcmp one double %a, %b
    256   %cmp1 = fcmp false double %a, %b
    257   %retval = and i1 %cmp, %cmp1
    258   ret i1 %retval
    259 }
    260 
    261 define i1 @auto_gen_22(double %a, double %b) {
    262 ; CHECK-LABEL: @auto_gen_22(
    263 ; CHECK-NEXT:    ret i1 false
    264 ;
    265   %cmp = fcmp one double %a, %b
    266   %cmp1 = fcmp oeq double %a, %b
    267   %retval = and i1 %cmp, %cmp1
    268   ret i1 %retval
    269 }
    270 
    271 define i1 @auto_gen_23(double %a, double %b) {
    272 ; CHECK-LABEL: @auto_gen_23(
    273 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    274 ; CHECK-NEXT:    ret i1 [[TMP1]]
    275 ;
    276   %cmp = fcmp one double %a, %b
    277   %cmp1 = fcmp ogt double %a, %b
    278   %retval = and i1 %cmp, %cmp1
    279   ret i1 %retval
    280 }
    281 
    282 define i1 @auto_gen_24(double %a, double %b) {
    283 ; CHECK-LABEL: @auto_gen_24(
    284 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    285 ; CHECK-NEXT:    ret i1 [[TMP1]]
    286 ;
    287   %cmp = fcmp one double %a, %b
    288   %cmp1 = fcmp oge double %a, %b
    289   %retval = and i1 %cmp, %cmp1
    290   ret i1 %retval
    291 }
    292 
    293 define i1 @auto_gen_25(double %a, double %b) {
    294 ; CHECK-LABEL: @auto_gen_25(
    295 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    296 ; CHECK-NEXT:    ret i1 [[TMP1]]
    297 ;
    298   %cmp = fcmp one double %a, %b
    299   %cmp1 = fcmp olt double %a, %b
    300   %retval = and i1 %cmp, %cmp1
    301   ret i1 %retval
    302 }
    303 
    304 define i1 @auto_gen_26(double %a, double %b) {
    305 ; CHECK-LABEL: @auto_gen_26(
    306 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    307 ; CHECK-NEXT:    ret i1 [[TMP1]]
    308 ;
    309   %cmp = fcmp one double %a, %b
    310   %cmp1 = fcmp ole double %a, %b
    311   %retval = and i1 %cmp, %cmp1
    312   ret i1 %retval
    313 }
    314 
    315 define i1 @auto_gen_27(double %a, double %b) {
    316 ; CHECK-LABEL: @auto_gen_27(
    317 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double %a, %b
    318 ; CHECK-NEXT:    ret i1 [[TMP1]]
    319 ;
    320   %cmp = fcmp one double %a, %b
    321   %cmp1 = fcmp one double %a, %b
    322   %retval = and i1 %cmp, %cmp1
    323   ret i1 %retval
    324 }
    325 
    326 define i1 @auto_gen_28(double %a, double %b) {
    327 ; CHECK-LABEL: @auto_gen_28(
    328 ; CHECK-NEXT:    ret i1 false
    329 ;
    330   %cmp = fcmp ord double %a, %b
    331   %cmp1 = fcmp false double %a, %b
    332   %retval = and i1 %cmp, %cmp1
    333   ret i1 %retval
    334 }
    335 
    336 define i1 @auto_gen_29(double %a, double %b) {
    337 ; CHECK-LABEL: @auto_gen_29(
    338 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    339 ; CHECK-NEXT:    ret i1 [[TMP1]]
    340 ;
    341   %cmp = fcmp ord double %a, %b
    342   %cmp1 = fcmp oeq double %a, %b
    343   %retval = and i1 %cmp, %cmp1
    344   ret i1 %retval
    345 }
    346 
    347 define i1 @auto_gen_30(double %a, double %b) {
    348 ; CHECK-LABEL: @auto_gen_30(
    349 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    350 ; CHECK-NEXT:    ret i1 [[TMP1]]
    351 ;
    352   %cmp = fcmp ord double %a, %b
    353   %cmp1 = fcmp ogt double %a, %b
    354   %retval = and i1 %cmp, %cmp1
    355   ret i1 %retval
    356 }
    357 
    358 define i1 @auto_gen_31(double %a, double %b) {
    359 ; CHECK-LABEL: @auto_gen_31(
    360 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double %a, %b
    361 ; CHECK-NEXT:    ret i1 [[TMP1]]
    362 ;
    363   %cmp = fcmp ord double %a, %b
    364   %cmp1 = fcmp oge double %a, %b
    365   %retval = and i1 %cmp, %cmp1
    366   ret i1 %retval
    367 }
    368 
    369 define i1 @auto_gen_32(double %a, double %b) {
    370 ; CHECK-LABEL: @auto_gen_32(
    371 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    372 ; CHECK-NEXT:    ret i1 [[TMP1]]
    373 ;
    374   %cmp = fcmp ord double %a, %b
    375   %cmp1 = fcmp olt double %a, %b
    376   %retval = and i1 %cmp, %cmp1
    377   ret i1 %retval
    378 }
    379 
    380 define i1 @auto_gen_33(double %a, double %b) {
    381 ; CHECK-LABEL: @auto_gen_33(
    382 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double %a, %b
    383 ; CHECK-NEXT:    ret i1 [[TMP1]]
    384 ;
    385   %cmp = fcmp ord double %a, %b
    386   %cmp1 = fcmp ole double %a, %b
    387   %retval = and i1 %cmp, %cmp1
    388   ret i1 %retval
    389 }
    390 
    391 define i1 @auto_gen_34(double %a, double %b) {
    392 ; CHECK-LABEL: @auto_gen_34(
    393 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double %a, %b
    394 ; CHECK-NEXT:    ret i1 [[TMP1]]
    395 ;
    396   %cmp = fcmp ord double %a, %b
    397   %cmp1 = fcmp one double %a, %b
    398   %retval = and i1 %cmp, %cmp1
    399   ret i1 %retval
    400 }
    401 
    402 define i1 @auto_gen_35(double %a, double %b) {
    403 ; CHECK-LABEL: @auto_gen_35(
    404 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ord double %a, %b
    405 ; CHECK-NEXT:    ret i1 [[TMP1]]
    406 ;
    407   %cmp = fcmp ord double %a, %b
    408   %cmp1 = fcmp ord double %a, %b
    409   %retval = and i1 %cmp, %cmp1
    410   ret i1 %retval
    411 }
    412 
    413 define i1 @auto_gen_36(double %a, double %b) {
    414 ; CHECK-LABEL: @auto_gen_36(
    415 ; CHECK-NEXT:    ret i1 false
    416 ;
    417   %cmp = fcmp ueq double %a, %b
    418   %cmp1 = fcmp false double %a, %b
    419   %retval = and i1 %cmp, %cmp1
    420   ret i1 %retval
    421 }
    422 
    423 define i1 @auto_gen_37(double %a, double %b) {
    424 ; CHECK-LABEL: @auto_gen_37(
    425 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    426 ; CHECK-NEXT:    ret i1 [[TMP1]]
    427 ;
    428   %cmp = fcmp ueq double %a, %b
    429   %cmp1 = fcmp oeq double %a, %b
    430   %retval = and i1 %cmp, %cmp1
    431   ret i1 %retval
    432 }
    433 
    434 define i1 @auto_gen_38(double %a, double %b) {
    435 ; CHECK-LABEL: @auto_gen_38(
    436 ; CHECK-NEXT:    ret i1 false
    437 ;
    438   %cmp = fcmp ueq double %a, %b
    439   %cmp1 = fcmp ogt double %a, %b
    440   %retval = and i1 %cmp, %cmp1
    441   ret i1 %retval
    442 }
    443 
    444 define i1 @auto_gen_39(double %a, double %b) {
    445 ; CHECK-LABEL: @auto_gen_39(
    446 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    447 ; CHECK-NEXT:    ret i1 [[TMP1]]
    448 ;
    449   %cmp = fcmp ueq double %a, %b
    450   %cmp1 = fcmp oge double %a, %b
    451   %retval = and i1 %cmp, %cmp1
    452   ret i1 %retval
    453 }
    454 
    455 define i1 @auto_gen_40(double %a, double %b) {
    456 ; CHECK-LABEL: @auto_gen_40(
    457 ; CHECK-NEXT:    ret i1 false
    458 ;
    459   %cmp = fcmp ueq double %a, %b
    460   %cmp1 = fcmp olt double %a, %b
    461   %retval = and i1 %cmp, %cmp1
    462   ret i1 %retval
    463 }
    464 
    465 define i1 @auto_gen_41(double %a, double %b) {
    466 ; CHECK-LABEL: @auto_gen_41(
    467 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    468 ; CHECK-NEXT:    ret i1 [[TMP1]]
    469 ;
    470   %cmp = fcmp ueq double %a, %b
    471   %cmp1 = fcmp ole double %a, %b
    472   %retval = and i1 %cmp, %cmp1
    473   ret i1 %retval
    474 }
    475 
    476 define i1 @auto_gen_42(double %a, double %b) {
    477 ; CHECK-LABEL: @auto_gen_42(
    478 ; CHECK-NEXT:    ret i1 false
    479 ;
    480   %cmp = fcmp ueq double %a, %b
    481   %cmp1 = fcmp one double %a, %b
    482   %retval = and i1 %cmp, %cmp1
    483   ret i1 %retval
    484 }
    485 
    486 define i1 @auto_gen_43(double %a, double %b) {
    487 ; CHECK-LABEL: @auto_gen_43(
    488 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    489 ; CHECK-NEXT:    ret i1 [[TMP1]]
    490 ;
    491   %cmp = fcmp ueq double %a, %b
    492   %cmp1 = fcmp ord double %a, %b
    493   %retval = and i1 %cmp, %cmp1
    494   ret i1 %retval
    495 }
    496 
    497 define i1 @auto_gen_44(double %a, double %b) {
    498 ; CHECK-LABEL: @auto_gen_44(
    499 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double %a, %b
    500 ; CHECK-NEXT:    ret i1 [[TMP1]]
    501 ;
    502   %cmp = fcmp ueq double %a, %b
    503   %cmp1 = fcmp ueq double %a, %b
    504   %retval = and i1 %cmp, %cmp1
    505   ret i1 %retval
    506 }
    507 
    508 define i1 @auto_gen_45(double %a, double %b) {
    509 ; CHECK-LABEL: @auto_gen_45(
    510 ; CHECK-NEXT:    ret i1 false
    511 ;
    512   %cmp = fcmp ugt double %a, %b
    513   %cmp1 = fcmp false double %a, %b
    514   %retval = and i1 %cmp, %cmp1
    515   ret i1 %retval
    516 }
    517 
    518 define i1 @auto_gen_46(double %a, double %b) {
    519 ; CHECK-LABEL: @auto_gen_46(
    520 ; CHECK-NEXT:    ret i1 false
    521 ;
    522   %cmp = fcmp ugt double %a, %b
    523   %cmp1 = fcmp oeq double %a, %b
    524   %retval = and i1 %cmp, %cmp1
    525   ret i1 %retval
    526 }
    527 
    528 define i1 @auto_gen_47(double %a, double %b) {
    529 ; CHECK-LABEL: @auto_gen_47(
    530 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    531 ; CHECK-NEXT:    ret i1 [[TMP1]]
    532 ;
    533   %cmp = fcmp ugt double %a, %b
    534   %cmp1 = fcmp ogt double %a, %b
    535   %retval = and i1 %cmp, %cmp1
    536   ret i1 %retval
    537 }
    538 
    539 define i1 @auto_gen_48(double %a, double %b) {
    540 ; CHECK-LABEL: @auto_gen_48(
    541 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    542 ; CHECK-NEXT:    ret i1 [[TMP1]]
    543 ;
    544   %cmp = fcmp ugt double %a, %b
    545   %cmp1 = fcmp oge double %a, %b
    546   %retval = and i1 %cmp, %cmp1
    547   ret i1 %retval
    548 }
    549 
    550 define i1 @auto_gen_49(double %a, double %b) {
    551 ; CHECK-LABEL: @auto_gen_49(
    552 ; CHECK-NEXT:    ret i1 false
    553 ;
    554   %cmp = fcmp ugt double %a, %b
    555   %cmp1 = fcmp olt double %a, %b
    556   %retval = and i1 %cmp, %cmp1
    557   ret i1 %retval
    558 }
    559 
    560 define i1 @auto_gen_50(double %a, double %b) {
    561 ; CHECK-LABEL: @auto_gen_50(
    562 ; CHECK-NEXT:    ret i1 false
    563 ;
    564   %cmp = fcmp ugt double %a, %b
    565   %cmp1 = fcmp ole double %a, %b
    566   %retval = and i1 %cmp, %cmp1
    567   ret i1 %retval
    568 }
    569 
    570 define i1 @auto_gen_51(double %a, double %b) {
    571 ; CHECK-LABEL: @auto_gen_51(
    572 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    573 ; CHECK-NEXT:    ret i1 [[TMP1]]
    574 ;
    575   %cmp = fcmp ugt double %a, %b
    576   %cmp1 = fcmp one double %a, %b
    577   %retval = and i1 %cmp, %cmp1
    578   ret i1 %retval
    579 }
    580 
    581 define i1 @auto_gen_52(double %a, double %b) {
    582 ; CHECK-LABEL: @auto_gen_52(
    583 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    584 ; CHECK-NEXT:    ret i1 [[TMP1]]
    585 ;
    586   %cmp = fcmp ugt double %a, %b
    587   %cmp1 = fcmp ord double %a, %b
    588   %retval = and i1 %cmp, %cmp1
    589   ret i1 %retval
    590 }
    591 
    592 define i1 @auto_gen_53(double %a, double %b) {
    593 ; CHECK-LABEL: @auto_gen_53(
    594 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
    595 ; CHECK-NEXT:    ret i1 [[TMP1]]
    596 ;
    597   %cmp = fcmp ugt double %a, %b
    598   %cmp1 = fcmp ueq double %a, %b
    599   %retval = and i1 %cmp, %cmp1
    600   ret i1 %retval
    601 }
    602 
    603 define i1 @auto_gen_54(double %a, double %b) {
    604 ; CHECK-LABEL: @auto_gen_54(
    605 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double %a, %b
    606 ; CHECK-NEXT:    ret i1 [[TMP1]]
    607 ;
    608   %cmp = fcmp ugt double %a, %b
    609   %cmp1 = fcmp ugt double %a, %b
    610   %retval = and i1 %cmp, %cmp1
    611   ret i1 %retval
    612 }
    613 
    614 define i1 @auto_gen_55(double %a, double %b) {
    615 ; CHECK-LABEL: @auto_gen_55(
    616 ; CHECK-NEXT:    ret i1 false
    617 ;
    618   %cmp = fcmp uge double %a, %b
    619   %cmp1 = fcmp false double %a, %b
    620   %retval = and i1 %cmp, %cmp1
    621   ret i1 %retval
    622 }
    623 
    624 define i1 @auto_gen_56(double %a, double %b) {
    625 ; CHECK-LABEL: @auto_gen_56(
    626 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    627 ; CHECK-NEXT:    ret i1 [[TMP1]]
    628 ;
    629   %cmp = fcmp uge double %a, %b
    630   %cmp1 = fcmp oeq double %a, %b
    631   %retval = and i1 %cmp, %cmp1
    632   ret i1 %retval
    633 }
    634 
    635 define i1 @auto_gen_57(double %a, double %b) {
    636 ; CHECK-LABEL: @auto_gen_57(
    637 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    638 ; CHECK-NEXT:    ret i1 [[TMP1]]
    639 ;
    640   %cmp = fcmp uge double %a, %b
    641   %cmp1 = fcmp ogt double %a, %b
    642   %retval = and i1 %cmp, %cmp1
    643   ret i1 %retval
    644 }
    645 
    646 define i1 @auto_gen_58(double %a, double %b) {
    647 ; CHECK-LABEL: @auto_gen_58(
    648 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double %a, %b
    649 ; CHECK-NEXT:    ret i1 [[TMP1]]
    650 ;
    651   %cmp = fcmp uge double %a, %b
    652   %cmp1 = fcmp oge double %a, %b
    653   %retval = and i1 %cmp, %cmp1
    654   ret i1 %retval
    655 }
    656 
    657 define i1 @auto_gen_59(double %a, double %b) {
    658 ; CHECK-LABEL: @auto_gen_59(
    659 ; CHECK-NEXT:    ret i1 false
    660 ;
    661   %cmp = fcmp uge double %a, %b
    662   %cmp1 = fcmp olt double %a, %b
    663   %retval = and i1 %cmp, %cmp1
    664   ret i1 %retval
    665 }
    666 
    667 define i1 @auto_gen_60(double %a, double %b) {
    668 ; CHECK-LABEL: @auto_gen_60(
    669 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    670 ; CHECK-NEXT:    ret i1 [[TMP1]]
    671 ;
    672   %cmp = fcmp uge double %a, %b
    673   %cmp1 = fcmp ole double %a, %b
    674   %retval = and i1 %cmp, %cmp1
    675   ret i1 %retval
    676 }
    677 
    678 define i1 @auto_gen_61(double %a, double %b) {
    679 ; CHECK-LABEL: @auto_gen_61(
    680 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
    681 ; CHECK-NEXT:    ret i1 [[TMP1]]
    682 ;
    683   %cmp = fcmp uge double %a, %b
    684   %cmp1 = fcmp one double %a, %b
    685   %retval = and i1 %cmp, %cmp1
    686   ret i1 %retval
    687 }
    688 
    689 define i1 @auto_gen_62(double %a, double %b) {
    690 ; CHECK-LABEL: @auto_gen_62(
    691 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oge double %a, %b
    692 ; CHECK-NEXT:    ret i1 [[TMP1]]
    693 ;
    694   %cmp = fcmp uge double %a, %b
    695   %cmp1 = fcmp ord double %a, %b
    696   %retval = and i1 %cmp, %cmp1
    697   ret i1 %retval
    698 }
    699 
    700 define i1 @auto_gen_63(double %a, double %b) {
    701 ; CHECK-LABEL: @auto_gen_63(
    702 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double %a, %b
    703 ; CHECK-NEXT:    ret i1 [[TMP1]]
    704 ;
    705   %cmp = fcmp uge double %a, %b
    706   %cmp1 = fcmp ueq double %a, %b
    707   %retval = and i1 %cmp, %cmp1
    708   ret i1 %retval
    709 }
    710 
    711 define i1 @auto_gen_64(double %a, double %b) {
    712 ; CHECK-LABEL: @auto_gen_64(
    713 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double %a, %b
    714 ; CHECK-NEXT:    ret i1 [[TMP1]]
    715 ;
    716   %cmp = fcmp uge double %a, %b
    717   %cmp1 = fcmp ugt double %a, %b
    718   %retval = and i1 %cmp, %cmp1
    719   ret i1 %retval
    720 }
    721 
    722 define i1 @auto_gen_65(double %a, double %b) {
    723 ; CHECK-LABEL: @auto_gen_65(
    724 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uge double %a, %b
    725 ; CHECK-NEXT:    ret i1 [[TMP1]]
    726 ;
    727   %cmp = fcmp uge double %a, %b
    728   %cmp1 = fcmp uge double %a, %b
    729   %retval = and i1 %cmp, %cmp1
    730   ret i1 %retval
    731 }
    732 
    733 define i1 @auto_gen_66(double %a, double %b) {
    734 ; CHECK-LABEL: @auto_gen_66(
    735 ; CHECK-NEXT:    ret i1 false
    736 ;
    737   %cmp = fcmp ult double %a, %b
    738   %cmp1 = fcmp false double %a, %b
    739   %retval = and i1 %cmp, %cmp1
    740   ret i1 %retval
    741 }
    742 
    743 define i1 @auto_gen_67(double %a, double %b) {
    744 ; CHECK-LABEL: @auto_gen_67(
    745 ; CHECK-NEXT:    ret i1 false
    746 ;
    747   %cmp = fcmp ult double %a, %b
    748   %cmp1 = fcmp oeq double %a, %b
    749   %retval = and i1 %cmp, %cmp1
    750   ret i1 %retval
    751 }
    752 
    753 define i1 @auto_gen_68(double %a, double %b) {
    754 ; CHECK-LABEL: @auto_gen_68(
    755 ; CHECK-NEXT:    ret i1 false
    756 ;
    757   %cmp = fcmp ult double %a, %b
    758   %cmp1 = fcmp ogt double %a, %b
    759   %retval = and i1 %cmp, %cmp1
    760   ret i1 %retval
    761 }
    762 
    763 define i1 @auto_gen_69(double %a, double %b) {
    764 ; CHECK-LABEL: @auto_gen_69(
    765 ; CHECK-NEXT:    ret i1 false
    766 ;
    767   %cmp = fcmp ult double %a, %b
    768   %cmp1 = fcmp oge double %a, %b
    769   %retval = and i1 %cmp, %cmp1
    770   ret i1 %retval
    771 }
    772 
    773 define i1 @auto_gen_70(double %a, double %b) {
    774 ; CHECK-LABEL: @auto_gen_70(
    775 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    776 ; CHECK-NEXT:    ret i1 [[TMP1]]
    777 ;
    778   %cmp = fcmp ult double %a, %b
    779   %cmp1 = fcmp olt double %a, %b
    780   %retval = and i1 %cmp, %cmp1
    781   ret i1 %retval
    782 }
    783 
    784 define i1 @auto_gen_71(double %a, double %b) {
    785 ; CHECK-LABEL: @auto_gen_71(
    786 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    787 ; CHECK-NEXT:    ret i1 [[TMP1]]
    788 ;
    789   %cmp = fcmp ult double %a, %b
    790   %cmp1 = fcmp ole double %a, %b
    791   %retval = and i1 %cmp, %cmp1
    792   ret i1 %retval
    793 }
    794 
    795 define i1 @auto_gen_72(double %a, double %b) {
    796 ; CHECK-LABEL: @auto_gen_72(
    797 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    798 ; CHECK-NEXT:    ret i1 [[TMP1]]
    799 ;
    800   %cmp = fcmp ult double %a, %b
    801   %cmp1 = fcmp one double %a, %b
    802   %retval = and i1 %cmp, %cmp1
    803   ret i1 %retval
    804 }
    805 
    806 define i1 @auto_gen_73(double %a, double %b) {
    807 ; CHECK-LABEL: @auto_gen_73(
    808 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    809 ; CHECK-NEXT:    ret i1 [[TMP1]]
    810 ;
    811   %cmp = fcmp ult double %a, %b
    812   %cmp1 = fcmp ord double %a, %b
    813   %retval = and i1 %cmp, %cmp1
    814   ret i1 %retval
    815 }
    816 
    817 define i1 @auto_gen_74(double %a, double %b) {
    818 ; CHECK-LABEL: @auto_gen_74(
    819 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
    820 ; CHECK-NEXT:    ret i1 [[TMP1]]
    821 ;
    822   %cmp = fcmp ult double %a, %b
    823   %cmp1 = fcmp ueq double %a, %b
    824   %retval = and i1 %cmp, %cmp1
    825   ret i1 %retval
    826 }
    827 
    828 define i1 @auto_gen_75(double %a, double %b) {
    829 ; CHECK-LABEL: @auto_gen_75(
    830 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
    831 ; CHECK-NEXT:    ret i1 [[TMP1]]
    832 ;
    833   %cmp = fcmp ult double %a, %b
    834   %cmp1 = fcmp ugt double %a, %b
    835   %retval = and i1 %cmp, %cmp1
    836   ret i1 %retval
    837 }
    838 
    839 define i1 @auto_gen_76(double %a, double %b) {
    840 ; CHECK-LABEL: @auto_gen_76(
    841 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
    842 ; CHECK-NEXT:    ret i1 [[TMP1]]
    843 ;
    844   %cmp = fcmp ult double %a, %b
    845   %cmp1 = fcmp uge double %a, %b
    846   %retval = and i1 %cmp, %cmp1
    847   ret i1 %retval
    848 }
    849 
    850 define i1 @auto_gen_77(double %a, double %b) {
    851 ; CHECK-LABEL: @auto_gen_77(
    852 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double %a, %b
    853 ; CHECK-NEXT:    ret i1 [[TMP1]]
    854 ;
    855   %cmp = fcmp ult double %a, %b
    856   %cmp1 = fcmp ult double %a, %b
    857   %retval = and i1 %cmp, %cmp1
    858   ret i1 %retval
    859 }
    860 
    861 define i1 @auto_gen_78(double %a, double %b) {
    862 ; CHECK-LABEL: @auto_gen_78(
    863 ; CHECK-NEXT:    ret i1 false
    864 ;
    865   %cmp = fcmp ule double %a, %b
    866   %cmp1 = fcmp false double %a, %b
    867   %retval = and i1 %cmp, %cmp1
    868   ret i1 %retval
    869 }
    870 
    871 define i1 @auto_gen_79(double %a, double %b) {
    872 ; CHECK-LABEL: @auto_gen_79(
    873 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    874 ; CHECK-NEXT:    ret i1 [[TMP1]]
    875 ;
    876   %cmp = fcmp ule double %a, %b
    877   %cmp1 = fcmp oeq double %a, %b
    878   %retval = and i1 %cmp, %cmp1
    879   ret i1 %retval
    880 }
    881 
    882 define i1 @auto_gen_80(double %a, double %b) {
    883 ; CHECK-LABEL: @auto_gen_80(
    884 ; CHECK-NEXT:    ret i1 false
    885 ;
    886   %cmp = fcmp ule double %a, %b
    887   %cmp1 = fcmp ogt double %a, %b
    888   %retval = and i1 %cmp, %cmp1
    889   ret i1 %retval
    890 }
    891 
    892 define i1 @auto_gen_81(double %a, double %b) {
    893 ; CHECK-LABEL: @auto_gen_81(
    894 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp oeq double %a, %b
    895 ; CHECK-NEXT:    ret i1 [[TMP1]]
    896 ;
    897   %cmp = fcmp ule double %a, %b
    898   %cmp1 = fcmp oge double %a, %b
    899   %retval = and i1 %cmp, %cmp1
    900   ret i1 %retval
    901 }
    902 
    903 define i1 @auto_gen_82(double %a, double %b) {
    904 ; CHECK-LABEL: @auto_gen_82(
    905 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    906 ; CHECK-NEXT:    ret i1 [[TMP1]]
    907 ;
    908   %cmp = fcmp ule double %a, %b
    909   %cmp1 = fcmp olt double %a, %b
    910   %retval = and i1 %cmp, %cmp1
    911   ret i1 %retval
    912 }
    913 
    914 define i1 @auto_gen_83(double %a, double %b) {
    915 ; CHECK-LABEL: @auto_gen_83(
    916 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double %a, %b
    917 ; CHECK-NEXT:    ret i1 [[TMP1]]
    918 ;
    919   %cmp = fcmp ule double %a, %b
    920   %cmp1 = fcmp ole double %a, %b
    921   %retval = and i1 %cmp, %cmp1
    922   ret i1 %retval
    923 }
    924 
    925 define i1 @auto_gen_84(double %a, double %b) {
    926 ; CHECK-LABEL: @auto_gen_84(
    927 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
    928 ; CHECK-NEXT:    ret i1 [[TMP1]]
    929 ;
    930   %cmp = fcmp ule double %a, %b
    931   %cmp1 = fcmp one double %a, %b
    932   %retval = and i1 %cmp, %cmp1
    933   ret i1 %retval
    934 }
    935 
    936 define i1 @auto_gen_85(double %a, double %b) {
    937 ; CHECK-LABEL: @auto_gen_85(
    938 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ole double %a, %b
    939 ; CHECK-NEXT:    ret i1 [[TMP1]]
    940 ;
    941   %cmp = fcmp ule double %a, %b
    942   %cmp1 = fcmp ord double %a, %b
    943   %retval = and i1 %cmp, %cmp1
    944   ret i1 %retval
    945 }
    946 
    947 define i1 @auto_gen_86(double %a, double %b) {
    948 ; CHECK-LABEL: @auto_gen_86(
    949 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double %a, %b
    950 ; CHECK-NEXT:    ret i1 [[TMP1]]
    951 ;
    952   %cmp = fcmp ule double %a, %b
    953   %cmp1 = fcmp ueq double %a, %b
    954   %retval = and i1 %cmp, %cmp1
    955   ret i1 %retval
    956 }
    957 
    958 define i1 @auto_gen_87(double %a, double %b) {
    959 ; CHECK-LABEL: @auto_gen_87(
    960 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
    961 ; CHECK-NEXT:    ret i1 [[TMP1]]
    962 ;
    963   %cmp = fcmp ule double %a, %b
    964   %cmp1 = fcmp ugt double %a, %b
    965   %retval = and i1 %cmp, %cmp1
    966   ret i1 %retval
    967 }
    968 
    969 define i1 @auto_gen_88(double %a, double %b) {
    970 ; CHECK-LABEL: @auto_gen_88(
    971 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ueq double %a, %b
    972 ; CHECK-NEXT:    ret i1 [[TMP1]]
    973 ;
    974   %cmp = fcmp ule double %a, %b
    975   %cmp1 = fcmp uge double %a, %b
    976   %retval = and i1 %cmp, %cmp1
    977   ret i1 %retval
    978 }
    979 
    980 define i1 @auto_gen_89(double %a, double %b) {
    981 ; CHECK-LABEL: @auto_gen_89(
    982 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double %a, %b
    983 ; CHECK-NEXT:    ret i1 [[TMP1]]
    984 ;
    985   %cmp = fcmp ule double %a, %b
    986   %cmp1 = fcmp ult double %a, %b
    987   %retval = and i1 %cmp, %cmp1
    988   ret i1 %retval
    989 }
    990 
    991 define i1 @auto_gen_90(double %a, double %b) {
    992 ; CHECK-LABEL: @auto_gen_90(
    993 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ule double %a, %b
    994 ; CHECK-NEXT:    ret i1 [[TMP1]]
    995 ;
    996   %cmp = fcmp ule double %a, %b
    997   %cmp1 = fcmp ule double %a, %b
    998   %retval = and i1 %cmp, %cmp1
    999   ret i1 %retval
   1000 }
   1001 
   1002 define i1 @auto_gen_91(double %a, double %b) {
   1003 ; CHECK-LABEL: @auto_gen_91(
   1004 ; CHECK-NEXT:    ret i1 false
   1005 ;
   1006   %cmp = fcmp une double %a, %b
   1007   %cmp1 = fcmp false double %a, %b
   1008   %retval = and i1 %cmp, %cmp1
   1009   ret i1 %retval
   1010 }
   1011 
   1012 define i1 @auto_gen_92(double %a, double %b) {
   1013 ; CHECK-LABEL: @auto_gen_92(
   1014 ; CHECK-NEXT:    ret i1 false
   1015 ;
   1016   %cmp = fcmp une double %a, %b
   1017   %cmp1 = fcmp oeq double %a, %b
   1018   %retval = and i1 %cmp, %cmp1
   1019   ret i1 %retval
   1020 }
   1021 
   1022 define i1 @auto_gen_93(double %a, double %b) {
   1023 ; CHECK-LABEL: @auto_gen_93(
   1024 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
   1025 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1026 ;
   1027   %cmp = fcmp une double %a, %b
   1028   %cmp1 = fcmp ogt double %a, %b
   1029   %retval = and i1 %cmp, %cmp1
   1030   ret i1 %retval
   1031 }
   1032 
   1033 define i1 @auto_gen_94(double %a, double %b) {
   1034 ; CHECK-LABEL: @auto_gen_94(
   1035 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ogt double %a, %b
   1036 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1037 ;
   1038   %cmp = fcmp une double %a, %b
   1039   %cmp1 = fcmp oge double %a, %b
   1040   %retval = and i1 %cmp, %cmp1
   1041   ret i1 %retval
   1042 }
   1043 
   1044 define i1 @auto_gen_95(double %a, double %b) {
   1045 ; CHECK-LABEL: @auto_gen_95(
   1046 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
   1047 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1048 ;
   1049   %cmp = fcmp une double %a, %b
   1050   %cmp1 = fcmp olt double %a, %b
   1051   %retval = and i1 %cmp, %cmp1
   1052   ret i1 %retval
   1053 }
   1054 
   1055 define i1 @auto_gen_96(double %a, double %b) {
   1056 ; CHECK-LABEL: @auto_gen_96(
   1057 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp olt double %a, %b
   1058 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1059 ;
   1060   %cmp = fcmp une double %a, %b
   1061   %cmp1 = fcmp ole double %a, %b
   1062   %retval = and i1 %cmp, %cmp1
   1063   ret i1 %retval
   1064 }
   1065 
   1066 define i1 @auto_gen_97(double %a, double %b) {
   1067 ; CHECK-LABEL: @auto_gen_97(
   1068 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double %a, %b
   1069 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1070 ;
   1071   %cmp = fcmp une double %a, %b
   1072   %cmp1 = fcmp one double %a, %b
   1073   %retval = and i1 %cmp, %cmp1
   1074   ret i1 %retval
   1075 }
   1076 
   1077 define i1 @auto_gen_98(double %a, double %b) {
   1078 ; CHECK-LABEL: @auto_gen_98(
   1079 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp one double %a, %b
   1080 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1081 ;
   1082   %cmp = fcmp une double %a, %b
   1083   %cmp1 = fcmp ord double %a, %b
   1084   %retval = and i1 %cmp, %cmp1
   1085   ret i1 %retval
   1086 }
   1087 
   1088 define i1 @auto_gen_99(double %a, double %b) {
   1089 ; CHECK-LABEL: @auto_gen_99(
   1090 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1091 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1092 ;
   1093   %cmp = fcmp une double %a, %b
   1094   %cmp1 = fcmp ueq double %a, %b
   1095   %retval = and i1 %cmp, %cmp1
   1096   ret i1 %retval
   1097 }
   1098 
   1099 define i1 @auto_gen_100(double %a, double %b) {
   1100 ; CHECK-LABEL: @auto_gen_100(
   1101 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double %a, %b
   1102 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1103 ;
   1104   %cmp = fcmp une double %a, %b
   1105   %cmp1 = fcmp ugt double %a, %b
   1106   %retval = and i1 %cmp, %cmp1
   1107   ret i1 %retval
   1108 }
   1109 
   1110 define i1 @auto_gen_101(double %a, double %b) {
   1111 ; CHECK-LABEL: @auto_gen_101(
   1112 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ugt double %a, %b
   1113 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1114 ;
   1115   %cmp = fcmp une double %a, %b
   1116   %cmp1 = fcmp uge double %a, %b
   1117   %retval = and i1 %cmp, %cmp1
   1118   ret i1 %retval
   1119 }
   1120 
   1121 define i1 @auto_gen_102(double %a, double %b) {
   1122 ; CHECK-LABEL: @auto_gen_102(
   1123 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double %a, %b
   1124 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1125 ;
   1126   %cmp = fcmp une double %a, %b
   1127   %cmp1 = fcmp ult double %a, %b
   1128   %retval = and i1 %cmp, %cmp1
   1129   ret i1 %retval
   1130 }
   1131 
   1132 define i1 @auto_gen_103(double %a, double %b) {
   1133 ; CHECK-LABEL: @auto_gen_103(
   1134 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp ult double %a, %b
   1135 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1136 ;
   1137   %cmp = fcmp une double %a, %b
   1138   %cmp1 = fcmp ule double %a, %b
   1139   %retval = and i1 %cmp, %cmp1
   1140   ret i1 %retval
   1141 }
   1142 
   1143 define i1 @auto_gen_104(double %a, double %b) {
   1144 ; CHECK-LABEL: @auto_gen_104(
   1145 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp une double %a, %b
   1146 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1147 ;
   1148   %cmp = fcmp une double %a, %b
   1149   %cmp1 = fcmp une double %a, %b
   1150   %retval = and i1 %cmp, %cmp1
   1151   ret i1 %retval
   1152 }
   1153 
   1154 define i1 @auto_gen_105(double %a, double %b) {
   1155 ; CHECK-LABEL: @auto_gen_105(
   1156 ; CHECK-NEXT:    ret i1 false
   1157 ;
   1158   %cmp = fcmp uno double %a, %b
   1159   %cmp1 = fcmp false double %a, %b
   1160   %retval = and i1 %cmp, %cmp1
   1161   ret i1 %retval
   1162 }
   1163 
   1164 define i1 @auto_gen_106(double %a, double %b) {
   1165 ; CHECK-LABEL: @auto_gen_106(
   1166 ; CHECK-NEXT:    ret i1 false
   1167 ;
   1168   %cmp = fcmp uno double %a, %b
   1169   %cmp1 = fcmp oeq double %a, %b
   1170   %retval = and i1 %cmp, %cmp1
   1171   ret i1 %retval
   1172 }
   1173 
   1174 define i1 @auto_gen_107(double %a, double %b) {
   1175 ; CHECK-LABEL: @auto_gen_107(
   1176 ; CHECK-NEXT:    ret i1 false
   1177 ;
   1178   %cmp = fcmp uno double %a, %b
   1179   %cmp1 = fcmp ogt double %a, %b
   1180   %retval = and i1 %cmp, %cmp1
   1181   ret i1 %retval
   1182 }
   1183 
   1184 define i1 @auto_gen_108(double %a, double %b) {
   1185 ; CHECK-LABEL: @auto_gen_108(
   1186 ; CHECK-NEXT:    ret i1 false
   1187 ;
   1188   %cmp = fcmp uno double %a, %b
   1189   %cmp1 = fcmp oge double %a, %b
   1190   %retval = and i1 %cmp, %cmp1
   1191   ret i1 %retval
   1192 }
   1193 
   1194 define i1 @auto_gen_109(double %a, double %b) {
   1195 ; CHECK-LABEL: @auto_gen_109(
   1196 ; CHECK-NEXT:    ret i1 false
   1197 ;
   1198   %cmp = fcmp uno double %a, %b
   1199   %cmp1 = fcmp olt double %a, %b
   1200   %retval = and i1 %cmp, %cmp1
   1201   ret i1 %retval
   1202 }
   1203 
   1204 define i1 @auto_gen_110(double %a, double %b) {
   1205 ; CHECK-LABEL: @auto_gen_110(
   1206 ; CHECK-NEXT:    ret i1 false
   1207 ;
   1208   %cmp = fcmp uno double %a, %b
   1209   %cmp1 = fcmp ole double %a, %b
   1210   %retval = and i1 %cmp, %cmp1
   1211   ret i1 %retval
   1212 }
   1213 
   1214 define i1 @auto_gen_111(double %a, double %b) {
   1215 ; CHECK-LABEL: @auto_gen_111(
   1216 ; CHECK-NEXT:    ret i1 false
   1217 ;
   1218   %cmp = fcmp uno double %a, %b
   1219   %cmp1 = fcmp one double %a, %b
   1220   %retval = and i1 %cmp, %cmp1
   1221   ret i1 %retval
   1222 }
   1223 
   1224 define i1 @auto_gen_112(double %a, double %b) {
   1225 ; CHECK-LABEL: @auto_gen_112(
   1226 ; CHECK-NEXT:    ret i1 false
   1227 ;
   1228   %cmp = fcmp uno double %a, %b
   1229   %cmp1 = fcmp ord double %a, %b
   1230   %retval = and i1 %cmp, %cmp1
   1231   ret i1 %retval
   1232 }
   1233 
   1234 define i1 @auto_gen_113(double %a, double %b) {
   1235 ; CHECK-LABEL: @auto_gen_113(
   1236 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1237 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1238 ;
   1239   %cmp = fcmp uno double %a, %b
   1240   %cmp1 = fcmp ueq double %a, %b
   1241   %retval = and i1 %cmp, %cmp1
   1242   ret i1 %retval
   1243 }
   1244 
   1245 define i1 @auto_gen_114(double %a, double %b) {
   1246 ; CHECK-LABEL: @auto_gen_114(
   1247 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1248 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1249 ;
   1250   %cmp = fcmp uno double %a, %b
   1251   %cmp1 = fcmp ugt double %a, %b
   1252   %retval = and i1 %cmp, %cmp1
   1253   ret i1 %retval
   1254 }
   1255 
   1256 define i1 @auto_gen_115(double %a, double %b) {
   1257 ; CHECK-LABEL: @auto_gen_115(
   1258 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1259 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1260 ;
   1261   %cmp = fcmp uno double %a, %b
   1262   %cmp1 = fcmp uge double %a, %b
   1263   %retval = and i1 %cmp, %cmp1
   1264   ret i1 %retval
   1265 }
   1266 
   1267 define i1 @auto_gen_116(double %a, double %b) {
   1268 ; CHECK-LABEL: @auto_gen_116(
   1269 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1270 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1271 ;
   1272   %cmp = fcmp uno double %a, %b
   1273   %cmp1 = fcmp ult double %a, %b
   1274   %retval = and i1 %cmp, %cmp1
   1275   ret i1 %retval
   1276 }
   1277 
   1278 define i1 @auto_gen_117(double %a, double %b) {
   1279 ; CHECK-LABEL: @auto_gen_117(
   1280 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1281 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1282 ;
   1283   %cmp = fcmp uno double %a, %b
   1284   %cmp1 = fcmp ule double %a, %b
   1285   %retval = and i1 %cmp, %cmp1
   1286   ret i1 %retval
   1287 }
   1288 
   1289 define i1 @auto_gen_118(double %a, double %b) {
   1290 ; CHECK-LABEL: @auto_gen_118(
   1291 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1292 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1293 ;
   1294   %cmp = fcmp uno double %a, %b
   1295   %cmp1 = fcmp une double %a, %b
   1296   %retval = and i1 %cmp, %cmp1
   1297   ret i1 %retval
   1298 }
   1299 
   1300 define i1 @auto_gen_119(double %a, double %b) {
   1301 ; CHECK-LABEL: @auto_gen_119(
   1302 ; CHECK-NEXT:    [[TMP1:%.*]] = fcmp uno double %a, %b
   1303 ; CHECK-NEXT:    ret i1 [[TMP1]]
   1304 ;
   1305   %cmp = fcmp uno double %a, %b
   1306   %cmp1 = fcmp uno double %a, %b
   1307   %retval = and i1 %cmp, %cmp1
   1308   ret i1 %retval
   1309 }
   1310 
   1311 define i1 @auto_gen_120(double %a, double %b) {
   1312 ; CHECK-LABEL: @auto_gen_120(
   1313 ; CHECK-NEXT:    ret i1 false
   1314 ;
   1315   %cmp = fcmp true double %a, %b
   1316   %cmp1 = fcmp false double %a, %b
   1317   %retval = and i1 %cmp, %cmp1
   1318   ret i1 %retval
   1319 }
   1320 
   1321 define i1 @auto_gen_121(double %a, double %b) {
   1322 ; CHECK-LABEL: @auto_gen_121(
   1323 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oeq double %a, %b
   1324 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1325 ;
   1326   %cmp = fcmp true double %a, %b
   1327   %cmp1 = fcmp oeq double %a, %b
   1328   %retval = and i1 %cmp, %cmp1
   1329   ret i1 %retval
   1330 }
   1331 
   1332 define i1 @auto_gen_122(double %a, double %b) {
   1333 ; CHECK-LABEL: @auto_gen_122(
   1334 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ogt double %a, %b
   1335 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1336 ;
   1337   %cmp = fcmp true double %a, %b
   1338   %cmp1 = fcmp ogt double %a, %b
   1339   %retval = and i1 %cmp, %cmp1
   1340   ret i1 %retval
   1341 }
   1342 
   1343 define i1 @auto_gen_123(double %a, double %b) {
   1344 ; CHECK-LABEL: @auto_gen_123(
   1345 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp oge double %a, %b
   1346 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1347 ;
   1348   %cmp = fcmp true double %a, %b
   1349   %cmp1 = fcmp oge double %a, %b
   1350   %retval = and i1 %cmp, %cmp1
   1351   ret i1 %retval
   1352 }
   1353 
   1354 define i1 @auto_gen_124(double %a, double %b) {
   1355 ; CHECK-LABEL: @auto_gen_124(
   1356 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp olt double %a, %b
   1357 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1358 ;
   1359   %cmp = fcmp true double %a, %b
   1360   %cmp1 = fcmp olt double %a, %b
   1361   %retval = and i1 %cmp, %cmp1
   1362   ret i1 %retval
   1363 }
   1364 
   1365 define i1 @auto_gen_125(double %a, double %b) {
   1366 ; CHECK-LABEL: @auto_gen_125(
   1367 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ole double %a, %b
   1368 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1369 ;
   1370   %cmp = fcmp true double %a, %b
   1371   %cmp1 = fcmp ole double %a, %b
   1372   %retval = and i1 %cmp, %cmp1
   1373   ret i1 %retval
   1374 }
   1375 
   1376 define i1 @auto_gen_126(double %a, double %b) {
   1377 ; CHECK-LABEL: @auto_gen_126(
   1378 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp one double %a, %b
   1379 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1380 ;
   1381   %cmp = fcmp true double %a, %b
   1382   %cmp1 = fcmp one double %a, %b
   1383   %retval = and i1 %cmp, %cmp1
   1384   ret i1 %retval
   1385 }
   1386 
   1387 define i1 @auto_gen_127(double %a, double %b) {
   1388 ; CHECK-LABEL: @auto_gen_127(
   1389 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ord double %a, %b
   1390 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1391 ;
   1392   %cmp = fcmp true double %a, %b
   1393   %cmp1 = fcmp ord double %a, %b
   1394   %retval = and i1 %cmp, %cmp1
   1395   ret i1 %retval
   1396 }
   1397 
   1398 define i1 @auto_gen_128(double %a, double %b) {
   1399 ; CHECK-LABEL: @auto_gen_128(
   1400 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ueq double %a, %b
   1401 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1402 ;
   1403   %cmp = fcmp true double %a, %b
   1404   %cmp1 = fcmp ueq double %a, %b
   1405   %retval = and i1 %cmp, %cmp1
   1406   ret i1 %retval
   1407 }
   1408 
   1409 define i1 @auto_gen_129(double %a, double %b) {
   1410 ; CHECK-LABEL: @auto_gen_129(
   1411 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ugt double %a, %b
   1412 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1413 ;
   1414   %cmp = fcmp true double %a, %b
   1415   %cmp1 = fcmp ugt double %a, %b
   1416   %retval = and i1 %cmp, %cmp1
   1417   ret i1 %retval
   1418 }
   1419 
   1420 define i1 @auto_gen_130(double %a, double %b) {
   1421 ; CHECK-LABEL: @auto_gen_130(
   1422 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uge double %a, %b
   1423 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1424 ;
   1425   %cmp = fcmp true double %a, %b
   1426   %cmp1 = fcmp uge double %a, %b
   1427   %retval = and i1 %cmp, %cmp1
   1428   ret i1 %retval
   1429 }
   1430 
   1431 define i1 @auto_gen_131(double %a, double %b) {
   1432 ; CHECK-LABEL: @auto_gen_131(
   1433 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ult double %a, %b
   1434 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1435 ;
   1436   %cmp = fcmp true double %a, %b
   1437   %cmp1 = fcmp ult double %a, %b
   1438   %retval = and i1 %cmp, %cmp1
   1439   ret i1 %retval
   1440 }
   1441 
   1442 define i1 @auto_gen_132(double %a, double %b) {
   1443 ; CHECK-LABEL: @auto_gen_132(
   1444 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp ule double %a, %b
   1445 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1446 ;
   1447   %cmp = fcmp true double %a, %b
   1448   %cmp1 = fcmp ule double %a, %b
   1449   %retval = and i1 %cmp, %cmp1
   1450   ret i1 %retval
   1451 }
   1452 
   1453 define i1 @auto_gen_133(double %a, double %b) {
   1454 ; CHECK-LABEL: @auto_gen_133(
   1455 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp une double %a, %b
   1456 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1457 ;
   1458   %cmp = fcmp true double %a, %b
   1459   %cmp1 = fcmp une double %a, %b
   1460   %retval = and i1 %cmp, %cmp1
   1461   ret i1 %retval
   1462 }
   1463 
   1464 define i1 @auto_gen_134(double %a, double %b) {
   1465 ; CHECK-LABEL: @auto_gen_134(
   1466 ; CHECK-NEXT:    [[CMP1:%.*]] = fcmp uno double %a, %b
   1467 ; CHECK-NEXT:    ret i1 [[CMP1]]
   1468 ;
   1469   %cmp = fcmp true double %a, %b
   1470   %cmp1 = fcmp uno double %a, %b
   1471   %retval = and i1 %cmp, %cmp1
   1472   ret i1 %retval
   1473 }
   1474 
   1475 define i1 @auto_gen_135(double %a, double %b) {
   1476 ; CHECK-LABEL: @auto_gen_135(
   1477 ; CHECK-NEXT:    ret i1 true
   1478 ;
   1479   %cmp = fcmp true double %a, %b
   1480   %cmp1 = fcmp true double %a, %b
   1481   %retval = and i1 %cmp, %cmp1
   1482   ret i1 %retval
   1483 }
   1484