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