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