Home | History | Annotate | Download | only in X86
      1 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 -mattr=+sse2,-sse4.1 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=SSE2
      2 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=SSE41
      3 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=corei7-avx -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=AVX
      4 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=core-avx2 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=AVX2
      5 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver2 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=XOP -check-prefix=XOPAVX
      6 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -mcpu=bdver4 -cost-model -analyze | FileCheck %s -check-prefix=CHECK -check-prefix=XOP -check-prefix=XOPAVX2
      7 
      8 ; Verify the cost of vector arithmetic shift right instructions.
      9 
     10 ;
     11 ; Variable Shifts
     12 ;
     13 
     14 define <2 x i64> @var_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
     15 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v2i64':
     16 ; SSE2: Found an estimated cost of 12 for instruction:   %shift
     17 ; SSE41: Found an estimated cost of 12 for instruction:   %shift
     18 ; AVX: Found an estimated cost of 12 for instruction:   %shift
     19 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
     20 ; XOP: Found an estimated cost of 2 for instruction:   %shift
     21   %shift = ashr <2 x i64> %a, %b
     22   ret <2 x i64> %shift
     23 }
     24 
     25 define <4 x i64> @var_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
     26 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v4i64':
     27 ; SSE2: Found an estimated cost of 24 for instruction:   %shift
     28 ; SSE41: Found an estimated cost of 24 for instruction:   %shift
     29 ; AVX: Found an estimated cost of 24 for instruction:   %shift
     30 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
     31 ; XOP: Found an estimated cost of 4 for instruction:   %shift
     32   %shift = ashr <4 x i64> %a, %b
     33   ret <4 x i64> %shift
     34 }
     35 
     36 define <4 x i32> @var_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
     37 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v4i32':
     38 ; SSE2: Found an estimated cost of 16 for instruction:   %shift
     39 ; SSE41: Found an estimated cost of 16 for instruction:   %shift
     40 ; AVX: Found an estimated cost of 16 for instruction:   %shift
     41 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
     42 ; XOPAVX: Found an estimated cost of 2 for instruction:   %shift
     43 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
     44   %shift = ashr <4 x i32> %a, %b
     45   ret <4 x i32> %shift
     46 }
     47 
     48 define <8 x i32> @var_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
     49 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v8i32':
     50 ; SSE2: Found an estimated cost of 32 for instruction:   %shift
     51 ; SSE41: Found an estimated cost of 32 for instruction:   %shift
     52 ; AVX: Found an estimated cost of 32 for instruction:   %shift
     53 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
     54 ; XOPAVX: Found an estimated cost of 4 for instruction:   %shift
     55 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
     56   %shift = ashr <8 x i32> %a, %b
     57   ret <8 x i32> %shift
     58 }
     59 
     60 define <8 x i16> @var_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
     61 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v8i16':
     62 ; SSE2: Found an estimated cost of 32 for instruction:   %shift
     63 ; SSE41: Found an estimated cost of 32 for instruction:   %shift
     64 ; AVX: Found an estimated cost of 32 for instruction:   %shift
     65 ; AVX2: Found an estimated cost of 32 for instruction:   %shift
     66 ; XOP: Found an estimated cost of 2 for instruction:   %shift
     67   %shift = ashr <8 x i16> %a, %b
     68   ret <8 x i16> %shift
     69 }
     70 
     71 define <16 x i16> @var_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
     72 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v16i16':
     73 ; SSE2: Found an estimated cost of 64 for instruction:   %shift
     74 ; SSE41: Found an estimated cost of 64 for instruction:   %shift
     75 ; AVX: Found an estimated cost of 64 for instruction:   %shift
     76 ; AVX2: Found an estimated cost of 10 for instruction:   %shift
     77 ; XOP: Found an estimated cost of 4 for instruction:   %shift
     78   %shift = ashr <16 x i16> %a, %b
     79   ret <16 x i16> %shift
     80 }
     81 
     82 define <16 x i8> @var_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
     83 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v16i8':
     84 ; SSE2: Found an estimated cost of 54 for instruction:   %shift
     85 ; SSE41: Found an estimated cost of 54 for instruction:   %shift
     86 ; AVX: Found an estimated cost of 54 for instruction:   %shift
     87 ; AVX2: Found an estimated cost of 54 for instruction:   %shift
     88 ; XOP: Found an estimated cost of 2 for instruction:   %shift
     89   %shift = ashr <16 x i8> %a, %b
     90   ret <16 x i8> %shift
     91 }
     92 
     93 define <32 x i8> @var_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
     94 ; CHECK: 'Cost Model Analysis' for function 'var_shift_v32i8':
     95 ; SSE2: Found an estimated cost of 108 for instruction:   %shift
     96 ; SSE41: Found an estimated cost of 108 for instruction:   %shift
     97 ; AVX: Found an estimated cost of 108 for instruction:   %shift
     98 ; AVX2: Found an estimated cost of 24 for instruction:   %shift
     99 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    100   %shift = ashr <32 x i8> %a, %b
    101   ret <32 x i8> %shift
    102 }
    103 
    104 ;
    105 ; Uniform Variable Shifts
    106 ;
    107 
    108 define <2 x i64> @splatvar_shift_v2i64(<2 x i64> %a, <2 x i64> %b) {
    109 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v2i64':
    110 ; SSE2: Found an estimated cost of 12 for instruction:   %shift
    111 ; SSE41: Found an estimated cost of 12 for instruction:   %shift
    112 ; AVX: Found an estimated cost of 12 for instruction:   %shift
    113 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    114 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    115   %splat = shufflevector <2 x i64> %b, <2 x i64> undef, <2 x i32> zeroinitializer
    116   %shift = ashr <2 x i64> %a, %splat
    117   ret <2 x i64> %shift
    118 }
    119 
    120 define <4 x i64> @splatvar_shift_v4i64(<4 x i64> %a, <4 x i64> %b) {
    121 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i64':
    122 ; SSE2: Found an estimated cost of 24 for instruction:   %shift
    123 ; SSE41: Found an estimated cost of 24 for instruction:   %shift
    124 ; AVX: Found an estimated cost of 24 for instruction:   %shift
    125 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    126 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    127   %splat = shufflevector <4 x i64> %b, <4 x i64> undef, <4 x i32> zeroinitializer
    128   %shift = ashr <4 x i64> %a, %splat
    129   ret <4 x i64> %shift
    130 }
    131 
    132 define <4 x i32> @splatvar_shift_v4i32(<4 x i32> %a, <4 x i32> %b) {
    133 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v4i32':
    134 ; SSE2: Found an estimated cost of 16 for instruction:   %shift
    135 ; SSE41: Found an estimated cost of 16 for instruction:   %shift
    136 ; AVX: Found an estimated cost of 16 for instruction:   %shift
    137 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    138 ; XOPAVX: Found an estimated cost of 2 for instruction:   %shift
    139 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
    140   %splat = shufflevector <4 x i32> %b, <4 x i32> undef, <4 x i32> zeroinitializer
    141   %shift = ashr <4 x i32> %a, %splat
    142   ret <4 x i32> %shift
    143 }
    144 
    145 define <8 x i32> @splatvar_shift_v8i32(<8 x i32> %a, <8 x i32> %b) {
    146 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i32':
    147 ; SSE2: Found an estimated cost of 32 for instruction:   %shift
    148 ; SSE41: Found an estimated cost of 32 for instruction:   %shift
    149 ; AVX: Found an estimated cost of 32 for instruction:   %shift
    150 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    151 ; XOPAVX: Found an estimated cost of 4 for instruction:   %shift
    152 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
    153   %splat = shufflevector <8 x i32> %b, <8 x i32> undef, <8 x i32> zeroinitializer
    154   %shift = ashr <8 x i32> %a, %splat
    155   ret <8 x i32> %shift
    156 }
    157 
    158 define <8 x i16> @splatvar_shift_v8i16(<8 x i16> %a, <8 x i16> %b) {
    159 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v8i16':
    160 ; SSE2: Found an estimated cost of 32 for instruction:   %shift
    161 ; SSE41: Found an estimated cost of 32 for instruction:   %shift
    162 ; AVX: Found an estimated cost of 32 for instruction:   %shift
    163 ; AVX2: Found an estimated cost of 32 for instruction:   %shift
    164 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    165   %splat = shufflevector <8 x i16> %b, <8 x i16> undef, <8 x i32> zeroinitializer
    166   %shift = ashr <8 x i16> %a, %splat
    167   ret <8 x i16> %shift
    168 }
    169 
    170 define <16 x i16> @splatvar_shift_v16i16(<16 x i16> %a, <16 x i16> %b) {
    171 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i16':
    172 ; SSE2: Found an estimated cost of 64 for instruction:   %shift
    173 ; SSE41: Found an estimated cost of 64 for instruction:   %shift
    174 ; AVX: Found an estimated cost of 64 for instruction:   %shift
    175 ; AVX2: Found an estimated cost of 10 for instruction:   %shift
    176 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    177   %splat = shufflevector <16 x i16> %b, <16 x i16> undef, <16 x i32> zeroinitializer
    178   %shift = ashr <16 x i16> %a, %splat
    179   ret <16 x i16> %shift
    180 }
    181 
    182 define <16 x i8> @splatvar_shift_v16i8(<16 x i8> %a, <16 x i8> %b) {
    183 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v16i8':
    184 ; SSE2: Found an estimated cost of 54 for instruction:   %shift
    185 ; SSE41: Found an estimated cost of 54 for instruction:   %shift
    186 ; AVX: Found an estimated cost of 54 for instruction:   %shift
    187 ; AVX2: Found an estimated cost of 54 for instruction:   %shift
    188 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    189   %splat = shufflevector <16 x i8> %b, <16 x i8> undef, <16 x i32> zeroinitializer
    190   %shift = ashr <16 x i8> %a, %splat
    191   ret <16 x i8> %shift
    192 }
    193 
    194 define <32 x i8> @splatvar_shift_v32i8(<32 x i8> %a, <32 x i8> %b) {
    195 ; CHECK: 'Cost Model Analysis' for function 'splatvar_shift_v32i8':
    196 ; SSE2: Found an estimated cost of 108 for instruction:   %shift
    197 ; SSE41: Found an estimated cost of 108 for instruction:   %shift
    198 ; AVX: Found an estimated cost of 108 for instruction:   %shift
    199 ; AVX2: Found an estimated cost of 24 for instruction:   %shift
    200 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    201   %splat = shufflevector <32 x i8> %b, <32 x i8> undef, <32 x i32> zeroinitializer
    202   %shift = ashr <32 x i8> %a, %splat
    203   ret <32 x i8> %shift
    204 }
    205 
    206 ;
    207 ; Constant Shifts
    208 ;
    209 
    210 define <2 x i64> @constant_shift_v2i64(<2 x i64> %a) {
    211 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v2i64':
    212 ; SSE2: Found an estimated cost of 12 for instruction:   %shift
    213 ; SSE41: Found an estimated cost of 12 for instruction:   %shift
    214 ; AVX: Found an estimated cost of 12 for instruction:   %shift
    215 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    216 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    217   %shift = ashr <2 x i64> %a, <i64 1, i64 7>
    218   ret <2 x i64> %shift
    219 }
    220 
    221 define <4 x i64> @constant_shift_v4i64(<4 x i64> %a) {
    222 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v4i64':
    223 ; SSE2: Found an estimated cost of 24 for instruction:   %shift
    224 ; SSE41: Found an estimated cost of 24 for instruction:   %shift
    225 ; AVX: Found an estimated cost of 24 for instruction:   %shift
    226 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    227 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    228   %shift = ashr <4 x i64> %a, <i64 1, i64 7, i64 15, i64 31>
    229   ret <4 x i64> %shift
    230 }
    231 
    232 define <4 x i32> @constant_shift_v4i32(<4 x i32> %a) {
    233 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v4i32':
    234 ; SSE2: Found an estimated cost of 16 for instruction:   %shift
    235 ; SSE41: Found an estimated cost of 16 for instruction:   %shift
    236 ; AVX: Found an estimated cost of 16 for instruction:   %shift
    237 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    238 ; XOPAVX: Found an estimated cost of 2 for instruction:   %shift
    239 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
    240   %shift = ashr <4 x i32> %a, <i32 4, i32 5, i32 6, i32 7>
    241   ret <4 x i32> %shift
    242 }
    243 
    244 define <8 x i32> @constant_shift_v8i32(<8 x i32> %a) {
    245 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v8i32':
    246 ; SSE2: Found an estimated cost of 32 for instruction:   %shift
    247 ; SSE41: Found an estimated cost of 32 for instruction:   %shift
    248 ; AVX: Found an estimated cost of 32 for instruction:   %shift
    249 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    250 ; XOPAVX: Found an estimated cost of 4 for instruction:   %shift
    251 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
    252   %shift = ashr <8 x i32> %a, <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3>
    253   ret <8 x i32> %shift
    254 }
    255 
    256 define <8 x i16> @constant_shift_v8i16(<8 x i16> %a) {
    257 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v8i16':
    258 ; SSE2: Found an estimated cost of 32 for instruction:   %shift
    259 ; SSE41: Found an estimated cost of 32 for instruction:   %shift
    260 ; AVX: Found an estimated cost of 32 for instruction:   %shift
    261 ; AVX2: Found an estimated cost of 32 for instruction:   %shift
    262 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    263   %shift = ashr <8 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>
    264   ret <8 x i16> %shift
    265 }
    266 
    267 define <16 x i16> @constant_shift_v16i16(<16 x i16> %a) {
    268 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v16i16':
    269 ; SSE2: Found an estimated cost of 64 for instruction:   %shift
    270 ; SSE41: Found an estimated cost of 64 for instruction:   %shift
    271 ; AVX: Found an estimated cost of 64 for instruction:   %shift
    272 ; AVX2: Found an estimated cost of 10 for instruction:   %shift
    273 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    274   %shift = ashr <16 x i16> %a, <i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7, i16 0, i16 1, i16 2, i16 3, i16 4, i16 5, i16 6, i16 7>
    275   ret <16 x i16> %shift
    276 }
    277 
    278 define <16 x i8> @constant_shift_v16i8(<16 x i8> %a) {
    279 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v16i8':
    280 ; SSE2: Found an estimated cost of 54 for instruction:   %shift
    281 ; SSE41: Found an estimated cost of 54 for instruction:   %shift
    282 ; AVX: Found an estimated cost of 54 for instruction:   %shift
    283 ; AVX2: Found an estimated cost of 54 for instruction:   %shift
    284 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    285   %shift = ashr <16 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>
    286   ret <16 x i8> %shift
    287 }
    288 
    289 define <32 x i8> @constant_shift_v32i8(<32 x i8> %a) {
    290 ; CHECK: 'Cost Model Analysis' for function 'constant_shift_v32i8':
    291 ; SSE2: Found an estimated cost of 108 for instruction:   %shift
    292 ; SSE41: Found an estimated cost of 108 for instruction:   %shift
    293 ; AVX: Found an estimated cost of 108 for instruction:   %shift
    294 ; AVX2: Found an estimated cost of 24 for instruction:   %shift
    295 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    296   %shift = ashr <32 x i8> %a, <i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0, i8 0, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 7, i8 6, i8 5, i8 4, i8 3, i8 2, i8 1, i8 0>
    297   ret <32 x i8> %shift
    298 }
    299 
    300 ;
    301 ; Uniform Constant Shifts
    302 ;
    303 
    304 define <2 x i64> @splatconstant_shift_v2i64(<2 x i64> %a) {
    305 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v2i64':
    306 ; SSE2: Found an estimated cost of 4 for instruction:   %shift
    307 ; SSE41: Found an estimated cost of 4 for instruction:   %shift
    308 ; AVX: Found an estimated cost of 4 for instruction:   %shift
    309 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    310 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    311   %shift = ashr <2 x i64> %a, <i64 7, i64 7>
    312   ret <2 x i64> %shift
    313 }
    314 
    315 define <4 x i64> @splatconstant_shift_v4i64(<4 x i64> %a) {
    316 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v4i64':
    317 ; SSE2: Found an estimated cost of 8 for instruction:   %shift
    318 ; SSE41: Found an estimated cost of 8 for instruction:   %shift
    319 ; AVX: Found an estimated cost of 8 for instruction:   %shift
    320 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    321 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    322   %shift = ashr <4 x i64> %a, <i64 7, i64 7, i64 7, i64 7>
    323   ret <4 x i64> %shift
    324 }
    325 
    326 define <4 x i32> @splatconstant_shift_v4i32(<4 x i32> %a) {
    327 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v4i32':
    328 ; SSE2: Found an estimated cost of 1 for instruction:   %shift
    329 ; SSE41: Found an estimated cost of 1 for instruction:   %shift
    330 ; AVX: Found an estimated cost of 1 for instruction:   %shift
    331 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    332 ; XOPAVX: Found an estimated cost of 2 for instruction:   %shift
    333 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
    334   %shift = ashr <4 x i32> %a, <i32 5, i32 5, i32 5, i32 5>
    335   ret <4 x i32> %shift
    336 }
    337 
    338 define <8 x i32> @splatconstant_shift_v8i32(<8 x i32> %a) {
    339 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v8i32':
    340 ; SSE2: Found an estimated cost of 2 for instruction:   %shift
    341 ; SSE41: Found an estimated cost of 2 for instruction:   %shift
    342 ; AVX: Found an estimated cost of 2 for instruction:   %shift
    343 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    344 ; XOPAVX: Found an estimated cost of 4 for instruction:   %shift
    345 ; XOPAVX2: Found an estimated cost of 1 for instruction:   %shift
    346   %shift = ashr <8 x i32> %a, <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>
    347   ret <8 x i32> %shift
    348 }
    349 
    350 define <8 x i16> @splatconstant_shift_v8i16(<8 x i16> %a) {
    351 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v8i16':
    352 ; SSE2: Found an estimated cost of 1 for instruction:   %shift
    353 ; SSE41: Found an estimated cost of 1 for instruction:   %shift
    354 ; AVX: Found an estimated cost of 1 for instruction:   %shift
    355 ; AVX2: Found an estimated cost of 1 for instruction:   %shift
    356 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    357   %shift = ashr <8 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
    358   ret <8 x i16> %shift
    359 }
    360 
    361 define <16 x i16> @splatconstant_shift_v16i16(<16 x i16> %a) {
    362 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v16i16':
    363 ; SSE2: Found an estimated cost of 2 for instruction:   %shift
    364 ; SSE41: Found an estimated cost of 2 for instruction:   %shift
    365 ; AVX: Found an estimated cost of 2 for instruction:   %shift
    366 ; AVX2: Found an estimated cost of 10 for instruction:   %shift
    367 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    368   %shift = ashr <16 x i16> %a, <i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3, i16 3>
    369   ret <16 x i16> %shift
    370 }
    371 
    372 define <16 x i8> @splatconstant_shift_v16i8(<16 x i8> %a) {
    373 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v16i8':
    374 ; SSE2: Found an estimated cost of 4 for instruction:   %shift
    375 ; SSE41: Found an estimated cost of 4 for instruction:   %shift
    376 ; AVX: Found an estimated cost of 4 for instruction:   %shift
    377 ; AVX2: Found an estimated cost of 4 for instruction:   %shift
    378 ; XOP: Found an estimated cost of 2 for instruction:   %shift
    379   %shift = ashr <16 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
    380   ret <16 x i8> %shift
    381 }
    382 
    383 define <32 x i8> @splatconstant_shift_v32i8(<32 x i8> %a) {
    384 ; CHECK: 'Cost Model Analysis' for function 'splatconstant_shift_v32i8':
    385 ; SSE2: Found an estimated cost of 8 for instruction:   %shift
    386 ; SSE41: Found an estimated cost of 8 for instruction:   %shift
    387 ; AVX: Found an estimated cost of 8 for instruction:   %shift
    388 ; AVX2: Found an estimated cost of 24 for instruction:   %shift
    389 ; XOP: Found an estimated cost of 4 for instruction:   %shift
    390   %shift = ashr <32 x i8> %a, <i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3, i8 3>
    391   ret <32 x i8> %shift
    392 }
    393