Home | History | Annotate | Download | only in X86
      1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
      2 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X32-SSE
      3 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx  | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX1
      4 ; RUN: llc < %s -mtriple=i386-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX2
      5 ; RUN: llc < %s -mtriple=i386-unknown -mcpu=knl | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX512 --check-prefix=X32-KNL
      6 ; RUN: llc < %s -mtriple=i386-unknown -mcpu=skx | FileCheck %s --check-prefix=X32-AVX --check-prefix=X32-AVX256 --check-prefix=X32-AVX512 --check-prefix=X32-SKX
      7 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+sse2 | FileCheck %s --check-prefix=X64-SSE
      8 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx  | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX1
      9 ; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+avx2 | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX2
     10 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=knl | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX512 --check-prefix=X64-KNL
     11 ; RUN: llc < %s -mtriple=x86_64-unknown -mcpu=skx | FileCheck %s --check-prefix=X64-AVX --check-prefix=X64-AVX256 --check-prefix=X64-AVX512 --check-prefix=X64-SKX
     12 
     13 define <16 x i8> @allones_v16i8() nounwind {
     14 ; X32-SSE-LABEL: allones_v16i8:
     15 ; X32-SSE:       # %bb.0:
     16 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     17 ; X32-SSE-NEXT:    retl
     18 ;
     19 ; X32-AVX-LABEL: allones_v16i8:
     20 ; X32-AVX:       # %bb.0:
     21 ; X32-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     22 ; X32-AVX-NEXT:    retl
     23 ;
     24 ; X64-SSE-LABEL: allones_v16i8:
     25 ; X64-SSE:       # %bb.0:
     26 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     27 ; X64-SSE-NEXT:    retq
     28 ;
     29 ; X64-AVX-LABEL: allones_v16i8:
     30 ; X64-AVX:       # %bb.0:
     31 ; X64-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     32 ; X64-AVX-NEXT:    retq
     33   ret <16 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
     34 }
     35 
     36 define <8 x i16> @allones_v8i16() nounwind {
     37 ; X32-SSE-LABEL: allones_v8i16:
     38 ; X32-SSE:       # %bb.0:
     39 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     40 ; X32-SSE-NEXT:    retl
     41 ;
     42 ; X32-AVX-LABEL: allones_v8i16:
     43 ; X32-AVX:       # %bb.0:
     44 ; X32-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     45 ; X32-AVX-NEXT:    retl
     46 ;
     47 ; X64-SSE-LABEL: allones_v8i16:
     48 ; X64-SSE:       # %bb.0:
     49 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     50 ; X64-SSE-NEXT:    retq
     51 ;
     52 ; X64-AVX-LABEL: allones_v8i16:
     53 ; X64-AVX:       # %bb.0:
     54 ; X64-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     55 ; X64-AVX-NEXT:    retq
     56   ret <8 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
     57 }
     58 
     59 define <4 x i32> @allones_v4i32() nounwind {
     60 ; X32-SSE-LABEL: allones_v4i32:
     61 ; X32-SSE:       # %bb.0:
     62 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     63 ; X32-SSE-NEXT:    retl
     64 ;
     65 ; X32-AVX-LABEL: allones_v4i32:
     66 ; X32-AVX:       # %bb.0:
     67 ; X32-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     68 ; X32-AVX-NEXT:    retl
     69 ;
     70 ; X64-SSE-LABEL: allones_v4i32:
     71 ; X64-SSE:       # %bb.0:
     72 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     73 ; X64-SSE-NEXT:    retq
     74 ;
     75 ; X64-AVX-LABEL: allones_v4i32:
     76 ; X64-AVX:       # %bb.0:
     77 ; X64-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     78 ; X64-AVX-NEXT:    retq
     79   ret <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>
     80 }
     81 
     82 define <2 x i64> @allones_v2i64() nounwind {
     83 ; X32-SSE-LABEL: allones_v2i64:
     84 ; X32-SSE:       # %bb.0:
     85 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     86 ; X32-SSE-NEXT:    retl
     87 ;
     88 ; X32-AVX-LABEL: allones_v2i64:
     89 ; X32-AVX:       # %bb.0:
     90 ; X32-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
     91 ; X32-AVX-NEXT:    retl
     92 ;
     93 ; X64-SSE-LABEL: allones_v2i64:
     94 ; X64-SSE:       # %bb.0:
     95 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
     96 ; X64-SSE-NEXT:    retq
     97 ;
     98 ; X64-AVX-LABEL: allones_v2i64:
     99 ; X64-AVX:       # %bb.0:
    100 ; X64-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
    101 ; X64-AVX-NEXT:    retq
    102   ret <2 x i64> <i64 -1, i64 -1>
    103 }
    104 
    105 define <2 x double> @allones_v2f64() nounwind {
    106 ; X32-SSE-LABEL: allones_v2f64:
    107 ; X32-SSE:       # %bb.0:
    108 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    109 ; X32-SSE-NEXT:    retl
    110 ;
    111 ; X32-AVX-LABEL: allones_v2f64:
    112 ; X32-AVX:       # %bb.0:
    113 ; X32-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
    114 ; X32-AVX-NEXT:    retl
    115 ;
    116 ; X64-SSE-LABEL: allones_v2f64:
    117 ; X64-SSE:       # %bb.0:
    118 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    119 ; X64-SSE-NEXT:    retq
    120 ;
    121 ; X64-AVX-LABEL: allones_v2f64:
    122 ; X64-AVX:       # %bb.0:
    123 ; X64-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
    124 ; X64-AVX-NEXT:    retq
    125   ret <2 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff>
    126 }
    127 
    128 define <4 x float> @allones_v4f32() nounwind {
    129 ; X32-SSE-LABEL: allones_v4f32:
    130 ; X32-SSE:       # %bb.0:
    131 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    132 ; X32-SSE-NEXT:    retl
    133 ;
    134 ; X32-AVX-LABEL: allones_v4f32:
    135 ; X32-AVX:       # %bb.0:
    136 ; X32-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
    137 ; X32-AVX-NEXT:    retl
    138 ;
    139 ; X64-SSE-LABEL: allones_v4f32:
    140 ; X64-SSE:       # %bb.0:
    141 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    142 ; X64-SSE-NEXT:    retq
    143 ;
    144 ; X64-AVX-LABEL: allones_v4f32:
    145 ; X64-AVX:       # %bb.0:
    146 ; X64-AVX-NEXT:    vpcmpeqd %xmm0, %xmm0, %xmm0
    147 ; X64-AVX-NEXT:    retq
    148   ret <4 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
    149 }
    150 
    151 define <32 x i8> @allones_v32i8() nounwind {
    152 ; X32-SSE-LABEL: allones_v32i8:
    153 ; X32-SSE:       # %bb.0:
    154 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    155 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    156 ; X32-SSE-NEXT:    retl
    157 ;
    158 ; X32-AVX1-LABEL: allones_v32i8:
    159 ; X32-AVX1:       # %bb.0:
    160 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    161 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    162 ; X32-AVX1-NEXT:    retl
    163 ;
    164 ; X32-AVX256-LABEL: allones_v32i8:
    165 ; X32-AVX256:       # %bb.0:
    166 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    167 ; X32-AVX256-NEXT:    retl
    168 ;
    169 ; X64-SSE-LABEL: allones_v32i8:
    170 ; X64-SSE:       # %bb.0:
    171 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    172 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    173 ; X64-SSE-NEXT:    retq
    174 ;
    175 ; X64-AVX1-LABEL: allones_v32i8:
    176 ; X64-AVX1:       # %bb.0:
    177 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    178 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    179 ; X64-AVX1-NEXT:    retq
    180 ;
    181 ; X64-AVX256-LABEL: allones_v32i8:
    182 ; X64-AVX256:       # %bb.0:
    183 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    184 ; X64-AVX256-NEXT:    retq
    185   ret <32 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
    186 }
    187 
    188 define <16 x i16> @allones_v16i16() nounwind {
    189 ; X32-SSE-LABEL: allones_v16i16:
    190 ; X32-SSE:       # %bb.0:
    191 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    192 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    193 ; X32-SSE-NEXT:    retl
    194 ;
    195 ; X32-AVX1-LABEL: allones_v16i16:
    196 ; X32-AVX1:       # %bb.0:
    197 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    198 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    199 ; X32-AVX1-NEXT:    retl
    200 ;
    201 ; X32-AVX256-LABEL: allones_v16i16:
    202 ; X32-AVX256:       # %bb.0:
    203 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    204 ; X32-AVX256-NEXT:    retl
    205 ;
    206 ; X64-SSE-LABEL: allones_v16i16:
    207 ; X64-SSE:       # %bb.0:
    208 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    209 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    210 ; X64-SSE-NEXT:    retq
    211 ;
    212 ; X64-AVX1-LABEL: allones_v16i16:
    213 ; X64-AVX1:       # %bb.0:
    214 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    215 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    216 ; X64-AVX1-NEXT:    retq
    217 ;
    218 ; X64-AVX256-LABEL: allones_v16i16:
    219 ; X64-AVX256:       # %bb.0:
    220 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    221 ; X64-AVX256-NEXT:    retq
    222   ret <16 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
    223 }
    224 
    225 define <8 x i32> @allones_v8i32() nounwind {
    226 ; X32-SSE-LABEL: allones_v8i32:
    227 ; X32-SSE:       # %bb.0:
    228 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    229 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    230 ; X32-SSE-NEXT:    retl
    231 ;
    232 ; X32-AVX1-LABEL: allones_v8i32:
    233 ; X32-AVX1:       # %bb.0:
    234 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    235 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    236 ; X32-AVX1-NEXT:    retl
    237 ;
    238 ; X32-AVX256-LABEL: allones_v8i32:
    239 ; X32-AVX256:       # %bb.0:
    240 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    241 ; X32-AVX256-NEXT:    retl
    242 ;
    243 ; X64-SSE-LABEL: allones_v8i32:
    244 ; X64-SSE:       # %bb.0:
    245 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    246 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    247 ; X64-SSE-NEXT:    retq
    248 ;
    249 ; X64-AVX1-LABEL: allones_v8i32:
    250 ; X64-AVX1:       # %bb.0:
    251 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    252 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    253 ; X64-AVX1-NEXT:    retq
    254 ;
    255 ; X64-AVX256-LABEL: allones_v8i32:
    256 ; X64-AVX256:       # %bb.0:
    257 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    258 ; X64-AVX256-NEXT:    retq
    259   ret <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
    260 }
    261 
    262 define <4 x i64> @allones_v4i64() nounwind {
    263 ; X32-SSE-LABEL: allones_v4i64:
    264 ; X32-SSE:       # %bb.0:
    265 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    266 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    267 ; X32-SSE-NEXT:    retl
    268 ;
    269 ; X32-AVX1-LABEL: allones_v4i64:
    270 ; X32-AVX1:       # %bb.0:
    271 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    272 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    273 ; X32-AVX1-NEXT:    retl
    274 ;
    275 ; X32-AVX256-LABEL: allones_v4i64:
    276 ; X32-AVX256:       # %bb.0:
    277 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    278 ; X32-AVX256-NEXT:    retl
    279 ;
    280 ; X64-SSE-LABEL: allones_v4i64:
    281 ; X64-SSE:       # %bb.0:
    282 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    283 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    284 ; X64-SSE-NEXT:    retq
    285 ;
    286 ; X64-AVX1-LABEL: allones_v4i64:
    287 ; X64-AVX1:       # %bb.0:
    288 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    289 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    290 ; X64-AVX1-NEXT:    retq
    291 ;
    292 ; X64-AVX256-LABEL: allones_v4i64:
    293 ; X64-AVX256:       # %bb.0:
    294 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    295 ; X64-AVX256-NEXT:    retq
    296   ret <4 x i64> <i64 -1, i64 -1, i64 -1, i64 -1>
    297 }
    298 
    299 define <4 x double> @allones_v4f64() nounwind {
    300 ; X32-SSE-LABEL: allones_v4f64:
    301 ; X32-SSE:       # %bb.0:
    302 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    303 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    304 ; X32-SSE-NEXT:    retl
    305 ;
    306 ; X32-AVX1-LABEL: allones_v4f64:
    307 ; X32-AVX1:       # %bb.0:
    308 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    309 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    310 ; X32-AVX1-NEXT:    retl
    311 ;
    312 ; X32-AVX256-LABEL: allones_v4f64:
    313 ; X32-AVX256:       # %bb.0:
    314 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    315 ; X32-AVX256-NEXT:    retl
    316 ;
    317 ; X64-SSE-LABEL: allones_v4f64:
    318 ; X64-SSE:       # %bb.0:
    319 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    320 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    321 ; X64-SSE-NEXT:    retq
    322 ;
    323 ; X64-AVX1-LABEL: allones_v4f64:
    324 ; X64-AVX1:       # %bb.0:
    325 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    326 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    327 ; X64-AVX1-NEXT:    retq
    328 ;
    329 ; X64-AVX256-LABEL: allones_v4f64:
    330 ; X64-AVX256:       # %bb.0:
    331 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    332 ; X64-AVX256-NEXT:    retq
    333   ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
    334 }
    335 
    336 define <4 x double> @allones_v4f64_optsize() nounwind optsize {
    337 ; X32-SSE-LABEL: allones_v4f64_optsize:
    338 ; X32-SSE:       # %bb.0:
    339 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    340 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    341 ; X32-SSE-NEXT:    retl
    342 ;
    343 ; X32-AVX1-LABEL: allones_v4f64_optsize:
    344 ; X32-AVX1:       # %bb.0:
    345 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    346 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    347 ; X32-AVX1-NEXT:    retl
    348 ;
    349 ; X32-AVX256-LABEL: allones_v4f64_optsize:
    350 ; X32-AVX256:       # %bb.0:
    351 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    352 ; X32-AVX256-NEXT:    retl
    353 ;
    354 ; X64-SSE-LABEL: allones_v4f64_optsize:
    355 ; X64-SSE:       # %bb.0:
    356 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    357 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    358 ; X64-SSE-NEXT:    retq
    359 ;
    360 ; X64-AVX1-LABEL: allones_v4f64_optsize:
    361 ; X64-AVX1:       # %bb.0:
    362 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    363 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    364 ; X64-AVX1-NEXT:    retq
    365 ;
    366 ; X64-AVX256-LABEL: allones_v4f64_optsize:
    367 ; X64-AVX256:       # %bb.0:
    368 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    369 ; X64-AVX256-NEXT:    retq
    370   ret <4 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
    371 }
    372 
    373 define <8 x float> @allones_v8f32() nounwind {
    374 ; X32-SSE-LABEL: allones_v8f32:
    375 ; X32-SSE:       # %bb.0:
    376 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    377 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    378 ; X32-SSE-NEXT:    retl
    379 ;
    380 ; X32-AVX1-LABEL: allones_v8f32:
    381 ; X32-AVX1:       # %bb.0:
    382 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    383 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    384 ; X32-AVX1-NEXT:    retl
    385 ;
    386 ; X32-AVX256-LABEL: allones_v8f32:
    387 ; X32-AVX256:       # %bb.0:
    388 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    389 ; X32-AVX256-NEXT:    retl
    390 ;
    391 ; X64-SSE-LABEL: allones_v8f32:
    392 ; X64-SSE:       # %bb.0:
    393 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    394 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    395 ; X64-SSE-NEXT:    retq
    396 ;
    397 ; X64-AVX1-LABEL: allones_v8f32:
    398 ; X64-AVX1:       # %bb.0:
    399 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    400 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    401 ; X64-AVX1-NEXT:    retq
    402 ;
    403 ; X64-AVX256-LABEL: allones_v8f32:
    404 ; X64-AVX256:       # %bb.0:
    405 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    406 ; X64-AVX256-NEXT:    retq
    407   ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
    408 }
    409 
    410 define <8 x float> @allones_v8f32_optsize() nounwind optsize {
    411 ; X32-SSE-LABEL: allones_v8f32_optsize:
    412 ; X32-SSE:       # %bb.0:
    413 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    414 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    415 ; X32-SSE-NEXT:    retl
    416 ;
    417 ; X32-AVX1-LABEL: allones_v8f32_optsize:
    418 ; X32-AVX1:       # %bb.0:
    419 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    420 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    421 ; X32-AVX1-NEXT:    retl
    422 ;
    423 ; X32-AVX256-LABEL: allones_v8f32_optsize:
    424 ; X32-AVX256:       # %bb.0:
    425 ; X32-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    426 ; X32-AVX256-NEXT:    retl
    427 ;
    428 ; X64-SSE-LABEL: allones_v8f32_optsize:
    429 ; X64-SSE:       # %bb.0:
    430 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    431 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    432 ; X64-SSE-NEXT:    retq
    433 ;
    434 ; X64-AVX1-LABEL: allones_v8f32_optsize:
    435 ; X64-AVX1:       # %bb.0:
    436 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    437 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    438 ; X64-AVX1-NEXT:    retq
    439 ;
    440 ; X64-AVX256-LABEL: allones_v8f32_optsize:
    441 ; X64-AVX256:       # %bb.0:
    442 ; X64-AVX256-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    443 ; X64-AVX256-NEXT:    retq
    444   ret <8 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
    445 }
    446 
    447 define <64 x i8> @allones_v64i8() nounwind {
    448 ; X32-SSE-LABEL: allones_v64i8:
    449 ; X32-SSE:       # %bb.0:
    450 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    451 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    452 ; X32-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    453 ; X32-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    454 ; X32-SSE-NEXT:    retl
    455 ;
    456 ; X32-AVX1-LABEL: allones_v64i8:
    457 ; X32-AVX1:       # %bb.0:
    458 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    459 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    460 ; X32-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    461 ; X32-AVX1-NEXT:    retl
    462 ;
    463 ; X32-AVX2-LABEL: allones_v64i8:
    464 ; X32-AVX2:       # %bb.0:
    465 ; X32-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    466 ; X32-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    467 ; X32-AVX2-NEXT:    retl
    468 ;
    469 ; X32-KNL-LABEL: allones_v64i8:
    470 ; X32-KNL:       # %bb.0:
    471 ; X32-KNL-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    472 ; X32-KNL-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    473 ; X32-KNL-NEXT:    retl
    474 ;
    475 ; X32-SKX-LABEL: allones_v64i8:
    476 ; X32-SKX:       # %bb.0:
    477 ; X32-SKX-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    478 ; X32-SKX-NEXT:    retl
    479 ;
    480 ; X64-SSE-LABEL: allones_v64i8:
    481 ; X64-SSE:       # %bb.0:
    482 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    483 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    484 ; X64-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    485 ; X64-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    486 ; X64-SSE-NEXT:    retq
    487 ;
    488 ; X64-AVX1-LABEL: allones_v64i8:
    489 ; X64-AVX1:       # %bb.0:
    490 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    491 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    492 ; X64-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    493 ; X64-AVX1-NEXT:    retq
    494 ;
    495 ; X64-AVX2-LABEL: allones_v64i8:
    496 ; X64-AVX2:       # %bb.0:
    497 ; X64-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    498 ; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    499 ; X64-AVX2-NEXT:    retq
    500 ;
    501 ; X64-KNL-LABEL: allones_v64i8:
    502 ; X64-KNL:       # %bb.0:
    503 ; X64-KNL-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    504 ; X64-KNL-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    505 ; X64-KNL-NEXT:    retq
    506 ;
    507 ; X64-SKX-LABEL: allones_v64i8:
    508 ; X64-SKX:       # %bb.0:
    509 ; X64-SKX-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    510 ; X64-SKX-NEXT:    retq
    511   ret <64 x i8> <i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1, i8 -1>
    512 }
    513 
    514 define <32 x i16> @allones_v32i16() nounwind {
    515 ; X32-SSE-LABEL: allones_v32i16:
    516 ; X32-SSE:       # %bb.0:
    517 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    518 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    519 ; X32-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    520 ; X32-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    521 ; X32-SSE-NEXT:    retl
    522 ;
    523 ; X32-AVX1-LABEL: allones_v32i16:
    524 ; X32-AVX1:       # %bb.0:
    525 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    526 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    527 ; X32-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    528 ; X32-AVX1-NEXT:    retl
    529 ;
    530 ; X32-AVX2-LABEL: allones_v32i16:
    531 ; X32-AVX2:       # %bb.0:
    532 ; X32-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    533 ; X32-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    534 ; X32-AVX2-NEXT:    retl
    535 ;
    536 ; X32-KNL-LABEL: allones_v32i16:
    537 ; X32-KNL:       # %bb.0:
    538 ; X32-KNL-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    539 ; X32-KNL-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    540 ; X32-KNL-NEXT:    retl
    541 ;
    542 ; X32-SKX-LABEL: allones_v32i16:
    543 ; X32-SKX:       # %bb.0:
    544 ; X32-SKX-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    545 ; X32-SKX-NEXT:    retl
    546 ;
    547 ; X64-SSE-LABEL: allones_v32i16:
    548 ; X64-SSE:       # %bb.0:
    549 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    550 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    551 ; X64-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    552 ; X64-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    553 ; X64-SSE-NEXT:    retq
    554 ;
    555 ; X64-AVX1-LABEL: allones_v32i16:
    556 ; X64-AVX1:       # %bb.0:
    557 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    558 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    559 ; X64-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    560 ; X64-AVX1-NEXT:    retq
    561 ;
    562 ; X64-AVX2-LABEL: allones_v32i16:
    563 ; X64-AVX2:       # %bb.0:
    564 ; X64-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    565 ; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    566 ; X64-AVX2-NEXT:    retq
    567 ;
    568 ; X64-KNL-LABEL: allones_v32i16:
    569 ; X64-KNL:       # %bb.0:
    570 ; X64-KNL-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    571 ; X64-KNL-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    572 ; X64-KNL-NEXT:    retq
    573 ;
    574 ; X64-SKX-LABEL: allones_v32i16:
    575 ; X64-SKX:       # %bb.0:
    576 ; X64-SKX-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    577 ; X64-SKX-NEXT:    retq
    578   ret <32 x i16> <i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1, i16 -1>
    579 }
    580 
    581 define <16 x i32> @allones_v16i32() nounwind {
    582 ; X32-SSE-LABEL: allones_v16i32:
    583 ; X32-SSE:       # %bb.0:
    584 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    585 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    586 ; X32-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    587 ; X32-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    588 ; X32-SSE-NEXT:    retl
    589 ;
    590 ; X32-AVX1-LABEL: allones_v16i32:
    591 ; X32-AVX1:       # %bb.0:
    592 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    593 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    594 ; X32-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    595 ; X32-AVX1-NEXT:    retl
    596 ;
    597 ; X32-AVX2-LABEL: allones_v16i32:
    598 ; X32-AVX2:       # %bb.0:
    599 ; X32-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    600 ; X32-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    601 ; X32-AVX2-NEXT:    retl
    602 ;
    603 ; X32-AVX512-LABEL: allones_v16i32:
    604 ; X32-AVX512:       # %bb.0:
    605 ; X32-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    606 ; X32-AVX512-NEXT:    retl
    607 ;
    608 ; X64-SSE-LABEL: allones_v16i32:
    609 ; X64-SSE:       # %bb.0:
    610 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    611 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    612 ; X64-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    613 ; X64-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    614 ; X64-SSE-NEXT:    retq
    615 ;
    616 ; X64-AVX1-LABEL: allones_v16i32:
    617 ; X64-AVX1:       # %bb.0:
    618 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    619 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    620 ; X64-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    621 ; X64-AVX1-NEXT:    retq
    622 ;
    623 ; X64-AVX2-LABEL: allones_v16i32:
    624 ; X64-AVX2:       # %bb.0:
    625 ; X64-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    626 ; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    627 ; X64-AVX2-NEXT:    retq
    628 ;
    629 ; X64-AVX512-LABEL: allones_v16i32:
    630 ; X64-AVX512:       # %bb.0:
    631 ; X64-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    632 ; X64-AVX512-NEXT:    retq
    633   ret <16 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
    634 }
    635 
    636 define <8 x i64> @allones_v8i64() nounwind {
    637 ; X32-SSE-LABEL: allones_v8i64:
    638 ; X32-SSE:       # %bb.0:
    639 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    640 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    641 ; X32-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    642 ; X32-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    643 ; X32-SSE-NEXT:    retl
    644 ;
    645 ; X32-AVX1-LABEL: allones_v8i64:
    646 ; X32-AVX1:       # %bb.0:
    647 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    648 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    649 ; X32-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    650 ; X32-AVX1-NEXT:    retl
    651 ;
    652 ; X32-AVX2-LABEL: allones_v8i64:
    653 ; X32-AVX2:       # %bb.0:
    654 ; X32-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    655 ; X32-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    656 ; X32-AVX2-NEXT:    retl
    657 ;
    658 ; X32-AVX512-LABEL: allones_v8i64:
    659 ; X32-AVX512:       # %bb.0:
    660 ; X32-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    661 ; X32-AVX512-NEXT:    retl
    662 ;
    663 ; X64-SSE-LABEL: allones_v8i64:
    664 ; X64-SSE:       # %bb.0:
    665 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    666 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    667 ; X64-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    668 ; X64-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    669 ; X64-SSE-NEXT:    retq
    670 ;
    671 ; X64-AVX1-LABEL: allones_v8i64:
    672 ; X64-AVX1:       # %bb.0:
    673 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    674 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    675 ; X64-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    676 ; X64-AVX1-NEXT:    retq
    677 ;
    678 ; X64-AVX2-LABEL: allones_v8i64:
    679 ; X64-AVX2:       # %bb.0:
    680 ; X64-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    681 ; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    682 ; X64-AVX2-NEXT:    retq
    683 ;
    684 ; X64-AVX512-LABEL: allones_v8i64:
    685 ; X64-AVX512:       # %bb.0:
    686 ; X64-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    687 ; X64-AVX512-NEXT:    retq
    688   ret <8 x i64> <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1>
    689 }
    690 
    691 define <8 x double> @allones_v8f64() nounwind {
    692 ; X32-SSE-LABEL: allones_v8f64:
    693 ; X32-SSE:       # %bb.0:
    694 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    695 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    696 ; X32-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    697 ; X32-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    698 ; X32-SSE-NEXT:    retl
    699 ;
    700 ; X32-AVX1-LABEL: allones_v8f64:
    701 ; X32-AVX1:       # %bb.0:
    702 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    703 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    704 ; X32-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    705 ; X32-AVX1-NEXT:    retl
    706 ;
    707 ; X32-AVX2-LABEL: allones_v8f64:
    708 ; X32-AVX2:       # %bb.0:
    709 ; X32-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    710 ; X32-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    711 ; X32-AVX2-NEXT:    retl
    712 ;
    713 ; X32-AVX512-LABEL: allones_v8f64:
    714 ; X32-AVX512:       # %bb.0:
    715 ; X32-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    716 ; X32-AVX512-NEXT:    retl
    717 ;
    718 ; X64-SSE-LABEL: allones_v8f64:
    719 ; X64-SSE:       # %bb.0:
    720 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    721 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    722 ; X64-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    723 ; X64-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    724 ; X64-SSE-NEXT:    retq
    725 ;
    726 ; X64-AVX1-LABEL: allones_v8f64:
    727 ; X64-AVX1:       # %bb.0:
    728 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    729 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    730 ; X64-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    731 ; X64-AVX1-NEXT:    retq
    732 ;
    733 ; X64-AVX2-LABEL: allones_v8f64:
    734 ; X64-AVX2:       # %bb.0:
    735 ; X64-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    736 ; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    737 ; X64-AVX2-NEXT:    retq
    738 ;
    739 ; X64-AVX512-LABEL: allones_v8f64:
    740 ; X64-AVX512:       # %bb.0:
    741 ; X64-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    742 ; X64-AVX512-NEXT:    retq
    743   ret <8 x double> <double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff, double 0xffffffffffffffff>
    744 }
    745 
    746 define <16 x float> @allones_v16f32() nounwind {
    747 ; X32-SSE-LABEL: allones_v16f32:
    748 ; X32-SSE:       # %bb.0:
    749 ; X32-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    750 ; X32-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    751 ; X32-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    752 ; X32-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    753 ; X32-SSE-NEXT:    retl
    754 ;
    755 ; X32-AVX1-LABEL: allones_v16f32:
    756 ; X32-AVX1:       # %bb.0:
    757 ; X32-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    758 ; X32-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    759 ; X32-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    760 ; X32-AVX1-NEXT:    retl
    761 ;
    762 ; X32-AVX2-LABEL: allones_v16f32:
    763 ; X32-AVX2:       # %bb.0:
    764 ; X32-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    765 ; X32-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    766 ; X32-AVX2-NEXT:    retl
    767 ;
    768 ; X32-AVX512-LABEL: allones_v16f32:
    769 ; X32-AVX512:       # %bb.0:
    770 ; X32-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    771 ; X32-AVX512-NEXT:    retl
    772 ;
    773 ; X64-SSE-LABEL: allones_v16f32:
    774 ; X64-SSE:       # %bb.0:
    775 ; X64-SSE-NEXT:    pcmpeqd %xmm0, %xmm0
    776 ; X64-SSE-NEXT:    pcmpeqd %xmm1, %xmm1
    777 ; X64-SSE-NEXT:    pcmpeqd %xmm2, %xmm2
    778 ; X64-SSE-NEXT:    pcmpeqd %xmm3, %xmm3
    779 ; X64-SSE-NEXT:    retq
    780 ;
    781 ; X64-AVX1-LABEL: allones_v16f32:
    782 ; X64-AVX1:       # %bb.0:
    783 ; X64-AVX1-NEXT:    vxorps %xmm0, %xmm0, %xmm0
    784 ; X64-AVX1-NEXT:    vcmptrueps %ymm0, %ymm0, %ymm0
    785 ; X64-AVX1-NEXT:    vmovaps %ymm0, %ymm1
    786 ; X64-AVX1-NEXT:    retq
    787 ;
    788 ; X64-AVX2-LABEL: allones_v16f32:
    789 ; X64-AVX2:       # %bb.0:
    790 ; X64-AVX2-NEXT:    vpcmpeqd %ymm0, %ymm0, %ymm0
    791 ; X64-AVX2-NEXT:    vpcmpeqd %ymm1, %ymm1, %ymm1
    792 ; X64-AVX2-NEXT:    retq
    793 ;
    794 ; X64-AVX512-LABEL: allones_v16f32:
    795 ; X64-AVX512:       # %bb.0:
    796 ; X64-AVX512-NEXT:    vpternlogd $255, %zmm0, %zmm0, %zmm0
    797 ; X64-AVX512-NEXT:    retq
    798   ret <16 x float> <float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000, float 0xffffffffe0000000>
    799 }
    800