Home | History | Annotate | Download | only in SystemZ
      1 ; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
      2 ;
      3 ; TODO: add more tests for differing operand types of the two compares.
      4 
      5 define i8 @fun0(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
      6                 i8 %val5, i8 %val6) {
      7   %cmp0 = icmp eq i8 %val1, %val2
      8   %cmp1 = icmp eq i8 %val3, %val4
      9   %and = and i1 %cmp0, %cmp1
     10   %sel = select i1 %and, i8 %val5, i8 %val6
     11   ret i8 %sel
     12 
     13 ; CHECK: fun0
     14 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
     15 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
     16 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
     17 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
     18 }
     19 
     20 define i16 @fun1(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
     21                  i16 %val5, i16 %val6) {
     22   %cmp0 = icmp eq i8 %val1, %val2
     23   %cmp1 = icmp eq i8 %val3, %val4
     24   %and = and i1 %cmp0, %cmp1
     25   %sel = select i1 %and, i16 %val5, i16 %val6
     26   ret i16 %sel
     27 
     28 ; CHECK: fun1
     29 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
     30 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
     31 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
     32 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
     33 }
     34 
     35 define i32 @fun2(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
     36                  i32 %val5, i32 %val6) {
     37   %cmp0 = icmp eq i8 %val1, %val2
     38   %cmp1 = icmp eq i8 %val3, %val4
     39   %and = and i1 %cmp0, %cmp1
     40   %sel = select i1 %and, i32 %val5, i32 %val6
     41   ret i32 %sel
     42 
     43 ; CHECK: fun2
     44 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
     45 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
     46 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
     47 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
     48 }
     49 
     50 define i64 @fun3(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
     51                  i64 %val5, i64 %val6) {
     52   %cmp0 = icmp eq i8 %val1, %val2
     53   %cmp1 = icmp eq i8 %val3, %val4
     54   %and = and i1 %cmp0, %cmp1
     55   %sel = select i1 %and, i64 %val5, i64 %val6
     56   ret i64 %sel
     57 
     58 ; CHECK: fun3
     59 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
     60 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
     61 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
     62 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
     63 }
     64 
     65 define float @fun4(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
     66                    float %val5, float %val6) {
     67   %cmp0 = icmp eq i8 %val1, %val2
     68   %cmp1 = icmp eq i8 %val3, %val4
     69   %and = and i1 %cmp0, %cmp1
     70   %sel = select i1 %and, float %val5, float %val6
     71   ret float %sel
     72 
     73 ; CHECK: fun4
     74 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
     75 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
     76 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
     77 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
     78 }
     79 
     80 define double @fun5(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
     81                     double %val5, double %val6) {
     82   %cmp0 = icmp eq i8 %val1, %val2
     83   %cmp1 = icmp eq i8 %val3, %val4
     84   %and = and i1 %cmp0, %cmp1
     85   %sel = select i1 %and, double %val5, double %val6
     86   ret double %sel
     87 
     88 ; CHECK: fun5
     89 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
     90 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
     91 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
     92 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
     93 }
     94 
     95 define i8 @fun6(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
     96                 i8 %val5, i8 %val6) {
     97   %cmp0 = icmp eq i16 %val1, %val2
     98   %cmp1 = icmp eq i16 %val3, %val4
     99   %and = and i1 %cmp0, %cmp1
    100   %sel = select i1 %and, i8 %val5, i8 %val6
    101   ret i8 %sel
    102 
    103 ; CHECK: fun6
    104 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    105 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    106 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    107 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    108 }
    109 
    110 define i16 @fun7(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    111                  i16 %val5, i16 %val6) {
    112   %cmp0 = icmp eq i16 %val1, %val2
    113   %cmp1 = icmp eq i16 %val3, %val4
    114   %and = and i1 %cmp0, %cmp1
    115   %sel = select i1 %and, i16 %val5, i16 %val6
    116   ret i16 %sel
    117 
    118 ; CHECK: fun7
    119 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    120 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    121 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    122 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    123 }
    124 
    125 define i32 @fun8(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    126                  i32 %val5, i32 %val6) {
    127   %cmp0 = icmp eq i16 %val1, %val2
    128   %cmp1 = icmp eq i16 %val3, %val4
    129   %and = and i1 %cmp0, %cmp1
    130   %sel = select i1 %and, i32 %val5, i32 %val6
    131   ret i32 %sel
    132 
    133 ; CHECK: fun8
    134 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    135 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    136 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    137 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    138 }
    139 
    140 define i64 @fun9(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    141                  i64 %val5, i64 %val6) {
    142   %cmp0 = icmp eq i16 %val1, %val2
    143   %cmp1 = icmp eq i16 %val3, %val4
    144   %and = and i1 %cmp0, %cmp1
    145   %sel = select i1 %and, i64 %val5, i64 %val6
    146   ret i64 %sel
    147 
    148 ; CHECK: fun9
    149 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    150 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    151 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    152 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    153 }
    154 
    155 define float @fun10(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    156                     float %val5, float %val6) {
    157   %cmp0 = icmp eq i16 %val1, %val2
    158   %cmp1 = icmp eq i16 %val3, %val4
    159   %and = and i1 %cmp0, %cmp1
    160   %sel = select i1 %and, float %val5, float %val6
    161   ret float %sel
    162 
    163 ; CHECK: fun10
    164 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    165 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    166 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    167 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    168 }
    169 
    170 define double @fun11(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    171                      double %val5, double %val6) {
    172   %cmp0 = icmp eq i16 %val1, %val2
    173   %cmp1 = icmp eq i16 %val3, %val4
    174   %and = and i1 %cmp0, %cmp1
    175   %sel = select i1 %and, double %val5, double %val6
    176   ret double %sel
    177 
    178 ; CHECK: fun11
    179 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    180 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    181 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    182 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    183 }
    184 
    185 define i8 @fun12(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    186                  i8 %val5, i8 %val6) {
    187   %cmp0 = icmp eq i32 %val1, %val2
    188   %cmp1 = icmp eq i32 %val3, %val4
    189   %and = and i1 %cmp0, %cmp1
    190   %sel = select i1 %and, i8 %val5, i8 %val6
    191   ret i8 %sel
    192 
    193 ; CHECK: fun12
    194 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    195 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    196 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    197 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    198 }
    199 
    200 define i16 @fun13(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    201                   i16 %val5, i16 %val6) {
    202   %cmp0 = icmp eq i32 %val1, %val2
    203   %cmp1 = icmp eq i32 %val3, %val4
    204   %and = and i1 %cmp0, %cmp1
    205   %sel = select i1 %and, i16 %val5, i16 %val6
    206   ret i16 %sel
    207 
    208 ; CHECK: fun13
    209 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    210 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    211 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    212 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    213 }
    214 
    215 define i32 @fun14(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    216                   i32 %val5, i32 %val6) {
    217   %cmp0 = icmp eq i32 %val1, %val2
    218   %cmp1 = icmp eq i32 %val3, %val4
    219   %and = and i1 %cmp0, %cmp1
    220   %sel = select i1 %and, i32 %val5, i32 %val6
    221   ret i32 %sel
    222 
    223 ; CHECK: fun14
    224 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    225 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    226 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    227 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    228 }
    229 
    230 define i64 @fun15(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    231                   i64 %val5, i64 %val6) {
    232   %cmp0 = icmp eq i32 %val1, %val2
    233   %cmp1 = icmp eq i32 %val3, %val4
    234   %and = and i1 %cmp0, %cmp1
    235   %sel = select i1 %and, i64 %val5, i64 %val6
    236   ret i64 %sel
    237 
    238 ; CHECK: fun15
    239 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    240 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    241 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    242 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    243 }
    244 
    245 define float @fun16(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    246                     float %val5, float %val6) {
    247   %cmp0 = icmp eq i32 %val1, %val2
    248   %cmp1 = icmp eq i32 %val3, %val4
    249   %and = and i1 %cmp0, %cmp1
    250   %sel = select i1 %and, float %val5, float %val6
    251   ret float %sel
    252 
    253 ; CHECK: fun16
    254 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    255 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    256 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    257 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    258 }
    259 
    260 define double @fun17(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    261                      double %val5, double %val6) {
    262   %cmp0 = icmp eq i32 %val1, %val2
    263   %cmp1 = icmp eq i32 %val3, %val4
    264   %and = and i1 %cmp0, %cmp1
    265   %sel = select i1 %and, double %val5, double %val6
    266   ret double %sel
    267 
    268 ; CHECK: fun17
    269 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    270 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    271 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    272 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    273 }
    274 
    275 define i8 @fun18(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    276                  i8 %val5, i8 %val6) {
    277   %cmp0 = icmp eq i64 %val1, %val2
    278   %cmp1 = icmp eq i64 %val3, %val4
    279   %and = and i1 %cmp0, %cmp1
    280   %sel = select i1 %and, i8 %val5, i8 %val6
    281   ret i8 %sel
    282 
    283 ; CHECK: fun18
    284 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    285 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    286 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    287 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    288 }
    289 
    290 define i16 @fun19(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    291                   i16 %val5, i16 %val6) {
    292   %cmp0 = icmp eq i64 %val1, %val2
    293   %cmp1 = icmp eq i64 %val3, %val4
    294   %and = and i1 %cmp0, %cmp1
    295   %sel = select i1 %and, i16 %val5, i16 %val6
    296   ret i16 %sel
    297 
    298 ; CHECK: fun19
    299 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    300 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    301 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    302 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    303 }
    304 
    305 define i32 @fun20(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    306                   i32 %val5, i32 %val6) {
    307   %cmp0 = icmp eq i64 %val1, %val2
    308   %cmp1 = icmp eq i64 %val3, %val4
    309   %and = and i1 %cmp0, %cmp1
    310   %sel = select i1 %and, i32 %val5, i32 %val6
    311   ret i32 %sel
    312 
    313 ; CHECK: fun20
    314 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    315 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    316 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    317 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    318 }
    319 
    320 define i64 @fun21(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    321                   i64 %val5, i64 %val6) {
    322   %cmp0 = icmp eq i64 %val1, %val2
    323   %cmp1 = icmp eq i64 %val3, %val4
    324   %and = and i1 %cmp0, %cmp1
    325   %sel = select i1 %and, i64 %val5, i64 %val6
    326   ret i64 %sel
    327 
    328 ; CHECK: fun21
    329 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    330 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    331 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    332 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    333 }
    334 
    335 define float @fun22(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    336                     float %val5, float %val6) {
    337   %cmp0 = icmp eq i64 %val1, %val2
    338   %cmp1 = icmp eq i64 %val3, %val4
    339   %and = and i1 %cmp0, %cmp1
    340   %sel = select i1 %and, float %val5, float %val6
    341   ret float %sel
    342 
    343 ; CHECK: fun22
    344 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    345 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    346 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    347 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    348 }
    349 
    350 define double @fun23(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    351                      double %val5, double %val6) {
    352   %cmp0 = icmp eq i64 %val1, %val2
    353   %cmp1 = icmp eq i64 %val3, %val4
    354   %and = and i1 %cmp0, %cmp1
    355   %sel = select i1 %and, double %val5, double %val6
    356   ret double %sel
    357 
    358 ; CHECK: fun23
    359 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    360 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    361 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    362 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    363 }
    364 
    365 define i8 @fun24(float %val1, float %val2, float %val3, float %val4,
    366                  i8 %val5, i8 %val6) {
    367   %cmp0 = fcmp ogt float %val1, %val2
    368   %cmp1 = fcmp ogt float %val3, %val4
    369   %and = and i1 %cmp0, %cmp1
    370   %sel = select i1 %and, i8 %val5, i8 %val6
    371   ret i8 %sel
    372 
    373 ; CHECK: fun24
    374 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    375 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    376 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    377 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    378 }
    379 
    380 define i16 @fun25(float %val1, float %val2, float %val3, float %val4,
    381                   i16 %val5, i16 %val6) {
    382   %cmp0 = fcmp ogt float %val1, %val2
    383   %cmp1 = fcmp ogt float %val3, %val4
    384   %and = and i1 %cmp0, %cmp1
    385   %sel = select i1 %and, i16 %val5, i16 %val6
    386   ret i16 %sel
    387 
    388 ; CHECK: fun25
    389 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    390 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    391 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    392 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    393 }
    394 
    395 define i32 @fun26(float %val1, float %val2, float %val3, float %val4,
    396                   i32 %val5, i32 %val6) {
    397   %cmp0 = fcmp ogt float %val1, %val2
    398   %cmp1 = fcmp ogt float %val3, %val4
    399   %and = and i1 %cmp0, %cmp1
    400   %sel = select i1 %and, i32 %val5, i32 %val6
    401   ret i32 %sel
    402 
    403 ; CHECK: fun26
    404 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    405 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    406 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    407 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    408 }
    409 
    410 define i64 @fun27(float %val1, float %val2, float %val3, float %val4,
    411                   i64 %val5, i64 %val6) {
    412   %cmp0 = fcmp ogt float %val1, %val2
    413   %cmp1 = fcmp ogt float %val3, %val4
    414   %and = and i1 %cmp0, %cmp1
    415   %sel = select i1 %and, i64 %val5, i64 %val6
    416   ret i64 %sel
    417 
    418 ; CHECK: fun27
    419 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    420 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    421 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    422 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    423 }
    424 
    425 define float @fun28(float %val1, float %val2, float %val3, float %val4,
    426                     float %val5, float %val6) {
    427   %cmp0 = fcmp ogt float %val1, %val2
    428   %cmp1 = fcmp ogt float %val3, %val4
    429   %and = and i1 %cmp0, %cmp1
    430   %sel = select i1 %and, float %val5, float %val6
    431   ret float %sel
    432 
    433 ; CHECK: fun28
    434 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    435 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    436 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    437 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    438 }
    439 
    440 define double @fun29(float %val1, float %val2, float %val3, float %val4,
    441                      double %val5, double %val6) {
    442   %cmp0 = fcmp ogt float %val1, %val2
    443   %cmp1 = fcmp ogt float %val3, %val4
    444   %and = and i1 %cmp0, %cmp1
    445   %sel = select i1 %and, double %val5, double %val6
    446   ret double %sel
    447 
    448 ; CHECK: fun29
    449 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    450 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    451 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    452 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    453 }
    454 
    455 define i8 @fun30(double %val1, double %val2, double %val3, double %val4,
    456                  i8 %val5, i8 %val6) {
    457   %cmp0 = fcmp ogt double %val1, %val2
    458   %cmp1 = fcmp ogt double %val3, %val4
    459   %and = and i1 %cmp0, %cmp1
    460   %sel = select i1 %and, i8 %val5, i8 %val6
    461   ret i8 %sel
    462 
    463 ; CHECK: fun30
    464 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
    465 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
    466 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    467 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    468 }
    469 
    470 define i16 @fun31(double %val1, double %val2, double %val3, double %val4,
    471                   i16 %val5, i16 %val6) {
    472   %cmp0 = fcmp ogt double %val1, %val2
    473   %cmp1 = fcmp ogt double %val3, %val4
    474   %and = and i1 %cmp0, %cmp1
    475   %sel = select i1 %and, i16 %val5, i16 %val6
    476   ret i16 %sel
    477 
    478 ; CHECK: fun31
    479 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
    480 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
    481 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    482 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    483 }
    484 
    485 define i32 @fun32(double %val1, double %val2, double %val3, double %val4,
    486                   i32 %val5, i32 %val6) {
    487   %cmp0 = fcmp ogt double %val1, %val2
    488   %cmp1 = fcmp ogt double %val3, %val4
    489   %and = and i1 %cmp0, %cmp1
    490   %sel = select i1 %and, i32 %val5, i32 %val6
    491   ret i32 %sel
    492 
    493 ; CHECK: fun32
    494 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
    495 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
    496 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    497 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    498 }
    499 
    500 define i64 @fun33(double %val1, double %val2, double %val3, double %val4,
    501                   i64 %val5, i64 %val6) {
    502   %cmp0 = fcmp ogt double %val1, %val2
    503   %cmp1 = fcmp ogt double %val3, %val4
    504   %and = and i1 %cmp0, %cmp1
    505   %sel = select i1 %and, i64 %val5, i64 %val6
    506   ret i64 %sel
    507 
    508 ; CHECK: fun33
    509 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
    510 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
    511 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    512 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    513 }
    514 
    515 define float @fun34(double %val1, double %val2, double %val3, double %val4,
    516                     float %val5, float %val6) {
    517   %cmp0 = fcmp ogt double %val1, %val2
    518   %cmp1 = fcmp ogt double %val3, %val4
    519   %and = and i1 %cmp0, %cmp1
    520   %sel = select i1 %and, float %val5, float %val6
    521   ret float %sel
    522 
    523 ; CHECK: fun34
    524 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
    525 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
    526 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    527 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    528 }
    529 
    530 define double @fun35(double %val1, double %val2, double %val3, double %val4,
    531                      double %val5, double %val6) {
    532   %cmp0 = fcmp ogt double %val1, %val2
    533   %cmp1 = fcmp ogt double %val3, %val4
    534   %and = and i1 %cmp0, %cmp1
    535   %sel = select i1 %and, double %val5, double %val6
    536   ret double %sel
    537 
    538 ; CHECK: fun35
    539 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
    540 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
    541 ; CHECK: cost of 1 for instruction:   %and = and i1 %cmp0, %cmp1
    542 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    543 }
    544 
    545 define i8 @fun36(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
    546                  i8 %val5, i8 %val6) {
    547   %cmp0 = icmp eq i8 %val1, %val2
    548   %cmp1 = icmp eq i8 %val3, %val4
    549   %and = or i1 %cmp0, %cmp1
    550   %sel = select i1 %and, i8 %val5, i8 %val6
    551   ret i8 %sel
    552 
    553 ; CHECK: fun36
    554 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
    555 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
    556 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    557 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    558 }
    559 
    560 define i16 @fun37(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
    561                   i16 %val5, i16 %val6) {
    562   %cmp0 = icmp eq i8 %val1, %val2
    563   %cmp1 = icmp eq i8 %val3, %val4
    564   %and = or i1 %cmp0, %cmp1
    565   %sel = select i1 %and, i16 %val5, i16 %val6
    566   ret i16 %sel
    567 
    568 ; CHECK: fun37
    569 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
    570 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
    571 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    572 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    573 }
    574 
    575 define i32 @fun38(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
    576                   i32 %val5, i32 %val6) {
    577   %cmp0 = icmp eq i8 %val1, %val2
    578   %cmp1 = icmp eq i8 %val3, %val4
    579   %and = or i1 %cmp0, %cmp1
    580   %sel = select i1 %and, i32 %val5, i32 %val6
    581   ret i32 %sel
    582 
    583 ; CHECK: fun38
    584 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
    585 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
    586 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    587 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    588 }
    589 
    590 define i64 @fun39(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
    591                   i64 %val5, i64 %val6) {
    592   %cmp0 = icmp eq i8 %val1, %val2
    593   %cmp1 = icmp eq i8 %val3, %val4
    594   %and = or i1 %cmp0, %cmp1
    595   %sel = select i1 %and, i64 %val5, i64 %val6
    596   ret i64 %sel
    597 
    598 ; CHECK: fun39
    599 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
    600 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
    601 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    602 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    603 }
    604 
    605 define float @fun40(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
    606                     float %val5, float %val6) {
    607   %cmp0 = icmp eq i8 %val1, %val2
    608   %cmp1 = icmp eq i8 %val3, %val4
    609   %and = or i1 %cmp0, %cmp1
    610   %sel = select i1 %and, float %val5, float %val6
    611   ret float %sel
    612 
    613 ; CHECK: fun40
    614 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
    615 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
    616 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    617 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    618 }
    619 
    620 define double @fun41(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
    621                      double %val5, double %val6) {
    622   %cmp0 = icmp eq i8 %val1, %val2
    623   %cmp1 = icmp eq i8 %val3, %val4
    624   %and = or i1 %cmp0, %cmp1
    625   %sel = select i1 %and, double %val5, double %val6
    626   ret double %sel
    627 
    628 ; CHECK: fun41
    629 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
    630 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
    631 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    632 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    633 }
    634 
    635 define i8 @fun42(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    636                  i8 %val5, i8 %val6) {
    637   %cmp0 = icmp eq i16 %val1, %val2
    638   %cmp1 = icmp eq i16 %val3, %val4
    639   %and = or i1 %cmp0, %cmp1
    640   %sel = select i1 %and, i8 %val5, i8 %val6
    641   ret i8 %sel
    642 
    643 ; CHECK: fun42
    644 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    645 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    646 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    647 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    648 }
    649 
    650 define i16 @fun43(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    651                   i16 %val5, i16 %val6) {
    652   %cmp0 = icmp eq i16 %val1, %val2
    653   %cmp1 = icmp eq i16 %val3, %val4
    654   %and = or i1 %cmp0, %cmp1
    655   %sel = select i1 %and, i16 %val5, i16 %val6
    656   ret i16 %sel
    657 
    658 ; CHECK: fun43
    659 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    660 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    661 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    662 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    663 }
    664 
    665 define i32 @fun44(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    666                   i32 %val5, i32 %val6) {
    667   %cmp0 = icmp eq i16 %val1, %val2
    668   %cmp1 = icmp eq i16 %val3, %val4
    669   %and = or i1 %cmp0, %cmp1
    670   %sel = select i1 %and, i32 %val5, i32 %val6
    671   ret i32 %sel
    672 
    673 ; CHECK: fun44
    674 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    675 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    676 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    677 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    678 }
    679 
    680 define i64 @fun45(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    681                   i64 %val5, i64 %val6) {
    682   %cmp0 = icmp eq i16 %val1, %val2
    683   %cmp1 = icmp eq i16 %val3, %val4
    684   %and = or i1 %cmp0, %cmp1
    685   %sel = select i1 %and, i64 %val5, i64 %val6
    686   ret i64 %sel
    687 
    688 ; CHECK: fun45
    689 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    690 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    691 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    692 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    693 }
    694 
    695 define float @fun46(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    696                     float %val5, float %val6) {
    697   %cmp0 = icmp eq i16 %val1, %val2
    698   %cmp1 = icmp eq i16 %val3, %val4
    699   %and = or i1 %cmp0, %cmp1
    700   %sel = select i1 %and, float %val5, float %val6
    701   ret float %sel
    702 
    703 ; CHECK: fun46
    704 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    705 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    706 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    707 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    708 }
    709 
    710 define double @fun47(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
    711                      double %val5, double %val6) {
    712   %cmp0 = icmp eq i16 %val1, %val2
    713   %cmp1 = icmp eq i16 %val3, %val4
    714   %and = or i1 %cmp0, %cmp1
    715   %sel = select i1 %and, double %val5, double %val6
    716   ret double %sel
    717 
    718 ; CHECK: fun47
    719 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
    720 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
    721 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    722 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    723 }
    724 
    725 define i8 @fun48(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    726                  i8 %val5, i8 %val6) {
    727   %cmp0 = icmp eq i32 %val1, %val2
    728   %cmp1 = icmp eq i32 %val3, %val4
    729   %and = or i1 %cmp0, %cmp1
    730   %sel = select i1 %and, i8 %val5, i8 %val6
    731   ret i8 %sel
    732 
    733 ; CHECK: fun48
    734 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    735 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    736 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    737 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    738 }
    739 
    740 define i16 @fun49(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    741                   i16 %val5, i16 %val6) {
    742   %cmp0 = icmp eq i32 %val1, %val2
    743   %cmp1 = icmp eq i32 %val3, %val4
    744   %and = or i1 %cmp0, %cmp1
    745   %sel = select i1 %and, i16 %val5, i16 %val6
    746   ret i16 %sel
    747 
    748 ; CHECK: fun49
    749 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    750 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    751 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    752 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    753 }
    754 
    755 define i32 @fun50(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    756                   i32 %val5, i32 %val6) {
    757   %cmp0 = icmp eq i32 %val1, %val2
    758   %cmp1 = icmp eq i32 %val3, %val4
    759   %and = or i1 %cmp0, %cmp1
    760   %sel = select i1 %and, i32 %val5, i32 %val6
    761   ret i32 %sel
    762 
    763 ; CHECK: fun50
    764 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    765 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    766 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    767 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    768 }
    769 
    770 define i64 @fun51(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    771                   i64 %val5, i64 %val6) {
    772   %cmp0 = icmp eq i32 %val1, %val2
    773   %cmp1 = icmp eq i32 %val3, %val4
    774   %and = or i1 %cmp0, %cmp1
    775   %sel = select i1 %and, i64 %val5, i64 %val6
    776   ret i64 %sel
    777 
    778 ; CHECK: fun51
    779 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    780 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    781 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    782 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    783 }
    784 
    785 define float @fun52(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    786                     float %val5, float %val6) {
    787   %cmp0 = icmp eq i32 %val1, %val2
    788   %cmp1 = icmp eq i32 %val3, %val4
    789   %and = or i1 %cmp0, %cmp1
    790   %sel = select i1 %and, float %val5, float %val6
    791   ret float %sel
    792 
    793 ; CHECK: fun52
    794 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    795 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    796 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    797 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    798 }
    799 
    800 define double @fun53(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
    801                      double %val5, double %val6) {
    802   %cmp0 = icmp eq i32 %val1, %val2
    803   %cmp1 = icmp eq i32 %val3, %val4
    804   %and = or i1 %cmp0, %cmp1
    805   %sel = select i1 %and, double %val5, double %val6
    806   ret double %sel
    807 
    808 ; CHECK: fun53
    809 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
    810 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
    811 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    812 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    813 }
    814 
    815 define i8 @fun54(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    816                  i8 %val5, i8 %val6) {
    817   %cmp0 = icmp eq i64 %val1, %val2
    818   %cmp1 = icmp eq i64 %val3, %val4
    819   %and = or i1 %cmp0, %cmp1
    820   %sel = select i1 %and, i8 %val5, i8 %val6
    821   ret i8 %sel
    822 
    823 ; CHECK: fun54
    824 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    825 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    826 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    827 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    828 }
    829 
    830 define i16 @fun55(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    831                   i16 %val5, i16 %val6) {
    832   %cmp0 = icmp eq i64 %val1, %val2
    833   %cmp1 = icmp eq i64 %val3, %val4
    834   %and = or i1 %cmp0, %cmp1
    835   %sel = select i1 %and, i16 %val5, i16 %val6
    836   ret i16 %sel
    837 
    838 ; CHECK: fun55
    839 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    840 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    841 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    842 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    843 }
    844 
    845 define i32 @fun56(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    846                   i32 %val5, i32 %val6) {
    847   %cmp0 = icmp eq i64 %val1, %val2
    848   %cmp1 = icmp eq i64 %val3, %val4
    849   %and = or i1 %cmp0, %cmp1
    850   %sel = select i1 %and, i32 %val5, i32 %val6
    851   ret i32 %sel
    852 
    853 ; CHECK: fun56
    854 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    855 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    856 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    857 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    858 }
    859 
    860 define i64 @fun57(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    861                   i64 %val5, i64 %val6) {
    862   %cmp0 = icmp eq i64 %val1, %val2
    863   %cmp1 = icmp eq i64 %val3, %val4
    864   %and = or i1 %cmp0, %cmp1
    865   %sel = select i1 %and, i64 %val5, i64 %val6
    866   ret i64 %sel
    867 
    868 ; CHECK: fun57
    869 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    870 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    871 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    872 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    873 }
    874 
    875 define float @fun58(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    876                     float %val5, float %val6) {
    877   %cmp0 = icmp eq i64 %val1, %val2
    878   %cmp1 = icmp eq i64 %val3, %val4
    879   %and = or i1 %cmp0, %cmp1
    880   %sel = select i1 %and, float %val5, float %val6
    881   ret float %sel
    882 
    883 ; CHECK: fun58
    884 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    885 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    886 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    887 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    888 }
    889 
    890 define double @fun59(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
    891                      double %val5, double %val6) {
    892   %cmp0 = icmp eq i64 %val1, %val2
    893   %cmp1 = icmp eq i64 %val3, %val4
    894   %and = or i1 %cmp0, %cmp1
    895   %sel = select i1 %and, double %val5, double %val6
    896   ret double %sel
    897 
    898 ; CHECK: fun59
    899 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
    900 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
    901 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    902 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    903 }
    904 
    905 define i8 @fun60(float %val1, float %val2, float %val3, float %val4,
    906                  i8 %val5, i8 %val6) {
    907   %cmp0 = fcmp ogt float %val1, %val2
    908   %cmp1 = fcmp ogt float %val3, %val4
    909   %and = or i1 %cmp0, %cmp1
    910   %sel = select i1 %and, i8 %val5, i8 %val6
    911   ret i8 %sel
    912 
    913 ; CHECK: fun60
    914 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    915 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    916 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    917 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
    918 }
    919 
    920 define i16 @fun61(float %val1, float %val2, float %val3, float %val4,
    921                   i16 %val5, i16 %val6) {
    922   %cmp0 = fcmp ogt float %val1, %val2
    923   %cmp1 = fcmp ogt float %val3, %val4
    924   %and = or i1 %cmp0, %cmp1
    925   %sel = select i1 %and, i16 %val5, i16 %val6
    926   ret i16 %sel
    927 
    928 ; CHECK: fun61
    929 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    930 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    931 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    932 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
    933 }
    934 
    935 define i32 @fun62(float %val1, float %val2, float %val3, float %val4,
    936                   i32 %val5, i32 %val6) {
    937   %cmp0 = fcmp ogt float %val1, %val2
    938   %cmp1 = fcmp ogt float %val3, %val4
    939   %and = or i1 %cmp0, %cmp1
    940   %sel = select i1 %and, i32 %val5, i32 %val6
    941   ret i32 %sel
    942 
    943 ; CHECK: fun62
    944 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    945 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    946 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    947 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
    948 }
    949 
    950 define i64 @fun63(float %val1, float %val2, float %val3, float %val4,
    951                   i64 %val5, i64 %val6) {
    952   %cmp0 = fcmp ogt float %val1, %val2
    953   %cmp1 = fcmp ogt float %val3, %val4
    954   %and = or i1 %cmp0, %cmp1
    955   %sel = select i1 %and, i64 %val5, i64 %val6
    956   ret i64 %sel
    957 
    958 ; CHECK: fun63
    959 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    960 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    961 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    962 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
    963 }
    964 
    965 define float @fun64(float %val1, float %val2, float %val3, float %val4,
    966                     float %val5, float %val6) {
    967   %cmp0 = fcmp ogt float %val1, %val2
    968   %cmp1 = fcmp ogt float %val3, %val4
    969   %and = or i1 %cmp0, %cmp1
    970   %sel = select i1 %and, float %val5, float %val6
    971   ret float %sel
    972 
    973 ; CHECK: fun64
    974 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    975 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    976 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    977 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
    978 }
    979 
    980 define double @fun65(float %val1, float %val2, float %val3, float %val4,
    981                      double %val5, double %val6) {
    982   %cmp0 = fcmp ogt float %val1, %val2
    983   %cmp1 = fcmp ogt float %val3, %val4
    984   %and = or i1 %cmp0, %cmp1
    985   %sel = select i1 %and, double %val5, double %val6
    986   ret double %sel
    987 
    988 ; CHECK: fun65
    989 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
    990 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
    991 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
    992 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
    993 }
    994 
    995 define i8 @fun66(double %val1, double %val2, double %val3, double %val4,
    996                  i8 %val5, i8 %val6) {
    997   %cmp0 = fcmp ogt double %val1, %val2
    998   %cmp1 = fcmp ogt double %val3, %val4
    999   %and = or i1 %cmp0, %cmp1
   1000   %sel = select i1 %and, i8 %val5, i8 %val6
   1001   ret i8 %sel
   1002 
   1003 ; CHECK: fun66
   1004 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1005 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1006 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
   1007 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1008 }
   1009 
   1010 define i16 @fun67(double %val1, double %val2, double %val3, double %val4,
   1011                   i16 %val5, i16 %val6) {
   1012   %cmp0 = fcmp ogt double %val1, %val2
   1013   %cmp1 = fcmp ogt double %val3, %val4
   1014   %and = or i1 %cmp0, %cmp1
   1015   %sel = select i1 %and, i16 %val5, i16 %val6
   1016   ret i16 %sel
   1017 
   1018 ; CHECK: fun67
   1019 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1020 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1021 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
   1022 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1023 }
   1024 
   1025 define i32 @fun68(double %val1, double %val2, double %val3, double %val4,
   1026                   i32 %val5, i32 %val6) {
   1027   %cmp0 = fcmp ogt double %val1, %val2
   1028   %cmp1 = fcmp ogt double %val3, %val4
   1029   %and = or i1 %cmp0, %cmp1
   1030   %sel = select i1 %and, i32 %val5, i32 %val6
   1031   ret i32 %sel
   1032 
   1033 ; CHECK: fun68
   1034 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1035 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1036 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
   1037 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1038 }
   1039 
   1040 define i64 @fun69(double %val1, double %val2, double %val3, double %val4,
   1041                   i64 %val5, i64 %val6) {
   1042   %cmp0 = fcmp ogt double %val1, %val2
   1043   %cmp1 = fcmp ogt double %val3, %val4
   1044   %and = or i1 %cmp0, %cmp1
   1045   %sel = select i1 %and, i64 %val5, i64 %val6
   1046   ret i64 %sel
   1047 
   1048 ; CHECK: fun69
   1049 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1050 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1051 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
   1052 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1053 }
   1054 
   1055 define float @fun70(double %val1, double %val2, double %val3, double %val4,
   1056                     float %val5, float %val6) {
   1057   %cmp0 = fcmp ogt double %val1, %val2
   1058   %cmp1 = fcmp ogt double %val3, %val4
   1059   %and = or i1 %cmp0, %cmp1
   1060   %sel = select i1 %and, float %val5, float %val6
   1061   ret float %sel
   1062 
   1063 ; CHECK: fun70
   1064 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1065 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1066 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
   1067 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1068 }
   1069 
   1070 define double @fun71(double %val1, double %val2, double %val3, double %val4,
   1071                      double %val5, double %val6) {
   1072   %cmp0 = fcmp ogt double %val1, %val2
   1073   %cmp1 = fcmp ogt double %val3, %val4
   1074   %and = or i1 %cmp0, %cmp1
   1075   %sel = select i1 %and, double %val5, double %val6
   1076   ret double %sel
   1077 
   1078 ; CHECK: fun71
   1079 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1080 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1081 ; CHECK: cost of 1 for instruction:   %and = or i1 %cmp0, %cmp1
   1082 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1083 }
   1084 
   1085 define i8 @fun72(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
   1086                  i8 %val5, i8 %val6) {
   1087   %cmp0 = icmp eq i8 %val1, %val2
   1088   %cmp1 = icmp eq i8 %val3, %val4
   1089   %and = xor i1 %cmp0, %cmp1
   1090   %sel = select i1 %and, i8 %val5, i8 %val6
   1091   ret i8 %sel
   1092 
   1093 ; CHECK: fun72
   1094 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
   1095 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
   1096 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1097 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1098 }
   1099 
   1100 define i16 @fun73(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
   1101                   i16 %val5, i16 %val6) {
   1102   %cmp0 = icmp eq i8 %val1, %val2
   1103   %cmp1 = icmp eq i8 %val3, %val4
   1104   %and = xor i1 %cmp0, %cmp1
   1105   %sel = select i1 %and, i16 %val5, i16 %val6
   1106   ret i16 %sel
   1107 
   1108 ; CHECK: fun73
   1109 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
   1110 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
   1111 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1112 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1113 }
   1114 
   1115 define i32 @fun74(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
   1116                   i32 %val5, i32 %val6) {
   1117   %cmp0 = icmp eq i8 %val1, %val2
   1118   %cmp1 = icmp eq i8 %val3, %val4
   1119   %and = xor i1 %cmp0, %cmp1
   1120   %sel = select i1 %and, i32 %val5, i32 %val6
   1121   ret i32 %sel
   1122 
   1123 ; CHECK: fun74
   1124 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
   1125 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
   1126 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1127 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1128 }
   1129 
   1130 define i64 @fun75(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
   1131                   i64 %val5, i64 %val6) {
   1132   %cmp0 = icmp eq i8 %val1, %val2
   1133   %cmp1 = icmp eq i8 %val3, %val4
   1134   %and = xor i1 %cmp0, %cmp1
   1135   %sel = select i1 %and, i64 %val5, i64 %val6
   1136   ret i64 %sel
   1137 
   1138 ; CHECK: fun75
   1139 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
   1140 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
   1141 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1142 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1143 }
   1144 
   1145 define float @fun76(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
   1146                     float %val5, float %val6) {
   1147   %cmp0 = icmp eq i8 %val1, %val2
   1148   %cmp1 = icmp eq i8 %val3, %val4
   1149   %and = xor i1 %cmp0, %cmp1
   1150   %sel = select i1 %and, float %val5, float %val6
   1151   ret float %sel
   1152 
   1153 ; CHECK: fun76
   1154 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
   1155 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
   1156 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1157 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1158 }
   1159 
   1160 define double @fun77(i8 %val1, i8 %val2, i8 %val3, i8 %val4,
   1161                      double %val5, double %val6) {
   1162   %cmp0 = icmp eq i8 %val1, %val2
   1163   %cmp1 = icmp eq i8 %val3, %val4
   1164   %and = xor i1 %cmp0, %cmp1
   1165   %sel = select i1 %and, double %val5, double %val6
   1166   ret double %sel
   1167 
   1168 ; CHECK: fun77
   1169 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i8 %val1, %val2
   1170 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i8 %val3, %val4
   1171 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1172 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1173 }
   1174 
   1175 define i8 @fun78(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
   1176                  i8 %val5, i8 %val6) {
   1177   %cmp0 = icmp eq i16 %val1, %val2
   1178   %cmp1 = icmp eq i16 %val3, %val4
   1179   %and = xor i1 %cmp0, %cmp1
   1180   %sel = select i1 %and, i8 %val5, i8 %val6
   1181   ret i8 %sel
   1182 
   1183 ; CHECK: fun78
   1184 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
   1185 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
   1186 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1187 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1188 }
   1189 
   1190 define i16 @fun79(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
   1191                   i16 %val5, i16 %val6) {
   1192   %cmp0 = icmp eq i16 %val1, %val2
   1193   %cmp1 = icmp eq i16 %val3, %val4
   1194   %and = xor i1 %cmp0, %cmp1
   1195   %sel = select i1 %and, i16 %val5, i16 %val6
   1196   ret i16 %sel
   1197 
   1198 ; CHECK: fun79
   1199 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
   1200 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
   1201 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1202 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1203 }
   1204 
   1205 define i32 @fun80(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
   1206                   i32 %val5, i32 %val6) {
   1207   %cmp0 = icmp eq i16 %val1, %val2
   1208   %cmp1 = icmp eq i16 %val3, %val4
   1209   %and = xor i1 %cmp0, %cmp1
   1210   %sel = select i1 %and, i32 %val5, i32 %val6
   1211   ret i32 %sel
   1212 
   1213 ; CHECK: fun80
   1214 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
   1215 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
   1216 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1217 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1218 }
   1219 
   1220 define i64 @fun81(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
   1221                   i64 %val5, i64 %val6) {
   1222   %cmp0 = icmp eq i16 %val1, %val2
   1223   %cmp1 = icmp eq i16 %val3, %val4
   1224   %and = xor i1 %cmp0, %cmp1
   1225   %sel = select i1 %and, i64 %val5, i64 %val6
   1226   ret i64 %sel
   1227 
   1228 ; CHECK: fun81
   1229 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
   1230 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
   1231 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1232 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1233 }
   1234 
   1235 define float @fun82(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
   1236                     float %val5, float %val6) {
   1237   %cmp0 = icmp eq i16 %val1, %val2
   1238   %cmp1 = icmp eq i16 %val3, %val4
   1239   %and = xor i1 %cmp0, %cmp1
   1240   %sel = select i1 %and, float %val5, float %val6
   1241   ret float %sel
   1242 
   1243 ; CHECK: fun82
   1244 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
   1245 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
   1246 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1247 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1248 }
   1249 
   1250 define double @fun83(i16 %val1, i16 %val2, i16 %val3, i16 %val4,
   1251                      double %val5, double %val6) {
   1252   %cmp0 = icmp eq i16 %val1, %val2
   1253   %cmp1 = icmp eq i16 %val3, %val4
   1254   %and = xor i1 %cmp0, %cmp1
   1255   %sel = select i1 %and, double %val5, double %val6
   1256   ret double %sel
   1257 
   1258 ; CHECK: fun83
   1259 ; CHECK: cost of 3 for instruction:   %cmp0 = icmp eq i16 %val1, %val2
   1260 ; CHECK: cost of 3 for instruction:   %cmp1 = icmp eq i16 %val3, %val4
   1261 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1262 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1263 }
   1264 
   1265 define i8 @fun84(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
   1266                  i8 %val5, i8 %val6) {
   1267   %cmp0 = icmp eq i32 %val1, %val2
   1268   %cmp1 = icmp eq i32 %val3, %val4
   1269   %and = xor i1 %cmp0, %cmp1
   1270   %sel = select i1 %and, i8 %val5, i8 %val6
   1271   ret i8 %sel
   1272 
   1273 ; CHECK: fun84
   1274 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
   1275 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
   1276 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1277 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1278 }
   1279 
   1280 define i16 @fun85(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
   1281                   i16 %val5, i16 %val6) {
   1282   %cmp0 = icmp eq i32 %val1, %val2
   1283   %cmp1 = icmp eq i32 %val3, %val4
   1284   %and = xor i1 %cmp0, %cmp1
   1285   %sel = select i1 %and, i16 %val5, i16 %val6
   1286   ret i16 %sel
   1287 
   1288 ; CHECK: fun85
   1289 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
   1290 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
   1291 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1292 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1293 }
   1294 
   1295 define i32 @fun86(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
   1296                   i32 %val5, i32 %val6) {
   1297   %cmp0 = icmp eq i32 %val1, %val2
   1298   %cmp1 = icmp eq i32 %val3, %val4
   1299   %and = xor i1 %cmp0, %cmp1
   1300   %sel = select i1 %and, i32 %val5, i32 %val6
   1301   ret i32 %sel
   1302 
   1303 ; CHECK: fun86
   1304 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
   1305 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
   1306 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1307 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1308 }
   1309 
   1310 define i64 @fun87(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
   1311                   i64 %val5, i64 %val6) {
   1312   %cmp0 = icmp eq i32 %val1, %val2
   1313   %cmp1 = icmp eq i32 %val3, %val4
   1314   %and = xor i1 %cmp0, %cmp1
   1315   %sel = select i1 %and, i64 %val5, i64 %val6
   1316   ret i64 %sel
   1317 
   1318 ; CHECK: fun87
   1319 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
   1320 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
   1321 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1322 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1323 }
   1324 
   1325 define float @fun88(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
   1326                     float %val5, float %val6) {
   1327   %cmp0 = icmp eq i32 %val1, %val2
   1328   %cmp1 = icmp eq i32 %val3, %val4
   1329   %and = xor i1 %cmp0, %cmp1
   1330   %sel = select i1 %and, float %val5, float %val6
   1331   ret float %sel
   1332 
   1333 ; CHECK: fun88
   1334 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
   1335 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
   1336 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1337 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1338 }
   1339 
   1340 define double @fun89(i32 %val1, i32 %val2, i32 %val3, i32 %val4,
   1341                      double %val5, double %val6) {
   1342   %cmp0 = icmp eq i32 %val1, %val2
   1343   %cmp1 = icmp eq i32 %val3, %val4
   1344   %and = xor i1 %cmp0, %cmp1
   1345   %sel = select i1 %and, double %val5, double %val6
   1346   ret double %sel
   1347 
   1348 ; CHECK: fun89
   1349 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i32 %val1, %val2
   1350 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i32 %val3, %val4
   1351 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1352 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1353 }
   1354 
   1355 define i8 @fun90(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
   1356                  i8 %val5, i8 %val6) {
   1357   %cmp0 = icmp eq i64 %val1, %val2
   1358   %cmp1 = icmp eq i64 %val3, %val4
   1359   %and = xor i1 %cmp0, %cmp1
   1360   %sel = select i1 %and, i8 %val5, i8 %val6
   1361   ret i8 %sel
   1362 
   1363 ; CHECK: fun90
   1364 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
   1365 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
   1366 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1367 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1368 }
   1369 
   1370 define i16 @fun91(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
   1371                   i16 %val5, i16 %val6) {
   1372   %cmp0 = icmp eq i64 %val1, %val2
   1373   %cmp1 = icmp eq i64 %val3, %val4
   1374   %and = xor i1 %cmp0, %cmp1
   1375   %sel = select i1 %and, i16 %val5, i16 %val6
   1376   ret i16 %sel
   1377 
   1378 ; CHECK: fun91
   1379 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
   1380 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
   1381 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1382 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1383 }
   1384 
   1385 define i32 @fun92(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
   1386                   i32 %val5, i32 %val6) {
   1387   %cmp0 = icmp eq i64 %val1, %val2
   1388   %cmp1 = icmp eq i64 %val3, %val4
   1389   %and = xor i1 %cmp0, %cmp1
   1390   %sel = select i1 %and, i32 %val5, i32 %val6
   1391   ret i32 %sel
   1392 
   1393 ; CHECK: fun92
   1394 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
   1395 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
   1396 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1397 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1398 }
   1399 
   1400 define i64 @fun93(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
   1401                   i64 %val5, i64 %val6) {
   1402   %cmp0 = icmp eq i64 %val1, %val2
   1403   %cmp1 = icmp eq i64 %val3, %val4
   1404   %and = xor i1 %cmp0, %cmp1
   1405   %sel = select i1 %and, i64 %val5, i64 %val6
   1406   ret i64 %sel
   1407 
   1408 ; CHECK: fun93
   1409 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
   1410 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
   1411 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1412 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1413 }
   1414 
   1415 define float @fun94(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
   1416                     float %val5, float %val6) {
   1417   %cmp0 = icmp eq i64 %val1, %val2
   1418   %cmp1 = icmp eq i64 %val3, %val4
   1419   %and = xor i1 %cmp0, %cmp1
   1420   %sel = select i1 %and, float %val5, float %val6
   1421   ret float %sel
   1422 
   1423 ; CHECK: fun94
   1424 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
   1425 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
   1426 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1427 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1428 }
   1429 
   1430 define double @fun95(i64 %val1, i64 %val2, i64 %val3, i64 %val4,
   1431                      double %val5, double %val6) {
   1432   %cmp0 = icmp eq i64 %val1, %val2
   1433   %cmp1 = icmp eq i64 %val3, %val4
   1434   %and = xor i1 %cmp0, %cmp1
   1435   %sel = select i1 %and, double %val5, double %val6
   1436   ret double %sel
   1437 
   1438 ; CHECK: fun95
   1439 ; CHECK: cost of 1 for instruction:   %cmp0 = icmp eq i64 %val1, %val2
   1440 ; CHECK: cost of 1 for instruction:   %cmp1 = icmp eq i64 %val3, %val4
   1441 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1442 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1443 }
   1444 
   1445 define i8 @fun96(float %val1, float %val2, float %val3, float %val4,
   1446                  i8 %val5, i8 %val6) {
   1447   %cmp0 = fcmp ogt float %val1, %val2
   1448   %cmp1 = fcmp ogt float %val3, %val4
   1449   %and = xor i1 %cmp0, %cmp1
   1450   %sel = select i1 %and, i8 %val5, i8 %val6
   1451   ret i8 %sel
   1452 
   1453 ; CHECK: fun96
   1454 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
   1455 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
   1456 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1457 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1458 }
   1459 
   1460 define i16 @fun97(float %val1, float %val2, float %val3, float %val4,
   1461                   i16 %val5, i16 %val6) {
   1462   %cmp0 = fcmp ogt float %val1, %val2
   1463   %cmp1 = fcmp ogt float %val3, %val4
   1464   %and = xor i1 %cmp0, %cmp1
   1465   %sel = select i1 %and, i16 %val5, i16 %val6
   1466   ret i16 %sel
   1467 
   1468 ; CHECK: fun97
   1469 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
   1470 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
   1471 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1472 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1473 }
   1474 
   1475 define i32 @fun98(float %val1, float %val2, float %val3, float %val4,
   1476                   i32 %val5, i32 %val6) {
   1477   %cmp0 = fcmp ogt float %val1, %val2
   1478   %cmp1 = fcmp ogt float %val3, %val4
   1479   %and = xor i1 %cmp0, %cmp1
   1480   %sel = select i1 %and, i32 %val5, i32 %val6
   1481   ret i32 %sel
   1482 
   1483 ; CHECK: fun98
   1484 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
   1485 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
   1486 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1487 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1488 }
   1489 
   1490 define i64 @fun99(float %val1, float %val2, float %val3, float %val4,
   1491                   i64 %val5, i64 %val6) {
   1492   %cmp0 = fcmp ogt float %val1, %val2
   1493   %cmp1 = fcmp ogt float %val3, %val4
   1494   %and = xor i1 %cmp0, %cmp1
   1495   %sel = select i1 %and, i64 %val5, i64 %val6
   1496   ret i64 %sel
   1497 
   1498 ; CHECK: fun99
   1499 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
   1500 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
   1501 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1502 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1503 }
   1504 
   1505 define float @fun100(float %val1, float %val2, float %val3, float %val4,
   1506                      float %val5, float %val6) {
   1507   %cmp0 = fcmp ogt float %val1, %val2
   1508   %cmp1 = fcmp ogt float %val3, %val4
   1509   %and = xor i1 %cmp0, %cmp1
   1510   %sel = select i1 %and, float %val5, float %val6
   1511   ret float %sel
   1512 
   1513 ; CHECK: fun100
   1514 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
   1515 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
   1516 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1517 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1518 }
   1519 
   1520 define double @fun101(float %val1, float %val2, float %val3, float %val4,
   1521                       double %val5, double %val6) {
   1522   %cmp0 = fcmp ogt float %val1, %val2
   1523   %cmp1 = fcmp ogt float %val3, %val4
   1524   %and = xor i1 %cmp0, %cmp1
   1525   %sel = select i1 %and, double %val5, double %val6
   1526   ret double %sel
   1527 
   1528 ; CHECK: fun101
   1529 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt float %val1, %val2
   1530 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt float %val3, %val4
   1531 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1532 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1533 }
   1534 
   1535 define i8 @fun102(double %val1, double %val2, double %val3, double %val4,
   1536                   i8 %val5, i8 %val6) {
   1537   %cmp0 = fcmp ogt double %val1, %val2
   1538   %cmp1 = fcmp ogt double %val3, %val4
   1539   %and = xor i1 %cmp0, %cmp1
   1540   %sel = select i1 %and, i8 %val5, i8 %val6
   1541   ret i8 %sel
   1542 
   1543 ; CHECK: fun102
   1544 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1545 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1546 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1547 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i8 %val5, i8 %val6
   1548 }
   1549 
   1550 define i16 @fun103(double %val1, double %val2, double %val3, double %val4,
   1551                    i16 %val5, i16 %val6) {
   1552   %cmp0 = fcmp ogt double %val1, %val2
   1553   %cmp1 = fcmp ogt double %val3, %val4
   1554   %and = xor i1 %cmp0, %cmp1
   1555   %sel = select i1 %and, i16 %val5, i16 %val6
   1556   ret i16 %sel
   1557 
   1558 ; CHECK: fun103
   1559 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1560 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1561 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1562 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i16 %val5, i16 %val6
   1563 }
   1564 
   1565 define i32 @fun104(double %val1, double %val2, double %val3, double %val4,
   1566                    i32 %val5, i32 %val6) {
   1567   %cmp0 = fcmp ogt double %val1, %val2
   1568   %cmp1 = fcmp ogt double %val3, %val4
   1569   %and = xor i1 %cmp0, %cmp1
   1570   %sel = select i1 %and, i32 %val5, i32 %val6
   1571   ret i32 %sel
   1572 
   1573 ; CHECK: fun104
   1574 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1575 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1576 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1577 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i32 %val5, i32 %val6
   1578 }
   1579 
   1580 define i64 @fun105(double %val1, double %val2, double %val3, double %val4,
   1581                    i64 %val5, i64 %val6) {
   1582   %cmp0 = fcmp ogt double %val1, %val2
   1583   %cmp1 = fcmp ogt double %val3, %val4
   1584   %and = xor i1 %cmp0, %cmp1
   1585   %sel = select i1 %and, i64 %val5, i64 %val6
   1586   ret i64 %sel
   1587 
   1588 ; CHECK: fun105
   1589 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1590 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1591 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1592 ; CHECK: cost of 1 for instruction:   %sel = select i1 %and, i64 %val5, i64 %val6
   1593 }
   1594 
   1595 define float @fun106(double %val1, double %val2, double %val3, double %val4,
   1596                      float %val5, float %val6) {
   1597   %cmp0 = fcmp ogt double %val1, %val2
   1598   %cmp1 = fcmp ogt double %val3, %val4
   1599   %and = xor i1 %cmp0, %cmp1
   1600   %sel = select i1 %and, float %val5, float %val6
   1601   ret float %sel
   1602 
   1603 ; CHECK: fun106
   1604 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1605 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1606 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1607 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, float %val5, float %val6
   1608 }
   1609 
   1610 define double @fun107(double %val1, double %val2, double %val3, double %val4,
   1611                       double %val5, double %val6) {
   1612   %cmp0 = fcmp ogt double %val1, %val2
   1613   %cmp1 = fcmp ogt double %val3, %val4
   1614   %and = xor i1 %cmp0, %cmp1
   1615   %sel = select i1 %and, double %val5, double %val6
   1616   ret double %sel
   1617 
   1618 ; CHECK: fun107
   1619 ; CHECK: cost of 1 for instruction:   %cmp0 = fcmp ogt double %val1, %val2
   1620 ; CHECK: cost of 1 for instruction:   %cmp1 = fcmp ogt double %val3, %val4
   1621 ; CHECK: cost of 7 for instruction:   %and = xor i1 %cmp0, %cmp1
   1622 ; CHECK: cost of 4 for instruction:   %sel = select i1 %and, double %val5, double %val6
   1623 }
   1624 
   1625