Home | History | Annotate | Download | only in SystemZ
      1 ; RUN: opt < %s -cost-model -analyze -mtriple=systemz-unknown -mcpu=z13 | FileCheck %s
      2 ;
      3 ; Note: Cost estimates of select of a fp-type is somewhat arbitrary, since it
      4 ; involves a conditional jump.
      5 ; Note: Vector fp32 is not directly supported, and not quite exact in
      6 ; estimates (but it is big absolute values).
      7 
      8 define i8 @fun0(i8 %val1, i8 %val2,
      9                 i8 %val3, i8 %val4) {
     10   %cmp = icmp eq i8 %val1, %val2
     11   %sel = select i1 %cmp, i8 %val3, i8 %val4
     12   ret i8 %sel
     13 
     14 ; CHECK: fun0
     15 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
     16 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
     17 }
     18 
     19 define i16 @fun1(i8 %val1, i8 %val2,
     20                  i16 %val3, i16 %val4) {
     21   %cmp = icmp eq i8 %val1, %val2
     22   %sel = select i1 %cmp, i16 %val3, i16 %val4
     23   ret i16 %sel
     24 
     25 ; CHECK: fun1
     26 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
     27 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
     28 }
     29 
     30 define i32 @fun2(i8 %val1, i8 %val2,
     31                  i32 %val3, i32 %val4) {
     32   %cmp = icmp eq i8 %val1, %val2
     33   %sel = select i1 %cmp, i32 %val3, i32 %val4
     34   ret i32 %sel
     35 
     36 ; CHECK: fun2
     37 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
     38 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
     39 }
     40 
     41 define i64 @fun3(i8 %val1, i8 %val2,
     42                  i64 %val3, i64 %val4) {
     43   %cmp = icmp eq i8 %val1, %val2
     44   %sel = select i1 %cmp, i64 %val3, i64 %val4
     45   ret i64 %sel
     46 
     47 ; CHECK: fun3
     48 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
     49 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
     50 }
     51 
     52 define float @fun4(i8 %val1, i8 %val2,
     53                    float %val3, float %val4) {
     54   %cmp = icmp eq i8 %val1, %val2
     55   %sel = select i1 %cmp, float %val3, float %val4
     56   ret float %sel
     57 
     58 ; CHECK: fun4
     59 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
     60 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
     61 }
     62 
     63 define double @fun5(i8 %val1, i8 %val2,
     64                     double %val3, double %val4) {
     65   %cmp = icmp eq i8 %val1, %val2
     66   %sel = select i1 %cmp, double %val3, double %val4
     67   ret double %sel
     68 
     69 ; CHECK: fun5
     70 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i8 %val1, %val2
     71 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
     72 }
     73 
     74 define i8 @fun6(i16 %val1, i16 %val2,
     75                 i8 %val3, i8 %val4) {
     76   %cmp = icmp eq i16 %val1, %val2
     77   %sel = select i1 %cmp, i8 %val3, i8 %val4
     78   ret i8 %sel
     79 
     80 ; CHECK: fun6
     81 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
     82 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
     83 }
     84 
     85 define i16 @fun7(i16 %val1, i16 %val2,
     86                  i16 %val3, i16 %val4) {
     87   %cmp = icmp eq i16 %val1, %val2
     88   %sel = select i1 %cmp, i16 %val3, i16 %val4
     89   ret i16 %sel
     90 
     91 ; CHECK: fun7
     92 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
     93 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
     94 }
     95 
     96 define i32 @fun8(i16 %val1, i16 %val2,
     97                  i32 %val3, i32 %val4) {
     98   %cmp = icmp eq i16 %val1, %val2
     99   %sel = select i1 %cmp, i32 %val3, i32 %val4
    100   ret i32 %sel
    101 
    102 ; CHECK: fun8
    103 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
    104 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
    105 }
    106 
    107 define i64 @fun9(i16 %val1, i16 %val2,
    108                  i64 %val3, i64 %val4) {
    109   %cmp = icmp eq i16 %val1, %val2
    110   %sel = select i1 %cmp, i64 %val3, i64 %val4
    111   ret i64 %sel
    112 
    113 ; CHECK: fun9
    114 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
    115 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
    116 }
    117 
    118 define float @fun10(i16 %val1, i16 %val2,
    119                     float %val3, float %val4) {
    120   %cmp = icmp eq i16 %val1, %val2
    121   %sel = select i1 %cmp, float %val3, float %val4
    122   ret float %sel
    123 
    124 ; CHECK: fun10
    125 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
    126 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
    127 }
    128 
    129 define double @fun11(i16 %val1, i16 %val2,
    130                      double %val3, double %val4) {
    131   %cmp = icmp eq i16 %val1, %val2
    132   %sel = select i1 %cmp, double %val3, double %val4
    133   ret double %sel
    134 
    135 ; CHECK: fun11
    136 ; CHECK: cost of 3 for instruction:   %cmp = icmp eq i16 %val1, %val2
    137 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
    138 }
    139 
    140 define i8 @fun12(i32 %val1, i32 %val2,
    141                  i8 %val3, i8 %val4) {
    142   %cmp = icmp eq i32 %val1, %val2
    143   %sel = select i1 %cmp, i8 %val3, i8 %val4
    144   ret i8 %sel
    145 
    146 ; CHECK: fun12
    147 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
    148 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
    149 }
    150 
    151 define i16 @fun13(i32 %val1, i32 %val2,
    152                   i16 %val3, i16 %val4) {
    153   %cmp = icmp eq i32 %val1, %val2
    154   %sel = select i1 %cmp, i16 %val3, i16 %val4
    155   ret i16 %sel
    156 
    157 ; CHECK: fun13
    158 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
    159 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
    160 }
    161 
    162 define i32 @fun14(i32 %val1, i32 %val2,
    163                   i32 %val3, i32 %val4) {
    164   %cmp = icmp eq i32 %val1, %val2
    165   %sel = select i1 %cmp, i32 %val3, i32 %val4
    166   ret i32 %sel
    167 
    168 ; CHECK: fun14
    169 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
    170 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
    171 }
    172 
    173 define i64 @fun15(i32 %val1, i32 %val2,
    174                   i64 %val3, i64 %val4) {
    175   %cmp = icmp eq i32 %val1, %val2
    176   %sel = select i1 %cmp, i64 %val3, i64 %val4
    177   ret i64 %sel
    178 
    179 ; CHECK: fun15
    180 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
    181 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
    182 }
    183 
    184 define float @fun16(i32 %val1, i32 %val2,
    185                     float %val3, float %val4) {
    186   %cmp = icmp eq i32 %val1, %val2
    187   %sel = select i1 %cmp, float %val3, float %val4
    188   ret float %sel
    189 
    190 ; CHECK: fun16
    191 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
    192 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
    193 }
    194 
    195 define double @fun17(i32 %val1, i32 %val2,
    196                      double %val3, double %val4) {
    197   %cmp = icmp eq i32 %val1, %val2
    198   %sel = select i1 %cmp, double %val3, double %val4
    199   ret double %sel
    200 
    201 ; CHECK: fun17
    202 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i32 %val1, %val2
    203 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
    204 }
    205 
    206 define i8 @fun18(i64 %val1, i64 %val2,
    207                  i8 %val3, i8 %val4) {
    208   %cmp = icmp eq i64 %val1, %val2
    209   %sel = select i1 %cmp, i8 %val3, i8 %val4
    210   ret i8 %sel
    211 
    212 ; CHECK: fun18
    213 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
    214 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
    215 }
    216 
    217 define i16 @fun19(i64 %val1, i64 %val2,
    218                   i16 %val3, i16 %val4) {
    219   %cmp = icmp eq i64 %val1, %val2
    220   %sel = select i1 %cmp, i16 %val3, i16 %val4
    221   ret i16 %sel
    222 
    223 ; CHECK: fun19
    224 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
    225 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
    226 }
    227 
    228 define i32 @fun20(i64 %val1, i64 %val2,
    229                   i32 %val3, i32 %val4) {
    230   %cmp = icmp eq i64 %val1, %val2
    231   %sel = select i1 %cmp, i32 %val3, i32 %val4
    232   ret i32 %sel
    233 
    234 ; CHECK: fun20
    235 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
    236 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
    237 }
    238 
    239 define i64 @fun21(i64 %val1, i64 %val2,
    240                   i64 %val3, i64 %val4) {
    241   %cmp = icmp eq i64 %val1, %val2
    242   %sel = select i1 %cmp, i64 %val3, i64 %val4
    243   ret i64 %sel
    244 
    245 ; CHECK: fun21
    246 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
    247 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
    248 }
    249 
    250 define float @fun22(i64 %val1, i64 %val2,
    251                     float %val3, float %val4) {
    252   %cmp = icmp eq i64 %val1, %val2
    253   %sel = select i1 %cmp, float %val3, float %val4
    254   ret float %sel
    255 
    256 ; CHECK: fun22
    257 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
    258 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
    259 }
    260 
    261 define double @fun23(i64 %val1, i64 %val2,
    262                      double %val3, double %val4) {
    263   %cmp = icmp eq i64 %val1, %val2
    264   %sel = select i1 %cmp, double %val3, double %val4
    265   ret double %sel
    266 
    267 ; CHECK: fun23
    268 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq i64 %val1, %val2
    269 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
    270 }
    271 
    272 define <2 x i8> @fun24(<2 x i8> %val1, <2 x i8> %val2,
    273                        <2 x i8> %val3, <2 x i8> %val4) {
    274   %cmp = icmp eq <2 x i8> %val1, %val2
    275   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    276   ret <2 x i8> %sel
    277 
    278 ; CHECK: fun24
    279 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
    280 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    281 }
    282 
    283 define <2 x i16> @fun25(<2 x i8> %val1, <2 x i8> %val2,
    284                         <2 x i16> %val3, <2 x i16> %val4) {
    285   %cmp = icmp eq <2 x i8> %val1, %val2
    286   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    287   ret <2 x i16> %sel
    288 
    289 ; CHECK: fun25
    290 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
    291 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    292 }
    293 
    294 define <2 x i32> @fun26(<2 x i8> %val1, <2 x i8> %val2,
    295                         <2 x i32> %val3, <2 x i32> %val4) {
    296   %cmp = icmp eq <2 x i8> %val1, %val2
    297   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    298   ret <2 x i32> %sel
    299 
    300 ; CHECK: fun26
    301 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
    302 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    303 }
    304 
    305 define <2 x i64> @fun27(<2 x i8> %val1, <2 x i8> %val2,
    306                         <2 x i64> %val3, <2 x i64> %val4) {
    307   %cmp = icmp eq <2 x i8> %val1, %val2
    308   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    309   ret <2 x i64> %sel
    310 
    311 ; CHECK: fun27
    312 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
    313 ; CHECK: cost of 4 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    314 }
    315 
    316 define <2 x float> @fun28(<2 x i8> %val1, <2 x i8> %val2,
    317                           <2 x float> %val3, <2 x float> %val4) {
    318   %cmp = icmp eq <2 x i8> %val1, %val2
    319   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    320   ret <2 x float> %sel
    321 
    322 ; CHECK: fun28
    323 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
    324 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    325 }
    326 
    327 define <2 x double> @fun29(<2 x i8> %val1, <2 x i8> %val2,
    328                            <2 x double> %val3, <2 x double> %val4) {
    329   %cmp = icmp eq <2 x i8> %val1, %val2
    330   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    331   ret <2 x double> %sel
    332 
    333 ; CHECK: fun29
    334 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i8> %val1, %val2
    335 ; CHECK: cost of 4 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    336 }
    337 
    338 define <2 x i8> @fun30(<2 x i16> %val1, <2 x i16> %val2,
    339                        <2 x i8> %val3, <2 x i8> %val4) {
    340   %cmp = icmp eq <2 x i16> %val1, %val2
    341   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    342   ret <2 x i8> %sel
    343 
    344 ; CHECK: fun30
    345 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
    346 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    347 }
    348 
    349 define <2 x i16> @fun31(<2 x i16> %val1, <2 x i16> %val2,
    350                         <2 x i16> %val3, <2 x i16> %val4) {
    351   %cmp = icmp eq <2 x i16> %val1, %val2
    352   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    353   ret <2 x i16> %sel
    354 
    355 ; CHECK: fun31
    356 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
    357 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    358 }
    359 
    360 define <2 x i32> @fun32(<2 x i16> %val1, <2 x i16> %val2,
    361                         <2 x i32> %val3, <2 x i32> %val4) {
    362   %cmp = icmp eq <2 x i16> %val1, %val2
    363   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    364   ret <2 x i32> %sel
    365 
    366 ; CHECK: fun32
    367 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
    368 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    369 }
    370 
    371 define <2 x i64> @fun33(<2 x i16> %val1, <2 x i16> %val2,
    372                         <2 x i64> %val3, <2 x i64> %val4) {
    373   %cmp = icmp eq <2 x i16> %val1, %val2
    374   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    375   ret <2 x i64> %sel
    376 
    377 ; CHECK: fun33
    378 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
    379 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    380 }
    381 
    382 define <2 x float> @fun34(<2 x i16> %val1, <2 x i16> %val2,
    383                           <2 x float> %val3, <2 x float> %val4) {
    384   %cmp = icmp eq <2 x i16> %val1, %val2
    385   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    386   ret <2 x float> %sel
    387 
    388 ; CHECK: fun34
    389 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
    390 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    391 }
    392 
    393 define <2 x double> @fun35(<2 x i16> %val1, <2 x i16> %val2,
    394                            <2 x double> %val3, <2 x double> %val4) {
    395   %cmp = icmp eq <2 x i16> %val1, %val2
    396   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    397   ret <2 x double> %sel
    398 
    399 ; CHECK: fun35
    400 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i16> %val1, %val2
    401 ; CHECK: cost of 3 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    402 }
    403 
    404 define <2 x i8> @fun36(<2 x i32> %val1, <2 x i32> %val2,
    405                        <2 x i8> %val3, <2 x i8> %val4) {
    406   %cmp = icmp eq <2 x i32> %val1, %val2
    407   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    408   ret <2 x i8> %sel
    409 
    410 ; CHECK: fun36
    411 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
    412 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    413 }
    414 
    415 define <2 x i16> @fun37(<2 x i32> %val1, <2 x i32> %val2,
    416                         <2 x i16> %val3, <2 x i16> %val4) {
    417   %cmp = icmp eq <2 x i32> %val1, %val2
    418   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    419   ret <2 x i16> %sel
    420 
    421 ; CHECK: fun37
    422 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
    423 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    424 }
    425 
    426 define <2 x i32> @fun38(<2 x i32> %val1, <2 x i32> %val2,
    427                         <2 x i32> %val3, <2 x i32> %val4) {
    428   %cmp = icmp eq <2 x i32> %val1, %val2
    429   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    430   ret <2 x i32> %sel
    431 
    432 ; CHECK: fun38
    433 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
    434 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    435 }
    436 
    437 define <2 x i64> @fun39(<2 x i32> %val1, <2 x i32> %val2,
    438                         <2 x i64> %val3, <2 x i64> %val4) {
    439   %cmp = icmp eq <2 x i32> %val1, %val2
    440   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    441   ret <2 x i64> %sel
    442 
    443 ; CHECK: fun39
    444 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
    445 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    446 }
    447 
    448 define <2 x float> @fun40(<2 x i32> %val1, <2 x i32> %val2,
    449                           <2 x float> %val3, <2 x float> %val4) {
    450   %cmp = icmp eq <2 x i32> %val1, %val2
    451   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    452   ret <2 x float> %sel
    453 
    454 ; CHECK: fun40
    455 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
    456 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    457 }
    458 
    459 define <2 x double> @fun41(<2 x i32> %val1, <2 x i32> %val2,
    460                            <2 x double> %val3, <2 x double> %val4) {
    461   %cmp = icmp eq <2 x i32> %val1, %val2
    462   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    463   ret <2 x double> %sel
    464 
    465 ; CHECK: fun41
    466 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i32> %val1, %val2
    467 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    468 }
    469 
    470 define <2 x i8> @fun42(<2 x i64> %val1, <2 x i64> %val2,
    471                        <2 x i8> %val3, <2 x i8> %val4) {
    472   %cmp = icmp eq <2 x i64> %val1, %val2
    473   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    474   ret <2 x i8> %sel
    475 
    476 ; CHECK: fun42
    477 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
    478 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
    479 }
    480 
    481 define <2 x i16> @fun43(<2 x i64> %val1, <2 x i64> %val2,
    482                         <2 x i16> %val3, <2 x i16> %val4) {
    483   %cmp = icmp eq <2 x i64> %val1, %val2
    484   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    485   ret <2 x i16> %sel
    486 
    487 ; CHECK: fun43
    488 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
    489 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
    490 }
    491 
    492 define <2 x i32> @fun44(<2 x i64> %val1, <2 x i64> %val2,
    493                         <2 x i32> %val3, <2 x i32> %val4) {
    494   %cmp = icmp eq <2 x i64> %val1, %val2
    495   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    496   ret <2 x i32> %sel
    497 
    498 ; CHECK: fun44
    499 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
    500 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
    501 }
    502 
    503 define <2 x i64> @fun45(<2 x i64> %val1, <2 x i64> %val2,
    504                         <2 x i64> %val3, <2 x i64> %val4) {
    505   %cmp = icmp eq <2 x i64> %val1, %val2
    506   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    507   ret <2 x i64> %sel
    508 
    509 ; CHECK: fun45
    510 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
    511 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
    512 }
    513 
    514 define <2 x float> @fun46(<2 x i64> %val1, <2 x i64> %val2,
    515                           <2 x float> %val3, <2 x float> %val4) {
    516   %cmp = icmp eq <2 x i64> %val1, %val2
    517   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    518   ret <2 x float> %sel
    519 
    520 ; CHECK: fun46
    521 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
    522 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
    523 }
    524 
    525 define <2 x double> @fun47(<2 x i64> %val1, <2 x i64> %val2,
    526                            <2 x double> %val3, <2 x double> %val4) {
    527   %cmp = icmp eq <2 x i64> %val1, %val2
    528   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    529   ret <2 x double> %sel
    530 
    531 ; CHECK: fun47
    532 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <2 x i64> %val1, %val2
    533 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
    534 }
    535 
    536 define <4 x i8> @fun48(<4 x i8> %val1, <4 x i8> %val2,
    537                        <4 x i8> %val3, <4 x i8> %val4) {
    538   %cmp = icmp eq <4 x i8> %val1, %val2
    539   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    540   ret <4 x i8> %sel
    541 
    542 ; CHECK: fun48
    543 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
    544 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    545 }
    546 
    547 define <4 x i16> @fun49(<4 x i8> %val1, <4 x i8> %val2,
    548                         <4 x i16> %val3, <4 x i16> %val4) {
    549   %cmp = icmp eq <4 x i8> %val1, %val2
    550   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    551   ret <4 x i16> %sel
    552 
    553 ; CHECK: fun49
    554 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
    555 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    556 }
    557 
    558 define <4 x i32> @fun50(<4 x i8> %val1, <4 x i8> %val2,
    559                         <4 x i32> %val3, <4 x i32> %val4) {
    560   %cmp = icmp eq <4 x i8> %val1, %val2
    561   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    562   ret <4 x i32> %sel
    563 
    564 ; CHECK: fun50
    565 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
    566 ; CHECK: cost of 3 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    567 }
    568 
    569 define <4 x i64> @fun51(<4 x i8> %val1, <4 x i8> %val2,
    570                         <4 x i64> %val3, <4 x i64> %val4) {
    571   %cmp = icmp eq <4 x i8> %val1, %val2
    572   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    573   ret <4 x i64> %sel
    574 
    575 ; CHECK: fun51
    576 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
    577 ; CHECK: cost of 9 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    578 }
    579 
    580 define <4 x float> @fun52(<4 x i8> %val1, <4 x i8> %val2,
    581                           <4 x float> %val3, <4 x float> %val4) {
    582   %cmp = icmp eq <4 x i8> %val1, %val2
    583   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    584   ret <4 x float> %sel
    585 
    586 ; CHECK: fun52
    587 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
    588 ; CHECK: cost of 3 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    589 }
    590 
    591 define <4 x double> @fun53(<4 x i8> %val1, <4 x i8> %val2,
    592                            <4 x double> %val3, <4 x double> %val4) {
    593   %cmp = icmp eq <4 x i8> %val1, %val2
    594   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    595   ret <4 x double> %sel
    596 
    597 ; CHECK: fun53
    598 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i8> %val1, %val2
    599 ; CHECK: cost of 9 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    600 }
    601 
    602 define <4 x i8> @fun54(<4 x i16> %val1, <4 x i16> %val2,
    603                        <4 x i8> %val3, <4 x i8> %val4) {
    604   %cmp = icmp eq <4 x i16> %val1, %val2
    605   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    606   ret <4 x i8> %sel
    607 
    608 ; CHECK: fun54
    609 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
    610 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    611 }
    612 
    613 define <4 x i16> @fun55(<4 x i16> %val1, <4 x i16> %val2,
    614                         <4 x i16> %val3, <4 x i16> %val4) {
    615   %cmp = icmp eq <4 x i16> %val1, %val2
    616   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    617   ret <4 x i16> %sel
    618 
    619 ; CHECK: fun55
    620 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
    621 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    622 }
    623 
    624 define <4 x i32> @fun56(<4 x i16> %val1, <4 x i16> %val2,
    625                         <4 x i32> %val3, <4 x i32> %val4) {
    626   %cmp = icmp eq <4 x i16> %val1, %val2
    627   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    628   ret <4 x i32> %sel
    629 
    630 ; CHECK: fun56
    631 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
    632 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    633 }
    634 
    635 define <4 x i64> @fun57(<4 x i16> %val1, <4 x i16> %val2,
    636                         <4 x i64> %val3, <4 x i64> %val4) {
    637   %cmp = icmp eq <4 x i16> %val1, %val2
    638   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    639   ret <4 x i64> %sel
    640 
    641 ; CHECK: fun57
    642 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
    643 ; CHECK: cost of 7 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    644 }
    645 
    646 define <4 x float> @fun58(<4 x i16> %val1, <4 x i16> %val2,
    647                           <4 x float> %val3, <4 x float> %val4) {
    648   %cmp = icmp eq <4 x i16> %val1, %val2
    649   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    650   ret <4 x float> %sel
    651 
    652 ; CHECK: fun58
    653 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
    654 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    655 }
    656 
    657 define <4 x double> @fun59(<4 x i16> %val1, <4 x i16> %val2,
    658                            <4 x double> %val3, <4 x double> %val4) {
    659   %cmp = icmp eq <4 x i16> %val1, %val2
    660   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    661   ret <4 x double> %sel
    662 
    663 ; CHECK: fun59
    664 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i16> %val1, %val2
    665 ; CHECK: cost of 7 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    666 }
    667 
    668 define <4 x i8> @fun60(<4 x i32> %val1, <4 x i32> %val2,
    669                        <4 x i8> %val3, <4 x i8> %val4) {
    670   %cmp = icmp eq <4 x i32> %val1, %val2
    671   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    672   ret <4 x i8> %sel
    673 
    674 ; CHECK: fun60
    675 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
    676 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    677 }
    678 
    679 define <4 x i16> @fun61(<4 x i32> %val1, <4 x i32> %val2,
    680                         <4 x i16> %val3, <4 x i16> %val4) {
    681   %cmp = icmp eq <4 x i32> %val1, %val2
    682   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    683   ret <4 x i16> %sel
    684 
    685 ; CHECK: fun61
    686 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
    687 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    688 }
    689 
    690 define <4 x i32> @fun62(<4 x i32> %val1, <4 x i32> %val2,
    691                         <4 x i32> %val3, <4 x i32> %val4) {
    692   %cmp = icmp eq <4 x i32> %val1, %val2
    693   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    694   ret <4 x i32> %sel
    695 
    696 ; CHECK: fun62
    697 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
    698 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    699 }
    700 
    701 define <4 x i64> @fun63(<4 x i32> %val1, <4 x i32> %val2,
    702                         <4 x i64> %val3, <4 x i64> %val4) {
    703   %cmp = icmp eq <4 x i32> %val1, %val2
    704   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    705   ret <4 x i64> %sel
    706 
    707 ; CHECK: fun63
    708 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
    709 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    710 }
    711 
    712 define <4 x float> @fun64(<4 x i32> %val1, <4 x i32> %val2,
    713                           <4 x float> %val3, <4 x float> %val4) {
    714   %cmp = icmp eq <4 x i32> %val1, %val2
    715   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    716   ret <4 x float> %sel
    717 
    718 ; CHECK: fun64
    719 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
    720 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    721 }
    722 
    723 define <4 x double> @fun65(<4 x i32> %val1, <4 x i32> %val2,
    724                            <4 x double> %val3, <4 x double> %val4) {
    725   %cmp = icmp eq <4 x i32> %val1, %val2
    726   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    727   ret <4 x double> %sel
    728 
    729 ; CHECK: fun65
    730 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <4 x i32> %val1, %val2
    731 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    732 }
    733 
    734 define <4 x i8> @fun66(<4 x i64> %val1, <4 x i64> %val2,
    735                        <4 x i8> %val3, <4 x i8> %val4) {
    736   %cmp = icmp eq <4 x i64> %val1, %val2
    737   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    738   ret <4 x i8> %sel
    739 
    740 ; CHECK: fun66
    741 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
    742 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
    743 }
    744 
    745 define <4 x i16> @fun67(<4 x i64> %val1, <4 x i64> %val2,
    746                         <4 x i16> %val3, <4 x i16> %val4) {
    747   %cmp = icmp eq <4 x i64> %val1, %val2
    748   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    749   ret <4 x i16> %sel
    750 
    751 ; CHECK: fun67
    752 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
    753 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
    754 }
    755 
    756 define <4 x i32> @fun68(<4 x i64> %val1, <4 x i64> %val2,
    757                         <4 x i32> %val3, <4 x i32> %val4) {
    758   %cmp = icmp eq <4 x i64> %val1, %val2
    759   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    760   ret <4 x i32> %sel
    761 
    762 ; CHECK: fun68
    763 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
    764 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
    765 }
    766 
    767 define <4 x i64> @fun69(<4 x i64> %val1, <4 x i64> %val2,
    768                         <4 x i64> %val3, <4 x i64> %val4) {
    769   %cmp = icmp eq <4 x i64> %val1, %val2
    770   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    771   ret <4 x i64> %sel
    772 
    773 ; CHECK: fun69
    774 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
    775 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
    776 }
    777 
    778 define <4 x float> @fun70(<4 x i64> %val1, <4 x i64> %val2,
    779                           <4 x float> %val3, <4 x float> %val4) {
    780   %cmp = icmp eq <4 x i64> %val1, %val2
    781   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    782   ret <4 x float> %sel
    783 
    784 ; CHECK: fun70
    785 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
    786 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
    787 }
    788 
    789 define <4 x double> @fun71(<4 x i64> %val1, <4 x i64> %val2,
    790                            <4 x double> %val3, <4 x double> %val4) {
    791   %cmp = icmp eq <4 x i64> %val1, %val2
    792   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    793   ret <4 x double> %sel
    794 
    795 ; CHECK: fun71
    796 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <4 x i64> %val1, %val2
    797 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
    798 }
    799 
    800 define <8 x i8> @fun72(<8 x i8> %val1, <8 x i8> %val2,
    801                        <8 x i8> %val3, <8 x i8> %val4) {
    802   %cmp = icmp eq <8 x i8> %val1, %val2
    803   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
    804   ret <8 x i8> %sel
    805 
    806 ; CHECK: fun72
    807 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
    808 ; CHECK: cost of 1 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
    809 }
    810 
    811 define <8 x i16> @fun73(<8 x i8> %val1, <8 x i8> %val2,
    812                         <8 x i16> %val3, <8 x i16> %val4) {
    813   %cmp = icmp eq <8 x i8> %val1, %val2
    814   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
    815   ret <8 x i16> %sel
    816 
    817 ; CHECK: fun73
    818 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
    819 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
    820 }
    821 
    822 define <8 x i32> @fun74(<8 x i8> %val1, <8 x i8> %val2,
    823                         <8 x i32> %val3, <8 x i32> %val4) {
    824   %cmp = icmp eq <8 x i8> %val1, %val2
    825   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
    826   ret <8 x i32> %sel
    827 
    828 ; CHECK: fun74
    829 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
    830 ; CHECK: cost of 7 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
    831 }
    832 
    833 define <8 x i64> @fun75(<8 x i8> %val1, <8 x i8> %val2,
    834                         <8 x i64> %val3, <8 x i64> %val4) {
    835   %cmp = icmp eq <8 x i8> %val1, %val2
    836   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
    837   ret <8 x i64> %sel
    838 
    839 ; CHECK: fun75
    840 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
    841 ; CHECK: cost of 19 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
    842 }
    843 
    844 define <8 x float> @fun76(<8 x i8> %val1, <8 x i8> %val2,
    845                           <8 x float> %val3, <8 x float> %val4) {
    846   %cmp = icmp eq <8 x i8> %val1, %val2
    847   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
    848   ret <8 x float> %sel
    849 
    850 ; CHECK: fun76
    851 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
    852 ; CHECK: cost of 7 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
    853 }
    854 
    855 define <8 x double> @fun77(<8 x i8> %val1, <8 x i8> %val2,
    856                            <8 x double> %val3, <8 x double> %val4) {
    857   %cmp = icmp eq <8 x i8> %val1, %val2
    858   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
    859   ret <8 x double> %sel
    860 
    861 ; CHECK: fun77
    862 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i8> %val1, %val2
    863 ; CHECK: cost of 19 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
    864 }
    865 
    866 define <8 x i8> @fun78(<8 x i16> %val1, <8 x i16> %val2,
    867                        <8 x i8> %val3, <8 x i8> %val4) {
    868   %cmp = icmp eq <8 x i16> %val1, %val2
    869   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
    870   ret <8 x i8> %sel
    871 
    872 ; CHECK: fun78
    873 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
    874 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
    875 }
    876 
    877 define <8 x i16> @fun79(<8 x i16> %val1, <8 x i16> %val2,
    878                         <8 x i16> %val3, <8 x i16> %val4) {
    879   %cmp = icmp eq <8 x i16> %val1, %val2
    880   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
    881   ret <8 x i16> %sel
    882 
    883 ; CHECK: fun79
    884 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
    885 ; CHECK: cost of 1 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
    886 }
    887 
    888 define <8 x i32> @fun80(<8 x i16> %val1, <8 x i16> %val2,
    889                         <8 x i32> %val3, <8 x i32> %val4) {
    890   %cmp = icmp eq <8 x i16> %val1, %val2
    891   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
    892   ret <8 x i32> %sel
    893 
    894 ; CHECK: fun80
    895 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
    896 ; CHECK: cost of 5 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
    897 }
    898 
    899 define <8 x i64> @fun81(<8 x i16> %val1, <8 x i16> %val2,
    900                         <8 x i64> %val3, <8 x i64> %val4) {
    901   %cmp = icmp eq <8 x i16> %val1, %val2
    902   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
    903   ret <8 x i64> %sel
    904 
    905 ; CHECK: fun81
    906 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
    907 ; CHECK: cost of 15 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
    908 }
    909 
    910 define <8 x float> @fun82(<8 x i16> %val1, <8 x i16> %val2,
    911                           <8 x float> %val3, <8 x float> %val4) {
    912   %cmp = icmp eq <8 x i16> %val1, %val2
    913   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
    914   ret <8 x float> %sel
    915 
    916 ; CHECK: fun82
    917 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
    918 ; CHECK: cost of 5 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
    919 }
    920 
    921 define <8 x double> @fun83(<8 x i16> %val1, <8 x i16> %val2,
    922                            <8 x double> %val3, <8 x double> %val4) {
    923   %cmp = icmp eq <8 x i16> %val1, %val2
    924   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
    925   ret <8 x double> %sel
    926 
    927 ; CHECK: fun83
    928 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <8 x i16> %val1, %val2
    929 ; CHECK: cost of 15 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
    930 }
    931 
    932 define <8 x i8> @fun84(<8 x i32> %val1, <8 x i32> %val2,
    933                        <8 x i8> %val3, <8 x i8> %val4) {
    934   %cmp = icmp eq <8 x i32> %val1, %val2
    935   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
    936   ret <8 x i8> %sel
    937 
    938 ; CHECK: fun84
    939 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
    940 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
    941 }
    942 
    943 define <8 x i16> @fun85(<8 x i32> %val1, <8 x i32> %val2,
    944                         <8 x i16> %val3, <8 x i16> %val4) {
    945   %cmp = icmp eq <8 x i32> %val1, %val2
    946   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
    947   ret <8 x i16> %sel
    948 
    949 ; CHECK: fun85
    950 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
    951 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
    952 }
    953 
    954 define <8 x i32> @fun86(<8 x i32> %val1, <8 x i32> %val2,
    955                         <8 x i32> %val3, <8 x i32> %val4) {
    956   %cmp = icmp eq <8 x i32> %val1, %val2
    957   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
    958   ret <8 x i32> %sel
    959 
    960 ; CHECK: fun86
    961 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
    962 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
    963 }
    964 
    965 define <8 x i64> @fun87(<8 x i32> %val1, <8 x i32> %val2,
    966                         <8 x i64> %val3, <8 x i64> %val4) {
    967   %cmp = icmp eq <8 x i32> %val1, %val2
    968   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
    969   ret <8 x i64> %sel
    970 
    971 ; CHECK: fun87
    972 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
    973 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
    974 }
    975 
    976 define <8 x float> @fun88(<8 x i32> %val1, <8 x i32> %val2,
    977                           <8 x float> %val3, <8 x float> %val4) {
    978   %cmp = icmp eq <8 x i32> %val1, %val2
    979   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
    980   ret <8 x float> %sel
    981 
    982 ; CHECK: fun88
    983 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
    984 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
    985 }
    986 
    987 define <8 x double> @fun89(<8 x i32> %val1, <8 x i32> %val2,
    988                            <8 x double> %val3, <8 x double> %val4) {
    989   %cmp = icmp eq <8 x i32> %val1, %val2
    990   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
    991   ret <8 x double> %sel
    992 
    993 ; CHECK: fun89
    994 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <8 x i32> %val1, %val2
    995 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
    996 }
    997 
    998 define <8 x i8> @fun90(<8 x i64> %val1, <8 x i64> %val2,
    999                        <8 x i8> %val3, <8 x i8> %val4) {
   1000   %cmp = icmp eq <8 x i64> %val1, %val2
   1001   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
   1002   ret <8 x i8> %sel
   1003 
   1004 ; CHECK: fun90
   1005 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
   1006 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
   1007 }
   1008 
   1009 define <8 x i16> @fun91(<8 x i64> %val1, <8 x i64> %val2,
   1010                         <8 x i16> %val3, <8 x i16> %val4) {
   1011   %cmp = icmp eq <8 x i64> %val1, %val2
   1012   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
   1013   ret <8 x i16> %sel
   1014 
   1015 ; CHECK: fun91
   1016 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
   1017 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
   1018 }
   1019 
   1020 define <8 x i32> @fun92(<8 x i64> %val1, <8 x i64> %val2,
   1021                         <8 x i32> %val3, <8 x i32> %val4) {
   1022   %cmp = icmp eq <8 x i64> %val1, %val2
   1023   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
   1024   ret <8 x i32> %sel
   1025 
   1026 ; CHECK: fun92
   1027 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
   1028 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
   1029 }
   1030 
   1031 define <8 x i64> @fun93(<8 x i64> %val1, <8 x i64> %val2,
   1032                         <8 x i64> %val3, <8 x i64> %val4) {
   1033   %cmp = icmp eq <8 x i64> %val1, %val2
   1034   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
   1035   ret <8 x i64> %sel
   1036 
   1037 ; CHECK: fun93
   1038 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
   1039 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
   1040 }
   1041 
   1042 define <8 x float> @fun94(<8 x i64> %val1, <8 x i64> %val2,
   1043                           <8 x float> %val3, <8 x float> %val4) {
   1044   %cmp = icmp eq <8 x i64> %val1, %val2
   1045   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
   1046   ret <8 x float> %sel
   1047 
   1048 ; CHECK: fun94
   1049 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
   1050 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
   1051 }
   1052 
   1053 define <8 x double> @fun95(<8 x i64> %val1, <8 x i64> %val2,
   1054                            <8 x double> %val3, <8 x double> %val4) {
   1055   %cmp = icmp eq <8 x i64> %val1, %val2
   1056   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
   1057   ret <8 x double> %sel
   1058 
   1059 ; CHECK: fun95
   1060 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <8 x i64> %val1, %val2
   1061 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
   1062 }
   1063 
   1064 define <16 x i8> @fun96(<16 x i8> %val1, <16 x i8> %val2,
   1065                         <16 x i8> %val3, <16 x i8> %val4) {
   1066   %cmp = icmp eq <16 x i8> %val1, %val2
   1067   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1068   ret <16 x i8> %sel
   1069 
   1070 ; CHECK: fun96
   1071 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
   1072 ; CHECK: cost of 1 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1073 }
   1074 
   1075 define <16 x i16> @fun97(<16 x i8> %val1, <16 x i8> %val2,
   1076                          <16 x i16> %val3, <16 x i16> %val4) {
   1077   %cmp = icmp eq <16 x i8> %val1, %val2
   1078   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1079   ret <16 x i16> %sel
   1080 
   1081 ; CHECK: fun97
   1082 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
   1083 ; CHECK: cost of 5 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1084 }
   1085 
   1086 define <16 x i32> @fun98(<16 x i8> %val1, <16 x i8> %val2,
   1087                          <16 x i32> %val3, <16 x i32> %val4) {
   1088   %cmp = icmp eq <16 x i8> %val1, %val2
   1089   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1090   ret <16 x i32> %sel
   1091 
   1092 ; CHECK: fun98
   1093 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
   1094 ; CHECK: cost of 15 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1095 }
   1096 
   1097 define <16 x i64> @fun99(<16 x i8> %val1, <16 x i8> %val2,
   1098                          <16 x i64> %val3, <16 x i64> %val4) {
   1099   %cmp = icmp eq <16 x i8> %val1, %val2
   1100   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1101   ret <16 x i64> %sel
   1102 
   1103 ; CHECK: fun99
   1104 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
   1105 ; CHECK: cost of 39 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1106 }
   1107 
   1108 define <16 x float> @fun100(<16 x i8> %val1, <16 x i8> %val2,
   1109                             <16 x float> %val3, <16 x float> %val4) {
   1110   %cmp = icmp eq <16 x i8> %val1, %val2
   1111   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1112   ret <16 x float> %sel
   1113 
   1114 ; CHECK: fun100
   1115 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
   1116 ; CHECK: cost of 15 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1117 }
   1118 
   1119 define <16 x double> @fun101(<16 x i8> %val1, <16 x i8> %val2,
   1120                              <16 x double> %val3, <16 x double> %val4) {
   1121   %cmp = icmp eq <16 x i8> %val1, %val2
   1122   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1123   ret <16 x double> %sel
   1124 
   1125 ; CHECK: fun101
   1126 ; CHECK: cost of 1 for instruction:   %cmp = icmp eq <16 x i8> %val1, %val2
   1127 ; CHECK: cost of 39 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1128 }
   1129 
   1130 define <16 x i8> @fun102(<16 x i16> %val1, <16 x i16> %val2,
   1131                          <16 x i8> %val3, <16 x i8> %val4) {
   1132   %cmp = icmp eq <16 x i16> %val1, %val2
   1133   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1134   ret <16 x i8> %sel
   1135 
   1136 ; CHECK: fun102
   1137 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
   1138 ; CHECK: cost of 2 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1139 }
   1140 
   1141 define <16 x i16> @fun103(<16 x i16> %val1, <16 x i16> %val2,
   1142                           <16 x i16> %val3, <16 x i16> %val4) {
   1143   %cmp = icmp eq <16 x i16> %val1, %val2
   1144   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1145   ret <16 x i16> %sel
   1146 
   1147 ; CHECK: fun103
   1148 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
   1149 ; CHECK: cost of 2 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1150 }
   1151 
   1152 define <16 x i32> @fun104(<16 x i16> %val1, <16 x i16> %val2,
   1153                           <16 x i32> %val3, <16 x i32> %val4) {
   1154   %cmp = icmp eq <16 x i16> %val1, %val2
   1155   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1156   ret <16 x i32> %sel
   1157 
   1158 ; CHECK: fun104
   1159 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
   1160 ; CHECK: cost of 11 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1161 }
   1162 
   1163 define <16 x i64> @fun105(<16 x i16> %val1, <16 x i16> %val2,
   1164                           <16 x i64> %val3, <16 x i64> %val4) {
   1165   %cmp = icmp eq <16 x i16> %val1, %val2
   1166   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1167   ret <16 x i64> %sel
   1168 
   1169 ; CHECK: fun105
   1170 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
   1171 ; CHECK: cost of 31 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1172 }
   1173 
   1174 define <16 x float> @fun106(<16 x i16> %val1, <16 x i16> %val2,
   1175                             <16 x float> %val3, <16 x float> %val4) {
   1176   %cmp = icmp eq <16 x i16> %val1, %val2
   1177   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1178   ret <16 x float> %sel
   1179 
   1180 ; CHECK: fun106
   1181 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
   1182 ; CHECK: cost of 11 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1183 }
   1184 
   1185 define <16 x double> @fun107(<16 x i16> %val1, <16 x i16> %val2,
   1186                              <16 x double> %val3, <16 x double> %val4) {
   1187   %cmp = icmp eq <16 x i16> %val1, %val2
   1188   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1189   ret <16 x double> %sel
   1190 
   1191 ; CHECK: fun107
   1192 ; CHECK: cost of 2 for instruction:   %cmp = icmp eq <16 x i16> %val1, %val2
   1193 ; CHECK: cost of 31 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1194 }
   1195 
   1196 define <16 x i8> @fun108(<16 x i32> %val1, <16 x i32> %val2,
   1197                          <16 x i8> %val3, <16 x i8> %val4) {
   1198   %cmp = icmp eq <16 x i32> %val1, %val2
   1199   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1200   ret <16 x i8> %sel
   1201 
   1202 ; CHECK: fun108
   1203 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
   1204 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1205 }
   1206 
   1207 define <16 x i16> @fun109(<16 x i32> %val1, <16 x i32> %val2,
   1208                           <16 x i16> %val3, <16 x i16> %val4) {
   1209   %cmp = icmp eq <16 x i32> %val1, %val2
   1210   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1211   ret <16 x i16> %sel
   1212 
   1213 ; CHECK: fun109
   1214 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
   1215 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1216 }
   1217 
   1218 define <16 x i32> @fun110(<16 x i32> %val1, <16 x i32> %val2,
   1219                           <16 x i32> %val3, <16 x i32> %val4) {
   1220   %cmp = icmp eq <16 x i32> %val1, %val2
   1221   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1222   ret <16 x i32> %sel
   1223 
   1224 ; CHECK: fun110
   1225 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
   1226 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1227 }
   1228 
   1229 define <16 x i64> @fun111(<16 x i32> %val1, <16 x i32> %val2,
   1230                           <16 x i64> %val3, <16 x i64> %val4) {
   1231   %cmp = icmp eq <16 x i32> %val1, %val2
   1232   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1233   ret <16 x i64> %sel
   1234 
   1235 ; CHECK: fun111
   1236 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
   1237 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1238 }
   1239 
   1240 define <16 x float> @fun112(<16 x i32> %val1, <16 x i32> %val2,
   1241                             <16 x float> %val3, <16 x float> %val4) {
   1242   %cmp = icmp eq <16 x i32> %val1, %val2
   1243   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1244   ret <16 x float> %sel
   1245 
   1246 ; CHECK: fun112
   1247 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
   1248 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1249 }
   1250 
   1251 define <16 x double> @fun113(<16 x i32> %val1, <16 x i32> %val2,
   1252                              <16 x double> %val3, <16 x double> %val4) {
   1253   %cmp = icmp eq <16 x i32> %val1, %val2
   1254   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1255   ret <16 x double> %sel
   1256 
   1257 ; CHECK: fun113
   1258 ; CHECK: cost of 4 for instruction:   %cmp = icmp eq <16 x i32> %val1, %val2
   1259 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1260 }
   1261 
   1262 define <16 x i8> @fun114(<16 x i64> %val1, <16 x i64> %val2,
   1263                          <16 x i8> %val3, <16 x i8> %val4) {
   1264   %cmp = icmp eq <16 x i64> %val1, %val2
   1265   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1266   ret <16 x i8> %sel
   1267 
   1268 ; CHECK: fun114
   1269 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
   1270 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1271 }
   1272 
   1273 define <16 x i16> @fun115(<16 x i64> %val1, <16 x i64> %val2,
   1274                           <16 x i16> %val3, <16 x i16> %val4) {
   1275   %cmp = icmp eq <16 x i64> %val1, %val2
   1276   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1277   ret <16 x i16> %sel
   1278 
   1279 ; CHECK: fun115
   1280 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
   1281 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1282 }
   1283 
   1284 define <16 x i32> @fun116(<16 x i64> %val1, <16 x i64> %val2,
   1285                           <16 x i32> %val3, <16 x i32> %val4) {
   1286   %cmp = icmp eq <16 x i64> %val1, %val2
   1287   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1288   ret <16 x i32> %sel
   1289 
   1290 ; CHECK: fun116
   1291 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
   1292 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1293 }
   1294 
   1295 define <16 x i64> @fun117(<16 x i64> %val1, <16 x i64> %val2,
   1296                           <16 x i64> %val3, <16 x i64> %val4) {
   1297   %cmp = icmp eq <16 x i64> %val1, %val2
   1298   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1299   ret <16 x i64> %sel
   1300 
   1301 ; CHECK: fun117
   1302 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
   1303 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1304 }
   1305 
   1306 define <16 x float> @fun118(<16 x i64> %val1, <16 x i64> %val2,
   1307                             <16 x float> %val3, <16 x float> %val4) {
   1308   %cmp = icmp eq <16 x i64> %val1, %val2
   1309   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1310   ret <16 x float> %sel
   1311 
   1312 ; CHECK: fun118
   1313 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
   1314 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1315 }
   1316 
   1317 define <16 x double> @fun119(<16 x i64> %val1, <16 x i64> %val2,
   1318                              <16 x double> %val3, <16 x double> %val4) {
   1319   %cmp = icmp eq <16 x i64> %val1, %val2
   1320   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1321   ret <16 x double> %sel
   1322 
   1323 ; CHECK: fun119
   1324 ; CHECK: cost of 8 for instruction:   %cmp = icmp eq <16 x i64> %val1, %val2
   1325 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1326 }
   1327 
   1328 define i8 @fun120(float %val1, float %val2,
   1329                   i8 %val3, i8 %val4) {
   1330   %cmp = fcmp ogt float %val1, %val2
   1331   %sel = select i1 %cmp, i8 %val3, i8 %val4
   1332   ret i8 %sel
   1333 
   1334 ; CHECK: fun120
   1335 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
   1336 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
   1337 }
   1338 
   1339 define i16 @fun121(float %val1, float %val2,
   1340                    i16 %val3, i16 %val4) {
   1341   %cmp = fcmp ogt float %val1, %val2
   1342   %sel = select i1 %cmp, i16 %val3, i16 %val4
   1343   ret i16 %sel
   1344 
   1345 ; CHECK: fun121
   1346 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
   1347 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
   1348 }
   1349 
   1350 define i32 @fun122(float %val1, float %val2,
   1351                    i32 %val3, i32 %val4) {
   1352   %cmp = fcmp ogt float %val1, %val2
   1353   %sel = select i1 %cmp, i32 %val3, i32 %val4
   1354   ret i32 %sel
   1355 
   1356 ; CHECK: fun122
   1357 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
   1358 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
   1359 }
   1360 
   1361 define i64 @fun123(float %val1, float %val2,
   1362                    i64 %val3, i64 %val4) {
   1363   %cmp = fcmp ogt float %val1, %val2
   1364   %sel = select i1 %cmp, i64 %val3, i64 %val4
   1365   ret i64 %sel
   1366 
   1367 ; CHECK: fun123
   1368 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
   1369 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
   1370 }
   1371 
   1372 define float @fun124(float %val1, float %val2,
   1373                      float %val3, float %val4) {
   1374   %cmp = fcmp ogt float %val1, %val2
   1375   %sel = select i1 %cmp, float %val3, float %val4
   1376   ret float %sel
   1377 
   1378 ; CHECK: fun124
   1379 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
   1380 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
   1381 }
   1382 
   1383 define double @fun125(float %val1, float %val2,
   1384                       double %val3, double %val4) {
   1385   %cmp = fcmp ogt float %val1, %val2
   1386   %sel = select i1 %cmp, double %val3, double %val4
   1387   ret double %sel
   1388 
   1389 ; CHECK: fun125
   1390 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt float %val1, %val2
   1391 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
   1392 }
   1393 
   1394 define i8 @fun126(double %val1, double %val2,
   1395                   i8 %val3, i8 %val4) {
   1396   %cmp = fcmp ogt double %val1, %val2
   1397   %sel = select i1 %cmp, i8 %val3, i8 %val4
   1398   ret i8 %sel
   1399 
   1400 ; CHECK: fun126
   1401 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
   1402 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i8 %val3, i8 %val4
   1403 }
   1404 
   1405 define i16 @fun127(double %val1, double %val2,
   1406                    i16 %val3, i16 %val4) {
   1407   %cmp = fcmp ogt double %val1, %val2
   1408   %sel = select i1 %cmp, i16 %val3, i16 %val4
   1409   ret i16 %sel
   1410 
   1411 ; CHECK: fun127
   1412 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
   1413 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i16 %val3, i16 %val4
   1414 }
   1415 
   1416 define i32 @fun128(double %val1, double %val2,
   1417                    i32 %val3, i32 %val4) {
   1418   %cmp = fcmp ogt double %val1, %val2
   1419   %sel = select i1 %cmp, i32 %val3, i32 %val4
   1420   ret i32 %sel
   1421 
   1422 ; CHECK: fun128
   1423 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
   1424 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i32 %val3, i32 %val4
   1425 }
   1426 
   1427 define i64 @fun129(double %val1, double %val2,
   1428                    i64 %val3, i64 %val4) {
   1429   %cmp = fcmp ogt double %val1, %val2
   1430   %sel = select i1 %cmp, i64 %val3, i64 %val4
   1431   ret i64 %sel
   1432 
   1433 ; CHECK: fun129
   1434 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
   1435 ; CHECK: cost of 1 for instruction:   %sel = select i1 %cmp, i64 %val3, i64 %val4
   1436 }
   1437 
   1438 define float @fun130(double %val1, double %val2,
   1439                      float %val3, float %val4) {
   1440   %cmp = fcmp ogt double %val1, %val2
   1441   %sel = select i1 %cmp, float %val3, float %val4
   1442   ret float %sel
   1443 
   1444 ; CHECK: fun130
   1445 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
   1446 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, float %val3, float %val4
   1447 }
   1448 
   1449 define double @fun131(double %val1, double %val2,
   1450                       double %val3, double %val4) {
   1451   %cmp = fcmp ogt double %val1, %val2
   1452   %sel = select i1 %cmp, double %val3, double %val4
   1453   ret double %sel
   1454 
   1455 ; CHECK: fun131
   1456 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt double %val1, %val2
   1457 ; CHECK: cost of 4 for instruction:   %sel = select i1 %cmp, double %val3, double %val4
   1458 }
   1459 
   1460 define <2 x i8> @fun132(<2 x float> %val1, <2 x float> %val2,
   1461                         <2 x i8> %val3, <2 x i8> %val4) {
   1462   %cmp = fcmp ogt <2 x float> %val1, %val2
   1463   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
   1464   ret <2 x i8> %sel
   1465 
   1466 ; CHECK: fun132
   1467 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
   1468 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
   1469 }
   1470 
   1471 define <2 x i16> @fun133(<2 x float> %val1, <2 x float> %val2,
   1472                          <2 x i16> %val3, <2 x i16> %val4) {
   1473   %cmp = fcmp ogt <2 x float> %val1, %val2
   1474   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
   1475   ret <2 x i16> %sel
   1476 
   1477 ; CHECK: fun133
   1478 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
   1479 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
   1480 }
   1481 
   1482 define <2 x i32> @fun134(<2 x float> %val1, <2 x float> %val2,
   1483                          <2 x i32> %val3, <2 x i32> %val4) {
   1484   %cmp = fcmp ogt <2 x float> %val1, %val2
   1485   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
   1486   ret <2 x i32> %sel
   1487 
   1488 ; CHECK: fun134
   1489 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
   1490 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
   1491 }
   1492 
   1493 define <2 x i64> @fun135(<2 x float> %val1, <2 x float> %val2,
   1494                          <2 x i64> %val3, <2 x i64> %val4) {
   1495   %cmp = fcmp ogt <2 x float> %val1, %val2
   1496   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
   1497   ret <2 x i64> %sel
   1498 
   1499 ; CHECK: fun135
   1500 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
   1501 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
   1502 }
   1503 
   1504 define <2 x float> @fun136(<2 x float> %val1, <2 x float> %val2,
   1505                            <2 x float> %val3, <2 x float> %val4) {
   1506   %cmp = fcmp ogt <2 x float> %val1, %val2
   1507   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
   1508   ret <2 x float> %sel
   1509 
   1510 ; CHECK: fun136
   1511 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
   1512 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
   1513 }
   1514 
   1515 define <2 x double> @fun137(<2 x float> %val1, <2 x float> %val2,
   1516                             <2 x double> %val3, <2 x double> %val4) {
   1517   %cmp = fcmp ogt <2 x float> %val1, %val2
   1518   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
   1519   ret <2 x double> %sel
   1520 
   1521 ; CHECK: fun137
   1522 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <2 x float> %val1, %val2
   1523 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
   1524 }
   1525 
   1526 define <2 x i8> @fun138(<2 x double> %val1, <2 x double> %val2,
   1527                         <2 x i8> %val3, <2 x i8> %val4) {
   1528   %cmp = fcmp ogt <2 x double> %val1, %val2
   1529   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
   1530   ret <2 x i8> %sel
   1531 
   1532 ; CHECK: fun138
   1533 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
   1534 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i8> %val3, <2 x i8> %val4
   1535 }
   1536 
   1537 define <2 x i16> @fun139(<2 x double> %val1, <2 x double> %val2,
   1538                          <2 x i16> %val3, <2 x i16> %val4) {
   1539   %cmp = fcmp ogt <2 x double> %val1, %val2
   1540   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
   1541   ret <2 x i16> %sel
   1542 
   1543 ; CHECK: fun139
   1544 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
   1545 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i16> %val3, <2 x i16> %val4
   1546 }
   1547 
   1548 define <2 x i32> @fun140(<2 x double> %val1, <2 x double> %val2,
   1549                          <2 x i32> %val3, <2 x i32> %val4) {
   1550   %cmp = fcmp ogt <2 x double> %val1, %val2
   1551   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
   1552   ret <2 x i32> %sel
   1553 
   1554 ; CHECK: fun140
   1555 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
   1556 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x i32> %val3, <2 x i32> %val4
   1557 }
   1558 
   1559 define <2 x i64> @fun141(<2 x double> %val1, <2 x double> %val2,
   1560                          <2 x i64> %val3, <2 x i64> %val4) {
   1561   %cmp = fcmp ogt <2 x double> %val1, %val2
   1562   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
   1563   ret <2 x i64> %sel
   1564 
   1565 ; CHECK: fun141
   1566 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
   1567 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x i64> %val3, <2 x i64> %val4
   1568 }
   1569 
   1570 define <2 x float> @fun142(<2 x double> %val1, <2 x double> %val2,
   1571                            <2 x float> %val3, <2 x float> %val4) {
   1572   %cmp = fcmp ogt <2 x double> %val1, %val2
   1573   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
   1574   ret <2 x float> %sel
   1575 
   1576 ; CHECK: fun142
   1577 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
   1578 ; CHECK: cost of 2 for instruction:   %sel = select <2 x i1> %cmp, <2 x float> %val3, <2 x float> %val4
   1579 }
   1580 
   1581 define <2 x double> @fun143(<2 x double> %val1, <2 x double> %val2,
   1582                             <2 x double> %val3, <2 x double> %val4) {
   1583   %cmp = fcmp ogt <2 x double> %val1, %val2
   1584   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
   1585   ret <2 x double> %sel
   1586 
   1587 ; CHECK: fun143
   1588 ; CHECK: cost of 1 for instruction:   %cmp = fcmp ogt <2 x double> %val1, %val2
   1589 ; CHECK: cost of 1 for instruction:   %sel = select <2 x i1> %cmp, <2 x double> %val3, <2 x double> %val4
   1590 }
   1591 
   1592 define <4 x i8> @fun144(<4 x float> %val1, <4 x float> %val2,
   1593                         <4 x i8> %val3, <4 x i8> %val4) {
   1594   %cmp = fcmp ogt <4 x float> %val1, %val2
   1595   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
   1596   ret <4 x i8> %sel
   1597 
   1598 ; CHECK: fun144
   1599 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
   1600 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
   1601 }
   1602 
   1603 define <4 x i16> @fun145(<4 x float> %val1, <4 x float> %val2,
   1604                          <4 x i16> %val3, <4 x i16> %val4) {
   1605   %cmp = fcmp ogt <4 x float> %val1, %val2
   1606   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
   1607   ret <4 x i16> %sel
   1608 
   1609 ; CHECK: fun145
   1610 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
   1611 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
   1612 }
   1613 
   1614 define <4 x i32> @fun146(<4 x float> %val1, <4 x float> %val2,
   1615                          <4 x i32> %val3, <4 x i32> %val4) {
   1616   %cmp = fcmp ogt <4 x float> %val1, %val2
   1617   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
   1618   ret <4 x i32> %sel
   1619 
   1620 ; CHECK: fun146
   1621 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
   1622 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
   1623 }
   1624 
   1625 define <4 x i64> @fun147(<4 x float> %val1, <4 x float> %val2,
   1626                          <4 x i64> %val3, <4 x i64> %val4) {
   1627   %cmp = fcmp ogt <4 x float> %val1, %val2
   1628   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
   1629   ret <4 x i64> %sel
   1630 
   1631 ; CHECK: fun147
   1632 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
   1633 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
   1634 }
   1635 
   1636 define <4 x float> @fun148(<4 x float> %val1, <4 x float> %val2,
   1637                            <4 x float> %val3, <4 x float> %val4) {
   1638   %cmp = fcmp ogt <4 x float> %val1, %val2
   1639   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
   1640   ret <4 x float> %sel
   1641 
   1642 ; CHECK: fun148
   1643 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
   1644 ; CHECK: cost of 1 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
   1645 }
   1646 
   1647 define <4 x double> @fun149(<4 x float> %val1, <4 x float> %val2,
   1648                             <4 x double> %val3, <4 x double> %val4) {
   1649   %cmp = fcmp ogt <4 x float> %val1, %val2
   1650   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
   1651   ret <4 x double> %sel
   1652 
   1653 ; CHECK: fun149
   1654 ; CHECK: cost of 10 for instruction:   %cmp = fcmp ogt <4 x float> %val1, %val2
   1655 ; CHECK: cost of 5 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
   1656 }
   1657 
   1658 define <4 x i8> @fun150(<4 x double> %val1, <4 x double> %val2,
   1659                         <4 x i8> %val3, <4 x i8> %val4) {
   1660   %cmp = fcmp ogt <4 x double> %val1, %val2
   1661   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
   1662   ret <4 x i8> %sel
   1663 
   1664 ; CHECK: fun150
   1665 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
   1666 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i8> %val3, <4 x i8> %val4
   1667 }
   1668 
   1669 define <4 x i16> @fun151(<4 x double> %val1, <4 x double> %val2,
   1670                          <4 x i16> %val3, <4 x i16> %val4) {
   1671   %cmp = fcmp ogt <4 x double> %val1, %val2
   1672   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
   1673   ret <4 x i16> %sel
   1674 
   1675 ; CHECK: fun151
   1676 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
   1677 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i16> %val3, <4 x i16> %val4
   1678 }
   1679 
   1680 define <4 x i32> @fun152(<4 x double> %val1, <4 x double> %val2,
   1681                          <4 x i32> %val3, <4 x i32> %val4) {
   1682   %cmp = fcmp ogt <4 x double> %val1, %val2
   1683   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
   1684   ret <4 x i32> %sel
   1685 
   1686 ; CHECK: fun152
   1687 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
   1688 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i32> %val3, <4 x i32> %val4
   1689 }
   1690 
   1691 define <4 x i64> @fun153(<4 x double> %val1, <4 x double> %val2,
   1692                          <4 x i64> %val3, <4 x i64> %val4) {
   1693   %cmp = fcmp ogt <4 x double> %val1, %val2
   1694   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
   1695   ret <4 x i64> %sel
   1696 
   1697 ; CHECK: fun153
   1698 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
   1699 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x i64> %val3, <4 x i64> %val4
   1700 }
   1701 
   1702 define <4 x float> @fun154(<4 x double> %val1, <4 x double> %val2,
   1703                            <4 x float> %val3, <4 x float> %val4) {
   1704   %cmp = fcmp ogt <4 x double> %val1, %val2
   1705   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
   1706   ret <4 x float> %sel
   1707 
   1708 ; CHECK: fun154
   1709 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
   1710 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x float> %val3, <4 x float> %val4
   1711 }
   1712 
   1713 define <4 x double> @fun155(<4 x double> %val1, <4 x double> %val2,
   1714                             <4 x double> %val3, <4 x double> %val4) {
   1715   %cmp = fcmp ogt <4 x double> %val1, %val2
   1716   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
   1717   ret <4 x double> %sel
   1718 
   1719 ; CHECK: fun155
   1720 ; CHECK: cost of 2 for instruction:   %cmp = fcmp ogt <4 x double> %val1, %val2
   1721 ; CHECK: cost of 2 for instruction:   %sel = select <4 x i1> %cmp, <4 x double> %val3, <4 x double> %val4
   1722 }
   1723 
   1724 define <8 x i8> @fun156(<8 x float> %val1, <8 x float> %val2,
   1725                         <8 x i8> %val3, <8 x i8> %val4) {
   1726   %cmp = fcmp ogt <8 x float> %val1, %val2
   1727   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
   1728   ret <8 x i8> %sel
   1729 
   1730 ; CHECK: fun156
   1731 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
   1732 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
   1733 }
   1734 
   1735 define <8 x i16> @fun157(<8 x float> %val1, <8 x float> %val2,
   1736                          <8 x i16> %val3, <8 x i16> %val4) {
   1737   %cmp = fcmp ogt <8 x float> %val1, %val2
   1738   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
   1739   ret <8 x i16> %sel
   1740 
   1741 ; CHECK: fun157
   1742 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
   1743 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
   1744 }
   1745 
   1746 define <8 x i32> @fun158(<8 x float> %val1, <8 x float> %val2,
   1747                          <8 x i32> %val3, <8 x i32> %val4) {
   1748   %cmp = fcmp ogt <8 x float> %val1, %val2
   1749   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
   1750   ret <8 x i32> %sel
   1751 
   1752 ; CHECK: fun158
   1753 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
   1754 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
   1755 }
   1756 
   1757 define <8 x i64> @fun159(<8 x float> %val1, <8 x float> %val2,
   1758                          <8 x i64> %val3, <8 x i64> %val4) {
   1759   %cmp = fcmp ogt <8 x float> %val1, %val2
   1760   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
   1761   ret <8 x i64> %sel
   1762 
   1763 ; CHECK: fun159
   1764 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
   1765 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
   1766 }
   1767 
   1768 define <8 x float> @fun160(<8 x float> %val1, <8 x float> %val2,
   1769                            <8 x float> %val3, <8 x float> %val4) {
   1770   %cmp = fcmp ogt <8 x float> %val1, %val2
   1771   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
   1772   ret <8 x float> %sel
   1773 
   1774 ; CHECK: fun160
   1775 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
   1776 ; CHECK: cost of 2 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
   1777 }
   1778 
   1779 define <8 x double> @fun161(<8 x float> %val1, <8 x float> %val2,
   1780                             <8 x double> %val3, <8 x double> %val4) {
   1781   %cmp = fcmp ogt <8 x float> %val1, %val2
   1782   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
   1783   ret <8 x double> %sel
   1784 
   1785 ; CHECK: fun161
   1786 ; CHECK: cost of 20 for instruction:   %cmp = fcmp ogt <8 x float> %val1, %val2
   1787 ; CHECK: cost of 11 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
   1788 }
   1789 
   1790 define <8 x i8> @fun162(<8 x double> %val1, <8 x double> %val2,
   1791                         <8 x i8> %val3, <8 x i8> %val4) {
   1792   %cmp = fcmp ogt <8 x double> %val1, %val2
   1793   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
   1794   ret <8 x i8> %sel
   1795 
   1796 ; CHECK: fun162
   1797 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
   1798 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i8> %val3, <8 x i8> %val4
   1799 }
   1800 
   1801 define <8 x i16> @fun163(<8 x double> %val1, <8 x double> %val2,
   1802                          <8 x i16> %val3, <8 x i16> %val4) {
   1803   %cmp = fcmp ogt <8 x double> %val1, %val2
   1804   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
   1805   ret <8 x i16> %sel
   1806 
   1807 ; CHECK: fun163
   1808 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
   1809 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i16> %val3, <8 x i16> %val4
   1810 }
   1811 
   1812 define <8 x i32> @fun164(<8 x double> %val1, <8 x double> %val2,
   1813                          <8 x i32> %val3, <8 x i32> %val4) {
   1814   %cmp = fcmp ogt <8 x double> %val1, %val2
   1815   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
   1816   ret <8 x i32> %sel
   1817 
   1818 ; CHECK: fun164
   1819 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
   1820 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i32> %val3, <8 x i32> %val4
   1821 }
   1822 
   1823 define <8 x i64> @fun165(<8 x double> %val1, <8 x double> %val2,
   1824                          <8 x i64> %val3, <8 x i64> %val4) {
   1825   %cmp = fcmp ogt <8 x double> %val1, %val2
   1826   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
   1827   ret <8 x i64> %sel
   1828 
   1829 ; CHECK: fun165
   1830 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
   1831 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x i64> %val3, <8 x i64> %val4
   1832 }
   1833 
   1834 define <8 x float> @fun166(<8 x double> %val1, <8 x double> %val2,
   1835                            <8 x float> %val3, <8 x float> %val4) {
   1836   %cmp = fcmp ogt <8 x double> %val1, %val2
   1837   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
   1838   ret <8 x float> %sel
   1839 
   1840 ; CHECK: fun166
   1841 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
   1842 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x float> %val3, <8 x float> %val4
   1843 }
   1844 
   1845 define <8 x double> @fun167(<8 x double> %val1, <8 x double> %val2,
   1846                             <8 x double> %val3, <8 x double> %val4) {
   1847   %cmp = fcmp ogt <8 x double> %val1, %val2
   1848   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
   1849   ret <8 x double> %sel
   1850 
   1851 ; CHECK: fun167
   1852 ; CHECK: cost of 4 for instruction:   %cmp = fcmp ogt <8 x double> %val1, %val2
   1853 ; CHECK: cost of 4 for instruction:   %sel = select <8 x i1> %cmp, <8 x double> %val3, <8 x double> %val4
   1854 }
   1855 
   1856 define <16 x i8> @fun168(<16 x float> %val1, <16 x float> %val2,
   1857                          <16 x i8> %val3, <16 x i8> %val4) {
   1858   %cmp = fcmp ogt <16 x float> %val1, %val2
   1859   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1860   ret <16 x i8> %sel
   1861 
   1862 ; CHECK: fun168
   1863 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
   1864 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1865 }
   1866 
   1867 define <16 x i16> @fun169(<16 x float> %val1, <16 x float> %val2,
   1868                           <16 x i16> %val3, <16 x i16> %val4) {
   1869   %cmp = fcmp ogt <16 x float> %val1, %val2
   1870   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1871   ret <16 x i16> %sel
   1872 
   1873 ; CHECK: fun169
   1874 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
   1875 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1876 }
   1877 
   1878 define <16 x i32> @fun170(<16 x float> %val1, <16 x float> %val2,
   1879                           <16 x i32> %val3, <16 x i32> %val4) {
   1880   %cmp = fcmp ogt <16 x float> %val1, %val2
   1881   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1882   ret <16 x i32> %sel
   1883 
   1884 ; CHECK: fun170
   1885 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
   1886 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1887 }
   1888 
   1889 define <16 x i64> @fun171(<16 x float> %val1, <16 x float> %val2,
   1890                           <16 x i64> %val3, <16 x i64> %val4) {
   1891   %cmp = fcmp ogt <16 x float> %val1, %val2
   1892   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1893   ret <16 x i64> %sel
   1894 
   1895 ; CHECK: fun171
   1896 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
   1897 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1898 }
   1899 
   1900 define <16 x float> @fun172(<16 x float> %val1, <16 x float> %val2,
   1901                             <16 x float> %val3, <16 x float> %val4) {
   1902   %cmp = fcmp ogt <16 x float> %val1, %val2
   1903   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1904   ret <16 x float> %sel
   1905 
   1906 ; CHECK: fun172
   1907 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
   1908 ; CHECK: cost of 4 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1909 }
   1910 
   1911 define <16 x double> @fun173(<16 x float> %val1, <16 x float> %val2,
   1912                              <16 x double> %val3, <16 x double> %val4) {
   1913   %cmp = fcmp ogt <16 x float> %val1, %val2
   1914   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1915   ret <16 x double> %sel
   1916 
   1917 ; CHECK: fun173
   1918 ; CHECK: cost of 40 for instruction:   %cmp = fcmp ogt <16 x float> %val1, %val2
   1919 ; CHECK: cost of 23 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1920 }
   1921 
   1922 define <16 x i8> @fun174(<16 x double> %val1, <16 x double> %val2,
   1923                          <16 x i8> %val3, <16 x i8> %val4) {
   1924   %cmp = fcmp ogt <16 x double> %val1, %val2
   1925   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1926   ret <16 x i8> %sel
   1927 
   1928 ; CHECK: fun174
   1929 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
   1930 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i8> %val3, <16 x i8> %val4
   1931 }
   1932 
   1933 define <16 x i16> @fun175(<16 x double> %val1, <16 x double> %val2,
   1934                           <16 x i16> %val3, <16 x i16> %val4) {
   1935   %cmp = fcmp ogt <16 x double> %val1, %val2
   1936   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1937   ret <16 x i16> %sel
   1938 
   1939 ; CHECK: fun175
   1940 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
   1941 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i16> %val3, <16 x i16> %val4
   1942 }
   1943 
   1944 define <16 x i32> @fun176(<16 x double> %val1, <16 x double> %val2,
   1945                           <16 x i32> %val3, <16 x i32> %val4) {
   1946   %cmp = fcmp ogt <16 x double> %val1, %val2
   1947   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1948   ret <16 x i32> %sel
   1949 
   1950 ; CHECK: fun176
   1951 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
   1952 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i32> %val3, <16 x i32> %val4
   1953 }
   1954 
   1955 define <16 x i64> @fun177(<16 x double> %val1, <16 x double> %val2,
   1956                           <16 x i64> %val3, <16 x i64> %val4) {
   1957   %cmp = fcmp ogt <16 x double> %val1, %val2
   1958   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1959   ret <16 x i64> %sel
   1960 
   1961 ; CHECK: fun177
   1962 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
   1963 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x i64> %val3, <16 x i64> %val4
   1964 }
   1965 
   1966 define <16 x float> @fun178(<16 x double> %val1, <16 x double> %val2,
   1967                             <16 x float> %val3, <16 x float> %val4) {
   1968   %cmp = fcmp ogt <16 x double> %val1, %val2
   1969   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1970   ret <16 x float> %sel
   1971 
   1972 ; CHECK: fun178
   1973 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
   1974 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x float> %val3, <16 x float> %val4
   1975 }
   1976 
   1977 define <16 x double> @fun179(<16 x double> %val1, <16 x double> %val2,
   1978                              <16 x double> %val3, <16 x double> %val4) {
   1979   %cmp = fcmp ogt <16 x double> %val1, %val2
   1980   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1981   ret <16 x double> %sel
   1982 
   1983 ; CHECK: fun179
   1984 ; CHECK: cost of 8 for instruction:   %cmp = fcmp ogt <16 x double> %val1, %val2
   1985 ; CHECK: cost of 8 for instruction:   %sel = select <16 x i1> %cmp, <16 x double> %val3, <16 x double> %val4
   1986 }
   1987 
   1988