1 // RUN: %clang_cc1 %s -triple=x86_64-apple-darwin -target-feature +avx512f -emit-llvm -o - -Werror | FileCheck %s 2 3 // Don't include mm_malloc.h, it's system specific. 4 #define __MM_MALLOC_H 5 6 #include <immintrin.h> 7 8 __m512d test_mm512_sqrt_pd(__m512d a) 9 { 10 // CHECK-LABEL: @test_mm512_sqrt_pd 11 // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512 12 return _mm512_sqrt_pd(a); 13 } 14 15 __m512d test_mm512_mask_sqrt_pd (__m512d __W, __mmask8 __U, __m512d __A) 16 { 17 // CHECK-LABEL: @test_mm512_mask_sqrt_pd 18 // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512 19 return _mm512_mask_sqrt_pd (__W,__U,__A); 20 } 21 22 __m512d test_mm512_maskz_sqrt_pd (__mmask8 __U, __m512d __A) 23 { 24 // CHECK-LABEL: @test_mm512_maskz_sqrt_pd 25 // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512 26 return _mm512_maskz_sqrt_pd (__U,__A); 27 } 28 29 __m512d test_mm512_mask_sqrt_round_pd(__m512d __W,__mmask8 __U,__m512d __A) 30 { 31 // CHECK-LABEL: @test_mm512_mask_sqrt_round_pd 32 // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512 33 return _mm512_mask_sqrt_round_pd(__W,__U,__A,_MM_FROUND_CUR_DIRECTION); 34 } 35 36 __m512d test_mm512_maskz_sqrt_round_pd(__mmask8 __U,__m512d __A) 37 { 38 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_pd 39 // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512 40 return _mm512_maskz_sqrt_round_pd(__U,__A,_MM_FROUND_CUR_DIRECTION); 41 } 42 43 __m512d test_mm512_sqrt_round_pd(__m512d __A) 44 { 45 // CHECK-LABEL: @test_mm512_sqrt_round_pd 46 // CHECK: @llvm.x86.avx512.mask.sqrt.pd.512 47 return _mm512_sqrt_round_pd(__A,_MM_FROUND_CUR_DIRECTION); 48 } 49 50 __m512 test_mm512_sqrt_ps(__m512 a) 51 { 52 // CHECK-LABEL: @test_mm512_sqrt_ps 53 // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512 54 return _mm512_sqrt_ps(a); 55 } 56 57 __m512 test_mm512_mask_sqrt_ps(__m512 __W, __mmask16 __U, __m512 __A) 58 { 59 // CHECK-LABEL: @test_mm512_mask_sqrt_ps 60 // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512 61 return _mm512_mask_sqrt_ps( __W, __U, __A); 62 } 63 64 __m512 test_mm512_maskz_sqrt_ps( __mmask16 __U, __m512 __A) 65 { 66 // CHECK-LABEL: @test_mm512_maskz_sqrt_ps 67 // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512 68 return _mm512_maskz_sqrt_ps(__U ,__A); 69 } 70 71 __m512 test_mm512_mask_sqrt_round_ps(__m512 __W,__mmask16 __U,__m512 __A) 72 { 73 // CHECK-LABEL: @test_mm512_mask_sqrt_round_ps 74 // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512 75 return _mm512_mask_sqrt_round_ps(__W,__U,__A,_MM_FROUND_CUR_DIRECTION); 76 } 77 78 __m512 test_mm512_maskz_sqrt_round_ps(__mmask16 __U,__m512 __A) 79 { 80 // CHECK-LABEL: @test_mm512_maskz_sqrt_round_ps 81 // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512 82 return _mm512_maskz_sqrt_round_ps(__U,__A,_MM_FROUND_CUR_DIRECTION); 83 } 84 85 __m512 test_mm512_sqrt_round_ps(__m512 __A) 86 { 87 // CHECK-LABEL: @test_mm512_sqrt_round_ps 88 // CHECK: @llvm.x86.avx512.mask.sqrt.ps.512 89 return _mm512_sqrt_round_ps(__A,_MM_FROUND_CUR_DIRECTION); 90 } 91 92 __m512d test_mm512_rsqrt14_pd(__m512d a) 93 { 94 // CHECK-LABEL: @test_mm512_rsqrt14_pd 95 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512 96 return _mm512_rsqrt14_pd(a); 97 } 98 99 __m512d test_mm512_mask_rsqrt14_pd (__m512d __W, __mmask8 __U, __m512d __A) 100 { 101 // CHECK-LABEL: @test_mm512_mask_rsqrt14_pd 102 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512 103 return _mm512_mask_rsqrt14_pd (__W,__U,__A); 104 } 105 106 __m512d test_mm512_maskz_rsqrt14_pd (__mmask8 __U, __m512d __A) 107 { 108 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_pd 109 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512 110 return _mm512_maskz_rsqrt14_pd (__U,__A); 111 } 112 113 __m512 test_mm512_rsqrt14_ps(__m512 a) 114 { 115 // CHECK-LABEL: @test_mm512_rsqrt14_ps 116 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512 117 return _mm512_rsqrt14_ps(a); 118 } 119 120 __m512 test_mm512_mask_rsqrt14_ps (__m512 __W, __mmask16 __U, __m512 __A) 121 { 122 // CHECK-LABEL: @test_mm512_mask_rsqrt14_ps 123 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512 124 return _mm512_mask_rsqrt14_ps (__W,__U,__A); 125 } 126 127 __m512 test_mm512_maskz_rsqrt14_ps (__mmask16 __U, __m512 __A) 128 { 129 // CHECK-LABEL: @test_mm512_maskz_rsqrt14_ps 130 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512 131 return _mm512_maskz_rsqrt14_ps (__U,__A); 132 } 133 134 __m512 test_mm512_add_ps(__m512 a, __m512 b) 135 { 136 // CHECK-LABEL: @test_mm512_add_ps 137 // CHECK: fadd <16 x float> 138 return _mm512_add_ps(a, b); 139 } 140 141 __m512d test_mm512_add_pd(__m512d a, __m512d b) 142 { 143 // CHECK-LABEL: @test_mm512_add_pd 144 // CHECK: fadd <8 x double> 145 return _mm512_add_pd(a, b); 146 } 147 148 __m512 test_mm512_mul_ps(__m512 a, __m512 b) 149 { 150 // CHECK-LABEL: @test_mm512_mul_ps 151 // CHECK: fmul <16 x float> 152 return _mm512_mul_ps(a, b); 153 } 154 155 __m512d test_mm512_mul_pd(__m512d a, __m512d b) 156 { 157 // CHECK-LABEL: @test_mm512_mul_pd 158 // CHECK: fmul <8 x double> 159 return _mm512_mul_pd(a, b); 160 } 161 162 void test_mm512_storeu_si512 (void *__P, __m512i __A) 163 { 164 // CHECK-LABEL: @test_mm512_storeu_si512 165 // CHECK: store <16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, align 1{{$}} 166 // CHECK-NEXT: ret void 167 _mm512_storeu_si512 ( __P,__A); 168 } 169 170 void test_mm512_storeu_ps(void *p, __m512 a) 171 { 172 // CHECK-LABEL: @test_mm512_storeu_ps 173 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 1{{$}} 174 // CHECK-NEXT: ret void 175 _mm512_storeu_ps(p, a); 176 } 177 178 void test_mm512_storeu_pd(void *p, __m512d a) 179 { 180 // CHECK-LABEL: @test_mm512_storeu_pd 181 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 1{{$}} 182 // CHECK-NEXT: ret void 183 _mm512_storeu_pd(p, a); 184 } 185 186 void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m) 187 { 188 // CHECK-LABEL: @test_mm512_mask_store_ps 189 // CHECK: @llvm.masked.store.v16f32.p0v16f32(<16 x float> %{{.*}}, <16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}) 190 _mm512_mask_store_ps(p, m, a); 191 } 192 193 void test_mm512_store_si512 (void *__P, __m512i __A) 194 { 195 // CHECK-LABEL: @test_mm512_store_si512 196 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64 197 // CHECK: [[SI512_3:%.+]] = load i8*, i8** %__P.addr.i, align 8 198 // CHECK: bitcast i8* [[SI512_3]] to <8 x i64>* 199 // CHECK: store <8 x i64> 200 _mm512_store_si512 ( __P,__A); 201 } 202 203 void test_mm512_store_epi32 (void *__P, __m512i __A) 204 { 205 // CHECK-LABEL: @test_mm512_store_epi32 206 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64 207 // CHECK: [[Si32_3:%.+]] = load i8*, i8** %__P.addr.i, align 8 208 // CHECK: bitcast i8* [[Si32_3]] to <8 x i64>* 209 // CHECK: store <8 x i64> 210 _mm512_store_epi32 ( __P,__A); 211 } 212 213 void test_mm512_store_epi64 (void *__P, __m512i __A) 214 { 215 // CHECK-LABEL: @test_mm512_store_epi64 216 // CHECK: load <8 x i64>, <8 x i64>* %__A.addr.i, align 64 217 // CHECK: [[SI64_3:%.+]] = load i8*, i8** %__P.addr.i, align 8 218 // CHECK: bitcast i8* [[SI64_3]] to <8 x i64>* 219 // CHECK: store <8 x i64> 220 _mm512_store_epi64 ( __P,__A); 221 } 222 223 void test_mm512_store_ps(void *p, __m512 a) 224 { 225 // CHECK-LABEL: @test_mm512_store_ps 226 // CHECK: store <16 x float> 227 _mm512_store_ps(p, a); 228 } 229 230 void test_mm512_store_pd(void *p, __m512d a) 231 { 232 // CHECK-LABEL: @test_mm512_store_pd 233 // CHECK: store <8 x double> 234 _mm512_store_pd(p, a); 235 } 236 237 void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m) 238 { 239 // CHECK-LABEL: @test_mm512_mask_store_pd 240 // CHECK: @llvm.masked.store.v8f64.p0v8f64(<8 x double> %{{.*}}, <8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}) 241 _mm512_mask_store_pd(p, m, a); 242 } 243 244 void test_mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A) { 245 // CHECK-LABEL: @test_mm512_mask_storeu_epi32 246 // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}) 247 return _mm512_mask_storeu_epi32(__P, __U, __A); 248 } 249 250 void test_mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A) { 251 // CHECK-LABEL: @test_mm512_mask_storeu_epi64 252 // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}) 253 return _mm512_mask_storeu_epi64(__P, __U, __A); 254 } 255 256 __m512i test_mm512_loadu_si512 (void *__P) 257 { 258 // CHECK-LABEL: @test_mm512_loadu_si512 259 // CHECK: load <16 x i32>, <16 x i32>* %{{.*}}, align 1{{$}} 260 return _mm512_loadu_si512 ( __P); 261 } 262 263 __m512i test_mm512_mask_loadu_epi32 (__m512i __W, __mmask16 __U, void *__P) 264 { 265 // CHECK-LABEL: @test_mm512_mask_loadu_epi32 266 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x i32> %{{.*}}) 267 return _mm512_mask_loadu_epi32 (__W,__U, __P); 268 } 269 270 __m512i test_mm512_mask_loadu_epi64 (__m512i __W, __mmask8 __U, void *__P) 271 { 272 // CHECK-LABEL: @test_mm512_mask_loadu_epi64 273 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x i64> %{{.*}}) 274 return _mm512_mask_loadu_epi64 (__W,__U, __P); 275 } 276 277 __m512 test_mm512_loadu_ps(void *p) 278 { 279 // CHECK-LABEL: @test_mm512_loadu_ps 280 // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}} 281 return _mm512_loadu_ps(p); 282 } 283 284 __m512 test_mm512_mask_loadu_ps (__m512 __W, __mmask16 __U, void *__P) 285 { 286 // CHECK-LABEL: @test_mm512_mask_loadu_ps 287 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 1, <16 x i1> %{{.*}}, <16 x float> %{{.*}}) 288 return _mm512_mask_loadu_ps (__W,__U, __P); 289 } 290 291 __m512d test_mm512_loadu_pd(void *p) 292 { 293 // CHECK-LABEL: @test_mm512_loadu_pd 294 // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}} 295 return _mm512_loadu_pd(p); 296 } 297 298 __m512d test_mm512_mask_loadu_pd (__m512d __W, __mmask8 __U, void *__P) 299 { 300 // CHECK-LABEL: @test_mm512_mask_loadu_pd 301 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 1, <8 x i1> %{{.*}}, <8 x double> %{{.*}}) 302 return _mm512_mask_loadu_pd (__W,__U, __P); 303 } 304 305 __m512i test_mm512_load_si512 (void *__P) 306 { 307 // CHECK-LABEL: @test_mm512_load_si512 308 // CHECK: [[LI512_1:%.+]] = load i8*, i8** %__P.addr.i, align 8 309 // CHECK: [[LI512_2:%.+]] = bitcast i8* [[LI512_1]] to <8 x i64>* 310 // CHECK: load <8 x i64>, <8 x i64>* [[LI512_2]], align 64 311 return _mm512_load_si512 ( __P); 312 } 313 314 __m512i test_mm512_load_epi32 (void *__P) 315 { 316 // CHECK-LABEL: @test_mm512_load_epi32 317 // CHECK: [[LI32_1:%.+]] = load i8*, i8** %__P.addr.i, align 8 318 // CHECK: [[LI32_2:%.+]] = bitcast i8* [[LI32_1]] to <8 x i64>* 319 // CHECK: load <8 x i64>, <8 x i64>* [[LI32_2]], align 64 320 return _mm512_load_epi32 ( __P); 321 } 322 323 __m512i test_mm512_load_epi64 (void *__P) 324 { 325 // CHECK-LABEL: @test_mm512_load_epi64 326 // CHECK: [[LI64_1:%.+]] = load i8*, i8** %__P.addr.i, align 8 327 // CHECK: [[LI64_2:%.+]] = bitcast i8* [[LI64_1]] to <8 x i64>* 328 // CHECK: load <8 x i64>, <8 x i64>* [[LI64_2]], align 64 329 return _mm512_load_epi64 ( __P); 330 } 331 332 __m512 test_mm512_load_ps(void *p) 333 { 334 // CHECK-LABEL: @test_mm512_load_ps 335 // CHECK: load <16 x float>, <16 x float>* %{{.*}}, align 64 336 return _mm512_load_ps(p); 337 } 338 339 __m512 test_mm512_mask_load_ps (__m512 __W, __mmask16 __U, void *__P) 340 { 341 // CHECK-LABEL: @test_mm512_mask_load_ps 342 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}}) 343 return _mm512_mask_load_ps (__W,__U, __P); 344 } 345 346 __m512 test_mm512_maskz_load_ps(__mmask16 __U, void *__P) 347 { 348 // CHECK-LABEL: @test_mm512_maskz_load_ps 349 // CHECK: @llvm.masked.load.v16f32.p0v16f32(<16 x float>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x float> %{{.*}}) 350 return _mm512_maskz_load_ps(__U, __P); 351 } 352 353 __m512d test_mm512_load_pd(void *p) 354 { 355 // CHECK-LABEL: @test_mm512_load_pd 356 // CHECK: load <8 x double>, <8 x double>* %{{.*}}, align 64 357 return _mm512_load_pd(p); 358 } 359 360 __m512d test_mm512_mask_load_pd (__m512d __W, __mmask8 __U, void *__P) 361 { 362 // CHECK-LABEL: @test_mm512_mask_load_pd 363 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}}) 364 return _mm512_mask_load_pd (__W,__U, __P); 365 } 366 367 __m512d test_mm512_maskz_load_pd(__mmask8 __U, void *__P) 368 { 369 // CHECK-LABEL: @test_mm512_maskz_load_pd 370 // CHECK: @llvm.masked.load.v8f64.p0v8f64(<8 x double>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x double> %{{.*}}) 371 return _mm512_maskz_load_pd(__U, __P); 372 } 373 374 __m512d test_mm512_set1_pd(double d) 375 { 376 // CHECK-LABEL: @test_mm512_set1_pd 377 // CHECK: insertelement <8 x double> {{.*}}, i32 0 378 // CHECK: insertelement <8 x double> {{.*}}, i32 1 379 // CHECK: insertelement <8 x double> {{.*}}, i32 2 380 // CHECK: insertelement <8 x double> {{.*}}, i32 3 381 // CHECK: insertelement <8 x double> {{.*}}, i32 4 382 // CHECK: insertelement <8 x double> {{.*}}, i32 5 383 // CHECK: insertelement <8 x double> {{.*}}, i32 6 384 // CHECK: insertelement <8 x double> {{.*}}, i32 7 385 return _mm512_set1_pd(d); 386 } 387 388 __mmask16 test_mm512_knot(__mmask16 a) 389 { 390 // CHECK-LABEL: @test_mm512_knot 391 // CHECK: @llvm.x86.avx512.knot.w 392 return _mm512_knot(a); 393 } 394 395 __m512i test_mm512_alignr_epi32(__m512i a, __m512i b) 396 { 397 // CHECK-LABEL: @test_mm512_alignr_epi32 398 // CHECK: @llvm.x86.avx512.mask.valign.d.512 399 return _mm512_alignr_epi32(a, b, 2); 400 } 401 402 __m512i test_mm512_mask_alignr_epi32(__m512i w, __mmask16 u, __m512i a, __m512i b) 403 { 404 // CHECK-LABEL: @test_mm512_mask_alignr_epi32 405 // CHECK: @llvm.x86.avx512.mask.valign.d.512 406 return _mm512_mask_alignr_epi32(w, u, a, b, 2); 407 } 408 409 __m512i test_mm512_maskz_alignr_epi32( __mmask16 u, __m512i a, __m512i b) 410 { 411 // CHECK-LABEL: @test_mm512_maskz_alignr_epi32 412 // CHECK: @llvm.x86.avx512.mask.valign.d.512 413 return _mm512_maskz_alignr_epi32(u, a, b, 2); 414 } 415 416 __m512i test_mm512_alignr_epi64(__m512i a, __m512i b) 417 { 418 // CHECK-LABEL: @test_mm512_alignr_epi64 419 // CHECK: @llvm.x86.avx512.mask.valign.q.512 420 return _mm512_alignr_epi64(a, b, 2); 421 } 422 423 __m512i test_mm512_mask_alignr_epi64(__m512i w, __mmask8 u, __m512i a, __m512i b) 424 { 425 // CHECK-LABEL: @test_mm512_mask_alignr_epi64 426 // CHECK: @llvm.x86.avx512.mask.valign.q.512 427 return _mm512_mask_alignr_epi64(w, u, a, b, 2); 428 } 429 430 __m512i test_mm512_maskz_alignr_epi64( __mmask8 u, __m512i a, __m512i b) 431 { 432 // CHECK-LABEL: @test_mm512_maskz_alignr_epi64 433 // CHECK: @llvm.x86.avx512.mask.valign.q.512 434 return _mm512_maskz_alignr_epi64(u, a, b, 2); 435 } 436 437 __m512d test_mm512_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) { 438 // CHECK-LABEL: @test_mm512_fmadd_round_pd 439 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 440 return _mm512_fmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 441 } 442 443 __m512d test_mm512_mask_fmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 444 // CHECK-LABEL: @test_mm512_mask_fmadd_round_pd 445 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 446 return _mm512_mask_fmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 447 } 448 __m512d test_mm512_mask3_fmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 449 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_pd 450 // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512 451 return _mm512_mask3_fmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 452 } 453 __m512d test_mm512_maskz_fmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 454 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_pd 455 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 456 return _mm512_maskz_fmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 457 } 458 __m512d test_mm512_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) { 459 // CHECK-LABEL: @test_mm512_fmsub_round_pd 460 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 461 return _mm512_fmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 462 } 463 __m512d test_mm512_mask_fmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 464 // CHECK-LABEL: @test_mm512_mask_fmsub_round_pd 465 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 466 return _mm512_mask_fmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 467 } 468 __m512d test_mm512_maskz_fmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 469 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_pd 470 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 471 return _mm512_maskz_fmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 472 } 473 __m512d test_mm512_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C) { 474 // CHECK-LABEL: @test_mm512_fnmadd_round_pd 475 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 476 return _mm512_fnmadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 477 } 478 __m512d test_mm512_mask3_fnmadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 479 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_pd 480 // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512 481 return _mm512_mask3_fnmadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 482 } 483 __m512d test_mm512_maskz_fnmadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 484 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_pd 485 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 486 return _mm512_maskz_fnmadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 487 } 488 __m512d test_mm512_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C) { 489 // CHECK-LABEL: @test_mm512_fnmsub_round_pd 490 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 491 return _mm512_fnmsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 492 } 493 __m512d test_mm512_maskz_fnmsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 494 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_pd 495 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 496 return _mm512_maskz_fnmsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 497 } 498 __m512d test_mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C) { 499 // CHECK-LABEL: @test_mm512_fmadd_pd 500 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 501 return _mm512_fmadd_pd(__A, __B, __C); 502 } 503 __m512d test_mm512_mask_fmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 504 // CHECK-LABEL: @test_mm512_mask_fmadd_pd 505 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 506 return _mm512_mask_fmadd_pd(__A, __U, __B, __C); 507 } 508 __m512d test_mm512_mask3_fmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 509 // CHECK-LABEL: @test_mm512_mask3_fmadd_pd 510 // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512 511 return _mm512_mask3_fmadd_pd(__A, __B, __C, __U); 512 } 513 __m512d test_mm512_maskz_fmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 514 // CHECK-LABEL: @test_mm512_maskz_fmadd_pd 515 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 516 return _mm512_maskz_fmadd_pd(__U, __A, __B, __C); 517 } 518 __m512d test_mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C) { 519 // CHECK-LABEL: @test_mm512_fmsub_pd 520 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 521 return _mm512_fmsub_pd(__A, __B, __C); 522 } 523 __m512d test_mm512_mask_fmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 524 // CHECK-LABEL: @test_mm512_mask_fmsub_pd 525 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 526 return _mm512_mask_fmsub_pd(__A, __U, __B, __C); 527 } 528 __m512d test_mm512_maskz_fmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 529 // CHECK-LABEL: @test_mm512_maskz_fmsub_pd 530 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 531 return _mm512_maskz_fmsub_pd(__U, __A, __B, __C); 532 } 533 __m512d test_mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C) { 534 // CHECK-LABEL: @test_mm512_fnmadd_pd 535 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 536 return _mm512_fnmadd_pd(__A, __B, __C); 537 } 538 __m512d test_mm512_mask3_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 539 // CHECK-LABEL: @test_mm512_mask3_fnmadd_pd 540 // CHECK: @llvm.x86.avx512.mask3.vfmadd.pd.512 541 return _mm512_mask3_fnmadd_pd(__A, __B, __C, __U); 542 } 543 __m512d test_mm512_maskz_fnmadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 544 // CHECK-LABEL: @test_mm512_maskz_fnmadd_pd 545 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 546 return _mm512_maskz_fnmadd_pd(__U, __A, __B, __C); 547 } 548 __m512d test_mm512_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C) { 549 // CHECK-LABEL: @test_mm512_fnmsub_pd 550 // CHECK: @llvm.x86.avx512.mask.vfmadd.pd.512 551 return _mm512_fnmsub_pd(__A, __B, __C); 552 } 553 __m512d test_mm512_maskz_fnmsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 554 // CHECK-LABEL: @test_mm512_maskz_fnmsub_pd 555 // CHECK: @llvm.x86.avx512.maskz.vfmadd.pd.512 556 return _mm512_maskz_fnmsub_pd(__U, __A, __B, __C); 557 } 558 __m512 test_mm512_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) { 559 // CHECK-LABEL: @test_mm512_fmadd_round_ps 560 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 561 return _mm512_fmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 562 } 563 __m512 test_mm512_mask_fmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 564 // CHECK-LABEL: @test_mm512_mask_fmadd_round_ps 565 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 566 return _mm512_mask_fmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 567 } 568 __m512 test_mm512_mask3_fmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 569 // CHECK-LABEL: @test_mm512_mask3_fmadd_round_ps 570 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512 571 return _mm512_mask3_fmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 572 } 573 __m512 test_mm512_maskz_fmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 574 // CHECK-LABEL: @test_mm512_maskz_fmadd_round_ps 575 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 576 return _mm512_maskz_fmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 577 } 578 __m512 test_mm512_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) { 579 // CHECK-LABEL: @test_mm512_fmsub_round_ps 580 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 581 return _mm512_fmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 582 } 583 __m512 test_mm512_mask_fmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 584 // CHECK-LABEL: @test_mm512_mask_fmsub_round_ps 585 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 586 return _mm512_mask_fmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 587 } 588 __m512 test_mm512_maskz_fmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 589 // CHECK-LABEL: @test_mm512_maskz_fmsub_round_ps 590 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 591 return _mm512_maskz_fmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 592 } 593 __m512 test_mm512_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C) { 594 // CHECK-LABEL: @test_mm512_fnmadd_round_ps 595 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 596 return _mm512_fnmadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 597 } 598 __m512 test_mm512_mask3_fnmadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 599 // CHECK-LABEL: @test_mm512_mask3_fnmadd_round_ps 600 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512 601 return _mm512_mask3_fnmadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 602 } 603 __m512 test_mm512_maskz_fnmadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 604 // CHECK-LABEL: @test_mm512_maskz_fnmadd_round_ps 605 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 606 return _mm512_maskz_fnmadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 607 } 608 __m512 test_mm512_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C) { 609 // CHECK-LABEL: @test_mm512_fnmsub_round_ps 610 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 611 return _mm512_fnmsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 612 } 613 __m512 test_mm512_maskz_fnmsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 614 // CHECK-LABEL: @test_mm512_maskz_fnmsub_round_ps 615 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 616 return _mm512_maskz_fnmsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 617 } 618 __m512 test_mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C) { 619 // CHECK-LABEL: @test_mm512_fmadd_ps 620 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 621 return _mm512_fmadd_ps(__A, __B, __C); 622 } 623 __m512 test_mm512_mask_fmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 624 // CHECK-LABEL: @test_mm512_mask_fmadd_ps 625 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 626 return _mm512_mask_fmadd_ps(__A, __U, __B, __C); 627 } 628 __m512 test_mm512_mask3_fmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 629 // CHECK-LABEL: @test_mm512_mask3_fmadd_ps 630 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512 631 return _mm512_mask3_fmadd_ps(__A, __B, __C, __U); 632 } 633 __m512 test_mm512_maskz_fmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 634 // CHECK-LABEL: @test_mm512_maskz_fmadd_ps 635 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 636 return _mm512_maskz_fmadd_ps(__U, __A, __B, __C); 637 } 638 __m512 test_mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C) { 639 // CHECK-LABEL: @test_mm512_fmsub_ps 640 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 641 return _mm512_fmsub_ps(__A, __B, __C); 642 } 643 __m512 test_mm512_mask_fmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 644 // CHECK-LABEL: @test_mm512_mask_fmsub_ps 645 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 646 return _mm512_mask_fmsub_ps(__A, __U, __B, __C); 647 } 648 __m512 test_mm512_maskz_fmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 649 // CHECK-LABEL: @test_mm512_maskz_fmsub_ps 650 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 651 return _mm512_maskz_fmsub_ps(__U, __A, __B, __C); 652 } 653 __m512 test_mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C) { 654 // CHECK-LABEL: @test_mm512_fnmadd_ps 655 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 656 return _mm512_fnmadd_ps(__A, __B, __C); 657 } 658 __m512 test_mm512_mask3_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 659 // CHECK-LABEL: @test_mm512_mask3_fnmadd_ps 660 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ps.512 661 return _mm512_mask3_fnmadd_ps(__A, __B, __C, __U); 662 } 663 __m512 test_mm512_maskz_fnmadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 664 // CHECK-LABEL: @test_mm512_maskz_fnmadd_ps 665 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 666 return _mm512_maskz_fnmadd_ps(__U, __A, __B, __C); 667 } 668 __m512 test_mm512_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C) { 669 // CHECK-LABEL: @test_mm512_fnmsub_ps 670 // CHECK: @llvm.x86.avx512.mask.vfmadd.ps.512 671 return _mm512_fnmsub_ps(__A, __B, __C); 672 } 673 __m512 test_mm512_maskz_fnmsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 674 // CHECK-LABEL: @test_mm512_maskz_fnmsub_ps 675 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ps.512 676 return _mm512_maskz_fnmsub_ps(__U, __A, __B, __C); 677 } 678 __m512d test_mm512_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C) { 679 // CHECK-LABEL: @test_mm512_fmaddsub_round_pd 680 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 681 return _mm512_fmaddsub_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 682 } 683 __m512d test_mm512_mask_fmaddsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 684 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_pd 685 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 686 return _mm512_mask_fmaddsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 687 } 688 __m512d test_mm512_mask3_fmaddsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 689 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_pd 690 // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.pd.512 691 return _mm512_mask3_fmaddsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 692 } 693 __m512d test_mm512_maskz_fmaddsub_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 694 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_pd 695 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512 696 return _mm512_maskz_fmaddsub_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 697 } 698 __m512d test_mm512_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C) { 699 // CHECK-LABEL: @test_mm512_fmsubadd_round_pd 700 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 701 return _mm512_fmsubadd_round_pd(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 702 } 703 __m512d test_mm512_mask_fmsubadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 704 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_pd 705 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 706 return _mm512_mask_fmsubadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 707 } 708 __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 709 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_pd 710 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512 711 return _mm512_maskz_fmsubadd_round_pd(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 712 } 713 __m512d test_mm512_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C) { 714 // CHECK-LABEL: @test_mm512_fmaddsub_pd 715 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 716 return _mm512_fmaddsub_pd(__A, __B, __C); 717 } 718 __m512d test_mm512_mask_fmaddsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 719 // CHECK-LABEL: @test_mm512_mask_fmaddsub_pd 720 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 721 return _mm512_mask_fmaddsub_pd(__A, __U, __B, __C); 722 } 723 __m512d test_mm512_mask3_fmaddsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 724 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd 725 // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.pd.512 726 return _mm512_mask3_fmaddsub_pd(__A, __B, __C, __U); 727 } 728 __m512d test_mm512_maskz_fmaddsub_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 729 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd 730 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512 731 return _mm512_maskz_fmaddsub_pd(__U, __A, __B, __C); 732 } 733 __m512d test_mm512_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C) { 734 // CHECK-LABEL: @test_mm512_fmsubadd_pd 735 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 736 return _mm512_fmsubadd_pd(__A, __B, __C); 737 } 738 __m512d test_mm512_mask_fmsubadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 739 // CHECK-LABEL: @test_mm512_mask_fmsubadd_pd 740 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.pd.512 741 return _mm512_mask_fmsubadd_pd(__A, __U, __B, __C); 742 } 743 __m512d test_mm512_maskz_fmsubadd_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512d __C) { 744 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd 745 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.pd.512 746 return _mm512_maskz_fmsubadd_pd(__U, __A, __B, __C); 747 } 748 __m512 test_mm512_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C) { 749 // CHECK-LABEL: @test_mm512_fmaddsub_round_ps 750 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 751 return _mm512_fmaddsub_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 752 } 753 __m512 test_mm512_mask_fmaddsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 754 // CHECK-LABEL: @test_mm512_mask_fmaddsub_round_ps 755 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 756 return _mm512_mask_fmaddsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 757 } 758 __m512 test_mm512_mask3_fmaddsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 759 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_round_ps 760 // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.ps.512 761 return _mm512_mask3_fmaddsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 762 } 763 __m512 test_mm512_maskz_fmaddsub_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 764 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_round_ps 765 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512 766 return _mm512_maskz_fmaddsub_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 767 } 768 __m512 test_mm512_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C) { 769 // CHECK-LABEL: @test_mm512_fmsubadd_round_ps 770 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 771 return _mm512_fmsubadd_round_ps(__A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 772 } 773 __m512 test_mm512_mask_fmsubadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 774 // CHECK-LABEL: @test_mm512_mask_fmsubadd_round_ps 775 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 776 return _mm512_mask_fmsubadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 777 } 778 __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 779 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_round_ps 780 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512 781 return _mm512_maskz_fmsubadd_round_ps(__U, __A, __B, __C, _MM_FROUND_TO_NEAREST_INT); 782 } 783 __m512 test_mm512_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C) { 784 // CHECK-LABEL: @test_mm512_fmaddsub_ps 785 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 786 return _mm512_fmaddsub_ps(__A, __B, __C); 787 } 788 __m512 test_mm512_mask_fmaddsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 789 // CHECK-LABEL: @test_mm512_mask_fmaddsub_ps 790 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 791 return _mm512_mask_fmaddsub_ps(__A, __U, __B, __C); 792 } 793 __m512 test_mm512_mask3_fmaddsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 794 // CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps 795 // CHECK: @llvm.x86.avx512.mask3.vfmaddsub.ps.512 796 return _mm512_mask3_fmaddsub_ps(__A, __B, __C, __U); 797 } 798 __m512 test_mm512_maskz_fmaddsub_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 799 // CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps 800 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512 801 return _mm512_maskz_fmaddsub_ps(__U, __A, __B, __C); 802 } 803 __m512 test_mm512_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C) { 804 // CHECK-LABEL: @test_mm512_fmsubadd_ps 805 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 806 return _mm512_fmsubadd_ps(__A, __B, __C); 807 } 808 __m512 test_mm512_mask_fmsubadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 809 // CHECK-LABEL: @test_mm512_mask_fmsubadd_ps 810 // CHECK: @llvm.x86.avx512.mask.vfmaddsub.ps.512 811 return _mm512_mask_fmsubadd_ps(__A, __U, __B, __C); 812 } 813 __m512 test_mm512_maskz_fmsubadd_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512 __C) { 814 // CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps 815 // CHECK: @llvm.x86.avx512.maskz.vfmaddsub.ps.512 816 return _mm512_maskz_fmsubadd_ps(__U, __A, __B, __C); 817 } 818 __m512d test_mm512_mask3_fmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 819 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_pd 820 // CHECK: @llvm.x86.avx512.mask3.vfmsub.pd.512 821 return _mm512_mask3_fmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 822 } 823 __m512d test_mm512_mask3_fmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 824 // CHECK-LABEL: @test_mm512_mask3_fmsub_pd 825 // CHECK: @llvm.x86.avx512.mask3.vfmsub.pd.512 826 return _mm512_mask3_fmsub_pd(__A, __B, __C, __U); 827 } 828 __m512 test_mm512_mask3_fmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 829 // CHECK-LABEL: @test_mm512_mask3_fmsub_round_ps 830 // CHECK: @llvm.x86.avx512.mask3.vfmsub.ps.512 831 return _mm512_mask3_fmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 832 } 833 __m512 test_mm512_mask3_fmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 834 // CHECK-LABEL: @test_mm512_mask3_fmsub_ps 835 // CHECK: @llvm.x86.avx512.mask3.vfmsub.ps.512 836 return _mm512_mask3_fmsub_ps(__A, __B, __C, __U); 837 } 838 __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 839 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_pd 840 // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.pd.512 841 return _mm512_mask3_fmsubadd_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 842 } 843 __m512d test_mm512_mask3_fmsubadd_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 844 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd 845 // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.pd.512 846 return _mm512_mask3_fmsubadd_pd(__A, __B, __C, __U); 847 } 848 __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 849 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_round_ps 850 // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.ps.512 851 return _mm512_mask3_fmsubadd_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 852 } 853 __m512 test_mm512_mask3_fmsubadd_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 854 // CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps 855 // CHECK: @llvm.x86.avx512.mask3.vfmsubadd.ps.512 856 return _mm512_mask3_fmsubadd_ps(__A, __B, __C, __U); 857 } 858 __m512d test_mm512_mask_fnmadd_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 859 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_pd 860 // CHECK: @llvm.x86.avx512.mask.vfnmadd.pd.512 861 return _mm512_mask_fnmadd_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 862 } 863 __m512d test_mm512_mask_fnmadd_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 864 // CHECK-LABEL: @test_mm512_mask_fnmadd_pd 865 // CHECK: @llvm.x86.avx512.mask.vfnmadd.pd.512 866 return _mm512_mask_fnmadd_pd(__A, __U, __B, __C); 867 } 868 __m512 test_mm512_mask_fnmadd_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 869 // CHECK-LABEL: @test_mm512_mask_fnmadd_round_ps 870 // CHECK: @llvm.x86.avx512.mask.vfnmadd.ps.512 871 return _mm512_mask_fnmadd_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 872 } 873 __m512 test_mm512_mask_fnmadd_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 874 // CHECK-LABEL: @test_mm512_mask_fnmadd_ps 875 // CHECK: @llvm.x86.avx512.mask.vfnmadd.ps.512 876 return _mm512_mask_fnmadd_ps(__A, __U, __B, __C); 877 } 878 __m512d test_mm512_mask_fnmsub_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 879 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_pd 880 // CHECK: @llvm.x86.avx512.mask.vfnmsub.pd.512 881 return _mm512_mask_fnmsub_round_pd(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 882 } 883 __m512d test_mm512_mask3_fnmsub_round_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 884 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_pd 885 // CHECK: @llvm.x86.avx512.mask3.vfnmsub.pd.512 886 return _mm512_mask3_fnmsub_round_pd(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 887 } 888 __m512d test_mm512_mask_fnmsub_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512d __C) { 889 // CHECK-LABEL: @test_mm512_mask_fnmsub_pd 890 // CHECK: @llvm.x86.avx512.mask.vfnmsub.pd.512 891 return _mm512_mask_fnmsub_pd(__A, __U, __B, __C); 892 } 893 __m512d test_mm512_mask3_fnmsub_pd(__m512d __A, __m512d __B, __m512d __C, __mmask8 __U) { 894 // CHECK-LABEL: @test_mm512_mask3_fnmsub_pd 895 // CHECK: @llvm.x86.avx512.mask3.vfnmsub.pd.512 896 return _mm512_mask3_fnmsub_pd(__A, __B, __C, __U); 897 } 898 __m512 test_mm512_mask_fnmsub_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 899 // CHECK-LABEL: @test_mm512_mask_fnmsub_round_ps 900 // CHECK: @llvm.x86.avx512.mask.vfnmsub.ps.512 901 return _mm512_mask_fnmsub_round_ps(__A, __U, __B, __C, _MM_FROUND_TO_NEAREST_INT); 902 } 903 __m512 test_mm512_mask3_fnmsub_round_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 904 // CHECK-LABEL: @test_mm512_mask3_fnmsub_round_ps 905 // CHECK: @llvm.x86.avx512.mask3.vfnmsub.ps.512 906 return _mm512_mask3_fnmsub_round_ps(__A, __B, __C, __U, _MM_FROUND_TO_NEAREST_INT); 907 } 908 __m512 test_mm512_mask_fnmsub_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512 __C) { 909 // CHECK-LABEL: @test_mm512_mask_fnmsub_ps 910 // CHECK: @llvm.x86.avx512.mask.vfnmsub.ps.512 911 return _mm512_mask_fnmsub_ps(__A, __U, __B, __C); 912 } 913 __m512 test_mm512_mask3_fnmsub_ps(__m512 __A, __m512 __B, __m512 __C, __mmask16 __U) { 914 // CHECK-LABEL: @test_mm512_mask3_fnmsub_ps 915 // CHECK: @llvm.x86.avx512.mask3.vfnmsub.ps.512 916 return _mm512_mask3_fnmsub_ps(__A, __B, __C, __U); 917 } 918 919 __mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) { 920 // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask 921 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 922 return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b); 923 } 924 925 __mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 926 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask 927 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 928 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 929 return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b); 930 } 931 932 __mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 933 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask 934 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 935 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 936 return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b); 937 } 938 939 __mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) { 940 // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask 941 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 942 return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b); 943 } 944 945 __mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) { 946 // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask 947 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}} 948 return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b); 949 } 950 951 __mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 952 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask 953 // CHECK: icmp sgt <16 x i32> %{{.*}}, %{{.*}} 954 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 955 return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b); 956 } 957 958 __mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 959 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask 960 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}} 961 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 962 return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b); 963 } 964 965 __mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) { 966 // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask 967 // CHECK: icmp sgt <8 x i64> %{{.*}}, %{{.*}} 968 return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b); 969 } 970 971 __m512d test_mm512_unpackhi_pd(__m512d a, __m512d b) 972 { 973 // CHECK-LABEL: @test_mm512_unpackhi_pd 974 // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 975 return _mm512_unpackhi_pd(a, b); 976 } 977 978 __m512d test_mm512_unpacklo_pd(__m512d a, __m512d b) 979 { 980 // CHECK-LABEL: @test_mm512_unpacklo_pd 981 // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 982 return _mm512_unpacklo_pd(a, b); 983 } 984 985 __m512 test_mm512_unpackhi_ps(__m512 a, __m512 b) 986 { 987 // CHECK-LABEL: @test_mm512_unpackhi_ps 988 // CHECK: shufflevector <16 x float> {{.*}} <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 989 return _mm512_unpackhi_ps(a, b); 990 } 991 992 __m512 test_mm512_unpacklo_ps(__m512 a, __m512 b) 993 { 994 // CHECK-LABEL: @test_mm512_unpacklo_ps 995 // CHECK: shufflevector <16 x float> {{.*}} <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 996 return _mm512_unpacklo_ps(a, b); 997 } 998 999 __mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) { 1000 // CHECK-LABEL: @test_mm512_cmp_round_ps_mask 1001 // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 1002 return _mm512_cmp_round_ps_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION); 1003 } 1004 1005 __mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) { 1006 // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask 1007 // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 1008 return _mm512_mask_cmp_round_ps_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION); 1009 } 1010 1011 __mmask16 test_mm512_cmp_ps_mask(__m512 a, __m512 b) { 1012 // CHECK-LABEL: @test_mm512_cmp_ps_mask 1013 // CHECKn: @llvm.x86.avx512.mask.cmp.ps.512 1014 return _mm512_cmp_ps_mask(a, b, 0); 1015 } 1016 1017 __mmask16 test_mm512_mask_cmp_ps_mask(__mmask16 m, __m512 a, __m512 b) { 1018 // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask 1019 // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 1020 return _mm512_mask_cmp_ps_mask(m, a, b, 0); 1021 } 1022 1023 __mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) { 1024 // CHECK-LABEL: @test_mm512_cmp_round_pd_mask 1025 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 1026 return _mm512_cmp_round_pd_mask(a, b, 0, _MM_FROUND_CUR_DIRECTION); 1027 } 1028 1029 __mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) { 1030 // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask 1031 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 1032 return _mm512_mask_cmp_round_pd_mask(m, a, b, 0, _MM_FROUND_CUR_DIRECTION); 1033 } 1034 1035 __mmask8 test_mm512_cmp_pd_mask(__m512d a, __m512d b) { 1036 // CHECK-LABEL: @test_mm512_cmp_pd_mask 1037 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 1038 return _mm512_cmp_pd_mask(a, b, 0); 1039 } 1040 1041 __mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) { 1042 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask 1043 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 1044 return _mm512_mask_cmp_pd_mask(m, a, b, 0); 1045 } 1046 1047 __m256d test_mm512_extractf64x4_pd(__m512d a) 1048 { 1049 // CHECK-LABEL: @test_mm512_extractf64x4_pd 1050 // CHECK: @llvm.x86.avx512.mask.vextractf64x4.512 1051 return _mm512_extractf64x4_pd(a, 1); 1052 } 1053 1054 __m256d test_mm512_mask_extractf64x4_pd(__m256d __W,__mmask8 __U,__m512d __A){ 1055 //CHECK-LABEL:@test_mm512_mask_extractf64x4_pd 1056 //CHECL:@llvm.x86.avx512.mask.vextractf64x4.512 1057 return _mm512_mask_extractf64x4_pd( __W, __U, __A, 1); 1058 } 1059 1060 __m256d test_mm512_maskz_extractf64x4_pd(__mmask8 __U,__m512d __A){ 1061 //CHECK-LABEL:@test_mm512_maskz_extractf64x4_pd 1062 //CHECL:@llvm.x86.avx512.mask.vextractf64x4.512 1063 return _mm512_maskz_extractf64x4_pd( __U, __A, 1); 1064 } 1065 1066 __m128 test_mm512_extractf32x4_ps(__m512 a) 1067 { 1068 // CHECK-LABEL: @test_mm512_extractf32x4_ps 1069 // CHECK: @llvm.x86.avx512.mask.vextractf32x4.512 1070 return _mm512_extractf32x4_ps(a, 1); 1071 } 1072 1073 __m128 test_mm512_mask_extractf32x4_ps(__m128 __W, __mmask8 __U,__m512d __A){ 1074 //CHECK-LABEL:@test_mm512_mask_extractf32x4_ps 1075 //CHECL: @llvm.x86.avx512.mask.vextractf32x4.512 1076 return _mm512_mask_extractf32x4_ps( __W, __U, __A, 1); 1077 } 1078 1079 __m128 test_mm512_maskz_extractf32x4_ps( __mmask8 __U,__m512d __A){ 1080 //CHECK-LABEL:@test_mm512_maskz_extractf32x4_ps 1081 //CHECL: @llvm.x86.avx512.mask.vextractf32x4.512 1082 return _mm512_maskz_extractf32x4_ps( __U, __A, 1); 1083 } 1084 1085 __mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) { 1086 // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask 1087 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 1088 return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b); 1089 } 1090 1091 __mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1092 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask 1093 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 1094 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1095 return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b); 1096 } 1097 1098 __mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) { 1099 // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask 1100 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 1101 return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b); 1102 } 1103 1104 __mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1105 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask 1106 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 1107 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1108 return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b); 1109 } 1110 1111 __mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) { 1112 // CHECK-LABEL: @test_mm512_cmpge_epi32_mask 1113 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}} 1114 return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b); 1115 } 1116 1117 __mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1118 // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask 1119 // CHECK: icmp sge <16 x i32> %{{.*}}, %{{.*}} 1120 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1121 return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b); 1122 } 1123 1124 __mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) { 1125 // CHECK-LABEL: @test_mm512_cmpge_epi64_mask 1126 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}} 1127 return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b); 1128 } 1129 1130 __mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1131 // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask 1132 // CHECK: icmp sge <8 x i64> %{{.*}}, %{{.*}} 1133 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1134 return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b); 1135 } 1136 1137 __mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) { 1138 // CHECK-LABEL: @test_mm512_cmpge_epu32_mask 1139 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}} 1140 return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b); 1141 } 1142 1143 __mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1144 // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask 1145 // CHECK: icmp uge <16 x i32> %{{.*}}, %{{.*}} 1146 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1147 return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b); 1148 } 1149 1150 __mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) { 1151 // CHECK-LABEL: @test_mm512_cmpge_epu64_mask 1152 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}} 1153 return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b); 1154 } 1155 1156 __mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1157 // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask 1158 // CHECK: icmp uge <8 x i64> %{{.*}}, %{{.*}} 1159 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1160 return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b); 1161 } 1162 1163 __mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) { 1164 // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask 1165 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}} 1166 return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b); 1167 } 1168 1169 __mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1170 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask 1171 // CHECK: icmp ugt <16 x i32> %{{.*}}, %{{.*}} 1172 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1173 return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b); 1174 } 1175 1176 __mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) { 1177 // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask 1178 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}} 1179 return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b); 1180 } 1181 1182 __mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1183 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask 1184 // CHECK: icmp ugt <8 x i64> %{{.*}}, %{{.*}} 1185 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1186 return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b); 1187 } 1188 1189 __mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) { 1190 // CHECK-LABEL: @test_mm512_cmple_epi32_mask 1191 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}} 1192 return (__mmask16)_mm512_cmple_epi32_mask(__a, __b); 1193 } 1194 1195 __mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1196 // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask 1197 // CHECK: icmp sle <16 x i32> %{{.*}}, %{{.*}} 1198 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1199 return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b); 1200 } 1201 1202 __mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) { 1203 // CHECK-LABEL: @test_mm512_cmple_epi64_mask 1204 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}} 1205 return (__mmask8)_mm512_cmple_epi64_mask(__a, __b); 1206 } 1207 1208 __mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1209 // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask 1210 // CHECK: icmp sle <8 x i64> %{{.*}}, %{{.*}} 1211 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1212 return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b); 1213 } 1214 1215 __mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) { 1216 // CHECK-LABEL: @test_mm512_cmple_epu32_mask 1217 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}} 1218 return (__mmask16)_mm512_cmple_epu32_mask(__a, __b); 1219 } 1220 1221 __mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1222 // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask 1223 // CHECK: icmp ule <16 x i32> %{{.*}}, %{{.*}} 1224 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1225 return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b); 1226 } 1227 1228 __mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) { 1229 // CHECK-LABEL: @test_mm512_cmple_epu64_mask 1230 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}} 1231 return (__mmask8)_mm512_cmple_epu64_mask(__a, __b); 1232 } 1233 1234 __mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1235 // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask 1236 // CHECK: icmp ule <8 x i64> %{{.*}}, %{{.*}} 1237 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1238 return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b); 1239 } 1240 1241 __mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) { 1242 // CHECK-LABEL: @test_mm512_cmplt_epi32_mask 1243 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}} 1244 return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b); 1245 } 1246 1247 __mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1248 // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask 1249 // CHECK: icmp slt <16 x i32> %{{.*}}, %{{.*}} 1250 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1251 return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b); 1252 } 1253 1254 __mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) { 1255 // CHECK-LABEL: @test_mm512_cmplt_epi64_mask 1256 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}} 1257 return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b); 1258 } 1259 1260 __mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1261 // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask 1262 // CHECK: icmp slt <8 x i64> %{{.*}}, %{{.*}} 1263 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1264 return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b); 1265 } 1266 1267 __mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) { 1268 // CHECK-LABEL: @test_mm512_cmplt_epu32_mask 1269 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}} 1270 return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b); 1271 } 1272 1273 __mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1274 // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask 1275 // CHECK: icmp ult <16 x i32> %{{.*}}, %{{.*}} 1276 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1277 return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b); 1278 } 1279 1280 __mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) { 1281 // CHECK-LABEL: @test_mm512_cmplt_epu64_mask 1282 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}} 1283 return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b); 1284 } 1285 1286 __mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1287 // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask 1288 // CHECK: icmp ult <8 x i64> %{{.*}}, %{{.*}} 1289 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1290 return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b); 1291 } 1292 1293 __mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) { 1294 // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask 1295 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} 1296 return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b); 1297 } 1298 1299 __mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1300 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask 1301 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} 1302 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1303 return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b); 1304 } 1305 1306 __mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) { 1307 // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask 1308 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} 1309 return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b); 1310 } 1311 1312 __mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1313 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask 1314 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} 1315 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1316 return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b); 1317 } 1318 1319 __mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) { 1320 // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask 1321 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} 1322 return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b); 1323 } 1324 1325 __mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1326 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask 1327 // CHECK: icmp ne <16 x i32> %{{.*}}, %{{.*}} 1328 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1329 return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b); 1330 } 1331 1332 __mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) { 1333 // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask 1334 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} 1335 return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b); 1336 } 1337 1338 __mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1339 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask 1340 // CHECK: icmp ne <8 x i64> %{{.*}}, %{{.*}} 1341 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1342 return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b); 1343 } 1344 1345 __mmask16 test_mm512_cmp_epi32_mask(__m512i __a, __m512i __b) { 1346 // CHECK-LABEL: @test_mm512_cmp_epi32_mask 1347 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 1348 return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, 0); 1349 } 1350 1351 __mmask16 test_mm512_mask_cmp_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1352 // CHECK-LABEL: @test_mm512_mask_cmp_epi32_mask 1353 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 1354 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1355 return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, 0); 1356 } 1357 1358 __mmask8 test_mm512_cmp_epi64_mask(__m512i __a, __m512i __b) { 1359 // CHECK-LABEL: @test_mm512_cmp_epi64_mask 1360 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 1361 return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, 0); 1362 } 1363 1364 __mmask8 test_mm512_mask_cmp_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1365 // CHECK-LABEL: @test_mm512_mask_cmp_epi64_mask 1366 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 1367 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1368 return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, 0); 1369 } 1370 1371 __mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) { 1372 // CHECK-LABEL: @test_mm512_cmp_epu32_mask 1373 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 1374 return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 0); 1375 } 1376 1377 __mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 1378 // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask 1379 // CHECK: icmp eq <16 x i32> %{{.*}}, %{{.*}} 1380 // CHECK: and <16 x i1> %{{.*}}, %{{.*}} 1381 return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 0); 1382 } 1383 1384 __mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) { 1385 // CHECK-LABEL: @test_mm512_cmp_epu64_mask 1386 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 1387 return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 0); 1388 } 1389 1390 __mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 1391 // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask 1392 // CHECK: icmp eq <8 x i64> %{{.*}}, %{{.*}} 1393 // CHECK: and <8 x i1> %{{.*}}, %{{.*}} 1394 return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 0); 1395 } 1396 1397 __m512i test_mm512_mask_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { 1398 // CHECK-LABEL: @test_mm512_mask_and_epi32 1399 // CHECK: and <16 x i32> 1400 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 1401 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1402 return _mm512_mask_and_epi32(__src, __k,__a, __b); 1403 } 1404 1405 __m512i test_mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b) { 1406 // CHECK-LABEL: @test_mm512_maskz_and_epi32 1407 // CHECK: and <16 x i32> 1408 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 1409 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1410 return _mm512_maskz_and_epi32(__k,__a, __b); 1411 } 1412 1413 __m512i test_mm512_mask_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) { 1414 // CHECK-LABEL: @test_mm512_mask_and_epi64 1415 // CHECK: %[[AND_RES:.*]] = and <8 x i64> 1416 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 1417 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}} 1418 return _mm512_mask_and_epi64(__src, __k,__a, __b); 1419 } 1420 1421 __m512i test_mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b) { 1422 // CHECK-LABEL: @test_mm512_maskz_and_epi64 1423 // CHECK: %[[AND_RES:.*]] = and <8 x i64> 1424 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 1425 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}} 1426 return _mm512_maskz_and_epi64(__k,__a, __b); 1427 } 1428 1429 __m512i test_mm512_mask_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { 1430 // CHECK-LABEL: @test_mm512_mask_or_epi32 1431 // CHECK: or <16 x i32> 1432 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 1433 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1434 return _mm512_mask_or_epi32(__src, __k,__a, __b); 1435 } 1436 1437 __m512i test_mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b) { 1438 // CHECK-LABEL: @test_mm512_maskz_or_epi32 1439 // CHECK: or <16 x i32> 1440 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 1441 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1442 return _mm512_maskz_or_epi32(__k,__a, __b); 1443 } 1444 1445 __m512i test_mm512_mask_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) { 1446 // CHECK-LABEL: @test_mm512_mask_or_epi64 1447 // CHECK: %[[OR_RES:.*]] = or <8 x i64> 1448 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 1449 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}} 1450 return _mm512_mask_or_epi64(__src, __k,__a, __b); 1451 } 1452 1453 __m512i test_mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b) { 1454 // CHECK-LABEL: @test_mm512_maskz_or_epi64 1455 // CHECK: %[[OR_RES:.*]] = or <8 x i64> 1456 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 1457 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[OR_RES]], <8 x i64> %{{.*}} 1458 return _mm512_maskz_or_epi64(__k,__a, __b); 1459 } 1460 1461 __m512i test_mm512_mask_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { 1462 // CHECK-LABEL: @test_mm512_mask_xor_epi32 1463 // CHECK: xor <16 x i32> 1464 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 1465 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1466 return _mm512_mask_xor_epi32(__src, __k,__a, __b); 1467 } 1468 1469 __m512i test_mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b) { 1470 // CHECK-LABEL: @test_mm512_maskz_xor_epi32 1471 // CHECK: xor <16 x i32> 1472 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 1473 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1474 return _mm512_maskz_xor_epi32(__k,__a, __b); 1475 } 1476 1477 __m512i test_mm512_mask_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) { 1478 // CHECK-LABEL: @test_mm512_mask_xor_epi64 1479 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64> 1480 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 1481 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}} 1482 return _mm512_mask_xor_epi64(__src, __k,__a, __b); 1483 } 1484 1485 __m512i test_mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b) { 1486 // CHECK-LABEL: @test_mm512_maskz_xor_epi64 1487 // CHECK: %[[XOR_RES:.*]] = xor <8 x i64> 1488 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 1489 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[XOR_RES]], <8 x i64> %{{.*}} 1490 return _mm512_maskz_xor_epi64(__k,__a, __b); 1491 } 1492 1493 __m512i test_mm512_and_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { 1494 // CHECK-LABEL: @test_mm512_and_epi32 1495 // CHECK: and <16 x i32> 1496 return _mm512_and_epi32(__a, __b); 1497 } 1498 1499 __m512i test_mm512_and_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) { 1500 // CHECK-LABEL: @test_mm512_and_epi64 1501 // CHECK: and <8 x i64> 1502 return _mm512_and_epi64(__a, __b); 1503 } 1504 1505 __m512i test_mm512_or_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { 1506 // CHECK-LABEL: @test_mm512_or_epi32 1507 // CHECK: or <16 x i32> 1508 return _mm512_or_epi32(__a, __b); 1509 } 1510 1511 __m512i test_mm512_or_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) { 1512 // CHECK-LABEL: @test_mm512_or_epi64 1513 // CHECK: or <8 x i64> 1514 return _mm512_or_epi64(__a, __b); 1515 } 1516 1517 __m512i test_mm512_xor_epi32(__m512i __src,__mmask16 __k, __m512i __a, __m512i __b) { 1518 // CHECK-LABEL: @test_mm512_xor_epi32 1519 // CHECK: xor <16 x i32> 1520 return _mm512_xor_epi32(__a, __b); 1521 } 1522 1523 __m512i test_mm512_xor_epi64(__m512i __src,__mmask8 __k, __m512i __a, __m512i __b) { 1524 // CHECK-LABEL: @test_mm512_xor_epi64 1525 // CHECK: xor <8 x i64> 1526 return _mm512_xor_epi64(__a, __b); 1527 } 1528 1529 __m512i test_mm512_maskz_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B){ 1530 // CHECK-LABEL: @test_mm512_maskz_andnot_epi32 1531 // CHECK: xor <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> 1532 // CHECK: and <16 x i32> %{{.*}}, %{{.*}} 1533 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1534 return _mm512_maskz_andnot_epi32(__k,__A,__B); 1535 } 1536 1537 __m512i test_mm512_mask_andnot_epi32 (__mmask16 __k,__m512i __A, __m512i __B, 1538 __m512i __src) { 1539 // CHECK-LABEL: @test_mm512_mask_andnot_epi32 1540 // CHECK: xor <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> 1541 // CHECK: and <16 x i32> %{{.*}}, %{{.*}} 1542 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 1543 return _mm512_mask_andnot_epi32(__src,__k,__A,__B); 1544 } 1545 1546 __m512i test_mm512_andnot_si512(__m512i __A, __m512i __B) 1547 { 1548 //CHECK-LABEL: @test_mm512_andnot_si512 1549 //CHECK: load {{.*}}%__A.addr.i, align 64 1550 //CHECK: %neg.i = xor{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 1551 //CHECK: load {{.*}}%__B.addr.i, align 64 1552 //CHECK: and <8 x i64> %neg.i,{{.*}} 1553 1554 return _mm512_andnot_si512(__A, __B); 1555 } 1556 1557 __m512i test_mm512_andnot_epi32(__m512i __A, __m512i __B) { 1558 // CHECK-LABEL: @test_mm512_andnot_epi32 1559 // CHECK: xor <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> 1560 // CHECK: and <16 x i32> %{{.*}}, %{{.*}} 1561 return _mm512_andnot_epi32(__A,__B); 1562 } 1563 1564 __m512i test_mm512_maskz_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B) { 1565 // CHECK-LABEL: @test_mm512_maskz_andnot_epi64 1566 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 1567 // CHECK: and <8 x i64> %{{.*}}, %{{.*}} 1568 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 1569 return _mm512_maskz_andnot_epi64(__k,__A,__B); 1570 } 1571 1572 __m512i test_mm512_mask_andnot_epi64 (__mmask8 __k,__m512i __A, __m512i __B, 1573 __m512i __src) { 1574 //CHECK-LABEL: @test_mm512_mask_andnot_epi64 1575 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 1576 // CHECK: and <8 x i64> %{{.*}}, %{{.*}} 1577 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 1578 return _mm512_mask_andnot_epi64(__src,__k,__A,__B); 1579 } 1580 1581 __m512i test_mm512_andnot_epi64(__m512i __A, __m512i __B) { 1582 //CHECK-LABEL: @test_mm512_andnot_epi64 1583 // CHECK: xor <8 x i64> %{{.*}}, <i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1, i64 -1> 1584 // CHECK: and <8 x i64> %{{.*}}, %{{.*}} 1585 return _mm512_andnot_epi64(__A,__B); 1586 } 1587 1588 __m512i test_mm512_maskz_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B) { 1589 //CHECK-LABEL: @test_mm512_maskz_sub_epi32 1590 //CHECK: @llvm.x86.avx512.mask.psub.d.512 1591 return _mm512_maskz_sub_epi32(__k,__A,__B); 1592 } 1593 1594 __m512i test_mm512_mask_sub_epi32 (__mmask16 __k,__m512i __A, __m512i __B, 1595 __m512i __src) { 1596 //CHECK-LABEL: @test_mm512_mask_sub_epi32 1597 //CHECK: @llvm.x86.avx512.mask.psub.d.512 1598 return _mm512_mask_sub_epi32(__src,__k,__A,__B); 1599 } 1600 1601 __m512i test_mm512_sub_epi32(__m512i __A, __m512i __B) { 1602 //CHECK-LABEL: @test_mm512_sub_epi32 1603 //CHECK: sub <16 x i32> 1604 return _mm512_sub_epi32(__A,__B); 1605 } 1606 1607 __m512i test_mm512_maskz_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B) { 1608 //CHECK-LABEL: @test_mm512_maskz_sub_epi64 1609 //CHECK: @llvm.x86.avx512.mask.psub.q.512 1610 return _mm512_maskz_sub_epi64(__k,__A,__B); 1611 } 1612 1613 __m512i test_mm512_mask_sub_epi64 (__mmask8 __k,__m512i __A, __m512i __B, 1614 __m512i __src) { 1615 //CHECK-LABEL: @test_mm512_mask_sub_epi64 1616 //CHECK: @llvm.x86.avx512.mask.psub.q.512 1617 return _mm512_mask_sub_epi64(__src,__k,__A,__B); 1618 } 1619 1620 __m512i test_mm512_sub_epi64(__m512i __A, __m512i __B) { 1621 //CHECK-LABEL: @test_mm512_sub_epi64 1622 //CHECK: sub <8 x i64> 1623 return _mm512_sub_epi64(__A,__B); 1624 } 1625 1626 __m512i test_mm512_maskz_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B) { 1627 //CHECK-LABEL: @test_mm512_maskz_add_epi32 1628 //CHECK: @llvm.x86.avx512.mask.padd.d.512 1629 return _mm512_maskz_add_epi32(__k,__A,__B); 1630 } 1631 1632 __m512i test_mm512_mask_add_epi32 (__mmask16 __k,__m512i __A, __m512i __B, 1633 __m512i __src) { 1634 //CHECK-LABEL: @test_mm512_mask_add_epi32 1635 //CHECK: @llvm.x86.avx512.mask.padd.d.512 1636 return _mm512_mask_add_epi32(__src,__k,__A,__B); 1637 } 1638 1639 __m512i test_mm512_add_epi32(__m512i __A, __m512i __B) { 1640 //CHECK-LABEL: @test_mm512_add_epi32 1641 //CHECK: add <16 x i32> 1642 return _mm512_add_epi32(__A,__B); 1643 } 1644 1645 __m512i test_mm512_maskz_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B) { 1646 //CHECK-LABEL: @test_mm512_maskz_add_epi64 1647 //CHECK: @llvm.x86.avx512.mask.padd.q.512 1648 return _mm512_maskz_add_epi64(__k,__A,__B); 1649 } 1650 1651 __m512i test_mm512_mask_add_epi64 (__mmask8 __k,__m512i __A, __m512i __B, 1652 __m512i __src) { 1653 //CHECK-LABEL: @test_mm512_mask_add_epi64 1654 //CHECK: @llvm.x86.avx512.mask.padd.q.512 1655 return _mm512_mask_add_epi64(__src,__k,__A,__B); 1656 } 1657 1658 __m512i test_mm512_add_epi64(__m512i __A, __m512i __B) { 1659 //CHECK-LABEL: @test_mm512_add_epi64 1660 //CHECK: add <8 x i64> 1661 return _mm512_add_epi64(__A,__B); 1662 } 1663 1664 __m512i test_mm512_maskz_mul_epi32 (__mmask16 __k,__m512i __A, __m512i __B) { 1665 //CHECK-LABEL: @test_mm512_maskz_mul_epi32 1666 //CHECK: @llvm.x86.avx512.mask.pmul.dq.512 1667 return _mm512_maskz_mul_epi32(__k,__A,__B); 1668 } 1669 1670 __m512i test_mm512_mask_mul_epi32 (__mmask16 __k,__m512i __A, __m512i __B, 1671 __m512i __src) { 1672 //CHECK-LABEL: @test_mm512_mask_mul_epi32 1673 //CHECK: @llvm.x86.avx512.mask.pmul.dq.512 1674 return _mm512_mask_mul_epi32(__src,__k,__A,__B); 1675 } 1676 1677 __m512i test_mm512_maskz_mul_epu32 (__mmask16 __k,__m512i __A, __m512i __B) { 1678 //CHECK-LABEL: @test_mm512_maskz_mul_epu32 1679 //CHECK: @llvm.x86.avx512.mask.pmulu.dq.512 1680 return _mm512_maskz_mul_epu32(__k,__A,__B); 1681 } 1682 1683 __m512i test_mm512_mask_mul_epu32 (__mmask16 __k,__m512i __A, __m512i __B, 1684 __m512i __src) { 1685 //CHECK-LABEL: @test_mm512_mask_mul_epu32 1686 //CHECK: @llvm.x86.avx512.mask.pmulu.dq.512 1687 return _mm512_mask_mul_epu32(__src,__k,__A,__B); 1688 } 1689 1690 __m512i test_mm512_maskz_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B) { 1691 //CHECK-LABEL: @test_mm512_maskz_mullo_epi32 1692 //CHECK: @llvm.x86.avx512.mask.pmull.d.512 1693 return _mm512_maskz_mullo_epi32(__k,__A,__B); 1694 } 1695 1696 __m512i test_mm512_mask_mullo_epi32 (__mmask16 __k,__m512i __A, __m512i __B, __m512i __src) { 1697 //CHECK-LABEL: @test_mm512_mask_mullo_epi32 1698 //CHECK: @llvm.x86.avx512.mask.pmull.d.512 1699 return _mm512_mask_mullo_epi32(__src,__k,__A,__B); 1700 } 1701 1702 __m512i test_mm512_mullo_epi32(__m512i __A, __m512i __B) { 1703 //CHECK-LABEL: @test_mm512_mullo_epi32 1704 //CHECK: mul <16 x i32> 1705 return _mm512_mullo_epi32(__A,__B); 1706 } 1707 1708 __m512d test_mm512_add_round_pd(__m512d __A, __m512d __B) { 1709 // CHECK-LABEL: @test_mm512_add_round_pd 1710 // CHECK: @llvm.x86.avx512.mask.add.pd.512 1711 return _mm512_add_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1712 } 1713 __m512d test_mm512_mask_add_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1714 // CHECK-LABEL: @test_mm512_mask_add_round_pd 1715 // CHECK: @llvm.x86.avx512.mask.add.pd.512 1716 return _mm512_mask_add_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1717 } 1718 __m512d test_mm512_maskz_add_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1719 // CHECK-LABEL: @test_mm512_maskz_add_round_pd 1720 // CHECK: @llvm.x86.avx512.mask.add.pd.512 1721 return _mm512_maskz_add_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1722 } 1723 __m512d test_mm512_mask_add_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1724 // CHECK-LABEL: @test_mm512_mask_add_pd 1725 // CHECK: @llvm.x86.avx512.mask.add.pd.512 1726 return _mm512_mask_add_pd(__W,__U,__A,__B); 1727 } 1728 __m512d test_mm512_maskz_add_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1729 // CHECK-LABEL: @test_mm512_maskz_add_pd 1730 // CHECK: @llvm.x86.avx512.mask.add.pd.512 1731 return _mm512_maskz_add_pd(__U,__A,__B); 1732 } 1733 __m512 test_mm512_add_round_ps(__m512 __A, __m512 __B) { 1734 // CHECK-LABEL: @test_mm512_add_round_ps 1735 // CHECK: @llvm.x86.avx512.mask.add.ps.512 1736 return _mm512_add_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1737 } 1738 __m512 test_mm512_mask_add_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1739 // CHECK-LABEL: @test_mm512_mask_add_round_ps 1740 // CHECK: @llvm.x86.avx512.mask.add.ps.512 1741 return _mm512_mask_add_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1742 } 1743 __m512 test_mm512_maskz_add_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1744 // CHECK-LABEL: @test_mm512_maskz_add_round_ps 1745 // CHECK: @llvm.x86.avx512.mask.add.ps.512 1746 return _mm512_maskz_add_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1747 } 1748 __m512 test_mm512_mask_add_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1749 // CHECK-LABEL: @test_mm512_mask_add_ps 1750 // CHECK: @llvm.x86.avx512.mask.add.ps.512 1751 return _mm512_mask_add_ps(__W,__U,__A,__B); 1752 } 1753 __m512 test_mm512_maskz_add_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1754 // CHECK-LABEL: @test_mm512_maskz_add_ps 1755 // CHECK: @llvm.x86.avx512.mask.add.ps.512 1756 return _mm512_maskz_add_ps(__U,__A,__B); 1757 } 1758 __m128 test_mm_add_round_ss(__m128 __A, __m128 __B) { 1759 // CHECK-LABEL: @test_mm_add_round_ss 1760 // CHECK: @llvm.x86.avx512.mask.add.ss.round 1761 return _mm_add_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1762 } 1763 __m128 test_mm_mask_add_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 1764 // CHECK-LABEL: @test_mm_mask_add_round_ss 1765 // CHECK: @llvm.x86.avx512.mask.add.ss.round 1766 return _mm_mask_add_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1767 } 1768 __m128 test_mm_maskz_add_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 1769 // CHECK-LABEL: @test_mm_maskz_add_round_ss 1770 // CHECK: @llvm.x86.avx512.mask.add.ss.round 1771 return _mm_maskz_add_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1772 } 1773 __m128 test_mm_mask_add_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 1774 // CHECK-LABEL: @test_mm_mask_add_ss 1775 // CHECK: @llvm.x86.avx512.mask.add.ss.round 1776 return _mm_mask_add_ss(__W,__U,__A,__B); 1777 } 1778 __m128 test_mm_maskz_add_ss(__mmask8 __U, __m128 __A, __m128 __B) { 1779 // CHECK-LABEL: @test_mm_maskz_add_ss 1780 // CHECK: @llvm.x86.avx512.mask.add.ss.round 1781 return _mm_maskz_add_ss(__U,__A,__B); 1782 } 1783 __m128d test_mm_add_round_sd(__m128d __A, __m128d __B) { 1784 // CHECK-LABEL: @test_mm_add_round_sd 1785 // CHECK: @llvm.x86.avx512.mask.add.sd.round 1786 return _mm_add_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1787 } 1788 __m128d test_mm_mask_add_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 1789 // CHECK-LABEL: @test_mm_mask_add_round_sd 1790 // CHECK: @llvm.x86.avx512.mask.add.sd.round 1791 return _mm_mask_add_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1792 } 1793 __m128d test_mm_maskz_add_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 1794 // CHECK-LABEL: @test_mm_maskz_add_round_sd 1795 // CHECK: @llvm.x86.avx512.mask.add.sd.round 1796 return _mm_maskz_add_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1797 } 1798 __m128d test_mm_mask_add_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 1799 // CHECK-LABEL: @test_mm_mask_add_sd 1800 // CHECK: @llvm.x86.avx512.mask.add.sd.round 1801 return _mm_mask_add_sd(__W,__U,__A,__B); 1802 } 1803 __m128d test_mm_maskz_add_sd(__mmask8 __U, __m128d __A, __m128d __B) { 1804 // CHECK-LABEL: @test_mm_maskz_add_sd 1805 // CHECK: @llvm.x86.avx512.mask.add.sd.round 1806 return _mm_maskz_add_sd(__U,__A,__B); 1807 } 1808 __m512d test_mm512_sub_round_pd(__m512d __A, __m512d __B) { 1809 // CHECK-LABEL: @test_mm512_sub_round_pd 1810 // CHECK: @llvm.x86.avx512.mask.sub.pd.512 1811 return _mm512_sub_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1812 } 1813 __m512d test_mm512_mask_sub_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1814 // CHECK-LABEL: @test_mm512_mask_sub_round_pd 1815 // CHECK: @llvm.x86.avx512.mask.sub.pd.512 1816 return _mm512_mask_sub_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1817 } 1818 __m512d test_mm512_maskz_sub_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1819 // CHECK-LABEL: @test_mm512_maskz_sub_round_pd 1820 // CHECK: @llvm.x86.avx512.mask.sub.pd.512 1821 return _mm512_maskz_sub_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1822 } 1823 __m512d test_mm512_mask_sub_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1824 // CHECK-LABEL: @test_mm512_mask_sub_pd 1825 // CHECK: @llvm.x86.avx512.mask.sub.pd.512 1826 return _mm512_mask_sub_pd(__W,__U,__A,__B); 1827 } 1828 __m512d test_mm512_maskz_sub_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1829 // CHECK-LABEL: @test_mm512_maskz_sub_pd 1830 // CHECK: @llvm.x86.avx512.mask.sub.pd.512 1831 return _mm512_maskz_sub_pd(__U,__A,__B); 1832 } 1833 __m512 test_mm512_sub_round_ps(__m512 __A, __m512 __B) { 1834 // CHECK-LABEL: @test_mm512_sub_round_ps 1835 // CHECK: @llvm.x86.avx512.mask.sub.ps.512 1836 return _mm512_sub_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1837 } 1838 __m512 test_mm512_mask_sub_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1839 // CHECK-LABEL: @test_mm512_mask_sub_round_ps 1840 // CHECK: @llvm.x86.avx512.mask.sub.ps.512 1841 return _mm512_mask_sub_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1842 } 1843 __m512 test_mm512_maskz_sub_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1844 // CHECK-LABEL: @test_mm512_maskz_sub_round_ps 1845 // CHECK: @llvm.x86.avx512.mask.sub.ps.512 1846 return _mm512_maskz_sub_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1847 } 1848 __m512 test_mm512_mask_sub_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1849 // CHECK-LABEL: @test_mm512_mask_sub_ps 1850 // CHECK: @llvm.x86.avx512.mask.sub.ps.512 1851 return _mm512_mask_sub_ps(__W,__U,__A,__B); 1852 } 1853 __m512 test_mm512_maskz_sub_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1854 // CHECK-LABEL: @test_mm512_maskz_sub_ps 1855 // CHECK: @llvm.x86.avx512.mask.sub.ps.512 1856 return _mm512_maskz_sub_ps(__U,__A,__B); 1857 } 1858 __m128 test_mm_sub_round_ss(__m128 __A, __m128 __B) { 1859 // CHECK-LABEL: @test_mm_sub_round_ss 1860 // CHECK: @llvm.x86.avx512.mask.sub.ss.round 1861 return _mm_sub_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1862 } 1863 __m128 test_mm_mask_sub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 1864 // CHECK-LABEL: @test_mm_mask_sub_round_ss 1865 // CHECK: @llvm.x86.avx512.mask.sub.ss.round 1866 return _mm_mask_sub_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1867 } 1868 __m128 test_mm_maskz_sub_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 1869 // CHECK-LABEL: @test_mm_maskz_sub_round_ss 1870 // CHECK: @llvm.x86.avx512.mask.sub.ss.round 1871 return _mm_maskz_sub_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1872 } 1873 __m128 test_mm_mask_sub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 1874 // CHECK-LABEL: @test_mm_mask_sub_ss 1875 // CHECK: @llvm.x86.avx512.mask.sub.ss.round 1876 return _mm_mask_sub_ss(__W,__U,__A,__B); 1877 } 1878 __m128 test_mm_maskz_sub_ss(__mmask8 __U, __m128 __A, __m128 __B) { 1879 // CHECK-LABEL: @test_mm_maskz_sub_ss 1880 // CHECK: @llvm.x86.avx512.mask.sub.ss.round 1881 return _mm_maskz_sub_ss(__U,__A,__B); 1882 } 1883 __m128d test_mm_sub_round_sd(__m128d __A, __m128d __B) { 1884 // CHECK-LABEL: @test_mm_sub_round_sd 1885 // CHECK: @llvm.x86.avx512.mask.sub.sd.round 1886 return _mm_sub_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1887 } 1888 __m128d test_mm_mask_sub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 1889 // CHECK-LABEL: @test_mm_mask_sub_round_sd 1890 // CHECK: @llvm.x86.avx512.mask.sub.sd.round 1891 return _mm_mask_sub_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1892 } 1893 __m128d test_mm_maskz_sub_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 1894 // CHECK-LABEL: @test_mm_maskz_sub_round_sd 1895 // CHECK: @llvm.x86.avx512.mask.sub.sd.round 1896 return _mm_maskz_sub_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1897 } 1898 __m128d test_mm_mask_sub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 1899 // CHECK-LABEL: @test_mm_mask_sub_sd 1900 // CHECK: @llvm.x86.avx512.mask.sub.sd.round 1901 return _mm_mask_sub_sd(__W,__U,__A,__B); 1902 } 1903 __m128d test_mm_maskz_sub_sd(__mmask8 __U, __m128d __A, __m128d __B) { 1904 // CHECK-LABEL: @test_mm_maskz_sub_sd 1905 // CHECK: @llvm.x86.avx512.mask.sub.sd.round 1906 return _mm_maskz_sub_sd(__U,__A,__B); 1907 } 1908 __m512d test_mm512_mul_round_pd(__m512d __A, __m512d __B) { 1909 // CHECK-LABEL: @test_mm512_mul_round_pd 1910 // CHECK: @llvm.x86.avx512.mask.mul.pd.512 1911 return _mm512_mul_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1912 } 1913 __m512d test_mm512_mask_mul_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1914 // CHECK-LABEL: @test_mm512_mask_mul_round_pd 1915 // CHECK: @llvm.x86.avx512.mask.mul.pd.512 1916 return _mm512_mask_mul_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1917 } 1918 __m512d test_mm512_maskz_mul_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1919 // CHECK-LABEL: @test_mm512_maskz_mul_round_pd 1920 // CHECK: @llvm.x86.avx512.mask.mul.pd.512 1921 return _mm512_maskz_mul_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1922 } 1923 __m512d test_mm512_mask_mul_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 1924 // CHECK-LABEL: @test_mm512_mask_mul_pd 1925 // CHECK: @llvm.x86.avx512.mask.mul.pd.512 1926 return _mm512_mask_mul_pd(__W,__U,__A,__B); 1927 } 1928 __m512d test_mm512_maskz_mul_pd(__mmask8 __U, __m512d __A, __m512d __B) { 1929 // CHECK-LABEL: @test_mm512_maskz_mul_pd 1930 // CHECK: @llvm.x86.avx512.mask.mul.pd.512 1931 return _mm512_maskz_mul_pd(__U,__A,__B); 1932 } 1933 __m512 test_mm512_mul_round_ps(__m512 __A, __m512 __B) { 1934 // CHECK-LABEL: @test_mm512_mul_round_ps 1935 // CHECK: @llvm.x86.avx512.mask.mul.ps.512 1936 return _mm512_mul_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1937 } 1938 __m512 test_mm512_mask_mul_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1939 // CHECK-LABEL: @test_mm512_mask_mul_round_ps 1940 // CHECK: @llvm.x86.avx512.mask.mul.ps.512 1941 return _mm512_mask_mul_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1942 } 1943 __m512 test_mm512_maskz_mul_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1944 // CHECK-LABEL: @test_mm512_maskz_mul_round_ps 1945 // CHECK: @llvm.x86.avx512.mask.mul.ps.512 1946 return _mm512_maskz_mul_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1947 } 1948 __m512 test_mm512_mask_mul_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 1949 // CHECK-LABEL: @test_mm512_mask_mul_ps 1950 // CHECK: @llvm.x86.avx512.mask.mul.ps.512 1951 return _mm512_mask_mul_ps(__W,__U,__A,__B); 1952 } 1953 __m512 test_mm512_maskz_mul_ps(__mmask16 __U, __m512 __A, __m512 __B) { 1954 // CHECK-LABEL: @test_mm512_maskz_mul_ps 1955 // CHECK: @llvm.x86.avx512.mask.mul.ps.512 1956 return _mm512_maskz_mul_ps(__U,__A,__B); 1957 } 1958 __m128 test_mm_mul_round_ss(__m128 __A, __m128 __B) { 1959 // CHECK-LABEL: @test_mm_mul_round_ss 1960 // CHECK: @llvm.x86.avx512.mask.mul.ss.round 1961 return _mm_mul_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1962 } 1963 __m128 test_mm_mask_mul_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 1964 // CHECK-LABEL: @test_mm_mask_mul_round_ss 1965 // CHECK: @llvm.x86.avx512.mask.mul.ss.round 1966 return _mm_mask_mul_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1967 } 1968 __m128 test_mm_maskz_mul_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 1969 // CHECK-LABEL: @test_mm_maskz_mul_round_ss 1970 // CHECK: @llvm.x86.avx512.mask.mul.ss.round 1971 return _mm_maskz_mul_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1972 } 1973 __m128 test_mm_mask_mul_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 1974 // CHECK-LABEL: @test_mm_mask_mul_ss 1975 // CHECK: @llvm.x86.avx512.mask.mul.ss.round 1976 return _mm_mask_mul_ss(__W,__U,__A,__B); 1977 } 1978 __m128 test_mm_maskz_mul_ss(__mmask8 __U, __m128 __A, __m128 __B) { 1979 // CHECK-LABEL: @test_mm_maskz_mul_ss 1980 // CHECK: @llvm.x86.avx512.mask.mul.ss.round 1981 return _mm_maskz_mul_ss(__U,__A,__B); 1982 } 1983 __m128d test_mm_mul_round_sd(__m128d __A, __m128d __B) { 1984 // CHECK-LABEL: @test_mm_mul_round_sd 1985 // CHECK: @llvm.x86.avx512.mask.mul.sd.round 1986 return _mm_mul_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 1987 } 1988 __m128d test_mm_mask_mul_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 1989 // CHECK-LABEL: @test_mm_mask_mul_round_sd 1990 // CHECK: @llvm.x86.avx512.mask.mul.sd.round 1991 return _mm_mask_mul_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1992 } 1993 __m128d test_mm_maskz_mul_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 1994 // CHECK-LABEL: @test_mm_maskz_mul_round_sd 1995 // CHECK: @llvm.x86.avx512.mask.mul.sd.round 1996 return _mm_maskz_mul_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 1997 } 1998 __m128d test_mm_mask_mul_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 1999 // CHECK-LABEL: @test_mm_mask_mul_sd 2000 // CHECK: @llvm.x86.avx512.mask.mul.sd.round 2001 return _mm_mask_mul_sd(__W,__U,__A,__B); 2002 } 2003 __m128d test_mm_maskz_mul_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2004 // CHECK-LABEL: @test_mm_maskz_mul_sd 2005 // CHECK: @llvm.x86.avx512.mask.mul.sd.round 2006 return _mm_maskz_mul_sd(__U,__A,__B); 2007 } 2008 __m512d test_mm512_div_round_pd(__m512d __A, __m512d __B) { 2009 // CHECK-LABEL: @test_mm512_div_round_pd 2010 // CHECK: @llvm.x86.avx512.mask.div.pd.512 2011 return _mm512_div_round_pd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 2012 } 2013 __m512d test_mm512_mask_div_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 2014 // CHECK-LABEL: @test_mm512_mask_div_round_pd 2015 // CHECK: @llvm.x86.avx512.mask.div.pd.512 2016 return _mm512_mask_div_round_pd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2017 } 2018 __m512d test_mm512_maskz_div_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { 2019 // CHECK-LABEL: @test_mm512_maskz_div_round_pd 2020 // CHECK: @llvm.x86.avx512.mask.div.pd.512 2021 return _mm512_maskz_div_round_pd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2022 } 2023 __m512d test_mm512_div_pd(__m512d __a, __m512d __b) { 2024 // CHECK-LABLE: @test_mm512_div_pd 2025 // CHECK: fdiv <8 x double> 2026 return _mm512_div_pd(__a,__b); 2027 } 2028 __m512d test_mm512_mask_div_pd(__m512d __w, __mmask8 __u, __m512d __a, __m512d __b) { 2029 // CHECK-LABLE: @test_mm512_mask_div_pd 2030 // CHECK: @llvm.x86.avx512.mask.div.pd.512 2031 return _mm512_mask_div_pd(__w,__u,__a,__b); 2032 } 2033 __m512d test_mm512_maskz_div_pd(__mmask8 __U, __m512d __A, __m512d __B) { 2034 // CHECK-LABEL: @test_mm512_maskz_div_pd 2035 // CHECK: @llvm.x86.avx512.mask.div.pd.512 2036 return _mm512_maskz_div_pd(__U,__A,__B); 2037 } 2038 __m512 test_mm512_div_round_ps(__m512 __A, __m512 __B) { 2039 // CHECK-LABEL: @test_mm512_div_round_ps 2040 // CHECK: @llvm.x86.avx512.mask.div.ps.512 2041 return _mm512_div_round_ps(__A,__B,_MM_FROUND_TO_NEAREST_INT); 2042 } 2043 __m512 test_mm512_mask_div_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 2044 // CHECK-LABEL: @test_mm512_mask_div_round_ps 2045 // CHECK: @llvm.x86.avx512.mask.div.ps.512 2046 return _mm512_mask_div_round_ps(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2047 } 2048 __m512 test_mm512_maskz_div_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 2049 // CHECK-LABEL: @test_mm512_maskz_div_round_ps 2050 // CHECK: @llvm.x86.avx512.mask.div.ps.512 2051 return _mm512_maskz_div_round_ps(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2052 } 2053 __m512 test_mm512_div_ps(__m512 __A, __m512 __B) { 2054 // CHECK-LABEL: @test_mm512_div_ps 2055 // CHECK: fdiv <16 x float> 2056 return _mm512_div_ps(__A,__B); 2057 } 2058 __m512 test_mm512_mask_div_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 2059 // CHECK-LABEL: @test_mm512_mask_div_ps 2060 // CHECK: @llvm.x86.avx512.mask.div.ps.512 2061 return _mm512_mask_div_ps(__W,__U,__A,__B); 2062 } 2063 __m512 test_mm512_maskz_div_ps(__mmask16 __U, __m512 __A, __m512 __B) { 2064 // CHECK-LABEL: @test_mm512_maskz_div_ps 2065 // CHECK: @llvm.x86.avx512.mask.div.ps.512 2066 return _mm512_maskz_div_ps(__U,__A,__B); 2067 } 2068 __m128 test_mm_div_round_ss(__m128 __A, __m128 __B) { 2069 // CHECK-LABEL: @test_mm_div_round_ss 2070 // CHECK: @llvm.x86.avx512.mask.div.ss.round 2071 return _mm_div_round_ss(__A,__B,_MM_FROUND_TO_NEAREST_INT); 2072 } 2073 __m128 test_mm_mask_div_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 2074 // CHECK-LABEL: @test_mm_mask_div_round_ss 2075 // CHECK: @llvm.x86.avx512.mask.div.ss.round 2076 return _mm_mask_div_round_ss(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2077 } 2078 __m128 test_mm_maskz_div_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 2079 // CHECK-LABEL: @test_mm_maskz_div_round_ss 2080 // CHECK: @llvm.x86.avx512.mask.div.ss.round 2081 return _mm_maskz_div_round_ss(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2082 } 2083 __m128 test_mm_mask_div_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 2084 // CHECK-LABEL: @test_mm_mask_div_ss 2085 // CHECK: @llvm.x86.avx512.mask.div.ss.round 2086 return _mm_mask_div_ss(__W,__U,__A,__B); 2087 } 2088 __m128 test_mm_maskz_div_ss(__mmask8 __U, __m128 __A, __m128 __B) { 2089 // CHECK-LABEL: @test_mm_maskz_div_ss 2090 // CHECK: @llvm.x86.avx512.mask.div.ss.round 2091 return _mm_maskz_div_ss(__U,__A,__B); 2092 } 2093 __m128d test_mm_div_round_sd(__m128d __A, __m128d __B) { 2094 // CHECK-LABEL: @test_mm_div_round_sd 2095 // CHECK: @llvm.x86.avx512.mask.div.sd.round 2096 return _mm_div_round_sd(__A,__B,_MM_FROUND_TO_NEAREST_INT); 2097 } 2098 __m128d test_mm_mask_div_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 2099 // CHECK-LABEL: @test_mm_mask_div_round_sd 2100 // CHECK: @llvm.x86.avx512.mask.div.sd.round 2101 return _mm_mask_div_round_sd(__W,__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2102 } 2103 __m128d test_mm_maskz_div_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2104 // CHECK-LABEL: @test_mm_maskz_div_round_sd 2105 // CHECK: @llvm.x86.avx512.mask.div.sd.round 2106 return _mm_maskz_div_round_sd(__U,__A,__B,_MM_FROUND_TO_NEAREST_INT); 2107 } 2108 __m128d test_mm_mask_div_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 2109 // CHECK-LABEL: @test_mm_mask_div_sd 2110 // CHECK: @llvm.x86.avx512.mask.div.sd.round 2111 return _mm_mask_div_sd(__W,__U,__A,__B); 2112 } 2113 __m128d test_mm_maskz_div_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2114 // CHECK-LABEL: @test_mm_maskz_div_sd 2115 // CHECK: @llvm.x86.avx512.mask.div.sd.round 2116 return _mm_maskz_div_sd(__U,__A,__B); 2117 } 2118 __m128 test_mm_max_round_ss(__m128 __A, __m128 __B) { 2119 // CHECK-LABEL: @test_mm_max_round_ss 2120 // CHECK: @llvm.x86.avx512.mask.max.ss.round 2121 return _mm_max_round_ss(__A,__B,0x08); 2122 } 2123 __m128 test_mm_mask_max_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 2124 // CHECK-LABEL: @test_mm_mask_max_round_ss 2125 // CHECK: @llvm.x86.avx512.mask.max.ss.round 2126 return _mm_mask_max_round_ss(__W,__U,__A,__B,0x08); 2127 } 2128 __m128 test_mm_maskz_max_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 2129 // CHECK-LABEL: @test_mm_maskz_max_round_ss 2130 // CHECK: @llvm.x86.avx512.mask.max.ss.round 2131 return _mm_maskz_max_round_ss(__U,__A,__B,0x08); 2132 } 2133 __m128 test_mm_mask_max_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 2134 // CHECK-LABEL: @test_mm_mask_max_ss 2135 // CHECK: @llvm.x86.avx512.mask.max.ss.round 2136 return _mm_mask_max_ss(__W,__U,__A,__B); 2137 } 2138 __m128 test_mm_maskz_max_ss(__mmask8 __U, __m128 __A, __m128 __B) { 2139 // CHECK-LABEL: @test_mm_maskz_max_ss 2140 // CHECK: @llvm.x86.avx512.mask.max.ss.round 2141 return _mm_maskz_max_ss(__U,__A,__B); 2142 } 2143 __m128d test_mm_max_round_sd(__m128d __A, __m128d __B) { 2144 // CHECK-LABEL: @test_mm_max_round_sd 2145 // CHECK: @llvm.x86.avx512.mask.max.sd.round 2146 return _mm_max_round_sd(__A,__B,0x08); 2147 } 2148 __m128d test_mm_mask_max_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 2149 // CHECK-LABEL: @test_mm_mask_max_round_sd 2150 // CHECK: @llvm.x86.avx512.mask.max.sd.round 2151 return _mm_mask_max_round_sd(__W,__U,__A,__B,0x08); 2152 } 2153 __m128d test_mm_maskz_max_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2154 // CHECK-LABEL: @test_mm_maskz_max_round_sd 2155 // CHECK: @llvm.x86.avx512.mask.max.sd.round 2156 return _mm_maskz_max_round_sd(__U,__A,__B,0x08); 2157 } 2158 __m128d test_mm_mask_max_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 2159 // CHECK-LABEL: @test_mm_mask_max_sd 2160 // CHECK: @llvm.x86.avx512.mask.max.sd.round 2161 return _mm_mask_max_sd(__W,__U,__A,__B); 2162 } 2163 __m128d test_mm_maskz_max_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2164 // CHECK-LABEL: @test_mm_maskz_max_sd 2165 // CHECK: @llvm.x86.avx512.mask.max.sd.round 2166 return _mm_maskz_max_sd(__U,__A,__B); 2167 } 2168 __m128 test_mm_min_round_ss(__m128 __A, __m128 __B) { 2169 // CHECK-LABEL: @test_mm_min_round_ss 2170 // CHECK: @llvm.x86.avx512.mask.min.ss.round 2171 return _mm_min_round_ss(__A,__B,0x08); 2172 } 2173 __m128 test_mm_mask_min_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 2174 // CHECK-LABEL: @test_mm_mask_min_round_ss 2175 // CHECK: @llvm.x86.avx512.mask.min.ss.round 2176 return _mm_mask_min_round_ss(__W,__U,__A,__B,0x08); 2177 } 2178 __m128 test_mm_maskz_min_round_ss(__mmask8 __U, __m128 __A, __m128 __B) { 2179 // CHECK-LABEL: @test_mm_maskz_min_round_ss 2180 // CHECK: @llvm.x86.avx512.mask.min.ss.round 2181 return _mm_maskz_min_round_ss(__U,__A,__B,0x08); 2182 } 2183 __m128 test_mm_mask_min_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) { 2184 // CHECK-LABEL: @test_mm_mask_min_ss 2185 // CHECK: @llvm.x86.avx512.mask.min.ss.round 2186 return _mm_mask_min_ss(__W,__U,__A,__B); 2187 } 2188 __m128 test_mm_maskz_min_ss(__mmask8 __U, __m128 __A, __m128 __B) { 2189 // CHECK-LABEL: @test_mm_maskz_min_ss 2190 // CHECK: @llvm.x86.avx512.mask.min.ss.round 2191 return _mm_maskz_min_ss(__U,__A,__B); 2192 } 2193 __m128d test_mm_min_round_sd(__m128d __A, __m128d __B) { 2194 // CHECK-LABEL: @test_mm_min_round_sd 2195 // CHECK: @llvm.x86.avx512.mask.min.sd.round 2196 return _mm_min_round_sd(__A,__B,0x08); 2197 } 2198 __m128d test_mm_mask_min_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 2199 // CHECK-LABEL: @test_mm_mask_min_round_sd 2200 // CHECK: @llvm.x86.avx512.mask.min.sd.round 2201 return _mm_mask_min_round_sd(__W,__U,__A,__B,0x08); 2202 } 2203 __m128d test_mm_maskz_min_round_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2204 // CHECK-LABEL: @test_mm_maskz_min_round_sd 2205 // CHECK: @llvm.x86.avx512.mask.min.sd.round 2206 return _mm_maskz_min_round_sd(__U,__A,__B,0x08); 2207 } 2208 __m128d test_mm_mask_min_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) { 2209 // CHECK-LABEL: @test_mm_mask_min_sd 2210 // CHECK: @llvm.x86.avx512.mask.min.sd.round 2211 return _mm_mask_min_sd(__W,__U,__A,__B); 2212 } 2213 __m128d test_mm_maskz_min_sd(__mmask8 __U, __m128d __A, __m128d __B) { 2214 // CHECK-LABEL: @test_mm_maskz_min_sd 2215 // CHECK: @llvm.x86.avx512.mask.min.sd.round 2216 return _mm_maskz_min_sd(__U,__A,__B); 2217 } 2218 2219 __m512 test_mm512_undefined() { 2220 // CHECK-LABEL: @test_mm512_undefined 2221 // CHECK: ret <16 x float> undef 2222 return _mm512_undefined(); 2223 } 2224 2225 __m512 test_mm512_undefined_ps() { 2226 // CHECK-LABEL: @test_mm512_undefined_ps 2227 // CHECK: ret <16 x float> undef 2228 return _mm512_undefined_ps(); 2229 } 2230 2231 __m512d test_mm512_undefined_pd() { 2232 // CHECK-LABEL: @test_mm512_undefined_pd 2233 // CHECK: ret <8 x double> undef 2234 return _mm512_undefined_pd(); 2235 } 2236 2237 __m512i test_mm512_undefined_epi32() { 2238 // CHECK-LABEL: @test_mm512_undefined_epi32 2239 // CHECK: ret <8 x i64> undef 2240 return _mm512_undefined_epi32(); 2241 } 2242 2243 __m512i test_mm512_cvtepi8_epi32(__m128i __A) { 2244 // CHECK-LABEL: @test_mm512_cvtepi8_epi32 2245 // CHECK: @llvm.x86.avx512.mask.pmovsxb.d.512 2246 return _mm512_cvtepi8_epi32(__A); 2247 } 2248 2249 __m512i test_mm512_mask_cvtepi8_epi32(__m512i __W, __mmask16 __U, __m128i __A) { 2250 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi32 2251 // CHECK: @llvm.x86.avx512.mask.pmovsxb.d.512 2252 return _mm512_mask_cvtepi8_epi32(__W, __U, __A); 2253 } 2254 2255 __m512i test_mm512_maskz_cvtepi8_epi32(__mmask16 __U, __m128i __A) { 2256 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi32 2257 // CHECK: @llvm.x86.avx512.mask.pmovsxb.d.512 2258 return _mm512_maskz_cvtepi8_epi32(__U, __A); 2259 } 2260 2261 __m512i test_mm512_cvtepi8_epi64(__m128i __A) { 2262 // CHECK-LABEL: @test_mm512_cvtepi8_epi64 2263 // CHECK: @llvm.x86.avx512.mask.pmovsxb.q.512 2264 return _mm512_cvtepi8_epi64(__A); 2265 } 2266 2267 __m512i test_mm512_mask_cvtepi8_epi64(__m512i __W, __mmask8 __U, __m128i __A) { 2268 // CHECK-LABEL: @test_mm512_mask_cvtepi8_epi64 2269 // CHECK: @llvm.x86.avx512.mask.pmovsxb.q.512 2270 return _mm512_mask_cvtepi8_epi64(__W, __U, __A); 2271 } 2272 2273 __m512i test_mm512_maskz_cvtepi8_epi64(__mmask8 __U, __m128i __A) { 2274 // CHECK-LABEL: @test_mm512_maskz_cvtepi8_epi64 2275 // CHECK: @llvm.x86.avx512.mask.pmovsxb.q.512 2276 return _mm512_maskz_cvtepi8_epi64(__U, __A); 2277 } 2278 2279 __m512i test_mm512_cvtepi32_epi64(__m256i __X) { 2280 // CHECK-LABEL: @test_mm512_cvtepi32_epi64 2281 // CHECK: @llvm.x86.avx512.mask.pmovsxd.q.512 2282 return _mm512_cvtepi32_epi64(__X); 2283 } 2284 2285 __m512i test_mm512_mask_cvtepi32_epi64(__m512i __W, __mmask8 __U, __m256i __X) { 2286 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi64 2287 // CHECK: @llvm.x86.avx512.mask.pmovsxd.q.512 2288 return _mm512_mask_cvtepi32_epi64(__W, __U, __X); 2289 } 2290 2291 __m512i test_mm512_maskz_cvtepi32_epi64(__mmask8 __U, __m256i __X) { 2292 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi64 2293 // CHECK: @llvm.x86.avx512.mask.pmovsxd.q.512 2294 return _mm512_maskz_cvtepi32_epi64(__U, __X); 2295 } 2296 2297 __m512i test_mm512_cvtepi16_epi32(__m256i __A) { 2298 // CHECK-LABEL: @test_mm512_cvtepi16_epi32 2299 // CHECK: @llvm.x86.avx512.mask.pmovsxw.d.512 2300 return _mm512_cvtepi16_epi32(__A); 2301 } 2302 2303 __m512i test_mm512_mask_cvtepi16_epi32(__m512i __W, __mmask16 __U, __m256i __A) { 2304 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi32 2305 // CHECK: @llvm.x86.avx512.mask.pmovsxw.d.512 2306 return _mm512_mask_cvtepi16_epi32(__W, __U, __A); 2307 } 2308 2309 __m512i test_mm512_maskz_cvtepi16_epi32(__mmask16 __U, __m256i __A) { 2310 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi32 2311 // CHECK: @llvm.x86.avx512.mask.pmovsxw.d.512 2312 return _mm512_maskz_cvtepi16_epi32(__U, __A); 2313 } 2314 2315 __m512i test_mm512_cvtepi16_epi64(__m128i __A) { 2316 // CHECK-LABEL: @test_mm512_cvtepi16_epi64 2317 // CHECK: @llvm.x86.avx512.mask.pmovsxw.q.512 2318 return _mm512_cvtepi16_epi64(__A); 2319 } 2320 2321 __m512i test_mm512_mask_cvtepi16_epi64(__m512i __W, __mmask8 __U, __m128i __A) { 2322 // CHECK-LABEL: @test_mm512_mask_cvtepi16_epi64 2323 // CHECK: @llvm.x86.avx512.mask.pmovsxw.q.512 2324 return _mm512_mask_cvtepi16_epi64(__W, __U, __A); 2325 } 2326 2327 __m512i test_mm512_maskz_cvtepi16_epi64(__mmask8 __U, __m128i __A) { 2328 // CHECK-LABEL: @test_mm512_maskz_cvtepi16_epi64 2329 // CHECK: @llvm.x86.avx512.mask.pmovsxw.q.512 2330 return _mm512_maskz_cvtepi16_epi64(__U, __A); 2331 } 2332 2333 __m512i test_mm512_cvtepu8_epi32(__m128i __A) { 2334 // CHECK-LABEL: @test_mm512_cvtepu8_epi32 2335 // CHECK: @llvm.x86.avx512.mask.pmovzxb.d.512 2336 return _mm512_cvtepu8_epi32(__A); 2337 } 2338 2339 __m512i test_mm512_mask_cvtepu8_epi32(__m512i __W, __mmask16 __U, __m128i __A) { 2340 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi32 2341 // CHECK: @llvm.x86.avx512.mask.pmovzxb.d.512 2342 return _mm512_mask_cvtepu8_epi32(__W, __U, __A); 2343 } 2344 2345 __m512i test_mm512_maskz_cvtepu8_epi32(__mmask16 __U, __m128i __A) { 2346 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi32 2347 // CHECK: @llvm.x86.avx512.mask.pmovzxb.d.512 2348 return _mm512_maskz_cvtepu8_epi32(__U, __A); 2349 } 2350 2351 __m512i test_mm512_cvtepu8_epi64(__m128i __A) { 2352 // CHECK-LABEL: @test_mm512_cvtepu8_epi64 2353 // CHECK: @llvm.x86.avx512.mask.pmovzxb.q.512 2354 return _mm512_cvtepu8_epi64(__A); 2355 } 2356 2357 __m512i test_mm512_mask_cvtepu8_epi64(__m512i __W, __mmask8 __U, __m128i __A) { 2358 // CHECK-LABEL: @test_mm512_mask_cvtepu8_epi64 2359 // CHECK: @llvm.x86.avx512.mask.pmovzxb.q.512 2360 return _mm512_mask_cvtepu8_epi64(__W, __U, __A); 2361 } 2362 2363 __m512i test_mm512_maskz_cvtepu8_epi64(__mmask8 __U, __m128i __A) { 2364 // CHECK-LABEL: @test_mm512_maskz_cvtepu8_epi64 2365 // CHECK: @llvm.x86.avx512.mask.pmovzxb.q.512 2366 return _mm512_maskz_cvtepu8_epi64(__U, __A); 2367 } 2368 2369 __m512i test_mm512_cvtepu32_epi64(__m256i __X) { 2370 // CHECK-LABEL: @test_mm512_cvtepu32_epi64 2371 // CHECK: @llvm.x86.avx512.mask.pmovzxd.q.512 2372 return _mm512_cvtepu32_epi64(__X); 2373 } 2374 2375 __m512i test_mm512_mask_cvtepu32_epi64(__m512i __W, __mmask8 __U, __m256i __X) { 2376 // CHECK-LABEL: @test_mm512_mask_cvtepu32_epi64 2377 // CHECK: @llvm.x86.avx512.mask.pmovzxd.q.512 2378 return _mm512_mask_cvtepu32_epi64(__W, __U, __X); 2379 } 2380 2381 __m512i test_mm512_maskz_cvtepu32_epi64(__mmask8 __U, __m256i __X) { 2382 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_epi64 2383 // CHECK: @llvm.x86.avx512.mask.pmovzxd.q.512 2384 return _mm512_maskz_cvtepu32_epi64(__U, __X); 2385 } 2386 2387 __m512i test_mm512_cvtepu16_epi32(__m256i __A) { 2388 // CHECK-LABEL: @test_mm512_cvtepu16_epi32 2389 // CHECK: @llvm.x86.avx512.mask.pmovzxw.d.512 2390 return _mm512_cvtepu16_epi32(__A); 2391 } 2392 2393 __m512i test_mm512_mask_cvtepu16_epi32(__m512i __W, __mmask16 __U, __m256i __A) { 2394 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi32 2395 // CHECK: @llvm.x86.avx512.mask.pmovzxw.d.512 2396 return _mm512_mask_cvtepu16_epi32(__W, __U, __A); 2397 } 2398 2399 __m512i test_mm512_maskz_cvtepu16_epi32(__mmask16 __U, __m256i __A) { 2400 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi32 2401 // CHECK: @llvm.x86.avx512.mask.pmovzxw.d.512 2402 return _mm512_maskz_cvtepu16_epi32(__U, __A); 2403 } 2404 2405 __m512i test_mm512_cvtepu16_epi64(__m128i __A) { 2406 // CHECK-LABEL: @test_mm512_cvtepu16_epi64 2407 // CHECK: @llvm.x86.avx512.mask.pmovzxw.q.512 2408 return _mm512_cvtepu16_epi64(__A); 2409 } 2410 2411 __m512i test_mm512_mask_cvtepu16_epi64(__m512i __W, __mmask8 __U, __m128i __A) { 2412 // CHECK-LABEL: @test_mm512_mask_cvtepu16_epi64 2413 // CHECK: @llvm.x86.avx512.mask.pmovzxw.q.512 2414 return _mm512_mask_cvtepu16_epi64(__W, __U, __A); 2415 } 2416 2417 __m512i test_mm512_maskz_cvtepu16_epi64(__mmask8 __U, __m128i __A) { 2418 // CHECK-LABEL: @test_mm512_maskz_cvtepu16_epi64 2419 // CHECK: @llvm.x86.avx512.mask.pmovzxw.q.512 2420 return _mm512_maskz_cvtepu16_epi64(__U, __A); 2421 } 2422 2423 2424 __m512i test_mm512_rol_epi32(__m512i __A) { 2425 // CHECK-LABEL: @test_mm512_rol_epi32 2426 // CHECK: @llvm.x86.avx512.mask.prol.d.512 2427 return _mm512_rol_epi32(__A, 5); 2428 } 2429 2430 __m512i test_mm512_mask_rol_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 2431 // CHECK-LABEL: @test_mm512_mask_rol_epi32 2432 // CHECK: @llvm.x86.avx512.mask.prol.d.512 2433 return _mm512_mask_rol_epi32(__W, __U, __A, 5); 2434 } 2435 2436 __m512i test_mm512_maskz_rol_epi32(__mmask16 __U, __m512i __A) { 2437 // CHECK-LABEL: @test_mm512_maskz_rol_epi32 2438 // CHECK: @llvm.x86.avx512.mask.prol.d.512 2439 return _mm512_maskz_rol_epi32(__U, __A, 5); 2440 } 2441 2442 __m512i test_mm512_rol_epi64(__m512i __A) { 2443 // CHECK-LABEL: @test_mm512_rol_epi64 2444 // CHECK: @llvm.x86.avx512.mask.prol.q.512 2445 return _mm512_rol_epi64(__A, 5); 2446 } 2447 2448 __m512i test_mm512_mask_rol_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 2449 // CHECK-LABEL: @test_mm512_mask_rol_epi64 2450 // CHECK: @llvm.x86.avx512.mask.prol.q.512 2451 return _mm512_mask_rol_epi64(__W, __U, __A, 5); 2452 } 2453 2454 __m512i test_mm512_maskz_rol_epi64(__mmask8 __U, __m512i __A) { 2455 // CHECK-LABEL: @test_mm512_maskz_rol_epi64 2456 // CHECK: @llvm.x86.avx512.mask.prol.q.512 2457 return _mm512_maskz_rol_epi64(__U, __A, 5); 2458 } 2459 2460 __m512i test_mm512_rolv_epi32(__m512i __A, __m512i __B) { 2461 // CHECK-LABEL: @test_mm512_rolv_epi32 2462 // CHECK: @llvm.x86.avx512.mask.prolv.d.512 2463 return _mm512_rolv_epi32(__A, __B); 2464 } 2465 2466 __m512i test_mm512_mask_rolv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { 2467 // CHECK-LABEL: @test_mm512_mask_rolv_epi32 2468 // CHECK: @llvm.x86.avx512.mask.prolv.d.512 2469 return _mm512_mask_rolv_epi32(__W, __U, __A, __B); 2470 } 2471 2472 __m512i test_mm512_maskz_rolv_epi32(__mmask16 __U, __m512i __A, __m512i __B) { 2473 // CHECK-LABEL: @test_mm512_maskz_rolv_epi32 2474 // CHECK: @llvm.x86.avx512.mask.prolv.d.512 2475 return _mm512_maskz_rolv_epi32(__U, __A, __B); 2476 } 2477 2478 __m512i test_mm512_rolv_epi64(__m512i __A, __m512i __B) { 2479 // CHECK-LABEL: @test_mm512_rolv_epi64 2480 // CHECK: @llvm.x86.avx512.mask.prolv.q.512 2481 return _mm512_rolv_epi64(__A, __B); 2482 } 2483 2484 __m512i test_mm512_mask_rolv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) { 2485 // CHECK-LABEL: @test_mm512_mask_rolv_epi64 2486 // CHECK: @llvm.x86.avx512.mask.prolv.q.512 2487 return _mm512_mask_rolv_epi64(__W, __U, __A, __B); 2488 } 2489 2490 __m512i test_mm512_maskz_rolv_epi64(__mmask8 __U, __m512i __A, __m512i __B) { 2491 // CHECK-LABEL: @test_mm512_maskz_rolv_epi64 2492 // CHECK: @llvm.x86.avx512.mask.prolv.q.512 2493 return _mm512_maskz_rolv_epi64(__U, __A, __B); 2494 } 2495 2496 __m512i test_mm512_ror_epi32(__m512i __A) { 2497 // CHECK-LABEL: @test_mm512_ror_epi32 2498 // CHECK: @llvm.x86.avx512.mask.pror.d.512 2499 return _mm512_ror_epi32(__A, 5); 2500 } 2501 2502 __m512i test_mm512_mask_ror_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 2503 // CHECK-LABEL: @test_mm512_mask_ror_epi32 2504 // CHECK: @llvm.x86.avx512.mask.pror.d.512 2505 return _mm512_mask_ror_epi32(__W, __U, __A, 5); 2506 } 2507 2508 __m512i test_mm512_maskz_ror_epi32(__mmask16 __U, __m512i __A) { 2509 // CHECK-LABEL: @test_mm512_maskz_ror_epi32 2510 // CHECK: @llvm.x86.avx512.mask.pror.d.512 2511 return _mm512_maskz_ror_epi32(__U, __A, 5); 2512 } 2513 2514 __m512i test_mm512_ror_epi64(__m512i __A) { 2515 // CHECK-LABEL: @test_mm512_ror_epi64 2516 // CHECK: @llvm.x86.avx512.mask.pror.q.512 2517 return _mm512_ror_epi64(__A, 5); 2518 } 2519 2520 __m512i test_mm512_mask_ror_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 2521 // CHECK-LABEL: @test_mm512_mask_ror_epi64 2522 // CHECK: @llvm.x86.avx512.mask.pror.q.512 2523 return _mm512_mask_ror_epi64(__W, __U, __A, 5); 2524 } 2525 2526 __m512i test_mm512_maskz_ror_epi64(__mmask8 __U, __m512i __A) { 2527 // CHECK-LABEL: @test_mm512_maskz_ror_epi64 2528 // CHECK: @llvm.x86.avx512.mask.pror.q.512 2529 return _mm512_maskz_ror_epi64(__U, __A, 5); 2530 } 2531 2532 2533 __m512i test_mm512_rorv_epi32(__m512i __A, __m512i __B) { 2534 // CHECK-LABEL: @test_mm512_rorv_epi32 2535 // CHECK: @llvm.x86.avx512.mask.prorv.d.512 2536 return _mm512_rorv_epi32(__A, __B); 2537 } 2538 2539 __m512i test_mm512_mask_rorv_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { 2540 // CHECK-LABEL: @test_mm512_mask_rorv_epi32 2541 // CHECK: @llvm.x86.avx512.mask.prorv.d.512 2542 return _mm512_mask_rorv_epi32(__W, __U, __A, __B); 2543 } 2544 2545 __m512i test_mm512_maskz_rorv_epi32(__mmask16 __U, __m512i __A, __m512i __B) { 2546 // CHECK-LABEL: @test_mm512_maskz_rorv_epi32 2547 // CHECK: @llvm.x86.avx512.mask.prorv.d.512 2548 return _mm512_maskz_rorv_epi32(__U, __A, __B); 2549 } 2550 2551 __m512i test_mm512_rorv_epi64(__m512i __A, __m512i __B) { 2552 // CHECK-LABEL: @test_mm512_rorv_epi64 2553 // CHECK: @llvm.x86.avx512.mask.prorv.q.512 2554 return _mm512_rorv_epi64(__A, __B); 2555 } 2556 2557 __m512i test_mm512_mask_rorv_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) { 2558 // CHECK-LABEL: @test_mm512_mask_rorv_epi64 2559 // CHECK: @llvm.x86.avx512.mask.prorv.q.512 2560 return _mm512_mask_rorv_epi64(__W, __U, __A, __B); 2561 } 2562 2563 __m512i test_mm512_maskz_rorv_epi64(__mmask8 __U, __m512i __A, __m512i __B) { 2564 // CHECK-LABEL: @test_mm512_maskz_rorv_epi64 2565 // CHECK: @llvm.x86.avx512.mask.prorv.q.512 2566 return _mm512_maskz_rorv_epi64(__U, __A, __B); 2567 } 2568 2569 __m512i test_mm512_slli_epi32(__m512i __A) { 2570 // CHECK-LABEL: @test_mm512_slli_epi32 2571 // CHECK: @llvm.x86.avx512.mask.psll.di.512 2572 return _mm512_slli_epi32(__A, 5); 2573 } 2574 2575 __m512i test_mm512_mask_slli_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 2576 // CHECK-LABEL: @test_mm512_mask_slli_epi32 2577 // CHECK: @llvm.x86.avx512.mask.psll.di.512 2578 return _mm512_mask_slli_epi32(__W, __U, __A, 5); 2579 } 2580 2581 __m512i test_mm512_maskz_slli_epi32(__mmask16 __U, __m512i __A) { 2582 // CHECK-LABEL: @test_mm512_maskz_slli_epi32 2583 // CHECK: @llvm.x86.avx512.mask.psll.di.512 2584 return _mm512_maskz_slli_epi32(__U, __A, 5); 2585 } 2586 2587 __m512i test_mm512_slli_epi64(__m512i __A) { 2588 // CHECK-LABEL: @test_mm512_slli_epi64 2589 // CHECK: @llvm.x86.avx512.mask.psll.qi.512 2590 return _mm512_slli_epi64(__A, 5); 2591 } 2592 2593 __m512i test_mm512_mask_slli_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 2594 // CHECK-LABEL: @test_mm512_mask_slli_epi64 2595 // CHECK: @llvm.x86.avx512.mask.psll.qi.512 2596 return _mm512_mask_slli_epi64(__W, __U, __A, 5); 2597 } 2598 2599 __m512i test_mm512_maskz_slli_epi64(__mmask8 __U, __m512i __A) { 2600 // CHECK-LABEL: @test_mm512_maskz_slli_epi64 2601 // CHECK: @llvm.x86.avx512.mask.psll.qi.512 2602 return _mm512_maskz_slli_epi64(__U, __A, 5); 2603 } 2604 2605 __m512i test_mm512_srli_epi32(__m512i __A) { 2606 // CHECK-LABEL: @test_mm512_srli_epi32 2607 // CHECK: @llvm.x86.avx512.mask.psrl.di.512 2608 return _mm512_srli_epi32(__A, 5); 2609 } 2610 2611 __m512i test_mm512_mask_srli_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 2612 // CHECK-LABEL: @test_mm512_mask_srli_epi32 2613 // CHECK: @llvm.x86.avx512.mask.psrl.di.512 2614 return _mm512_mask_srli_epi32(__W, __U, __A, 5); 2615 } 2616 2617 __m512i test_mm512_maskz_srli_epi32(__mmask16 __U, __m512i __A) { 2618 // CHECK-LABEL: @test_mm512_maskz_srli_epi32 2619 // CHECK: @llvm.x86.avx512.mask.psrl.di.512 2620 return _mm512_maskz_srli_epi32(__U, __A, 5); 2621 } 2622 2623 __m512i test_mm512_srli_epi64(__m512i __A) { 2624 // CHECK-LABEL: @test_mm512_srli_epi64 2625 // CHECK: @llvm.x86.avx512.mask.psrl.qi.512 2626 return _mm512_srli_epi64(__A, 5); 2627 } 2628 2629 __m512i test_mm512_mask_srli_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 2630 // CHECK-LABEL: @test_mm512_mask_srli_epi64 2631 // CHECK: @llvm.x86.avx512.mask.psrl.qi.512 2632 return _mm512_mask_srli_epi64(__W, __U, __A, 5); 2633 } 2634 2635 __m512i test_mm512_maskz_srli_epi64(__mmask8 __U, __m512i __A) { 2636 // CHECK-LABEL: @test_mm512_maskz_srli_epi64 2637 // CHECK: @llvm.x86.avx512.mask.psrl.qi.512 2638 return _mm512_maskz_srli_epi64(__U, __A, 5); 2639 } 2640 2641 __m512i test_mm512_mask_load_epi32(__m512i __W, __mmask16 __U, void const *__P) { 2642 // CHECK-LABEL: @test_mm512_mask_load_epi32 2643 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}}) 2644 return _mm512_mask_load_epi32(__W, __U, __P); 2645 } 2646 2647 __m512i test_mm512_maskz_load_epi32(__mmask16 __U, void const *__P) { 2648 // CHECK-LABEL: @test_mm512_maskz_load_epi32 2649 // CHECK: @llvm.masked.load.v16i32.p0v16i32(<16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}, <16 x i32> %{{.*}}) 2650 return _mm512_maskz_load_epi32(__U, __P); 2651 } 2652 2653 __m512i test_mm512_mask_mov_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 2654 // CHECK-LABEL: @test_mm512_mask_mov_epi32 2655 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 2656 return _mm512_mask_mov_epi32(__W, __U, __A); 2657 } 2658 2659 __m512i test_mm512_maskz_mov_epi32(__mmask16 __U, __m512i __A) { 2660 // CHECK-LABEL: @test_mm512_maskz_mov_epi32 2661 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 2662 return _mm512_maskz_mov_epi32(__U, __A); 2663 } 2664 2665 __m512i test_mm512_mask_mov_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 2666 // CHECK-LABEL: @test_mm512_mask_mov_epi64 2667 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 2668 return _mm512_mask_mov_epi64(__W, __U, __A); 2669 } 2670 2671 __m512i test_mm512_maskz_mov_epi64(__mmask8 __U, __m512i __A) { 2672 // CHECK-LABEL: @test_mm512_maskz_mov_epi64 2673 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 2674 return _mm512_maskz_mov_epi64(__U, __A); 2675 } 2676 2677 __m512i test_mm512_mask_load_epi64(__m512i __W, __mmask8 __U, void const *__P) { 2678 // CHECK-LABEL: @test_mm512_mask_load_epi64 2679 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}}) 2680 return _mm512_mask_load_epi64(__W, __U, __P); 2681 } 2682 2683 __m512i test_mm512_maskz_load_epi64(__mmask8 __U, void const *__P) { 2684 // CHECK-LABEL: @test_mm512_maskz_load_epi64 2685 // CHECK: @llvm.masked.load.v8i64.p0v8i64(<8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}, <8 x i64> %{{.*}}) 2686 return _mm512_maskz_load_epi64(__U, __P); 2687 } 2688 2689 void test_mm512_mask_store_epi32(void *__P, __mmask16 __U, __m512i __A) { 2690 // CHECK-LABEL: @test_mm512_mask_store_epi32 2691 // CHECK: @llvm.masked.store.v16i32.p0v16i32(<16 x i32> %{{.*}}, <16 x i32>* %{{.*}}, i32 64, <16 x i1> %{{.*}}) 2692 return _mm512_mask_store_epi32(__P, __U, __A); 2693 } 2694 2695 void test_mm512_mask_store_epi64(void *__P, __mmask8 __U, __m512i __A) { 2696 // CHECK-LABEL: @test_mm512_mask_store_epi64 2697 // CHECK: @llvm.masked.store.v8i64.p0v8i64(<8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, i32 64, <8 x i1> %{{.*}}) 2698 return _mm512_mask_store_epi64(__P, __U, __A); 2699 } 2700 2701 __m512d test_mm512_movedup_pd(__m512d __A) { 2702 // CHECK-LABEL: @test_mm512_movedup_pd 2703 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 2704 return _mm512_movedup_pd(__A); 2705 } 2706 2707 __m512d test_mm512_mask_movedup_pd(__m512d __W, __mmask8 __U, __m512d __A) { 2708 // CHECK-LABEL: @test_mm512_mask_movedup_pd 2709 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 2710 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 2711 return _mm512_mask_movedup_pd(__W, __U, __A); 2712 } 2713 2714 __m512d test_mm512_maskz_movedup_pd(__mmask8 __U, __m512d __A) { 2715 // CHECK-LABEL: @test_mm512_maskz_movedup_pd 2716 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 2717 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 2718 return _mm512_maskz_movedup_pd(__U, __A); 2719 } 2720 2721 int test_mm_comi_round_sd(__m128d __A, __m128d __B) { 2722 // CHECK-LABEL: @test_mm_comi_round_sd 2723 // CHECK: @llvm.x86.avx512.vcomi.sd 2724 return _mm_comi_round_sd(__A, __B, 5, 3); 2725 } 2726 2727 int test_mm_comi_round_ss(__m128 __A, __m128 __B) { 2728 // CHECK-LABEL: @test_mm_comi_round_ss 2729 // CHECK: @llvm.x86.avx512.vcomi.ss 2730 return _mm_comi_round_ss(__A, __B, 5, 3); 2731 } 2732 2733 __m512d test_mm512_fixupimm_round_pd(__m512d __A, __m512d __B, __m512i __C) { 2734 // CHECK-LABEL: @test_mm512_fixupimm_round_pd 2735 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512 2736 return _mm512_fixupimm_round_pd(__A, __B, __C, 5, 8); 2737 } 2738 2739 __m512d test_mm512_mask_fixupimm_round_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) { 2740 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_pd 2741 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512 2742 return _mm512_mask_fixupimm_round_pd(__A, __U, __B, __C, 5, 8); 2743 } 2744 2745 __m512d test_mm512_fixupimm_pd(__m512d __A, __m512d __B, __m512i __C) { 2746 // CHECK-LABEL: @test_mm512_fixupimm_pd 2747 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512 2748 return _mm512_fixupimm_pd(__A, __B, __C, 5); 2749 } 2750 2751 __m512d test_mm512_mask_fixupimm_pd(__m512d __A, __mmask8 __U, __m512d __B, __m512i __C) { 2752 // CHECK-LABEL: @test_mm512_mask_fixupimm_pd 2753 // CHECK: @llvm.x86.avx512.mask.fixupimm.pd.512 2754 return _mm512_mask_fixupimm_pd(__A, __U, __B, __C, 5); 2755 } 2756 2757 __m512d test_mm512_maskz_fixupimm_round_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) { 2758 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_pd 2759 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512 2760 return _mm512_maskz_fixupimm_round_pd(__U, __A, __B, __C, 5, 8); 2761 } 2762 2763 __m512d test_mm512_maskz_fixupimm_pd(__mmask8 __U, __m512d __A, __m512d __B, __m512i __C) { 2764 // CHECK-LABEL: @test_mm512_maskz_fixupimm_pd 2765 // CHECK: @llvm.x86.avx512.maskz.fixupimm.pd.512 2766 return _mm512_maskz_fixupimm_pd(__U, __A, __B, __C, 5); 2767 } 2768 2769 __m512 test_mm512_fixupimm_round_ps(__m512 __A, __m512 __B, __m512i __C) { 2770 // CHECK-LABEL: @test_mm512_fixupimm_round_ps 2771 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512 2772 return _mm512_fixupimm_round_ps(__A, __B, __C, 5, 8); 2773 } 2774 2775 __m512 test_mm512_mask_fixupimm_round_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) { 2776 // CHECK-LABEL: @test_mm512_mask_fixupimm_round_ps 2777 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512 2778 return _mm512_mask_fixupimm_round_ps(__A, __U, __B, __C, 5, 8); 2779 } 2780 2781 __m512 test_mm512_fixupimm_ps(__m512 __A, __m512 __B, __m512i __C) { 2782 // CHECK-LABEL: @test_mm512_fixupimm_ps 2783 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512 2784 return _mm512_fixupimm_ps(__A, __B, __C, 5); 2785 } 2786 2787 __m512 test_mm512_mask_fixupimm_ps(__m512 __A, __mmask16 __U, __m512 __B, __m512i __C) { 2788 // CHECK-LABEL: @test_mm512_mask_fixupimm_ps 2789 // CHECK: @llvm.x86.avx512.mask.fixupimm.ps.512 2790 return _mm512_mask_fixupimm_ps(__A, __U, __B, __C, 5); 2791 } 2792 2793 __m512 test_mm512_maskz_fixupimm_round_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) { 2794 // CHECK-LABEL: @test_mm512_maskz_fixupimm_round_ps 2795 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512 2796 return _mm512_maskz_fixupimm_round_ps(__U, __A, __B, __C, 5, 8); 2797 } 2798 2799 __m512 test_mm512_maskz_fixupimm_ps(__mmask16 __U, __m512 __A, __m512 __B, __m512i __C) { 2800 // CHECK-LABEL: @test_mm512_maskz_fixupimm_ps 2801 // CHECK: @llvm.x86.avx512.maskz.fixupimm.ps.512 2802 return _mm512_maskz_fixupimm_ps(__U, __A, __B, __C, 5); 2803 } 2804 2805 __m128d test_mm_fixupimm_round_sd(__m128d __A, __m128d __B, __m128i __C) { 2806 // CHECK-LABEL: @test_mm_fixupimm_round_sd 2807 // CHECK: @llvm.x86.avx512.mask.fixupimm 2808 return _mm_fixupimm_round_sd(__A, __B, __C, 5, 8); 2809 } 2810 2811 __m128d test_mm_mask_fixupimm_round_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) { 2812 // CHECK-LABEL: @test_mm_mask_fixupimm_round_sd 2813 // CHECK: @llvm.x86.avx512.mask.fixupimm 2814 return _mm_mask_fixupimm_round_sd(__A, __U, __B, __C, 5, 8); 2815 } 2816 2817 __m128d test_mm_fixupimm_sd(__m128d __A, __m128d __B, __m128i __C) { 2818 // CHECK-LABEL: @test_mm_fixupimm_sd 2819 // CHECK: @llvm.x86.avx512.mask.fixupimm 2820 return _mm_fixupimm_sd(__A, __B, __C, 5); 2821 } 2822 2823 __m128d test_mm_mask_fixupimm_sd(__m128d __A, __mmask8 __U, __m128d __B, __m128i __C) { 2824 // CHECK-LABEL: @test_mm_mask_fixupimm_sd 2825 // CHECK: @llvm.x86.avx512.mask.fixupimm 2826 return _mm_mask_fixupimm_sd(__A, __U, __B, __C, 5); 2827 } 2828 2829 __m128d test_mm_maskz_fixupimm_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) { 2830 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_sd 2831 // CHECK: @llvm.x86.avx512.maskz.fixupimm 2832 return _mm_maskz_fixupimm_round_sd(__U, __A, __B, __C, 5, 8); 2833 } 2834 2835 __m128d test_mm_maskz_fixupimm_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128i __C) { 2836 // CHECK-LABEL: @test_mm_maskz_fixupimm_sd 2837 // CHECK: @llvm.x86.avx512.maskz.fixupimm 2838 return _mm_maskz_fixupimm_sd(__U, __A, __B, __C, 5); 2839 } 2840 2841 __m128 test_mm_fixupimm_round_ss(__m128 __A, __m128 __B, __m128i __C) { 2842 // CHECK-LABEL: @test_mm_fixupimm_round_ss 2843 // CHECK: @llvm.x86.avx512.mask.fixupimm 2844 return _mm_fixupimm_round_ss(__A, __B, __C, 5, 8); 2845 } 2846 2847 __m128 test_mm_mask_fixupimm_round_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) { 2848 // CHECK-LABEL: @test_mm_mask_fixupimm_round_ss 2849 // CHECK: @llvm.x86.avx512.mask.fixupimm 2850 return _mm_mask_fixupimm_round_ss(__A, __U, __B, __C, 5, 8); 2851 } 2852 2853 __m128 test_mm_fixupimm_ss(__m128 __A, __m128 __B, __m128i __C) { 2854 // CHECK-LABEL: @test_mm_fixupimm_ss 2855 // CHECK: @llvm.x86.avx512.mask.fixupimm 2856 return _mm_fixupimm_ss(__A, __B, __C, 5); 2857 } 2858 2859 __m128 test_mm_mask_fixupimm_ss(__m128 __A, __mmask8 __U, __m128 __B, __m128i __C) { 2860 // CHECK-LABEL: @test_mm_mask_fixupimm_ss 2861 // CHECK: @llvm.x86.avx512.mask.fixupimm 2862 return _mm_mask_fixupimm_ss(__A, __U, __B, __C, 5); 2863 } 2864 2865 __m128 test_mm_maskz_fixupimm_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) { 2866 // CHECK-LABEL: @test_mm_maskz_fixupimm_round_ss 2867 // CHECK: @llvm.x86.avx512.maskz.fixupimm 2868 return _mm_maskz_fixupimm_round_ss(__U, __A, __B, __C, 5, 8); 2869 } 2870 2871 __m128 test_mm_maskz_fixupimm_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128i __C) { 2872 // CHECK-LABEL: @test_mm_maskz_fixupimm_ss 2873 // CHECK: @llvm.x86.avx512.maskz.fixupimm 2874 return _mm_maskz_fixupimm_ss(__U, __A, __B, __C, 5); 2875 } 2876 2877 __m128d test_mm_getexp_round_sd(__m128d __A, __m128d __B) { 2878 // CHECK-LABEL: @test_mm_getexp_round_sd 2879 // CHECK: @llvm.x86.avx512.mask.getexp.sd 2880 return _mm_getexp_round_sd(__A, __B, 8); 2881 } 2882 2883 __m128d test_mm_getexp_sd(__m128d __A, __m128d __B) { 2884 // CHECK-LABEL: @test_mm_getexp_sd 2885 // CHECK: @llvm.x86.avx512.mask.getexp.sd 2886 return _mm_getexp_sd(__A, __B); 2887 } 2888 2889 __m128 test_mm_getexp_round_ss(__m128 __A, __m128 __B) { 2890 // CHECK-LABEL: @test_mm_getexp_round_ss 2891 // CHECK: @llvm.x86.avx512.mask.getexp.ss 2892 return _mm_getexp_round_ss(__A, __B, 8); 2893 } 2894 2895 __m128 test_mm_getexp_ss(__m128 __A, __m128 __B) { 2896 // CHECK-LABEL: @test_mm_getexp_ss 2897 // CHECK: @llvm.x86.avx512.mask.getexp.ss 2898 return _mm_getexp_ss(__A, __B); 2899 } 2900 2901 __m128d test_mm_getmant_round_sd(__m128d __A, __m128d __B) { 2902 // CHECK-LABEL: @test_mm_getmant_round_sd 2903 // CHECK: @llvm.x86.avx512.mask.getmant.sd 2904 return _mm_getmant_round_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8); 2905 } 2906 2907 __m128d test_mm_getmant_sd(__m128d __A, __m128d __B) { 2908 // CHECK-LABEL: @test_mm_getmant_sd 2909 // CHECK: @llvm.x86.avx512.mask.getmant.sd 2910 return _mm_getmant_sd(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src); 2911 } 2912 2913 __m128 test_mm_getmant_round_ss(__m128 __A, __m128 __B) { 2914 // CHECK-LABEL: @test_mm_getmant_round_ss 2915 // CHECK: @llvm.x86.avx512.mask.getmant.ss 2916 return _mm_getmant_round_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src, 8); 2917 } 2918 2919 __m128 test_mm_getmant_ss(__m128 __A, __m128 __B) { 2920 // CHECK-LABEL: @test_mm_getmant_ss 2921 // CHECK: @llvm.x86.avx512.mask.getmant.ss 2922 return _mm_getmant_ss(__A, __B, _MM_MANT_NORM_1_2, _MM_MANT_SIGN_src); 2923 } 2924 2925 __mmask16 test_mm512_kmov(__mmask16 __A) { 2926 // CHECK-LABEL: @test_mm512_kmov 2927 // CHECK: load i16, i16* %__A.addr.i, align 2 2928 return _mm512_kmov(__A); 2929 } 2930 2931 __m512d test_mm512_mask_unpackhi_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 2932 // CHECK-LABEL: @test_mm512_mask_unpackhi_pd 2933 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2934 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 2935 return _mm512_mask_unpackhi_pd(__W, __U, __A, __B); 2936 } 2937 unsigned long long test_mm_cvt_roundsd_si64(__m128d __A) { 2938 // CHECK-LABEL: @test_mm_cvt_roundsd_si64 2939 // CHECK: @llvm.x86.avx512.vcvtsd2si64 2940 return _mm_cvt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION); 2941 } 2942 __m512i test_mm512_mask2_permutex2var_epi32(__m512i __A, __m512i __I, __mmask16 __U, __m512i __B) { 2943 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi32 2944 // CHECK: @llvm.x86.avx512.mask.vpermi2var.d.512 2945 return _mm512_mask2_permutex2var_epi32(__A, __I, __U, __B); 2946 } 2947 __m512i test_mm512_unpackhi_epi32(__m512i __A, __m512i __B) { 2948 // CHECK-LABEL: @test_mm512_unpackhi_epi32 2949 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 2950 return _mm512_unpackhi_epi32(__A, __B); 2951 } 2952 2953 __m512d test_mm512_maskz_unpackhi_pd(__mmask8 __U, __m512d __A, __m512d __B) { 2954 // CHECK-LABEL: @test_mm512_maskz_unpackhi_pd 2955 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 2956 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 2957 return _mm512_maskz_unpackhi_pd(__U, __A, __B); 2958 } 2959 long long test_mm_cvt_roundsd_i64(__m128d __A) { 2960 // CHECK-LABEL: @test_mm_cvt_roundsd_i64 2961 // CHECK: @llvm.x86.avx512.vcvtsd2si64 2962 return _mm_cvt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION); 2963 } 2964 __m512d test_mm512_mask2_permutex2var_pd(__m512d __A, __m512i __I, __mmask8 __U, __m512d __B) { 2965 // CHECK-LABEL: @test_mm512_mask2_permutex2var_pd 2966 // CHECK: @llvm.x86.avx512.mask.vpermi2var.pd.512 2967 return _mm512_mask2_permutex2var_pd(__A, __I, __U, __B); 2968 } 2969 __m512i test_mm512_mask_unpackhi_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { 2970 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi32 2971 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 2972 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 2973 return _mm512_mask_unpackhi_epi32(__W, __U, __A, __B); 2974 } 2975 2976 __m512 test_mm512_mask_unpackhi_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 2977 // CHECK-LABEL: @test_mm512_mask_unpackhi_ps 2978 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 2979 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 2980 return _mm512_mask_unpackhi_ps(__W, __U, __A, __B); 2981 } 2982 2983 __m512 test_mm512_maskz_unpackhi_ps(__mmask16 __U, __m512 __A, __m512 __B) { 2984 // CHECK-LABEL: @test_mm512_maskz_unpackhi_ps 2985 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 2986 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 2987 return _mm512_maskz_unpackhi_ps(__U, __A, __B); 2988 } 2989 2990 __m512d test_mm512_mask_unpacklo_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 2991 // CHECK-LABEL: @test_mm512_mask_unpacklo_pd 2992 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 2993 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 2994 return _mm512_mask_unpacklo_pd(__W, __U, __A, __B); 2995 } 2996 2997 __m512d test_mm512_maskz_unpacklo_pd(__mmask8 __U, __m512d __A, __m512d __B) { 2998 // CHECK-LABEL: @test_mm512_maskz_unpacklo_pd 2999 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3000 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 3001 return _mm512_maskz_unpacklo_pd(__U, __A, __B); 3002 } 3003 3004 __m512 test_mm512_mask_unpacklo_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 3005 // CHECK-LABEL: @test_mm512_mask_unpacklo_ps 3006 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 3007 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 3008 return _mm512_mask_unpacklo_ps(__W, __U, __A, __B); 3009 } 3010 3011 __m512 test_mm512_maskz_unpacklo_ps(__mmask16 __U, __m512 __A, __m512 __B) { 3012 // CHECK-LABEL: @test_mm512_maskz_unpacklo_ps 3013 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 3014 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 3015 return _mm512_maskz_unpacklo_ps(__U, __A, __B); 3016 } 3017 int test_mm_cvt_roundsd_si32(__m128d __A) { 3018 // CHECK-LABEL: @test_mm_cvt_roundsd_si32 3019 // CHECK: @llvm.x86.avx512.vcvtsd2si32 3020 return _mm_cvt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION); 3021 } 3022 3023 int test_mm_cvt_roundsd_i32(__m128d __A) { 3024 // CHECK-LABEL: @test_mm_cvt_roundsd_i32 3025 // CHECK: @llvm.x86.avx512.vcvtsd2si32 3026 return _mm_cvt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION); 3027 } 3028 3029 unsigned test_mm_cvt_roundsd_u32(__m128d __A) { 3030 // CHECK-LABEL: @test_mm_cvt_roundsd_u32 3031 // CHECK: @llvm.x86.avx512.vcvtsd2usi32 3032 return _mm_cvt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION); 3033 } 3034 3035 unsigned test_mm_cvtsd_u32(__m128d __A) { 3036 // CHECK-LABEL: @test_mm_cvtsd_u32 3037 // CHECK: @llvm.x86.avx512.vcvtsd2usi32 3038 return _mm_cvtsd_u32(__A); 3039 } 3040 3041 unsigned long long test_mm_cvt_roundsd_u64(__m128d __A) { 3042 // CHECK-LABEL: @test_mm_cvt_roundsd_u64 3043 // CHECK: @llvm.x86.avx512.vcvtsd2usi64 3044 return _mm_cvt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION); 3045 } 3046 3047 unsigned long long test_mm_cvtsd_u64(__m128d __A) { 3048 // CHECK-LABEL: @test_mm_cvtsd_u64 3049 // CHECK: @llvm.x86.avx512.vcvtsd2usi64 3050 return _mm_cvtsd_u64(__A); 3051 } 3052 3053 int test_mm_cvt_roundss_si32(__m128 __A) { 3054 // CHECK-LABEL: @test_mm_cvt_roundss_si32 3055 // CHECK: @llvm.x86.avx512.vcvtss2si32 3056 return _mm_cvt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION); 3057 } 3058 3059 int test_mm_cvt_roundss_i32(__m128 __A) { 3060 // CHECK-LABEL: @test_mm_cvt_roundss_i32 3061 // CHECK: @llvm.x86.avx512.vcvtss2si32 3062 return _mm_cvt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION); 3063 } 3064 3065 int test_mm_cvt_roundss_si64(__m128 __A) { 3066 // CHECK-LABEL: @test_mm_cvt_roundss_si64 3067 // CHECK: @llvm.x86.avx512.vcvtss2si64 3068 return _mm_cvt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION); 3069 } 3070 3071 long long test_mm_cvt_roundss_i64(__m128 __A) { 3072 // CHECK-LABEL: @test_mm_cvt_roundss_i64 3073 // CHECK: @llvm.x86.avx512.vcvtss2si64 3074 return _mm_cvt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION); 3075 } 3076 3077 unsigned test_mm_cvt_roundss_u32(__m128 __A) { 3078 // CHECK-LABEL: @test_mm_cvt_roundss_u32 3079 // CHECK: @llvm.x86.avx512.vcvtss2usi32 3080 return _mm_cvt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION); 3081 } 3082 3083 unsigned test_mm_cvtss_u32(__m128 __A) { 3084 // CHECK-LABEL: @test_mm_cvtss_u32 3085 // CHECK: @llvm.x86.avx512.vcvtss2usi32 3086 return _mm_cvtss_u32(__A); 3087 } 3088 3089 unsigned long long test_mm_cvt_roundss_u64(__m128 __A) { 3090 // CHECK-LABEL: @test_mm_cvt_roundss_u64 3091 // CHECK: @llvm.x86.avx512.vcvtss2usi64 3092 return _mm_cvt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION); 3093 } 3094 3095 unsigned long long test_mm_cvtss_u64(__m128 __A) { 3096 // CHECK-LABEL: @test_mm_cvtss_u64 3097 // CHECK: @llvm.x86.avx512.vcvtss2usi64 3098 return _mm_cvtss_u64(__A); 3099 } 3100 3101 int test_mm_cvtt_roundsd_i32(__m128d __A) { 3102 // CHECK-LABEL: @test_mm_cvtt_roundsd_i32 3103 // CHECK: @llvm.x86.avx512.cvttsd2si 3104 return _mm_cvtt_roundsd_i32(__A, _MM_FROUND_CUR_DIRECTION); 3105 } 3106 3107 int test_mm_cvtt_roundsd_si32(__m128d __A) { 3108 // CHECK-LABEL: @test_mm_cvtt_roundsd_si32 3109 // CHECK: @llvm.x86.avx512.cvttsd2si 3110 return _mm_cvtt_roundsd_si32(__A, _MM_FROUND_CUR_DIRECTION); 3111 } 3112 3113 int test_mm_cvttsd_i32(__m128d __A) { 3114 // CHECK-LABEL: @test_mm_cvttsd_i32 3115 // CHECK: @llvm.x86.avx512.cvttsd2si 3116 return _mm_cvttsd_i32(__A); 3117 } 3118 3119 unsigned long long test_mm_cvtt_roundsd_si64(__m128d __A) { 3120 // CHECK-LABEL: @test_mm_cvtt_roundsd_si64 3121 // CHECK: @llvm.x86.avx512.cvttsd2si64 3122 return _mm_cvtt_roundsd_si64(__A, _MM_FROUND_CUR_DIRECTION); 3123 } 3124 3125 long long test_mm_cvtt_roundsd_i64(__m128d __A) { 3126 // CHECK-LABEL: @test_mm_cvtt_roundsd_i64 3127 // CHECK: @llvm.x86.avx512.cvttsd2si64 3128 return _mm_cvtt_roundsd_i64(__A, _MM_FROUND_CUR_DIRECTION); 3129 } 3130 3131 long long test_mm_cvttsd_i64(__m128d __A) { 3132 // CHECK-LABEL: @test_mm_cvttsd_i64 3133 // CHECK: @llvm.x86.avx512.cvttsd2si64 3134 return _mm_cvttsd_i64(__A); 3135 } 3136 3137 unsigned test_mm_cvtt_roundsd_u32(__m128d __A) { 3138 // CHECK-LABEL: @test_mm_cvtt_roundsd_u32 3139 // CHECK: @llvm.x86.avx512.cvttsd2usi 3140 return _mm_cvtt_roundsd_u32(__A, _MM_FROUND_CUR_DIRECTION); 3141 } 3142 3143 unsigned test_mm_cvttsd_u32(__m128d __A) { 3144 // CHECK-LABEL: @test_mm_cvttsd_u32 3145 // CHECK: @llvm.x86.avx512.cvttsd2usi 3146 return _mm_cvttsd_u32(__A); 3147 } 3148 3149 unsigned long long test_mm_cvtt_roundsd_u64(__m128d __A) { 3150 // CHECK-LABEL: @test_mm_cvtt_roundsd_u64 3151 // CHECK: @llvm.x86.avx512.cvttsd2usi64 3152 return _mm_cvtt_roundsd_u64(__A, _MM_FROUND_CUR_DIRECTION); 3153 } 3154 3155 unsigned long long test_mm_cvttsd_u64(__m128d __A) { 3156 // CHECK-LABEL: @test_mm_cvttsd_u64 3157 // CHECK: @llvm.x86.avx512.cvttsd2usi64 3158 return _mm_cvttsd_u64(__A); 3159 } 3160 3161 int test_mm_cvtt_roundss_i32(__m128 __A) { 3162 // CHECK-LABEL: @test_mm_cvtt_roundss_i32 3163 // CHECK: @llvm.x86.avx512.cvttss2si 3164 return _mm_cvtt_roundss_i32(__A, _MM_FROUND_CUR_DIRECTION); 3165 } 3166 3167 int test_mm_cvtt_roundss_si32(__m128 __A) { 3168 // CHECK-LABEL: @test_mm_cvtt_roundss_si32 3169 // CHECK: @llvm.x86.avx512.cvttss2si 3170 return _mm_cvtt_roundss_si32(__A, _MM_FROUND_CUR_DIRECTION); 3171 } 3172 3173 int test_mm_cvttss_i32(__m128 __A) { 3174 // CHECK-LABEL: @test_mm_cvttss_i32 3175 // CHECK: @llvm.x86.avx512.cvttss2si 3176 return _mm_cvttss_i32(__A); 3177 } 3178 3179 float test_mm_cvtt_roundss_i64(__m128 __A) { 3180 // CHECK-LABEL: @test_mm_cvtt_roundss_i64 3181 // CHECK: @llvm.x86.avx512.cvttss2si64 3182 return _mm_cvtt_roundss_i64(__A, _MM_FROUND_CUR_DIRECTION); 3183 } 3184 3185 long long test_mm_cvtt_roundss_si64(__m128 __A) { 3186 // CHECK-LABEL: @test_mm_cvtt_roundss_si64 3187 // CHECK: @llvm.x86.avx512.cvttss2si64 3188 return _mm_cvtt_roundss_si64(__A, _MM_FROUND_CUR_DIRECTION); 3189 } 3190 3191 long long test_mm_cvttss_i64(__m128 __A) { 3192 // CHECK-LABEL: @test_mm_cvttss_i64 3193 // CHECK: @llvm.x86.avx512.cvttss2si64 3194 return _mm_cvttss_i64(__A); 3195 } 3196 3197 unsigned test_mm_cvtt_roundss_u32(__m128 __A) { 3198 // CHECK-LABEL: @test_mm_cvtt_roundss_u32 3199 // CHECK: @llvm.x86.avx512.cvttss2usi 3200 return _mm_cvtt_roundss_u32(__A, _MM_FROUND_CUR_DIRECTION); 3201 } 3202 3203 unsigned test_mm_cvttss_u32(__m128 __A) { 3204 // CHECK-LABEL: @test_mm_cvttss_u32 3205 // CHECK: @llvm.x86.avx512.cvttss2usi 3206 return _mm_cvttss_u32(__A); 3207 } 3208 3209 unsigned long long test_mm_cvtt_roundss_u64(__m128 __A) { 3210 // CHECK-LABEL: @test_mm_cvtt_roundss_u64 3211 // CHECK: @llvm.x86.avx512.cvttss2usi64 3212 return _mm_cvtt_roundss_u64(__A, _MM_FROUND_CUR_DIRECTION); 3213 } 3214 3215 unsigned long long test_mm_cvttss_u64(__m128 __A) { 3216 // CHECK-LABEL: @test_mm_cvttss_u64 3217 // CHECK: @llvm.x86.avx512.cvttss2usi64 3218 return _mm_cvttss_u64(__A); 3219 } 3220 3221 __m512i test_mm512_cvtt_roundps_epu32(__m512 __A) 3222 { 3223 // CHECK-LABEL: @test_mm512_cvtt_roundps_epu32 3224 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512 3225 return _mm512_cvtt_roundps_epu32(__A, _MM_FROUND_CUR_DIRECTION); 3226 } 3227 3228 __m512i test_mm512_mask_cvtt_roundps_epu32(__m512i __W, __mmask16 __U, __m512 __A) 3229 { 3230 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epu32 3231 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512 3232 return _mm512_mask_cvtt_roundps_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 3233 } 3234 3235 __m512i test_mm512_maskz_cvtt_roundps_epu32( __mmask16 __U, __m512 __A) 3236 { 3237 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epu32 3238 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512 3239 3240 return _mm512_maskz_cvtt_roundps_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION); 3241 } 3242 3243 __m256i test_mm512_cvt_roundps_ph(__m512 __A) 3244 { 3245 // CHECK-LABEL: @test_mm512_cvt_roundps_ph 3246 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512 3247 return _mm512_cvt_roundps_ph(__A, _MM_FROUND_CUR_DIRECTION); 3248 } 3249 3250 __m256i test_mm512_mask_cvt_roundps_ph(__m256i __W , __mmask16 __U, __m512 __A) 3251 { 3252 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_ph 3253 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512 3254 return _mm512_mask_cvt_roundps_ph(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 3255 } 3256 3257 __m256i test_mm512_maskz_cvt_roundps_ph(__mmask16 __U, __m512 __A) 3258 { 3259 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_ph 3260 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512 3261 return _mm512_maskz_cvt_roundps_ph(__U, __A, _MM_FROUND_CUR_DIRECTION); 3262 } 3263 3264 __m512 test_mm512_cvt_roundph_ps(__m256i __A) 3265 { 3266 // CHECK-LABEL: @test_mm512_cvt_roundph_ps 3267 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512 3268 return _mm512_cvt_roundph_ps(__A, _MM_FROUND_CUR_DIRECTION); 3269 } 3270 3271 __m512 test_mm512_mask_cvt_roundph_ps(__m512 __W, __mmask16 __U, __m256i __A) 3272 { 3273 // CHECK-LABEL: @test_mm512_mask_cvt_roundph_ps 3274 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512 3275 return _mm512_mask_cvt_roundph_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 3276 } 3277 3278 __m512 test_mm512_maskz_cvt_roundph_ps(__mmask16 __U, __m256i __A) 3279 { 3280 // CHECK-LABEL: @test_mm512_maskz_cvt_roundph_ps 3281 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512 3282 return _mm512_maskz_cvt_roundph_ps(__U, __A, _MM_FROUND_CUR_DIRECTION); 3283 } 3284 3285 __m512 test_mm512_mask_cvt_roundepi32_ps(__m512 __W, __mmask16 __U, __m512i __A) 3286 { 3287 // CHECK-LABEL: @test_mm512_mask_cvt_roundepi32_ps 3288 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512 3289 return _mm512_mask_cvt_roundepi32_ps(__W,__U,__A,4); 3290 } 3291 3292 __m512 test_mm512_maskz_cvt_roundepi32_ps(__mmask16 __U, __m512i __A) 3293 { 3294 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepi32_ps 3295 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512 3296 return _mm512_maskz_cvt_roundepi32_ps(__U,__A,4); 3297 } 3298 3299 __m512 test_mm512_mask_cvt_roundepu32_ps(__m512 __W, __mmask16 __U,__m512i __A) 3300 { 3301 // CHECK-LABEL: @test_mm512_mask_cvt_roundepu32_ps 3302 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512 3303 return _mm512_mask_cvt_roundepu32_ps(__W,__U,__A,4); 3304 } 3305 3306 __m512 test_mm512_maskz_cvt_roundepu32_ps(__mmask16 __U,__m512i __A) 3307 { 3308 // CHECK-LABEL: @test_mm512_maskz_cvt_roundepu32_ps 3309 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512 3310 return _mm512_maskz_cvt_roundepu32_ps(__U,__A,4); 3311 } 3312 3313 __m256 test_mm512_mask_cvt_roundpd_ps(__m256 W, __mmask8 U,__m512d A) 3314 { 3315 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_ps 3316 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 3317 return _mm512_mask_cvt_roundpd_ps(W,U,A,4); 3318 } 3319 3320 __m256 test_mm512_maskz_cvt_roundpd_ps(__mmask8 U, __m512d A) 3321 { 3322 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_ps 3323 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 3324 return _mm512_maskz_cvt_roundpd_ps(U,A,4); 3325 } 3326 3327 __m256i test_mm512_cvtt_roundpd_epi32(__m512d A) 3328 { 3329 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epi32 3330 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512 3331 return _mm512_cvtt_roundpd_epi32(A,4); 3332 } 3333 3334 __m256i test_mm512_mask_cvtt_roundpd_epi32(__m256i W, __mmask8 U, __m512d A) 3335 { 3336 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epi32 3337 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512 3338 return _mm512_mask_cvtt_roundpd_epi32(W,U,A,4); 3339 } 3340 3341 __m256i test_mm512_maskz_cvtt_roundpd_epi32(__mmask8 U, __m512d A) 3342 { 3343 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epi32 3344 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512 3345 return _mm512_maskz_cvtt_roundpd_epi32(U,A,4); 3346 } 3347 3348 __m512i test_mm512_mask_cvtt_roundps_epi32(__m512i W,__mmask16 U, __m512 A) 3349 { 3350 // CHECK-LABEL: @test_mm512_mask_cvtt_roundps_epi32 3351 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512 3352 return _mm512_mask_cvtt_roundps_epi32(W,U,A,4); 3353 } 3354 3355 __m512i test_mm512_maskz_cvtt_roundps_epi32(__mmask16 U, __m512 A) 3356 { 3357 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundps_epi32 3358 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512 3359 return _mm512_maskz_cvtt_roundps_epi32(U,A,4); 3360 } 3361 3362 __m512i test_mm512_mask_cvt_roundps_epi32(__m512i __W,__mmask16 __U,__m512 __A) 3363 { 3364 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epi32 3365 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512 3366 return _mm512_mask_cvt_roundps_epi32(__W,__U,__A,4); 3367 } 3368 3369 __m512i test_mm512_maskz_cvt_roundps_epi32(__mmask16 __U, __m512 __A) 3370 { 3371 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epi32 3372 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512 3373 return _mm512_maskz_cvt_roundps_epi32(__U,__A,4); 3374 } 3375 3376 __m256i test_mm512_mask_cvt_roundpd_epi32(__m256i W,__mmask8 U,__m512d A) 3377 { 3378 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epi32 3379 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512 3380 return _mm512_mask_cvt_roundpd_epi32(W,U,A,4); 3381 } 3382 3383 __m256i test_mm512_maskz_cvt_roundpd_epi32(__mmask8 U, __m512d A) 3384 { 3385 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epi32 3386 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512 3387 return _mm512_maskz_cvt_roundpd_epi32(U,A,4); 3388 } 3389 3390 __m512i test_mm512_mask_cvt_roundps_epu32(__m512i __W,__mmask16 __U,__m512 __A) 3391 { 3392 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_epu32 3393 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512 3394 return _mm512_mask_cvt_roundps_epu32(__W,__U,__A,4); 3395 } 3396 3397 __m512i test_mm512_maskz_cvt_roundps_epu32(__mmask16 __U,__m512 __A) 3398 { 3399 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_epu32 3400 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512 3401 return _mm512_maskz_cvt_roundps_epu32(__U,__A, 4); 3402 } 3403 3404 __m256i test_mm512_mask_cvt_roundpd_epu32(__m256i W, __mmask8 U, __m512d A) 3405 { 3406 // CHECK-LABEL: @test_mm512_mask_cvt_roundpd_epu32 3407 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512 3408 return _mm512_mask_cvt_roundpd_epu32(W,U,A,4); 3409 } 3410 3411 __m256i test_mm512_maskz_cvt_roundpd_epu32(__mmask8 U, __m512d A) 3412 { 3413 // CHECK-LABEL: @test_mm512_maskz_cvt_roundpd_epu32 3414 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512 3415 return _mm512_maskz_cvt_roundpd_epu32(U, A, 4); 3416 } 3417 3418 __m512 test_mm512_mask2_permutex2var_ps(__m512 __A, __m512i __I, __mmask16 __U, __m512 __B) { 3419 // CHECK-LABEL: @test_mm512_mask2_permutex2var_ps 3420 // CHECK: @llvm.x86.avx512.mask.vpermi2var.ps.512 3421 return _mm512_mask2_permutex2var_ps(__A, __I, __U, __B); 3422 } 3423 3424 __m512i test_mm512_mask2_permutex2var_epi64(__m512i __A, __m512i __I, __mmask8 __U, __m512i __B) { 3425 // CHECK-LABEL: @test_mm512_mask2_permutex2var_epi64 3426 // CHECK: @llvm.x86.avx512.mask.vpermi2var.q.512 3427 return _mm512_mask2_permutex2var_epi64(__A, __I, __U, __B); 3428 } 3429 3430 __m512d test_mm512_permute_pd(__m512d __X) { 3431 // CHECK-LABEL: @test_mm512_permute_pd 3432 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 3433 return _mm512_permute_pd(__X, 2); 3434 } 3435 3436 __m512d test_mm512_mask_permute_pd(__m512d __W, __mmask8 __U, __m512d __X) { 3437 // CHECK-LABEL: @test_mm512_mask_permute_pd 3438 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 3439 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 3440 return _mm512_mask_permute_pd(__W, __U, __X, 2); 3441 } 3442 3443 __m512d test_mm512_maskz_permute_pd(__mmask8 __U, __m512d __X) { 3444 // CHECK-LABEL: @test_mm512_maskz_permute_pd 3445 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 1, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6> 3446 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 3447 return _mm512_maskz_permute_pd(__U, __X, 2); 3448 } 3449 3450 __m512 test_mm512_permute_ps(__m512 __X) { 3451 // CHECK-LABEL: @test_mm512_permute_ps 3452 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12> 3453 return _mm512_permute_ps(__X, 2); 3454 } 3455 3456 __m512 test_mm512_mask_permute_ps(__m512 __W, __mmask16 __U, __m512 __X) { 3457 // CHECK-LABEL: @test_mm512_mask_permute_ps 3458 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12> 3459 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 3460 return _mm512_mask_permute_ps(__W, __U, __X, 2); 3461 } 3462 3463 __m512 test_mm512_maskz_permute_ps(__mmask16 __U, __m512 __X) { 3464 // CHECK-LABEL: @test_mm512_maskz_permute_ps 3465 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> undef, <16 x i32> <i32 2, i32 0, i32 0, i32 0, i32 6, i32 4, i32 4, i32 4, i32 10, i32 8, i32 8, i32 8, i32 14, i32 12, i32 12, i32 12> 3466 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 3467 return _mm512_maskz_permute_ps(__U, __X, 2); 3468 } 3469 3470 __m512d test_mm512_permutevar_pd(__m512d __A, __m512i __C) { 3471 // CHECK-LABEL: @test_mm512_permutevar_pd 3472 // CHECK: @llvm.x86.avx512.mask.vpermilvar.pd.512 3473 return _mm512_permutevar_pd(__A, __C); 3474 } 3475 3476 __m512d test_mm512_mask_permutevar_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512i __C) { 3477 // CHECK-LABEL: @test_mm512_mask_permutevar_pd 3478 // CHECK: @llvm.x86.avx512.mask.vpermilvar.pd.512 3479 return _mm512_mask_permutevar_pd(__W, __U, __A, __C); 3480 } 3481 3482 __m512d test_mm512_maskz_permutevar_pd(__mmask8 __U, __m512d __A, __m512i __C) { 3483 // CHECK-LABEL: @test_mm512_maskz_permutevar_pd 3484 // CHECK: @llvm.x86.avx512.mask.vpermilvar.pd.512 3485 return _mm512_maskz_permutevar_pd(__U, __A, __C); 3486 } 3487 3488 __m512 test_mm512_permutevar_ps(__m512 __A, __m512i __C) { 3489 // CHECK-LABEL: @test_mm512_permutevar_ps 3490 // CHECK: @llvm.x86.avx512.mask.vpermilvar.ps.512 3491 return _mm512_permutevar_ps(__A, __C); 3492 } 3493 3494 __m512 test_mm512_mask_permutevar_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512i __C) { 3495 // CHECK-LABEL: @test_mm512_mask_permutevar_ps 3496 // CHECK: @llvm.x86.avx512.mask.vpermilvar.ps.512 3497 return _mm512_mask_permutevar_ps(__W, __U, __A, __C); 3498 } 3499 3500 __m512 test_mm512_maskz_permutevar_ps(__mmask16 __U, __m512 __A, __m512i __C) { 3501 // CHECK-LABEL: @test_mm512_maskz_permutevar_ps 3502 // CHECK: @llvm.x86.avx512.mask.vpermilvar.ps.512 3503 return _mm512_maskz_permutevar_ps(__U, __A, __C); 3504 } 3505 3506 __m512i test_mm512_maskz_permutex2var_epi32(__mmask16 __U, __m512i __A, __m512i __I, __m512i __B) { 3507 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi32 3508 // CHECK: @llvm.x86.avx512.maskz.vpermt2var.d.512 3509 return _mm512_maskz_permutex2var_epi32(__U, __A, __I, __B); 3510 } 3511 3512 __m512i test_mm512_mask_permutex2var_epi32 (__m512i __A, __mmask16 __U, __m512i __I, __m512i __B) 3513 { 3514 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi32 3515 // CHECK: @llvm.x86.avx512.mask.vpermt2var.d.512 3516 return _mm512_mask_permutex2var_epi32 (__A,__U,__I,__B); 3517 } 3518 3519 __m512d test_mm512_permutex2var_pd (__m512d __A, __m512i __I, __m512d __B) 3520 { 3521 // CHECK-LABEL: @test_mm512_permutex2var_pd 3522 // CHECK: @llvm.x86.avx512.mask.vpermt2var.pd.512 3523 return _mm512_permutex2var_pd (__A, __I,__B); 3524 } 3525 3526 __m512d test_mm512_mask_permutex2var_pd (__m512d __A, __mmask8 __U, __m512i __I, __m512d __B) 3527 { 3528 // CHECK-LABEL: @test_mm512_mask_permutex2var_pd 3529 // CHECK: @llvm.x86.avx512.mask.vpermt2var.pd.512 3530 return _mm512_mask_permutex2var_pd (__A,__U,__I,__B); 3531 } 3532 3533 __m512d test_mm512_maskz_permutex2var_pd(__mmask8 __U, __m512d __A, __m512i __I, __m512d __B) { 3534 // CHECK-LABEL: @test_mm512_maskz_permutex2var_pd 3535 // CHECK: @llvm.x86.avx512.maskz.vpermt2var.pd.512 3536 return _mm512_maskz_permutex2var_pd(__U, __A, __I, __B); 3537 } 3538 3539 __m512 test_mm512_permutex2var_ps (__m512 __A, __m512i __I, __m512 __B) 3540 { 3541 // CHECK-LABEL: @test_mm512_permutex2var_ps 3542 // CHECK: @llvm.x86.avx512.mask.vpermt2var.ps.512 3543 return _mm512_permutex2var_ps (__A, __I, __B); 3544 } 3545 3546 __m512 test_mm512_mask_permutex2var_ps (__m512 __A, __mmask16 __U, __m512i __I, __m512 __B) 3547 { 3548 // CHECK-LABEL: @test_mm512_mask_permutex2var_ps 3549 // CHECK: @llvm.x86.avx512.mask.vpermt2var.ps.512 3550 return _mm512_mask_permutex2var_ps (__A,__U,__I,__B); 3551 } 3552 3553 __m512 test_mm512_maskz_permutex2var_ps(__mmask16 __U, __m512 __A, __m512i __I, __m512 __B) { 3554 // CHECK-LABEL: @test_mm512_maskz_permutex2var_ps 3555 // CHECK: @llvm.x86.avx512.maskz.vpermt2var.ps.512 3556 return _mm512_maskz_permutex2var_ps(__U, __A, __I, __B); 3557 } 3558 3559 __m512i test_mm512_mask_permutex2var_epi64 (__m512i __A, __mmask8 __U, __m512i __I, __m512i __B){ 3560 // CHECK-LABEL: @test_mm512_mask_permutex2var_epi64 3561 // CHECK: @llvm.x86.avx512.mask.vpermt2var.q.512 3562 return _mm512_mask_permutex2var_epi64(__A, __U, __I, __B); 3563 } 3564 3565 __m512i test_mm512_maskz_permutex2var_epi64(__mmask8 __U, __m512i __A, __m512i __I, __m512i __B) { 3566 // CHECK-LABEL: @test_mm512_maskz_permutex2var_epi64 3567 // CHECK: @llvm.x86.avx512.maskz.vpermt2var.q.512 3568 return _mm512_maskz_permutex2var_epi64(__U, __A, __I, __B); 3569 } 3570 __mmask16 test_mm512_testn_epi32_mask(__m512i __A, __m512i __B) { 3571 // CHECK-LABEL: @test_mm512_testn_epi32_mask 3572 // CHECK: @llvm.x86.avx512.ptestnm.d.512 3573 return _mm512_testn_epi32_mask(__A, __B); 3574 } 3575 3576 __mmask16 test_mm512_mask_testn_epi32_mask(__mmask16 __U, __m512i __A, __m512i __B) { 3577 // CHECK-LABEL: @test_mm512_mask_testn_epi32_mask 3578 // CHECK: @llvm.x86.avx512.ptestnm.d.512 3579 return _mm512_mask_testn_epi32_mask(__U, __A, __B); 3580 } 3581 3582 __mmask8 test_mm512_testn_epi64_mask(__m512i __A, __m512i __B) { 3583 // CHECK-LABEL: @test_mm512_testn_epi64_mask 3584 // CHECK: @llvm.x86.avx512.ptestnm.q.512 3585 return _mm512_testn_epi64_mask(__A, __B); 3586 } 3587 3588 __mmask8 test_mm512_mask_testn_epi64_mask(__mmask8 __U, __m512i __A, __m512i __B) { 3589 // CHECK-LABEL: @test_mm512_mask_testn_epi64_mask 3590 // CHECK: @llvm.x86.avx512.ptestnm.q.512 3591 return _mm512_mask_testn_epi64_mask(__U, __A, __B); 3592 } 3593 3594 __mmask16 test_mm512_mask_test_epi32_mask (__mmask16 __U, __m512i __A, __m512i __B) 3595 { 3596 // CHECK-LABEL: @test_mm512_mask_test_epi32_mask 3597 // CHECK: @llvm.x86.avx512.ptestm.d.512 3598 return _mm512_mask_test_epi32_mask (__U,__A,__B); 3599 } 3600 3601 __mmask8 test_mm512_mask_test_epi64_mask (__mmask8 __U, __m512i __A, __m512i __B) 3602 { 3603 // CHECK-LABEL: @test_mm512_mask_test_epi64_mask 3604 // CHECK: @llvm.x86.avx512.ptestm.q.512 3605 return _mm512_mask_test_epi64_mask (__U,__A,__B); 3606 } 3607 3608 __m512i test_mm512_maskz_unpackhi_epi32(__mmask16 __U, __m512i __A, __m512i __B) { 3609 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi32 3610 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 2, i32 18, i32 3, i32 19, i32 6, i32 22, i32 7, i32 23, i32 10, i32 26, i32 11, i32 27, i32 14, i32 30, i32 15, i32 31> 3611 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 3612 return _mm512_maskz_unpackhi_epi32(__U, __A, __B); 3613 } 3614 3615 __m512i test_mm512_unpackhi_epi64(__m512i __A, __m512i __B) { 3616 // CHECK-LABEL: @test_mm512_unpackhi_epi64 3617 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 3618 return _mm512_unpackhi_epi64(__A, __B); 3619 } 3620 3621 __m512i test_mm512_mask_unpackhi_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) { 3622 // CHECK-LABEL: @test_mm512_mask_unpackhi_epi64 3623 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 3624 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 3625 return _mm512_mask_unpackhi_epi64(__W, __U, __A, __B); 3626 } 3627 3628 __m512i test_mm512_maskz_unpackhi_epi64(__mmask8 __U, __m512i __A, __m512i __B) { 3629 // CHECK-LABEL: @test_mm512_maskz_unpackhi_epi64 3630 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 3631 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 3632 return _mm512_maskz_unpackhi_epi64(__U, __A, __B); 3633 } 3634 3635 __m512i test_mm512_unpacklo_epi32(__m512i __A, __m512i __B) { 3636 // CHECK-LABEL: @test_mm512_unpacklo_epi32 3637 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 3638 return _mm512_unpacklo_epi32(__A, __B); 3639 } 3640 3641 __m512i test_mm512_mask_unpacklo_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { 3642 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi32 3643 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 3644 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 3645 return _mm512_mask_unpacklo_epi32(__W, __U, __A, __B); 3646 } 3647 3648 __m512i test_mm512_maskz_unpacklo_epi32(__mmask16 __U, __m512i __A, __m512i __B) { 3649 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi32 3650 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 0, i32 16, i32 1, i32 17, i32 4, i32 20, i32 5, i32 21, i32 8, i32 24, i32 9, i32 25, i32 12, i32 28, i32 13, i32 29> 3651 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 3652 return _mm512_maskz_unpacklo_epi32(__U, __A, __B); 3653 } 3654 3655 __m512i test_mm512_unpacklo_epi64(__m512i __A, __m512i __B) { 3656 // CHECK-LABEL: @test_mm512_unpacklo_epi64 3657 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3658 return _mm512_unpacklo_epi64(__A, __B); 3659 } 3660 3661 __m512i test_mm512_mask_unpacklo_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) { 3662 // CHECK-LABEL: @test_mm512_mask_unpacklo_epi64 3663 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3664 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 3665 return _mm512_mask_unpacklo_epi64(__W, __U, __A, __B); 3666 } 3667 3668 __m512i test_mm512_maskz_unpacklo_epi64(__mmask8 __U, __m512i __A, __m512i __B) { 3669 // CHECK-LABEL: @test_mm512_maskz_unpacklo_epi64 3670 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 3671 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 3672 return _mm512_maskz_unpacklo_epi64(__U, __A, __B); 3673 } 3674 3675 __m128d test_mm_roundscale_round_sd(__m128d __A, __m128d __B) { 3676 // CHECK-LABEL: @test_mm_roundscale_round_sd 3677 // CHECK: @llvm.x86.avx512.mask.rndscale.sd 3678 return _mm_roundscale_round_sd(__A, __B, 3, _MM_FROUND_CUR_DIRECTION); 3679 } 3680 3681 __m128d test_mm_roundscale_sd(__m128d __A, __m128d __B) { 3682 // CHECK-LABEL: @test_mm_roundscale_sd 3683 // CHECK: @llvm.x86.avx512.mask.rndscale.sd 3684 return _mm_roundscale_sd(__A, __B, 3); 3685 } 3686 3687 __m128d test_mm_mask_roundscale_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 3688 // CHECK: @llvm.x86.avx512.mask.rndscale.sd 3689 return _mm_mask_roundscale_sd(__W,__U,__A,__B,3); 3690 } 3691 3692 __m128d test_mm_mask_roundscale_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 3693 // CHECK: @llvm.x86.avx512.mask.rndscale.sd 3694 return _mm_mask_roundscale_round_sd(__W,__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION); 3695 } 3696 3697 __m128d test_mm_maskz_roundscale_sd(__mmask8 __U, __m128d __A, __m128d __B){ 3698 // CHECK: @llvm.x86.avx512.mask.rndscale.sd 3699 return _mm_maskz_roundscale_sd(__U,__A,__B,3); 3700 } 3701 3702 __m128d test_mm_maskz_roundscale_round_sd(__mmask8 __U, __m128d __A, __m128d __B){ 3703 // CHECK: @llvm.x86.avx512.mask.rndscale.sd 3704 return _mm_maskz_roundscale_round_sd(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION ); 3705 } 3706 3707 __m128 test_mm_roundscale_round_ss(__m128 __A, __m128 __B) { 3708 // CHECK-LABEL: @test_mm_roundscale_round_ss 3709 // CHECK: @llvm.x86.avx512.mask.rndscale.ss 3710 return _mm_roundscale_round_ss(__A, __B, 3, _MM_FROUND_CUR_DIRECTION); 3711 } 3712 3713 __m128 test_mm_roundscale_ss(__m128 __A, __m128 __B) { 3714 // CHECK-LABEL: @test_mm_roundscale_ss 3715 // CHECK: @llvm.x86.avx512.mask.rndscale.ss 3716 return _mm_roundscale_ss(__A, __B, 3); 3717 } 3718 3719 __m128 test_mm_mask_roundscale_ss(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 3720 // CHECK-LABEL: @test_mm_mask_roundscale_ss 3721 // CHECK: @llvm.x86.avx512.mask.rndscale.ss 3722 return _mm_mask_roundscale_ss(__W,__U,__A,__B,3); 3723 } 3724 3725 __m128 test_mm_maskz_roundscale_round_ss( __mmask8 __U, __m128d __A, __m128d __B){ 3726 // CHECK-LABEL: @test_mm_maskz_roundscale_round_ss 3727 // CHECK: @llvm.x86.avx512.mask.rndscale.ss 3728 return _mm_maskz_roundscale_round_ss(__U,__A,__B,3,_MM_FROUND_CUR_DIRECTION); 3729 } 3730 3731 __m128 test_mm_maskz_roundscale_ss(__mmask8 __U, __m128d __A, __m128d __B){ 3732 // CHECK-LABEL: @test_mm_maskz_roundscale_ss 3733 // CHECK: @llvm.x86.avx512.mask.rndscale.ss 3734 return _mm_maskz_roundscale_ss(__U,__A,__B,3); 3735 } 3736 3737 __m512d test_mm512_scalef_round_pd(__m512d __A, __m512d __B) { 3738 // CHECK-LABEL: @test_mm512_scalef_round_pd 3739 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512 3740 return _mm512_scalef_round_pd(__A, __B, _MM_FROUND_CUR_DIRECTION); 3741 } 3742 3743 __m512d test_mm512_mask_scalef_round_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 3744 // CHECK-LABEL: @test_mm512_mask_scalef_round_pd 3745 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512 3746 return _mm512_mask_scalef_round_pd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3747 } 3748 3749 __m512d test_mm512_maskz_scalef_round_pd(__mmask8 __U, __m512d __A, __m512d __B) { 3750 // CHECK-LABEL: @test_mm512_maskz_scalef_round_pd 3751 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512 3752 return _mm512_maskz_scalef_round_pd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3753 } 3754 3755 __m512d test_mm512_scalef_pd(__m512d __A, __m512d __B) { 3756 // CHECK-LABEL: @test_mm512_scalef_pd 3757 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512 3758 return _mm512_scalef_pd(__A, __B); 3759 } 3760 3761 __m512d test_mm512_mask_scalef_pd(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 3762 // CHECK-LABEL: @test_mm512_mask_scalef_pd 3763 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512 3764 return _mm512_mask_scalef_pd(__W, __U, __A, __B); 3765 } 3766 3767 __m512d test_mm512_maskz_scalef_pd(__mmask8 __U, __m512d __A, __m512d __B) { 3768 // CHECK-LABEL: @test_mm512_maskz_scalef_pd 3769 // CHECK: @llvm.x86.avx512.mask.scalef.pd.512 3770 return _mm512_maskz_scalef_pd(__U, __A, __B); 3771 } 3772 3773 __m512 test_mm512_scalef_round_ps(__m512 __A, __m512 __B) { 3774 // CHECK-LABEL: @test_mm512_scalef_round_ps 3775 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512 3776 return _mm512_scalef_round_ps(__A, __B, _MM_FROUND_CUR_DIRECTION); 3777 } 3778 3779 __m512 test_mm512_mask_scalef_round_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 3780 // CHECK-LABEL: @test_mm512_mask_scalef_round_ps 3781 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512 3782 return _mm512_mask_scalef_round_ps(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3783 } 3784 3785 __m512 test_mm512_maskz_scalef_round_ps(__mmask16 __U, __m512 __A, __m512 __B) { 3786 // CHECK-LABEL: @test_mm512_maskz_scalef_round_ps 3787 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512 3788 return _mm512_maskz_scalef_round_ps(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3789 } 3790 3791 __m512 test_mm512_scalef_ps(__m512 __A, __m512 __B) { 3792 // CHECK-LABEL: @test_mm512_scalef_ps 3793 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512 3794 return _mm512_scalef_ps(__A, __B); 3795 } 3796 3797 __m512 test_mm512_mask_scalef_ps(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 3798 // CHECK-LABEL: @test_mm512_mask_scalef_ps 3799 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512 3800 return _mm512_mask_scalef_ps(__W, __U, __A, __B); 3801 } 3802 3803 __m512 test_mm512_maskz_scalef_ps(__mmask16 __U, __m512 __A, __m512 __B) { 3804 // CHECK-LABEL: @test_mm512_maskz_scalef_ps 3805 // CHECK: @llvm.x86.avx512.mask.scalef.ps.512 3806 return _mm512_maskz_scalef_ps(__U, __A, __B); 3807 } 3808 3809 __m128d test_mm_scalef_round_sd(__m128d __A, __m128d __B) { 3810 // CHECK-LABEL: @test_mm_scalef_round_sd 3811 // CHECK: @llvm.x86.avx512.mask.scalef 3812 return _mm_scalef_round_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 3813 } 3814 3815 __m128d test_mm_scalef_sd(__m128d __A, __m128d __B) { 3816 // CHECK-LABEL: @test_mm_scalef_sd 3817 // CHECK: @llvm.x86.avx512.mask.scalef 3818 return _mm_scalef_sd(__A, __B); 3819 } 3820 3821 __m128d test_mm_mask_scalef_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 3822 // CHECK-LABEL: @test_mm_mask_scalef_sd 3823 // CHECK: @llvm.x86.avx512.mask.scalef.sd 3824 return _mm_mask_scalef_sd(__W, __U, __A, __B); 3825 } 3826 3827 __m128d test_mm_mask_scalef_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 3828 // CHECK-LABEL: @test_mm_mask_scalef_round_sd 3829 // CHECK: @llvm.x86.avx512.mask.scalef.sd 3830 return _mm_mask_scalef_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3831 } 3832 3833 __m128d test_mm_maskz_scalef_sd(__mmask8 __U, __m128d __A, __m128d __B){ 3834 // CHECK-LABEL: @test_mm_maskz_scalef_sd 3835 // CHECK: @llvm.x86.avx512.mask.scalef.sd 3836 return _mm_maskz_scalef_sd(__U, __A, __B); 3837 } 3838 3839 __m128d test_mm_maskz_scalef_round_sd(__mmask8 __U, __m128d __A, __m128d __B){ 3840 // CHECK-LABEL: @test_mm_maskz_scalef_round_sd 3841 // CHECK: @llvm.x86.avx512.mask.scalef.sd 3842 return _mm_maskz_scalef_round_sd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3843 } 3844 3845 __m128 test_mm_scalef_round_ss(__m128 __A, __m128 __B) { 3846 // CHECK-LABEL: @test_mm_scalef_round_ss 3847 // CHECK: @llvm.x86.avx512.mask.scalef.ss 3848 return _mm_scalef_round_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 3849 } 3850 3851 __m128 test_mm_scalef_ss(__m128 __A, __m128 __B) { 3852 // CHECK-LABEL: @test_mm_scalef_ss 3853 // CHECK: @llvm.x86.avx512.mask.scalef.ss 3854 return _mm_scalef_ss(__A, __B); 3855 } 3856 3857 __m128 test_mm_mask_scalef_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 3858 // CHECK-LABEL: @test_mm_mask_scalef_ss 3859 // CHECK: @llvm.x86.avx512.mask.scalef.ss 3860 return _mm_mask_scalef_ss(__W, __U, __A, __B); 3861 } 3862 3863 __m128 test_mm_mask_scalef_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 3864 // CHECK-LABEL: @test_mm_mask_scalef_round_ss 3865 // CHECK: @llvm.x86.avx512.mask.scalef.ss 3866 return _mm_mask_scalef_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3867 } 3868 3869 __m128 test_mm_maskz_scalef_ss(__mmask8 __U, __m128 __A, __m128 __B){ 3870 // CHECK-LABEL: @test_mm_maskz_scalef_ss 3871 // CHECK: @llvm.x86.avx512.mask.scalef.ss 3872 return _mm_maskz_scalef_ss(__U, __A, __B); 3873 } 3874 3875 __m128 test_mm_maskz_scalef_round_ss(__mmask8 __U, __m128 __A, __m128 __B){ 3876 // CHECK-LABEL: @test_mm_maskz_scalef_round_ss 3877 // CHECK: @llvm.x86.avx512.mask.scalef.ss 3878 return _mm_maskz_scalef_round_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 3879 } 3880 3881 __m512i test_mm512_srai_epi32(__m512i __A) { 3882 // CHECK-LABEL: @test_mm512_srai_epi32 3883 // CHECK: @llvm.x86.avx512.mask.psra.di.512 3884 return _mm512_srai_epi32(__A, 5); 3885 } 3886 3887 __m512i test_mm512_mask_srai_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 3888 // CHECK-LABEL: @test_mm512_mask_srai_epi32 3889 // CHECK: @llvm.x86.avx512.mask.psra.di.512 3890 return _mm512_mask_srai_epi32(__W, __U, __A, 5); 3891 } 3892 3893 __m512i test_mm512_maskz_srai_epi32(__mmask16 __U, __m512i __A) { 3894 // CHECK-LABEL: @test_mm512_maskz_srai_epi32 3895 // CHECK: @llvm.x86.avx512.mask.psra.di.512 3896 return _mm512_maskz_srai_epi32(__U, __A, 5); 3897 } 3898 3899 __m512i test_mm512_srai_epi64(__m512i __A) { 3900 // CHECK-LABEL: @test_mm512_srai_epi64 3901 // CHECK: @llvm.x86.avx512.mask.psra.qi.512 3902 return _mm512_srai_epi64(__A, 5); 3903 } 3904 3905 __m512i test_mm512_mask_srai_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 3906 // CHECK-LABEL: @test_mm512_mask_srai_epi64 3907 // CHECK: @llvm.x86.avx512.mask.psra.qi.512 3908 return _mm512_mask_srai_epi64(__W, __U, __A, 5); 3909 } 3910 3911 __m512i test_mm512_maskz_srai_epi64(__mmask8 __U, __m512i __A) { 3912 // CHECK-LABEL: @test_mm512_maskz_srai_epi64 3913 // CHECK: @llvm.x86.avx512.mask.psra.qi.512 3914 return _mm512_maskz_srai_epi64(__U, __A, 5); 3915 } 3916 3917 __m512i test_mm512_sll_epi32(__m512i __A, __m128i __B) { 3918 // CHECK-LABEL: @test_mm512_sll_epi32 3919 // CHECK: @llvm.x86.avx512.mask.psll.d 3920 return _mm512_sll_epi32(__A, __B); 3921 } 3922 3923 __m512i test_mm512_mask_sll_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) { 3924 // CHECK-LABEL: @test_mm512_mask_sll_epi32 3925 // CHECK: @llvm.x86.avx512.mask.psll.d 3926 return _mm512_mask_sll_epi32(__W, __U, __A, __B); 3927 } 3928 3929 __m512i test_mm512_maskz_sll_epi32(__mmask16 __U, __m512i __A, __m128i __B) { 3930 // CHECK-LABEL: @test_mm512_maskz_sll_epi32 3931 // CHECK: @llvm.x86.avx512.mask.psll.d 3932 return _mm512_maskz_sll_epi32(__U, __A, __B); 3933 } 3934 3935 __m512i test_mm512_sll_epi64(__m512i __A, __m128i __B) { 3936 // CHECK-LABEL: @test_mm512_sll_epi64 3937 // CHECK: @llvm.x86.avx512.mask.psll.q 3938 return _mm512_sll_epi64(__A, __B); 3939 } 3940 3941 __m512i test_mm512_mask_sll_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) { 3942 // CHECK-LABEL: @test_mm512_mask_sll_epi64 3943 // CHECK: @llvm.x86.avx512.mask.psll.q 3944 return _mm512_mask_sll_epi64(__W, __U, __A, __B); 3945 } 3946 3947 __m512i test_mm512_maskz_sll_epi64(__mmask8 __U, __m512i __A, __m128i __B) { 3948 // CHECK-LABEL: @test_mm512_maskz_sll_epi64 3949 // CHECK: @llvm.x86.avx512.mask.psll.q 3950 return _mm512_maskz_sll_epi64(__U, __A, __B); 3951 } 3952 3953 __m512i test_mm512_sllv_epi32(__m512i __X, __m512i __Y) { 3954 // CHECK-LABEL: @test_mm512_sllv_epi32 3955 // CHECK: @llvm.x86.avx512.mask.psllv.d 3956 return _mm512_sllv_epi32(__X, __Y); 3957 } 3958 3959 __m512i test_mm512_mask_sllv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) { 3960 // CHECK-LABEL: @test_mm512_mask_sllv_epi32 3961 // CHECK: @llvm.x86.avx512.mask.psllv.d 3962 return _mm512_mask_sllv_epi32(__W, __U, __X, __Y); 3963 } 3964 3965 __m512i test_mm512_maskz_sllv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) { 3966 // CHECK-LABEL: @test_mm512_maskz_sllv_epi32 3967 // CHECK: @llvm.x86.avx512.mask.psllv.d 3968 return _mm512_maskz_sllv_epi32(__U, __X, __Y); 3969 } 3970 3971 __m512i test_mm512_sllv_epi64(__m512i __X, __m512i __Y) { 3972 // CHECK-LABEL: @test_mm512_sllv_epi64 3973 // CHECK: @llvm.x86.avx512.mask.psllv.q 3974 return _mm512_sllv_epi64(__X, __Y); 3975 } 3976 3977 __m512i test_mm512_mask_sllv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) { 3978 // CHECK-LABEL: @test_mm512_mask_sllv_epi64 3979 // CHECK: @llvm.x86.avx512.mask.psllv.q 3980 return _mm512_mask_sllv_epi64(__W, __U, __X, __Y); 3981 } 3982 3983 __m512i test_mm512_maskz_sllv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) { 3984 // CHECK-LABEL: @test_mm512_maskz_sllv_epi64 3985 // CHECK: @llvm.x86.avx512.mask.psllv.q 3986 return _mm512_maskz_sllv_epi64(__U, __X, __Y); 3987 } 3988 3989 __m512i test_mm512_sra_epi32(__m512i __A, __m128i __B) { 3990 // CHECK-LABEL: @test_mm512_sra_epi32 3991 // CHECK: @llvm.x86.avx512.mask.psra.d 3992 return _mm512_sra_epi32(__A, __B); 3993 } 3994 3995 __m512i test_mm512_mask_sra_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) { 3996 // CHECK-LABEL: @test_mm512_mask_sra_epi32 3997 // CHECK: @llvm.x86.avx512.mask.psra.d 3998 return _mm512_mask_sra_epi32(__W, __U, __A, __B); 3999 } 4000 4001 __m512i test_mm512_maskz_sra_epi32(__mmask16 __U, __m512i __A, __m128i __B) { 4002 // CHECK-LABEL: @test_mm512_maskz_sra_epi32 4003 // CHECK: @llvm.x86.avx512.mask.psra.d 4004 return _mm512_maskz_sra_epi32(__U, __A, __B); 4005 } 4006 4007 __m512i test_mm512_sra_epi64(__m512i __A, __m128i __B) { 4008 // CHECK-LABEL: @test_mm512_sra_epi64 4009 // CHECK: @llvm.x86.avx512.mask.psra.q 4010 return _mm512_sra_epi64(__A, __B); 4011 } 4012 4013 __m512i test_mm512_mask_sra_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) { 4014 // CHECK-LABEL: @test_mm512_mask_sra_epi64 4015 // CHECK: @llvm.x86.avx512.mask.psra.q 4016 return _mm512_mask_sra_epi64(__W, __U, __A, __B); 4017 } 4018 4019 __m512i test_mm512_maskz_sra_epi64(__mmask8 __U, __m512i __A, __m128i __B) { 4020 // CHECK-LABEL: @test_mm512_maskz_sra_epi64 4021 // CHECK: @llvm.x86.avx512.mask.psra.q 4022 return _mm512_maskz_sra_epi64(__U, __A, __B); 4023 } 4024 4025 __m512i test_mm512_srav_epi32(__m512i __X, __m512i __Y) { 4026 // CHECK-LABEL: @test_mm512_srav_epi32 4027 // CHECK: @llvm.x86.avx512.mask.psrav.d 4028 return _mm512_srav_epi32(__X, __Y); 4029 } 4030 4031 __m512i test_mm512_mask_srav_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) { 4032 // CHECK-LABEL: @test_mm512_mask_srav_epi32 4033 // CHECK: @llvm.x86.avx512.mask.psrav.d 4034 return _mm512_mask_srav_epi32(__W, __U, __X, __Y); 4035 } 4036 4037 __m512i test_mm512_maskz_srav_epi32(__mmask16 __U, __m512i __X, __m512i __Y) { 4038 // CHECK-LABEL: @test_mm512_maskz_srav_epi32 4039 // CHECK: @llvm.x86.avx512.mask.psrav.d 4040 return _mm512_maskz_srav_epi32(__U, __X, __Y); 4041 } 4042 4043 __m512i test_mm512_srav_epi64(__m512i __X, __m512i __Y) { 4044 // CHECK-LABEL: @test_mm512_srav_epi64 4045 // CHECK: @llvm.x86.avx512.mask.psrav.q 4046 return _mm512_srav_epi64(__X, __Y); 4047 } 4048 4049 __m512i test_mm512_mask_srav_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) { 4050 // CHECK-LABEL: @test_mm512_mask_srav_epi64 4051 // CHECK: @llvm.x86.avx512.mask.psrav.q 4052 return _mm512_mask_srav_epi64(__W, __U, __X, __Y); 4053 } 4054 4055 __m512i test_mm512_maskz_srav_epi64(__mmask8 __U, __m512i __X, __m512i __Y) { 4056 // CHECK-LABEL: @test_mm512_maskz_srav_epi64 4057 // CHECK: @llvm.x86.avx512.mask.psrav.q 4058 return _mm512_maskz_srav_epi64(__U, __X, __Y); 4059 } 4060 4061 __m512i test_mm512_srl_epi32(__m512i __A, __m128i __B) { 4062 // CHECK-LABEL: @test_mm512_srl_epi32 4063 // CHECK: @llvm.x86.avx512.mask.psrl.d 4064 return _mm512_srl_epi32(__A, __B); 4065 } 4066 4067 __m512i test_mm512_mask_srl_epi32(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) { 4068 // CHECK-LABEL: @test_mm512_mask_srl_epi32 4069 // CHECK: @llvm.x86.avx512.mask.psrl.d 4070 return _mm512_mask_srl_epi32(__W, __U, __A, __B); 4071 } 4072 4073 __m512i test_mm512_maskz_srl_epi32(__mmask16 __U, __m512i __A, __m128i __B) { 4074 // CHECK-LABEL: @test_mm512_maskz_srl_epi32 4075 // CHECK: @llvm.x86.avx512.mask.psrl.d 4076 return _mm512_maskz_srl_epi32(__U, __A, __B); 4077 } 4078 4079 __m512i test_mm512_srl_epi64(__m512i __A, __m128i __B) { 4080 // CHECK-LABEL: @test_mm512_srl_epi64 4081 // CHECK: @llvm.x86.avx512.mask.psrl.q 4082 return _mm512_srl_epi64(__A, __B); 4083 } 4084 4085 __m512i test_mm512_mask_srl_epi64(__m512i __W, __mmask8 __U, __m512i __A, __m128i __B) { 4086 // CHECK-LABEL: @test_mm512_mask_srl_epi64 4087 // CHECK: @llvm.x86.avx512.mask.psrl.q 4088 return _mm512_mask_srl_epi64(__W, __U, __A, __B); 4089 } 4090 4091 __m512i test_mm512_maskz_srl_epi64(__mmask8 __U, __m512i __A, __m128i __B) { 4092 // CHECK-LABEL: @test_mm512_maskz_srl_epi64 4093 // CHECK: @llvm.x86.avx512.mask.psrl.q 4094 return _mm512_maskz_srl_epi64(__U, __A, __B); 4095 } 4096 4097 __m512i test_mm512_srlv_epi32(__m512i __X, __m512i __Y) { 4098 // CHECK-LABEL: @test_mm512_srlv_epi32 4099 // CHECK: @llvm.x86.avx512.mask.psrlv.d 4100 return _mm512_srlv_epi32(__X, __Y); 4101 } 4102 4103 __m512i test_mm512_mask_srlv_epi32(__m512i __W, __mmask16 __U, __m512i __X, __m512i __Y) { 4104 // CHECK-LABEL: @test_mm512_mask_srlv_epi32 4105 // CHECK: @llvm.x86.avx512.mask.psrlv.d 4106 return _mm512_mask_srlv_epi32(__W, __U, __X, __Y); 4107 } 4108 4109 __m512i test_mm512_maskz_srlv_epi32(__mmask16 __U, __m512i __X, __m512i __Y) { 4110 // CHECK-LABEL: @test_mm512_maskz_srlv_epi32 4111 // CHECK: @llvm.x86.avx512.mask.psrlv.d 4112 return _mm512_maskz_srlv_epi32(__U, __X, __Y); 4113 } 4114 4115 __m512i test_mm512_srlv_epi64(__m512i __X, __m512i __Y) { 4116 // CHECK-LABEL: @test_mm512_srlv_epi64 4117 // CHECK: @llvm.x86.avx512.mask.psrlv.q 4118 return _mm512_srlv_epi64(__X, __Y); 4119 } 4120 4121 __m512i test_mm512_mask_srlv_epi64(__m512i __W, __mmask8 __U, __m512i __X, __m512i __Y) { 4122 // CHECK-LABEL: @test_mm512_mask_srlv_epi64 4123 // CHECK: @llvm.x86.avx512.mask.psrlv.q 4124 return _mm512_mask_srlv_epi64(__W, __U, __X, __Y); 4125 } 4126 4127 __m512i test_mm512_maskz_srlv_epi64(__mmask8 __U, __m512i __X, __m512i __Y) { 4128 // CHECK-LABEL: @test_mm512_maskz_srlv_epi64 4129 // CHECK: @llvm.x86.avx512.mask.psrlv.q 4130 return _mm512_maskz_srlv_epi64(__U, __X, __Y); 4131 } 4132 4133 __m512i test_mm512_ternarylogic_epi32(__m512i __A, __m512i __B, __m512i __C) { 4134 // CHECK-LABEL: @test_mm512_ternarylogic_epi32 4135 // CHECK: @llvm.x86.avx512.mask.pternlog.d.512 4136 return _mm512_ternarylogic_epi32(__A, __B, __C, 4); 4137 } 4138 4139 __m512i test_mm512_mask_ternarylogic_epi32(__m512i __A, __mmask16 __U, __m512i __B, __m512i __C) { 4140 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi32 4141 // CHECK: @llvm.x86.avx512.mask.pternlog.d.512 4142 return _mm512_mask_ternarylogic_epi32(__A, __U, __B, __C, 4); 4143 } 4144 4145 __m512i test_mm512_maskz_ternarylogic_epi32(__mmask16 __U, __m512i __A, __m512i __B, __m512i __C) { 4146 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi32 4147 // CHECK: @llvm.x86.avx512.maskz.pternlog.d.512 4148 return _mm512_maskz_ternarylogic_epi32(__U, __A, __B, __C, 4); 4149 } 4150 4151 __m512i test_mm512_ternarylogic_epi64(__m512i __A, __m512i __B, __m512i __C) { 4152 // CHECK-LABEL: @test_mm512_ternarylogic_epi64 4153 // CHECK: @llvm.x86.avx512.mask.pternlog.q.512 4154 return _mm512_ternarylogic_epi64(__A, __B, __C, 4); 4155 } 4156 4157 __m512i test_mm512_mask_ternarylogic_epi64(__m512i __A, __mmask8 __U, __m512i __B, __m512i __C) { 4158 // CHECK-LABEL: @test_mm512_mask_ternarylogic_epi64 4159 // CHECK: @llvm.x86.avx512.mask.pternlog.q.512 4160 return _mm512_mask_ternarylogic_epi64(__A, __U, __B, __C, 4); 4161 } 4162 4163 __m512i test_mm512_maskz_ternarylogic_epi64(__mmask8 __U, __m512i __A, __m512i __B, __m512i __C) { 4164 // CHECK-LABEL: @test_mm512_maskz_ternarylogic_epi64 4165 // CHECK: @llvm.x86.avx512.maskz.pternlog.q.512 4166 return _mm512_maskz_ternarylogic_epi64(__U, __A, __B, __C, 4); 4167 } 4168 4169 __m512 test_mm512_shuffle_f32x4(__m512 __A, __m512 __B) { 4170 // CHECK-LABEL: @test_mm512_shuffle_f32x4 4171 // CHECK: @llvm.x86.avx512.mask.shuf.f32x4 4172 return _mm512_shuffle_f32x4(__A, __B, 4); 4173 } 4174 4175 __m512 test_mm512_mask_shuffle_f32x4(__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) { 4176 // CHECK-LABEL: @test_mm512_mask_shuffle_f32x4 4177 // CHECK: @llvm.x86.avx512.mask.shuf.f32x4 4178 return _mm512_mask_shuffle_f32x4(__W, __U, __A, __B, 4); 4179 } 4180 4181 __m512 test_mm512_maskz_shuffle_f32x4(__mmask16 __U, __m512 __A, __m512 __B) { 4182 // CHECK-LABEL: @test_mm512_maskz_shuffle_f32x4 4183 // CHECK: @llvm.x86.avx512.mask.shuf.f32x4 4184 return _mm512_maskz_shuffle_f32x4(__U, __A, __B, 4); 4185 } 4186 4187 __m512d test_mm512_shuffle_f64x2(__m512d __A, __m512d __B) { 4188 // CHECK-LABEL: @test_mm512_shuffle_f64x2 4189 // CHECK: @llvm.x86.avx512.mask.shuf.f64x2 4190 return _mm512_shuffle_f64x2(__A, __B, 4); 4191 } 4192 4193 __m512d test_mm512_mask_shuffle_f64x2(__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) { 4194 // CHECK-LABEL: @test_mm512_mask_shuffle_f64x2 4195 // CHECK: @llvm.x86.avx512.mask.shuf.f64x2 4196 return _mm512_mask_shuffle_f64x2(__W, __U, __A, __B, 4); 4197 } 4198 4199 __m512d test_mm512_maskz_shuffle_f64x2(__mmask8 __U, __m512d __A, __m512d __B) { 4200 // CHECK-LABEL: @test_mm512_maskz_shuffle_f64x2 4201 // CHECK: @llvm.x86.avx512.mask.shuf.f64x2 4202 return _mm512_maskz_shuffle_f64x2(__U, __A, __B, 4); 4203 } 4204 4205 __m512i test_mm512_shuffle_i32x4(__m512i __A, __m512i __B) { 4206 // CHECK-LABEL: @test_mm512_shuffle_i32x4 4207 // CHECK: @llvm.x86.avx512.mask.shuf.i32x4 4208 return _mm512_shuffle_i32x4(__A, __B, 4); 4209 } 4210 4211 __m512i test_mm512_mask_shuffle_i32x4(__m512i __W, __mmask16 __U, __m512i __A, __m512i __B) { 4212 // CHECK-LABEL: @test_mm512_mask_shuffle_i32x4 4213 // CHECK: @llvm.x86.avx512.mask.shuf.i32x4 4214 return _mm512_mask_shuffle_i32x4(__W, __U, __A, __B, 4); 4215 } 4216 4217 __m512i test_mm512_maskz_shuffle_i32x4(__mmask16 __U, __m512i __A, __m512i __B) { 4218 // CHECK-LABEL: @test_mm512_maskz_shuffle_i32x4 4219 // CHECK: @llvm.x86.avx512.mask.shuf.i32x4 4220 return _mm512_maskz_shuffle_i32x4(__U, __A, __B, 4); 4221 } 4222 4223 __m512i test_mm512_shuffle_i64x2(__m512i __A, __m512i __B) { 4224 // CHECK-LABEL: @test_mm512_shuffle_i64x2 4225 // CHECK: @llvm.x86.avx512.mask.shuf.i64x2 4226 return _mm512_shuffle_i64x2(__A, __B, 4); 4227 } 4228 4229 __m512i test_mm512_mask_shuffle_i64x2(__m512i __W, __mmask8 __U, __m512i __A, __m512i __B) { 4230 // CHECK-LABEL: @test_mm512_mask_shuffle_i64x2 4231 // CHECK: @llvm.x86.avx512.mask.shuf.i64x2 4232 return _mm512_mask_shuffle_i64x2(__W, __U, __A, __B, 4); 4233 } 4234 4235 __m512i test_mm512_maskz_shuffle_i64x2(__mmask8 __U, __m512i __A, __m512i __B) { 4236 // CHECK-LABEL: @test_mm512_maskz_shuffle_i64x2 4237 // CHECK: @llvm.x86.avx512.mask.shuf.i64x2 4238 return _mm512_maskz_shuffle_i64x2(__U, __A, __B, 4); 4239 } 4240 4241 __m512d test_mm512_shuffle_pd(__m512d __M, __m512d __V) { 4242 // CHECK-LABEL: @test_mm512_shuffle_pd 4243 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14> 4244 return _mm512_shuffle_pd(__M, __V, 4); 4245 } 4246 4247 __m512d test_mm512_mask_shuffle_pd(__m512d __W, __mmask8 __U, __m512d __M, __m512d __V) { 4248 // CHECK-LABEL: @test_mm512_mask_shuffle_pd 4249 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14> 4250 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 4251 return _mm512_mask_shuffle_pd(__W, __U, __M, __V, 4); 4252 } 4253 4254 __m512d test_mm512_maskz_shuffle_pd(__mmask8 __U, __m512d __M, __m512d __V) { 4255 // CHECK-LABEL: @test_mm512_maskz_shuffle_pd 4256 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x i32> <i32 0, i32 8, i32 3, i32 10, i32 4, i32 12, i32 6, i32 14> 4257 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 4258 return _mm512_maskz_shuffle_pd(__U, __M, __V, 4); 4259 } 4260 4261 __m512 test_mm512_shuffle_ps(__m512 __M, __m512 __V) { 4262 // CHECK-LABEL: @test_mm512_shuffle_ps 4263 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28> 4264 return _mm512_shuffle_ps(__M, __V, 4); 4265 } 4266 4267 __m512 test_mm512_mask_shuffle_ps(__m512 __W, __mmask16 __U, __m512 __M, __m512 __V) { 4268 // CHECK-LABEL: @test_mm512_mask_shuffle_ps 4269 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28> 4270 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 4271 return _mm512_mask_shuffle_ps(__W, __U, __M, __V, 4); 4272 } 4273 4274 __m512 test_mm512_maskz_shuffle_ps(__mmask16 __U, __m512 __M, __m512 __V) { 4275 // CHECK-LABEL: @test_mm512_maskz_shuffle_ps 4276 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 16, i32 16, i32 4, i32 5, i32 20, i32 20, i32 8, i32 9, i32 24, i32 24, i32 12, i32 13, i32 28, i32 28> 4277 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 4278 return _mm512_maskz_shuffle_ps(__U, __M, __V, 4); 4279 } 4280 4281 __m128d test_mm_sqrt_round_sd(__m128d __A, __m128d __B) { 4282 // CHECK-LABEL: @test_mm_sqrt_round_sd 4283 // CHECK: @llvm.x86.avx512.mask.sqrt.sd 4284 return _mm_sqrt_round_sd(__A, __B, 4); 4285 } 4286 4287 __m128d test_mm_mask_sqrt_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 4288 // CHECK: @llvm.x86.avx512.mask.sqrt.sd 4289 return _mm_mask_sqrt_sd(__W,__U,__A,__B); 4290 } 4291 4292 __m128d test_mm_mask_sqrt_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 4293 // CHECK: @llvm.x86.avx512.mask.sqrt.sd 4294 return _mm_mask_sqrt_round_sd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 4295 } 4296 4297 __m128d test_mm_maskz_sqrt_sd(__mmask8 __U, __m128d __A, __m128d __B){ 4298 // CHECK: @llvm.x86.avx512.mask.sqrt.sd 4299 return _mm_maskz_sqrt_sd(__U,__A,__B); 4300 } 4301 4302 __m128d test_mm_maskz_sqrt_round_sd(__mmask8 __U, __m128d __A, __m128d __B){ 4303 // CHECK: @llvm.x86.avx512.mask.sqrt.sd 4304 return _mm_maskz_sqrt_round_sd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 4305 } 4306 4307 __m128 test_mm_sqrt_round_ss(__m128 __A, __m128 __B) { 4308 // CHECK-LABEL: @test_mm_sqrt_round_ss 4309 // CHECK: @llvm.x86.avx512.mask.sqrt.ss 4310 return _mm_sqrt_round_ss(__A, __B, 4); 4311 } 4312 4313 __m128 test_mm_mask_sqrt_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 4314 // CHECK: @llvm.x86.avx512.mask.sqrt.ss 4315 return _mm_mask_sqrt_ss(__W,__U,__A,__B); 4316 } 4317 4318 __m128 test_mm_mask_sqrt_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 4319 // CHECK: @llvm.x86.avx512.mask.sqrt.ss 4320 return _mm_mask_sqrt_round_ss(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 4321 } 4322 4323 __m128 test_mm_maskz_sqrt_ss(__mmask8 __U, __m128 __A, __m128 __B){ 4324 // CHECK: @llvm.x86.avx512.mask.sqrt.ss 4325 return _mm_maskz_sqrt_ss(__U,__A,__B); 4326 } 4327 4328 __m128 test_mm_maskz_sqrt_round_ss(__mmask8 __U, __m128 __A, __m128 __B){ 4329 // CHECK: @llvm.x86.avx512.mask.sqrt.ss 4330 return _mm_maskz_sqrt_round_ss(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 4331 } 4332 4333 __m512 test_mm512_broadcast_f32x4(__m128 __A) { 4334 // CHECK-LABEL: @test_mm512_broadcast_f32x4 4335 // CHECK: @llvm.x86.avx512.mask.broadcastf32x4 4336 return _mm512_broadcast_f32x4(__A); 4337 } 4338 4339 __m512 test_mm512_mask_broadcast_f32x4(__m512 __O, __mmask16 __M, __m128 __A) { 4340 // CHECK-LABEL: @test_mm512_mask_broadcast_f32x4 4341 // CHECK: @llvm.x86.avx512.mask.broadcastf32x4 4342 return _mm512_mask_broadcast_f32x4(__O, __M, __A); 4343 } 4344 4345 __m512 test_mm512_maskz_broadcast_f32x4(__mmask16 __M, __m128 __A) { 4346 // CHECK-LABEL: @test_mm512_maskz_broadcast_f32x4 4347 // CHECK: @llvm.x86.avx512.mask.broadcastf32x4 4348 return _mm512_maskz_broadcast_f32x4(__M, __A); 4349 } 4350 4351 __m512d test_mm512_broadcast_f64x4(__m256d __A) { 4352 // CHECK-LABEL: @test_mm512_broadcast_f64x4 4353 // CHECK: @llvm.x86.avx512.mask.broadcastf64x4 4354 return _mm512_broadcast_f64x4(__A); 4355 } 4356 4357 __m512d test_mm512_mask_broadcast_f64x4(__m512d __O, __mmask8 __M, __m256d __A) { 4358 // CHECK-LABEL: @test_mm512_mask_broadcast_f64x4 4359 // CHECK: @llvm.x86.avx512.mask.broadcastf64x4 4360 return _mm512_mask_broadcast_f64x4(__O, __M, __A); 4361 } 4362 4363 __m512d test_mm512_maskz_broadcast_f64x4(__mmask8 __M, __m256d __A) { 4364 // CHECK-LABEL: @test_mm512_maskz_broadcast_f64x4 4365 // CHECK: @llvm.x86.avx512.mask.broadcastf64x4 4366 return _mm512_maskz_broadcast_f64x4(__M, __A); 4367 } 4368 4369 __m512i test_mm512_broadcast_i32x4(__m128i __A) { 4370 // CHECK-LABEL: @test_mm512_broadcast_i32x4 4371 // CHECK: @llvm.x86.avx512.mask.broadcasti32x4 4372 return _mm512_broadcast_i32x4(__A); 4373 } 4374 4375 __m512i test_mm512_mask_broadcast_i32x4(__m512i __O, __mmask16 __M, __m128i __A) { 4376 // CHECK-LABEL: @test_mm512_mask_broadcast_i32x4 4377 // CHECK: @llvm.x86.avx512.mask.broadcasti32x4 4378 return _mm512_mask_broadcast_i32x4(__O, __M, __A); 4379 } 4380 4381 __m512i test_mm512_maskz_broadcast_i32x4(__mmask16 __M, __m128i __A) { 4382 // CHECK-LABEL: @test_mm512_maskz_broadcast_i32x4 4383 // CHECK: @llvm.x86.avx512.mask.broadcasti32x4 4384 return _mm512_maskz_broadcast_i32x4(__M, __A); 4385 } 4386 4387 __m512i test_mm512_broadcast_i64x4(__m256i __A) { 4388 // CHECK-LABEL: @test_mm512_broadcast_i64x4 4389 // CHECK: @llvm.x86.avx512.mask.broadcasti64x4 4390 return _mm512_broadcast_i64x4(__A); 4391 } 4392 4393 __m512i test_mm512_mask_broadcast_i64x4(__m512i __O, __mmask8 __M, __m256i __A) { 4394 // CHECK-LABEL: @test_mm512_mask_broadcast_i64x4 4395 // CHECK: @llvm.x86.avx512.mask.broadcasti64x4 4396 return _mm512_mask_broadcast_i64x4(__O, __M, __A); 4397 } 4398 4399 __m512i test_mm512_maskz_broadcast_i64x4(__mmask8 __M, __m256i __A) { 4400 // CHECK-LABEL: @test_mm512_maskz_broadcast_i64x4 4401 // CHECK: @llvm.x86.avx512.mask.broadcasti64x4 4402 return _mm512_maskz_broadcast_i64x4(__M, __A); 4403 } 4404 4405 __m512d test_mm512_broadcastsd_pd(__m128d __A) { 4406 // CHECK-LABEL: @test_mm512_broadcastsd_pd 4407 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <8 x i32> zeroinitializer 4408 return _mm512_broadcastsd_pd(__A); 4409 } 4410 4411 __m512d test_mm512_mask_broadcastsd_pd(__m512d __O, __mmask8 __M, __m128d __A) { 4412 // CHECK-LABEL: @test_mm512_mask_broadcastsd_pd 4413 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <8 x i32> zeroinitializer 4414 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 4415 return _mm512_mask_broadcastsd_pd(__O, __M, __A); 4416 } 4417 4418 __m512d test_mm512_maskz_broadcastsd_pd(__mmask8 __M, __m128d __A) { 4419 // CHECK-LABEL: @test_mm512_maskz_broadcastsd_pd 4420 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> undef, <8 x i32> zeroinitializer 4421 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 4422 return _mm512_maskz_broadcastsd_pd(__M, __A); 4423 } 4424 4425 __m512 test_mm512_broadcastss_ps(__m128 __A) { 4426 // CHECK-LABEL: @test_mm512_broadcastss_ps 4427 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <16 x i32> zeroinitializer 4428 return _mm512_broadcastss_ps(__A); 4429 } 4430 4431 __m512 test_mm512_mask_broadcastss_ps(__m512 __O, __mmask16 __M, __m128 __A) { 4432 // CHECK-LABEL: @test_mm512_mask_broadcastss_ps 4433 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <16 x i32> zeroinitializer 4434 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 4435 return _mm512_mask_broadcastss_ps(__O, __M, __A); 4436 } 4437 4438 __m512 test_mm512_maskz_broadcastss_ps(__mmask16 __M, __m128 __A) { 4439 // CHECK-LABEL: @test_mm512_maskz_broadcastss_ps 4440 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> undef, <16 x i32> zeroinitializer 4441 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 4442 return _mm512_maskz_broadcastss_ps(__M, __A); 4443 } 4444 4445 __m512i test_mm512_broadcastd_epi32(__m128i __A) { 4446 // CHECK-LABEL: @test_mm512_broadcastd_epi32 4447 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <16 x i32> zeroinitializer 4448 return _mm512_broadcastd_epi32(__A); 4449 } 4450 4451 __m512i test_mm512_mask_broadcastd_epi32(__m512i __O, __mmask16 __M, __m128i __A) { 4452 // CHECK-LABEL: @test_mm512_mask_broadcastd_epi32 4453 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <16 x i32> zeroinitializer 4454 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 4455 return _mm512_mask_broadcastd_epi32(__O, __M, __A); 4456 } 4457 4458 __m512i test_mm512_maskz_broadcastd_epi32(__mmask16 __M, __m128i __A) { 4459 // CHECK-LABEL: @test_mm512_maskz_broadcastd_epi32 4460 // CHECK: shufflevector <4 x i32> %{{.*}}, <4 x i32> undef, <16 x i32> zeroinitializer 4461 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 4462 return _mm512_maskz_broadcastd_epi32(__M, __A); 4463 } 4464 4465 __m512i test_mm512_broadcastq_epi64(__m128i __A) { 4466 // CHECK-LABEL: @test_mm512_broadcastq_epi64 4467 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <8 x i32> zeroinitializer 4468 return _mm512_broadcastq_epi64(__A); 4469 } 4470 4471 __m512i test_mm512_mask_broadcastq_epi64(__m512i __O, __mmask8 __M, __m128i __A) { 4472 // CHECK-LABEL: @test_mm512_mask_broadcastq_epi64 4473 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <8 x i32> zeroinitializer 4474 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 4475 return _mm512_mask_broadcastq_epi64(__O, __M, __A); 4476 } 4477 4478 __m512i test_mm512_maskz_broadcastq_epi64(__mmask8 __M, __m128i __A) { 4479 // CHECK-LABEL: @test_mm512_maskz_broadcastq_epi64 4480 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> undef, <8 x i32> zeroinitializer 4481 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 4482 return _mm512_maskz_broadcastq_epi64(__M, __A); 4483 } 4484 4485 __m128i test_mm512_cvtsepi32_epi8(__m512i __A) { 4486 // CHECK-LABEL: @test_mm512_cvtsepi32_epi8 4487 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512 4488 return _mm512_cvtsepi32_epi8(__A); 4489 } 4490 4491 __m128i test_mm512_mask_cvtsepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) { 4492 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi8 4493 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512 4494 return _mm512_mask_cvtsepi32_epi8(__O, __M, __A); 4495 } 4496 4497 __m128i test_mm512_maskz_cvtsepi32_epi8(__mmask16 __M, __m512i __A) { 4498 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi8 4499 // CHECK: @llvm.x86.avx512.mask.pmovs.db.512 4500 return _mm512_maskz_cvtsepi32_epi8(__M, __A); 4501 } 4502 4503 void test_mm512_mask_cvtsepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) { 4504 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi8 4505 // CHECK: @llvm.x86.avx512.mask.pmovs.db.mem.512 4506 return _mm512_mask_cvtsepi32_storeu_epi8(__P, __M, __A); 4507 } 4508 4509 __m256i test_mm512_cvtsepi32_epi16(__m512i __A) { 4510 // CHECK-LABEL: @test_mm512_cvtsepi32_epi16 4511 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512 4512 return _mm512_cvtsepi32_epi16(__A); 4513 } 4514 4515 __m256i test_mm512_mask_cvtsepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) { 4516 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_epi16 4517 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512 4518 return _mm512_mask_cvtsepi32_epi16(__O, __M, __A); 4519 } 4520 4521 __m256i test_mm512_maskz_cvtsepi32_epi16(__mmask16 __M, __m512i __A) { 4522 // CHECK-LABEL: @test_mm512_maskz_cvtsepi32_epi16 4523 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.512 4524 return _mm512_maskz_cvtsepi32_epi16(__M, __A); 4525 } 4526 4527 void test_mm512_mask_cvtsepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) { 4528 // CHECK-LABEL: @test_mm512_mask_cvtsepi32_storeu_epi16 4529 // CHECK: @llvm.x86.avx512.mask.pmovs.dw.mem.512 4530 return _mm512_mask_cvtsepi32_storeu_epi16(__P, __M, __A); 4531 } 4532 4533 __m128i test_mm512_cvtsepi64_epi8(__m512i __A) { 4534 // CHECK-LABEL: @test_mm512_cvtsepi64_epi8 4535 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512 4536 return _mm512_cvtsepi64_epi8(__A); 4537 } 4538 4539 __m128i test_mm512_mask_cvtsepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) { 4540 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi8 4541 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512 4542 return _mm512_mask_cvtsepi64_epi8(__O, __M, __A); 4543 } 4544 4545 __m128i test_mm512_maskz_cvtsepi64_epi8(__mmask8 __M, __m512i __A) { 4546 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi8 4547 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.512 4548 return _mm512_maskz_cvtsepi64_epi8(__M, __A); 4549 } 4550 4551 void test_mm512_mask_cvtsepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) { 4552 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi8 4553 // CHECK: @llvm.x86.avx512.mask.pmovs.qb.mem.512 4554 return _mm512_mask_cvtsepi64_storeu_epi8(__P, __M, __A); 4555 } 4556 4557 __m256i test_mm512_cvtsepi64_epi32(__m512i __A) { 4558 // CHECK-LABEL: @test_mm512_cvtsepi64_epi32 4559 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512 4560 return _mm512_cvtsepi64_epi32(__A); 4561 } 4562 4563 __m256i test_mm512_mask_cvtsepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) { 4564 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi32 4565 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512 4566 return _mm512_mask_cvtsepi64_epi32(__O, __M, __A); 4567 } 4568 4569 __m256i test_mm512_maskz_cvtsepi64_epi32(__mmask8 __M, __m512i __A) { 4570 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi32 4571 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.512 4572 return _mm512_maskz_cvtsepi64_epi32(__M, __A); 4573 } 4574 4575 void test_mm512_mask_cvtsepi64_storeu_epi32(void *__P, __mmask8 __M, __m512i __A) { 4576 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi32 4577 // CHECK: @llvm.x86.avx512.mask.pmovs.qd.mem.512 4578 return _mm512_mask_cvtsepi64_storeu_epi32(__P, __M, __A); 4579 } 4580 4581 __m128i test_mm512_cvtsepi64_epi16(__m512i __A) { 4582 // CHECK-LABEL: @test_mm512_cvtsepi64_epi16 4583 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512 4584 return _mm512_cvtsepi64_epi16(__A); 4585 } 4586 4587 __m128i test_mm512_mask_cvtsepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) { 4588 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_epi16 4589 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512 4590 return _mm512_mask_cvtsepi64_epi16(__O, __M, __A); 4591 } 4592 4593 __m128i test_mm512_maskz_cvtsepi64_epi16(__mmask8 __M, __m512i __A) { 4594 // CHECK-LABEL: @test_mm512_maskz_cvtsepi64_epi16 4595 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.512 4596 return _mm512_maskz_cvtsepi64_epi16(__M, __A); 4597 } 4598 4599 void test_mm512_mask_cvtsepi64_storeu_epi16(void * __P, __mmask8 __M, __m512i __A) { 4600 // CHECK-LABEL: @test_mm512_mask_cvtsepi64_storeu_epi16 4601 // CHECK: @llvm.x86.avx512.mask.pmovs.qw.mem.512 4602 return _mm512_mask_cvtsepi64_storeu_epi16(__P, __M, __A); 4603 } 4604 4605 __m128i test_mm512_cvtusepi32_epi8(__m512i __A) { 4606 // CHECK-LABEL: @test_mm512_cvtusepi32_epi8 4607 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512 4608 return _mm512_cvtusepi32_epi8(__A); 4609 } 4610 4611 __m128i test_mm512_mask_cvtusepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) { 4612 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi8 4613 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512 4614 return _mm512_mask_cvtusepi32_epi8(__O, __M, __A); 4615 } 4616 4617 __m128i test_mm512_maskz_cvtusepi32_epi8(__mmask16 __M, __m512i __A) { 4618 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi8 4619 // CHECK: @llvm.x86.avx512.mask.pmovus.db.512 4620 return _mm512_maskz_cvtusepi32_epi8(__M, __A); 4621 } 4622 4623 void test_mm512_mask_cvtusepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) { 4624 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi8 4625 // CHECK: @llvm.x86.avx512.mask.pmovus.db.mem.512 4626 return _mm512_mask_cvtusepi32_storeu_epi8(__P, __M, __A); 4627 } 4628 4629 __m256i test_mm512_cvtusepi32_epi16(__m512i __A) { 4630 // CHECK-LABEL: @test_mm512_cvtusepi32_epi16 4631 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512 4632 return _mm512_cvtusepi32_epi16(__A); 4633 } 4634 4635 __m256i test_mm512_mask_cvtusepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) { 4636 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_epi16 4637 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512 4638 return _mm512_mask_cvtusepi32_epi16(__O, __M, __A); 4639 } 4640 4641 __m256i test_mm512_maskz_cvtusepi32_epi16(__mmask16 __M, __m512i __A) { 4642 // CHECK-LABEL: @test_mm512_maskz_cvtusepi32_epi16 4643 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.512 4644 return _mm512_maskz_cvtusepi32_epi16(__M, __A); 4645 } 4646 4647 void test_mm512_mask_cvtusepi32_storeu_epi16(void *__P, __mmask16 __M, __m512i __A) { 4648 // CHECK-LABEL: @test_mm512_mask_cvtusepi32_storeu_epi16 4649 // CHECK: @llvm.x86.avx512.mask.pmovus.dw.mem.512 4650 return _mm512_mask_cvtusepi32_storeu_epi16(__P, __M, __A); 4651 } 4652 4653 __m128i test_mm512_cvtusepi64_epi8(__m512i __A) { 4654 // CHECK-LABEL: @test_mm512_cvtusepi64_epi8 4655 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512 4656 return _mm512_cvtusepi64_epi8(__A); 4657 } 4658 4659 __m128i test_mm512_mask_cvtusepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) { 4660 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi8 4661 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512 4662 return _mm512_mask_cvtusepi64_epi8(__O, __M, __A); 4663 } 4664 4665 __m128i test_mm512_maskz_cvtusepi64_epi8(__mmask8 __M, __m512i __A) { 4666 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi8 4667 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.512 4668 return _mm512_maskz_cvtusepi64_epi8(__M, __A); 4669 } 4670 4671 void test_mm512_mask_cvtusepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) { 4672 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi8 4673 // CHECK: @llvm.x86.avx512.mask.pmovus.qb.mem.512 4674 return _mm512_mask_cvtusepi64_storeu_epi8(__P, __M, __A); 4675 } 4676 4677 __m256i test_mm512_cvtusepi64_epi32(__m512i __A) { 4678 // CHECK-LABEL: @test_mm512_cvtusepi64_epi32 4679 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512 4680 return _mm512_cvtusepi64_epi32(__A); 4681 } 4682 4683 __m256i test_mm512_mask_cvtusepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) { 4684 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi32 4685 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512 4686 return _mm512_mask_cvtusepi64_epi32(__O, __M, __A); 4687 } 4688 4689 __m256i test_mm512_maskz_cvtusepi64_epi32(__mmask8 __M, __m512i __A) { 4690 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi32 4691 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.512 4692 return _mm512_maskz_cvtusepi64_epi32(__M, __A); 4693 } 4694 4695 void test_mm512_mask_cvtusepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) { 4696 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi32 4697 // CHECK: @llvm.x86.avx512.mask.pmovus.qd.mem.512 4698 return _mm512_mask_cvtusepi64_storeu_epi32(__P, __M, __A); 4699 } 4700 4701 __m128i test_mm512_cvtusepi64_epi16(__m512i __A) { 4702 // CHECK-LABEL: @test_mm512_cvtusepi64_epi16 4703 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512 4704 return _mm512_cvtusepi64_epi16(__A); 4705 } 4706 4707 __m128i test_mm512_mask_cvtusepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) { 4708 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_epi16 4709 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512 4710 return _mm512_mask_cvtusepi64_epi16(__O, __M, __A); 4711 } 4712 4713 __m128i test_mm512_maskz_cvtusepi64_epi16(__mmask8 __M, __m512i __A) { 4714 // CHECK-LABEL: @test_mm512_maskz_cvtusepi64_epi16 4715 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.512 4716 return _mm512_maskz_cvtusepi64_epi16(__M, __A); 4717 } 4718 4719 void test_mm512_mask_cvtusepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) { 4720 // CHECK-LABEL: @test_mm512_mask_cvtusepi64_storeu_epi16 4721 // CHECK: @llvm.x86.avx512.mask.pmovus.qw.mem.512 4722 return _mm512_mask_cvtusepi64_storeu_epi16(__P, __M, __A); 4723 } 4724 4725 __m128i test_mm512_cvtepi32_epi8(__m512i __A) { 4726 // CHECK-LABEL: @test_mm512_cvtepi32_epi8 4727 // CHECK: @llvm.x86.avx512.mask.pmov.db.512 4728 return _mm512_cvtepi32_epi8(__A); 4729 } 4730 4731 __m128i test_mm512_mask_cvtepi32_epi8(__m128i __O, __mmask16 __M, __m512i __A) { 4732 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi8 4733 // CHECK: @llvm.x86.avx512.mask.pmov.db.512 4734 return _mm512_mask_cvtepi32_epi8(__O, __M, __A); 4735 } 4736 4737 __m128i test_mm512_maskz_cvtepi32_epi8(__mmask16 __M, __m512i __A) { 4738 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi8 4739 // CHECK: @llvm.x86.avx512.mask.pmov.db.512 4740 return _mm512_maskz_cvtepi32_epi8(__M, __A); 4741 } 4742 4743 void test_mm512_mask_cvtepi32_storeu_epi8(void * __P, __mmask16 __M, __m512i __A) { 4744 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi8 4745 // CHECK: @llvm.x86.avx512.mask.pmov.db.mem.512 4746 return _mm512_mask_cvtepi32_storeu_epi8(__P, __M, __A); 4747 } 4748 4749 __m256i test_mm512_cvtepi32_epi16(__m512i __A) { 4750 // CHECK-LABEL: @test_mm512_cvtepi32_epi16 4751 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512 4752 return _mm512_cvtepi32_epi16(__A); 4753 } 4754 4755 __m256i test_mm512_mask_cvtepi32_epi16(__m256i __O, __mmask16 __M, __m512i __A) { 4756 // CHECK-LABEL: @test_mm512_mask_cvtepi32_epi16 4757 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512 4758 return _mm512_mask_cvtepi32_epi16(__O, __M, __A); 4759 } 4760 4761 __m256i test_mm512_maskz_cvtepi32_epi16(__mmask16 __M, __m512i __A) { 4762 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_epi16 4763 // CHECK: @llvm.x86.avx512.mask.pmov.dw.512 4764 return _mm512_maskz_cvtepi32_epi16(__M, __A); 4765 } 4766 4767 void test_mm512_mask_cvtepi32_storeu_epi16(void * __P, __mmask16 __M, __m512i __A) { 4768 // CHECK-LABEL: @test_mm512_mask_cvtepi32_storeu_epi16 4769 // CHECK: @llvm.x86.avx512.mask.pmov.dw.mem.512 4770 return _mm512_mask_cvtepi32_storeu_epi16(__P, __M, __A); 4771 } 4772 4773 __m128i test_mm512_cvtepi64_epi8(__m512i __A) { 4774 // CHECK-LABEL: @test_mm512_cvtepi64_epi8 4775 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512 4776 return _mm512_cvtepi64_epi8(__A); 4777 } 4778 4779 __m128i test_mm512_mask_cvtepi64_epi8(__m128i __O, __mmask8 __M, __m512i __A) { 4780 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi8 4781 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512 4782 return _mm512_mask_cvtepi64_epi8(__O, __M, __A); 4783 } 4784 4785 __m128i test_mm512_maskz_cvtepi64_epi8(__mmask8 __M, __m512i __A) { 4786 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi8 4787 // CHECK: @llvm.x86.avx512.mask.pmov.qb.512 4788 return _mm512_maskz_cvtepi64_epi8(__M, __A); 4789 } 4790 4791 void test_mm512_mask_cvtepi64_storeu_epi8(void * __P, __mmask8 __M, __m512i __A) { 4792 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi8 4793 // CHECK: @llvm.x86.avx512.mask.pmov.qb.mem.512 4794 return _mm512_mask_cvtepi64_storeu_epi8(__P, __M, __A); 4795 } 4796 4797 __m256i test_mm512_cvtepi64_epi32(__m512i __A) { 4798 // CHECK-LABEL: @test_mm512_cvtepi64_epi32 4799 // CHECK: @llvm.x86.avx512.mask.pmov.qd.512 4800 return _mm512_cvtepi64_epi32(__A); 4801 } 4802 4803 __m256i test_mm512_mask_cvtepi64_epi32(__m256i __O, __mmask8 __M, __m512i __A) { 4804 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi32 4805 // CHECK: @llvm.x86.avx512.mask.pmov.qd.512 4806 return _mm512_mask_cvtepi64_epi32(__O, __M, __A); 4807 } 4808 4809 __m256i test_mm512_maskz_cvtepi64_epi32(__mmask8 __M, __m512i __A) { 4810 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi32 4811 // CHECK: @llvm.x86.avx512.mask.pmov.qd.512 4812 return _mm512_maskz_cvtepi64_epi32(__M, __A); 4813 } 4814 4815 void test_mm512_mask_cvtepi64_storeu_epi32(void* __P, __mmask8 __M, __m512i __A) { 4816 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi32 4817 // CHECK: @llvm.x86.avx512.mask.pmov.qd.mem.512 4818 return _mm512_mask_cvtepi64_storeu_epi32(__P, __M, __A); 4819 } 4820 4821 __m128i test_mm512_cvtepi64_epi16(__m512i __A) { 4822 // CHECK-LABEL: @test_mm512_cvtepi64_epi16 4823 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512 4824 return _mm512_cvtepi64_epi16(__A); 4825 } 4826 4827 __m128i test_mm512_mask_cvtepi64_epi16(__m128i __O, __mmask8 __M, __m512i __A) { 4828 // CHECK-LABEL: @test_mm512_mask_cvtepi64_epi16 4829 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512 4830 return _mm512_mask_cvtepi64_epi16(__O, __M, __A); 4831 } 4832 4833 __m128i test_mm512_maskz_cvtepi64_epi16(__mmask8 __M, __m512i __A) { 4834 // CHECK-LABEL: @test_mm512_maskz_cvtepi64_epi16 4835 // CHECK: @llvm.x86.avx512.mask.pmov.qw.512 4836 return _mm512_maskz_cvtepi64_epi16(__M, __A); 4837 } 4838 4839 void test_mm512_mask_cvtepi64_storeu_epi16(void *__P, __mmask8 __M, __m512i __A) { 4840 // CHECK-LABEL: @test_mm512_mask_cvtepi64_storeu_epi16 4841 // CHECK: @llvm.x86.avx512.mask.pmov.qw.mem.512 4842 return _mm512_mask_cvtepi64_storeu_epi16(__P, __M, __A); 4843 } 4844 4845 __m128i test_mm512_extracti32x4_epi32(__m512i __A) { 4846 // CHECK-LABEL: @test_mm512_extracti32x4_epi32 4847 // CHECK: @llvm.x86.avx512.mask.vextracti32x4 4848 return _mm512_extracti32x4_epi32(__A, 3); 4849 } 4850 4851 __m128i test_mm512_mask_extracti32x4_epi32(__m128i __W, __mmask8 __U, __m512i __A) { 4852 // CHECK-LABEL: @test_mm512_mask_extracti32x4_epi32 4853 // CHECK: @llvm.x86.avx512.mask.vextracti32x4 4854 return _mm512_mask_extracti32x4_epi32(__W, __U, __A, 3); 4855 } 4856 4857 __m128i test_mm512_maskz_extracti32x4_epi32(__mmask8 __U, __m512i __A) { 4858 // CHECK-LABEL: @test_mm512_maskz_extracti32x4_epi32 4859 // CHECK: @llvm.x86.avx512.mask.vextracti32x4 4860 return _mm512_maskz_extracti32x4_epi32(__U, __A, 3); 4861 } 4862 4863 __m256i test_mm512_extracti64x4_epi64(__m512i __A) { 4864 // CHECK-LABEL: @test_mm512_extracti64x4_epi64 4865 // CHECK: @llvm.x86.avx512.mask.vextracti64x4 4866 return _mm512_extracti64x4_epi64(__A, 1); 4867 } 4868 4869 __m256i test_mm512_mask_extracti64x4_epi64(__m256i __W, __mmask8 __U, __m512i __A) { 4870 // CHECK-LABEL: @test_mm512_mask_extracti64x4_epi64 4871 // CHECK: @llvm.x86.avx512.mask.vextracti64x4 4872 return _mm512_mask_extracti64x4_epi64(__W, __U, __A, 1); 4873 } 4874 4875 __m256i test_mm512_maskz_extracti64x4_epi64(__mmask8 __U, __m512i __A) { 4876 // CHECK-LABEL: @test_mm512_maskz_extracti64x4_epi64 4877 // CHECK: @llvm.x86.avx512.mask.vextracti64x4 4878 return _mm512_maskz_extracti64x4_epi64(__U, __A, 1); 4879 } 4880 4881 __m512d test_mm512_insertf64x4(__m512d __A, __m256d __B) { 4882 // CHECK-LABEL: @test_mm512_insertf64x4 4883 // CHECK: @llvm.x86.avx512.mask.insertf64x4 4884 return _mm512_insertf64x4(__A, __B, 1); 4885 } 4886 4887 __m512d test_mm512_mask_insertf64x4(__m512d __W, __mmask8 __U, __m512d __A, __m256d __B) { 4888 // CHECK-LABEL: @test_mm512_mask_insertf64x4 4889 // CHECK: @llvm.x86.avx512.mask.insertf64x4 4890 return _mm512_mask_insertf64x4(__W, __U, __A, __B, 1); 4891 } 4892 4893 __m512d test_mm512_maskz_insertf64x4(__mmask8 __U, __m512d __A, __m256d __B) { 4894 // CHECK-LABEL: @test_mm512_maskz_insertf64x4 4895 // CHECK: @llvm.x86.avx512.mask.insertf64x4 4896 return _mm512_maskz_insertf64x4(__U, __A, __B, 1); 4897 } 4898 4899 __m512i test_mm512_inserti64x4(__m512i __A, __m256i __B) { 4900 // CHECK-LABEL: @test_mm512_inserti64x4 4901 // CHECK: @llvm.x86.avx512.mask.inserti64x4 4902 return _mm512_inserti64x4(__A, __B, 1); 4903 } 4904 4905 __m512i test_mm512_mask_inserti64x4(__m512i __W, __mmask8 __U, __m512i __A, __m256i __B) { 4906 // CHECK-LABEL: @test_mm512_mask_inserti64x4 4907 // CHECK: @llvm.x86.avx512.mask.inserti64x4 4908 return _mm512_mask_inserti64x4(__W, __U, __A, __B, 1); 4909 } 4910 4911 __m512i test_mm512_maskz_inserti64x4(__mmask8 __U, __m512i __A, __m256i __B) { 4912 // CHECK-LABEL: @test_mm512_maskz_inserti64x4 4913 // CHECK: @llvm.x86.avx512.mask.inserti64x4 4914 return _mm512_maskz_inserti64x4(__U, __A, __B, 1); 4915 } 4916 4917 __m512 test_mm512_insertf32x4(__m512 __A, __m128 __B) { 4918 // CHECK-LABEL: @test_mm512_insertf32x4 4919 // CHECK: @llvm.x86.avx512.mask.insertf32x4 4920 return _mm512_insertf32x4(__A, __B, 1); 4921 } 4922 4923 __m512 test_mm512_mask_insertf32x4(__m512 __W, __mmask16 __U, __m512 __A, __m128 __B) { 4924 // CHECK-LABEL: @test_mm512_mask_insertf32x4 4925 // CHECK: @llvm.x86.avx512.mask.insertf32x4 4926 return _mm512_mask_insertf32x4(__W, __U, __A, __B, 1); 4927 } 4928 4929 __m512 test_mm512_maskz_insertf32x4(__mmask16 __U, __m512 __A, __m128 __B) { 4930 // CHECK-LABEL: @test_mm512_maskz_insertf32x4 4931 // CHECK: @llvm.x86.avx512.mask.insertf32x4 4932 return _mm512_maskz_insertf32x4(__U, __A, __B, 1); 4933 } 4934 4935 __m512i test_mm512_inserti32x4(__m512i __A, __m128i __B) { 4936 // CHECK-LABEL: @test_mm512_inserti32x4 4937 // CHECK: @llvm.x86.avx512.mask.inserti32x4 4938 return _mm512_inserti32x4(__A, __B, 1); 4939 } 4940 4941 __m512i test_mm512_mask_inserti32x4(__m512i __W, __mmask16 __U, __m512i __A, __m128i __B) { 4942 // CHECK-LABEL: @test_mm512_mask_inserti32x4 4943 // CHECK: @llvm.x86.avx512.mask.inserti32x4 4944 return _mm512_mask_inserti32x4(__W, __U, __A, __B, 1); 4945 } 4946 4947 __m512i test_mm512_maskz_inserti32x4(__mmask16 __U, __m512i __A, __m128i __B) { 4948 // CHECK-LABEL: @test_mm512_maskz_inserti32x4 4949 // CHECK: @llvm.x86.avx512.mask.inserti32x4 4950 return _mm512_maskz_inserti32x4(__U, __A, __B, 1); 4951 } 4952 4953 __m512d test_mm512_getmant_round_pd(__m512d __A) { 4954 // CHECK-LABEL: @test_mm512_getmant_round_pd 4955 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512 4956 return _mm512_getmant_round_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 4957 } 4958 4959 __m512d test_mm512_mask_getmant_round_pd(__m512d __W, __mmask8 __U, __m512d __A) { 4960 // CHECK-LABEL: @test_mm512_mask_getmant_round_pd 4961 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512 4962 return _mm512_mask_getmant_round_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 4963 } 4964 4965 __m512d test_mm512_maskz_getmant_round_pd(__mmask8 __U, __m512d __A) { 4966 // CHECK-LABEL: @test_mm512_maskz_getmant_round_pd 4967 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512 4968 return _mm512_maskz_getmant_round_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 4969 } 4970 4971 __m512d test_mm512_getmant_pd(__m512d __A) { 4972 // CHECK-LABEL: @test_mm512_getmant_pd 4973 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512 4974 return _mm512_getmant_pd(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 4975 } 4976 4977 __m512d test_mm512_mask_getmant_pd(__m512d __W, __mmask8 __U, __m512d __A) { 4978 // CHECK-LABEL: @test_mm512_mask_getmant_pd 4979 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512 4980 return _mm512_mask_getmant_pd(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 4981 } 4982 4983 __m512d test_mm512_maskz_getmant_pd(__mmask8 __U, __m512d __A) { 4984 // CHECK-LABEL: @test_mm512_maskz_getmant_pd 4985 // CHECK: @llvm.x86.avx512.mask.getmant.pd.512 4986 return _mm512_maskz_getmant_pd(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 4987 } 4988 4989 __m512 test_mm512_getmant_round_ps(__m512 __A) { 4990 // CHECK-LABEL: @test_mm512_getmant_round_ps 4991 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512 4992 return _mm512_getmant_round_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 4993 } 4994 4995 __m512 test_mm512_mask_getmant_round_ps(__m512 __W, __mmask16 __U, __m512 __A) { 4996 // CHECK-LABEL: @test_mm512_mask_getmant_round_ps 4997 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512 4998 return _mm512_mask_getmant_round_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 4999 } 5000 5001 __m512 test_mm512_maskz_getmant_round_ps(__mmask16 __U, __m512 __A) { 5002 // CHECK-LABEL: @test_mm512_maskz_getmant_round_ps 5003 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512 5004 return _mm512_maskz_getmant_round_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan, _MM_FROUND_CUR_DIRECTION); 5005 } 5006 5007 __m512 test_mm512_getmant_ps(__m512 __A) { 5008 // CHECK-LABEL: @test_mm512_getmant_ps 5009 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512 5010 return _mm512_getmant_ps(__A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 5011 } 5012 5013 __m512 test_mm512_mask_getmant_ps(__m512 __W, __mmask16 __U, __m512 __A) { 5014 // CHECK-LABEL: @test_mm512_mask_getmant_ps 5015 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512 5016 return _mm512_mask_getmant_ps(__W, __U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 5017 } 5018 5019 __m512 test_mm512_maskz_getmant_ps(__mmask16 __U, __m512 __A) { 5020 // CHECK-LABEL: @test_mm512_maskz_getmant_ps 5021 // CHECK: @llvm.x86.avx512.mask.getmant.ps.512 5022 return _mm512_maskz_getmant_ps(__U, __A,_MM_MANT_NORM_p5_2, _MM_MANT_SIGN_nan); 5023 } 5024 5025 __m512d test_mm512_getexp_round_pd(__m512d __A) { 5026 // CHECK-LABEL: @test_mm512_getexp_round_pd 5027 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512 5028 return _mm512_getexp_round_pd(__A, _MM_FROUND_CUR_DIRECTION); 5029 } 5030 5031 __m512d test_mm512_mask_getexp_round_pd(__m512d __W, __mmask8 __U, __m512d __A) { 5032 // CHECK-LABEL: @test_mm512_mask_getexp_round_pd 5033 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512 5034 return _mm512_mask_getexp_round_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 5035 } 5036 5037 __m512d test_mm512_maskz_getexp_round_pd(__mmask8 __U, __m512d __A) { 5038 // CHECK-LABEL: @test_mm512_maskz_getexp_round_pd 5039 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512 5040 return _mm512_maskz_getexp_round_pd(__U, __A, _MM_FROUND_CUR_DIRECTION); 5041 } 5042 5043 __m512d test_mm512_getexp_pd(__m512d __A) { 5044 // CHECK-LABEL: @test_mm512_getexp_pd 5045 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512 5046 return _mm512_getexp_pd(__A); 5047 } 5048 5049 __m512d test_mm512_mask_getexp_pd(__m512d __W, __mmask8 __U, __m512d __A) { 5050 // CHECK-LABEL: @test_mm512_mask_getexp_pd 5051 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512 5052 return _mm512_mask_getexp_pd(__W, __U, __A); 5053 } 5054 5055 __m512d test_mm512_maskz_getexp_pd(__mmask8 __U, __m512d __A) { 5056 // CHECK-LABEL: @test_mm512_maskz_getexp_pd 5057 // CHECK: @llvm.x86.avx512.mask.getexp.pd.512 5058 return _mm512_maskz_getexp_pd(__U, __A); 5059 } 5060 5061 __m512 test_mm512_getexp_round_ps(__m512 __A) { 5062 // CHECK-LABEL: @test_mm512_getexp_round_ps 5063 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512 5064 return _mm512_getexp_round_ps(__A, _MM_FROUND_CUR_DIRECTION); 5065 } 5066 5067 __m512 test_mm512_mask_getexp_round_ps(__m512 __W, __mmask16 __U, __m512 __A) { 5068 // CHECK-LABEL: @test_mm512_mask_getexp_round_ps 5069 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512 5070 return _mm512_mask_getexp_round_ps(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 5071 } 5072 5073 __m512 test_mm512_maskz_getexp_round_ps(__mmask16 __U, __m512 __A) { 5074 // CHECK-LABEL: @test_mm512_maskz_getexp_round_ps 5075 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512 5076 return _mm512_maskz_getexp_round_ps(__U, __A, _MM_FROUND_CUR_DIRECTION); 5077 } 5078 5079 __m512 test_mm512_getexp_ps(__m512 __A) { 5080 // CHECK-LABEL: @test_mm512_getexp_ps 5081 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512 5082 return _mm512_getexp_ps(__A); 5083 } 5084 5085 __m512 test_mm512_mask_getexp_ps(__m512 __W, __mmask16 __U, __m512 __A) { 5086 // CHECK-LABEL: @test_mm512_mask_getexp_ps 5087 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512 5088 return _mm512_mask_getexp_ps(__W, __U, __A); 5089 } 5090 5091 __m512 test_mm512_maskz_getexp_ps(__mmask16 __U, __m512 __A) { 5092 // CHECK-LABEL: @test_mm512_maskz_getexp_ps 5093 // CHECK: @llvm.x86.avx512.mask.getexp.ps.512 5094 return _mm512_maskz_getexp_ps(__U, __A); 5095 } 5096 5097 __m256 test_mm512_i64gather_ps(__m512i __index, void const *__addr) { 5098 // CHECK-LABEL: @test_mm512_i64gather_ps 5099 // CHECK: @llvm.x86.avx512.gather.qps.512 5100 return _mm512_i64gather_ps(__index, __addr, 2); 5101 } 5102 5103 __m256 test_mm512_mask_i64gather_ps(__m256 __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) { 5104 // CHECK-LABEL: @test_mm512_mask_i64gather_ps 5105 // CHECK: @llvm.x86.avx512.gather.qps.512 5106 return _mm512_mask_i64gather_ps(__v1_old, __mask, __index, __addr, 2); 5107 } 5108 5109 __m256i test_mm512_i64gather_epi32(__m512i __index, void const *__addr) { 5110 // CHECK-LABEL: @test_mm512_i64gather_epi32 5111 // CHECK: @llvm.x86.avx512.gather.qpi.512 5112 return _mm512_i64gather_epi32(__index, __addr, 2); 5113 } 5114 5115 __m256i test_mm512_mask_i64gather_epi32(__m256i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) { 5116 // CHECK-LABEL: @test_mm512_mask_i64gather_epi32 5117 // CHECK: @llvm.x86.avx512.gather.qpi.512 5118 return _mm512_mask_i64gather_epi32(__v1_old, __mask, __index, __addr, 2); 5119 } 5120 5121 __m512d test_mm512_i64gather_pd(__m512i __index, void const *__addr) { 5122 // CHECK-LABEL: @test_mm512_i64gather_pd 5123 // CHECK: @llvm.x86.avx512.gather.qpd.512 5124 return _mm512_i64gather_pd(__index, __addr, 2); 5125 } 5126 5127 __m512d test_mm512_mask_i64gather_pd(__m512d __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) { 5128 // CHECK-LABEL: @test_mm512_mask_i64gather_pd 5129 // CHECK: @llvm.x86.avx512.gather.qpd.512 5130 return _mm512_mask_i64gather_pd(__v1_old, __mask, __index, __addr, 2); 5131 } 5132 5133 __m512i test_mm512_i64gather_epi64(__m512i __index, void const *__addr) { 5134 // CHECK-LABEL: @test_mm512_i64gather_epi64 5135 // CHECK: @llvm.x86.avx512.gather.qpq.512 5136 return _mm512_i64gather_epi64(__index, __addr, 2); 5137 } 5138 5139 __m512i test_mm512_mask_i64gather_epi64(__m512i __v1_old, __mmask8 __mask, __m512i __index, void const *__addr) { 5140 // CHECK-LABEL: @test_mm512_mask_i64gather_epi64 5141 // CHECK: @llvm.x86.avx512.gather.qpq.512 5142 return _mm512_mask_i64gather_epi64(__v1_old, __mask, __index, __addr, 2); 5143 } 5144 5145 __m512 test_mm512_i32gather_ps(__m512i __index, void const *__addr) { 5146 // CHECK-LABEL: @test_mm512_i32gather_ps 5147 // CHECK: @llvm.x86.avx512.gather.dps.512 5148 return _mm512_i32gather_ps(__index, __addr, 2); 5149 } 5150 5151 __m512 test_mm512_mask_i32gather_ps(__m512 v1_old, __mmask16 __mask, __m512i __index, void const *__addr) { 5152 // CHECK-LABEL: @test_mm512_mask_i32gather_ps 5153 // CHECK: @llvm.x86.avx512.gather.dps.512 5154 return _mm512_mask_i32gather_ps(v1_old, __mask, __index, __addr, 2); 5155 } 5156 5157 __m512i test_mm512_i32gather_epi32(__m512i __index, void const *__addr) { 5158 // CHECK-LABEL: @test_mm512_i32gather_epi32 5159 // CHECK: @llvm.x86.avx512.gather.dpi.512 5160 return _mm512_i32gather_epi32(__index, __addr, 2); 5161 } 5162 5163 __m512i test_mm512_mask_i32gather_epi32(__m512i __v1_old, __mmask16 __mask, __m512i __index, void const *__addr) { 5164 // CHECK-LABEL: @test_mm512_mask_i32gather_epi32 5165 // CHECK: @llvm.x86.avx512.gather.dpi.512 5166 return _mm512_mask_i32gather_epi32(__v1_old, __mask, __index, __addr, 2); 5167 } 5168 5169 __m512d test_mm512_i32gather_pd(__m256i __index, void const *__addr) { 5170 // CHECK-LABEL: @test_mm512_i32gather_pd 5171 // CHECK: @llvm.x86.avx512.gather.dpd.512 5172 return _mm512_i32gather_pd(__index, __addr, 2); 5173 } 5174 5175 __m512d test_mm512_mask_i32gather_pd(__m512d __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) { 5176 // CHECK-LABEL: @test_mm512_mask_i32gather_pd 5177 // CHECK: @llvm.x86.avx512.gather.dpd.512 5178 return _mm512_mask_i32gather_pd(__v1_old, __mask, __index, __addr, 2); 5179 } 5180 5181 __m512i test_mm512_i32gather_epi64(__m256i __index, void const *__addr) { 5182 // CHECK-LABEL: @test_mm512_i32gather_epi64 5183 // CHECK: @llvm.x86.avx512.gather.dpq.512 5184 return _mm512_i32gather_epi64(__index, __addr, 2); 5185 } 5186 5187 __m512i test_mm512_mask_i32gather_epi64(__m512i __v1_old, __mmask8 __mask, __m256i __index, void const *__addr) { 5188 // CHECK-LABEL: @test_mm512_mask_i32gather_epi64 5189 // CHECK: @llvm.x86.avx512.gather.dpq.512 5190 return _mm512_mask_i32gather_epi64(__v1_old, __mask, __index, __addr, 2); 5191 } 5192 5193 void test_mm512_i64scatter_ps(void *__addr, __m512i __index, __m256 __v1) { 5194 // CHECK-LABEL: @test_mm512_i64scatter_ps 5195 // CHECK: @llvm.x86.avx512.scatter.qps.512 5196 return _mm512_i64scatter_ps(__addr, __index, __v1, 2); 5197 } 5198 5199 void test_mm512_mask_i64scatter_ps(void *__addr, __mmask8 __mask, __m512i __index, __m256 __v1) { 5200 // CHECK-LABEL: @test_mm512_mask_i64scatter_ps 5201 // CHECK: @llvm.x86.avx512.scatter.qps.512 5202 return _mm512_mask_i64scatter_ps(__addr, __mask, __index, __v1, 2); 5203 } 5204 5205 void test_mm512_i64scatter_epi32(void *__addr, __m512i __index, __m256i __v1) { 5206 // CHECK-LABEL: @test_mm512_i64scatter_epi32 5207 // CHECK: @llvm.x86.avx512.scatter.qpi.512 5208 return _mm512_i64scatter_epi32(__addr, __index, __v1, 2); 5209 } 5210 5211 void test_mm512_mask_i64scatter_epi32(void *__addr, __mmask8 __mask, __m512i __index, __m256i __v1) { 5212 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi32 5213 // CHECK: @llvm.x86.avx512.scatter.qpi.512 5214 return _mm512_mask_i64scatter_epi32(__addr, __mask, __index, __v1, 2); 5215 } 5216 5217 void test_mm512_i64scatter_pd(void *__addr, __m512i __index, __m512d __v1) { 5218 // CHECK-LABEL: @test_mm512_i64scatter_pd 5219 // CHECK: @llvm.x86.avx512.scatter.qpd.512 5220 return _mm512_i64scatter_pd(__addr, __index, __v1, 2); 5221 } 5222 5223 void test_mm512_mask_i64scatter_pd(void *__addr, __mmask8 __mask, __m512i __index, __m512d __v1) { 5224 // CHECK-LABEL: @test_mm512_mask_i64scatter_pd 5225 // CHECK: @llvm.x86.avx512.scatter.qpd.512 5226 return _mm512_mask_i64scatter_pd(__addr, __mask, __index, __v1, 2); 5227 } 5228 5229 void test_mm512_i64scatter_epi64(void *__addr, __m512i __index, __m512i __v1) { 5230 // CHECK-LABEL: @test_mm512_i64scatter_epi64 5231 // CHECK: @llvm.x86.avx512.scatter.qpq.512 5232 return _mm512_i64scatter_epi64(__addr, __index, __v1, 2); 5233 } 5234 5235 void test_mm512_mask_i64scatter_epi64(void *__addr, __mmask8 __mask, __m512i __index, __m512i __v1) { 5236 // CHECK-LABEL: @test_mm512_mask_i64scatter_epi64 5237 // CHECK: @llvm.x86.avx512.scatter.qpq.512 5238 return _mm512_mask_i64scatter_epi64(__addr, __mask, __index, __v1, 2); 5239 } 5240 5241 void test_mm512_i32scatter_ps(void *__addr, __m512i __index, __m512 __v1) { 5242 // CHECK-LABEL: @test_mm512_i32scatter_ps 5243 // CHECK: @llvm.x86.avx512.scatter.dps.512 5244 return _mm512_i32scatter_ps(__addr, __index, __v1, 2); 5245 } 5246 5247 void test_mm512_mask_i32scatter_ps(void *__addr, __mmask16 __mask, __m512i __index, __m512 __v1) { 5248 // CHECK-LABEL: @test_mm512_mask_i32scatter_ps 5249 // CHECK: @llvm.x86.avx512.scatter.dps.512 5250 return _mm512_mask_i32scatter_ps(__addr, __mask, __index, __v1, 2); 5251 } 5252 5253 void test_mm512_i32scatter_epi32(void *__addr, __m512i __index, __m512i __v1) { 5254 // CHECK-LABEL: @test_mm512_i32scatter_epi32 5255 // CHECK: @llvm.x86.avx512.scatter.dpi.512 5256 return _mm512_i32scatter_epi32(__addr, __index, __v1, 2); 5257 } 5258 5259 void test_mm512_mask_i32scatter_epi32(void *__addr, __mmask16 __mask, __m512i __index, __m512i __v1) { 5260 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi32 5261 // CHECK: @llvm.x86.avx512.scatter.dpi.512 5262 return _mm512_mask_i32scatter_epi32(__addr, __mask, __index, __v1, 2); 5263 } 5264 5265 void test_mm512_i32scatter_pd(void *__addr, __m256i __index, __m512d __v1) { 5266 // CHECK-LABEL: @test_mm512_i32scatter_pd 5267 // CHECK: @llvm.x86.avx512.scatter.dpd.512 5268 return _mm512_i32scatter_pd(__addr, __index, __v1, 2); 5269 } 5270 5271 void test_mm512_mask_i32scatter_pd(void *__addr, __mmask8 __mask, __m256i __index, __m512d __v1) { 5272 // CHECK-LABEL: @test_mm512_mask_i32scatter_pd 5273 // CHECK: @llvm.x86.avx512.scatter.dpd.512 5274 return _mm512_mask_i32scatter_pd(__addr, __mask, __index, __v1, 2); 5275 } 5276 5277 void test_mm512_i32scatter_epi64(void *__addr, __m256i __index, __m512i __v1) { 5278 // CHECK-LABEL: @test_mm512_i32scatter_epi64 5279 // CHECK: @llvm.x86.avx512.scatter.dpq.512 5280 return _mm512_i32scatter_epi64(__addr, __index, __v1, 2); 5281 } 5282 5283 void test_mm512_mask_i32scatter_epi64(void *__addr, __mmask8 __mask, __m256i __index, __m512i __v1) { 5284 // CHECK-LABEL: @test_mm512_mask_i32scatter_epi64 5285 // CHECK: @llvm.x86.avx512.scatter.dpq.512 5286 return _mm512_mask_i32scatter_epi64(__addr, __mask, __index, __v1, 2); 5287 } 5288 5289 __m128d test_mm_mask_rsqrt14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5290 // CHECK-LABEL: @test_mm_mask_rsqrt14_sd 5291 // CHECK: @llvm.x86.avx512.rsqrt14.sd 5292 return _mm_mask_rsqrt14_sd(__W, __U, __A, __B); 5293 } 5294 5295 __m128d test_mm_maskz_rsqrt14_sd(__mmask8 __U, __m128d __A, __m128d __B){ 5296 // CHECK-LABEL: @test_mm_maskz_rsqrt14_sd 5297 // CHECK: @llvm.x86.avx512.rsqrt14.sd 5298 return _mm_maskz_rsqrt14_sd(__U, __A, __B); 5299 } 5300 5301 __m128 test_mm_mask_rsqrt14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5302 // CHECK-LABEL: @test_mm_mask_rsqrt14_ss 5303 // CHECK: @llvm.x86.avx512.rsqrt14.ss 5304 return _mm_mask_rsqrt14_ss(__W, __U, __A, __B); 5305 } 5306 5307 __m128 test_mm_maskz_rsqrt14_ss(__mmask8 __U, __m128 __A, __m128 __B){ 5308 // CHECK-LABEL: @test_mm_maskz_rsqrt14_ss 5309 // CHECK: @llvm.x86.avx512.rsqrt14.ss 5310 return _mm_maskz_rsqrt14_ss(__U, __A, __B); 5311 } 5312 5313 __m512d test_mm512_mask_rcp14_pd (__m512d __W, __mmask8 __U, __m512d __A) 5314 { 5315 // CHECK-LABEL: @test_mm512_mask_rcp14_pd 5316 // CHECK: @llvm.x86.avx512.rcp14.pd.512 5317 return _mm512_mask_rcp14_pd (__W,__U,__A); 5318 } 5319 5320 __m512d test_mm512_maskz_rcp14_pd (__mmask8 __U, __m512d __A) 5321 { 5322 // CHECK-LABEL: @test_mm512_maskz_rcp14_pd 5323 // CHECK: @llvm.x86.avx512.rcp14.pd.512 5324 return _mm512_maskz_rcp14_pd (__U,__A); 5325 } 5326 5327 __m512 test_mm512_mask_rcp14_ps (__m512 __W, __mmask16 __U, __m512 __A) 5328 { 5329 // CHECK-LABEL: @test_mm512_mask_rcp14_ps 5330 // CHECK: @llvm.x86.avx512.rcp14.ps.512 5331 return _mm512_mask_rcp14_ps (__W,__U,__A); 5332 } 5333 5334 __m512 test_mm512_maskz_rcp14_ps (__mmask16 __U, __m512 __A) 5335 { 5336 // CHECK-LABEL: @test_mm512_maskz_rcp14_ps 5337 // CHECK: @llvm.x86.avx512.rcp14.ps.512 5338 return _mm512_maskz_rcp14_ps (__U,__A); 5339 } 5340 5341 __m128d test_mm_mask_rcp14_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5342 // CHECK-LABEL: @test_mm_mask_rcp14_sd 5343 // CHECK: @llvm.x86.avx512.rcp14.sd 5344 return _mm_mask_rcp14_sd(__W, __U, __A, __B); 5345 } 5346 5347 __m128d test_mm_maskz_rcp14_sd(__mmask8 __U, __m128d __A, __m128d __B){ 5348 // CHECK-LABEL: @test_mm_maskz_rcp14_sd 5349 // CHECK: @llvm.x86.avx512.rcp14.sd 5350 return _mm_maskz_rcp14_sd(__U, __A, __B); 5351 } 5352 5353 __m128 test_mm_mask_rcp14_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5354 // CHECK-LABEL: @test_mm_mask_rcp14_ss 5355 // CHECK: @llvm.x86.avx512.rcp14.ss 5356 return _mm_mask_rcp14_ss(__W, __U, __A, __B); 5357 } 5358 5359 __m128 test_mm_maskz_rcp14_ss(__mmask8 __U, __m128 __A, __m128 __B){ 5360 // CHECK-LABEL: @test_mm_maskz_rcp14_ss 5361 // CHECK: @llvm.x86.avx512.rcp14.ss 5362 return _mm_maskz_rcp14_ss(__U, __A, __B); 5363 } 5364 5365 __m128d test_mm_mask_getexp_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5366 // CHECK-LABEL: @test_mm_mask_getexp_sd 5367 // CHECK: @llvm.x86.avx512.mask.getexp.sd 5368 return _mm_mask_getexp_sd(__W, __U, __A, __B); 5369 } 5370 5371 __m128d test_mm_mask_getexp_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5372 // CHECK-LABEL: @test_mm_mask_getexp_round_sd 5373 // CHECK: @llvm.x86.avx512.mask.getexp.sd 5374 return _mm_mask_getexp_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5375 } 5376 5377 __m128d test_mm_maskz_getexp_sd(__mmask8 __U, __m128d __A, __m128d __B){ 5378 // CHECK-LABEL: @test_mm_maskz_getexp_sd 5379 // CHECK: @llvm.x86.avx512.mask.getexp.sd 5380 return _mm_maskz_getexp_sd(__U, __A, __B); 5381 } 5382 5383 __m128d test_mm_maskz_getexp_round_sd(__mmask8 __U, __m128d __A, __m128d __B){ 5384 // CHECK-LABEL: @test_mm_maskz_getexp_round_sd 5385 // CHECK: @llvm.x86.avx512.mask.getexp.sd 5386 return _mm_maskz_getexp_round_sd(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5387 } 5388 5389 __m128 test_mm_mask_getexp_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5390 // CHECK-LABEL: @test_mm_mask_getexp_ss 5391 // CHECK: @llvm.x86.avx512.mask.getexp.ss 5392 return _mm_mask_getexp_ss(__W, __U, __A, __B); 5393 } 5394 5395 __m128 test_mm_mask_getexp_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5396 // CHECK-LABEL: @test_mm_mask_getexp_round_ss 5397 // CHECK: @llvm.x86.avx512.mask.getexp.ss 5398 return _mm_mask_getexp_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5399 } 5400 5401 __m128 test_mm_maskz_getexp_ss(__mmask8 __U, __m128 __A, __m128 __B){ 5402 // CHECK-LABEL: @test_mm_maskz_getexp_ss 5403 // CHECK: @llvm.x86.avx512.mask.getexp.ss 5404 return _mm_maskz_getexp_ss(__U, __A, __B); 5405 } 5406 5407 __m128 test_mm_maskz_getexp_round_ss(__mmask8 __U, __m128 __A, __m128 __B){ 5408 // CHECK-LABEL: @test_mm_maskz_getexp_round_ss 5409 // CHECK: @llvm.x86.avx512.mask.getexp.ss 5410 return _mm_maskz_getexp_round_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5411 } 5412 5413 __m128d test_mm_mask_getmant_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5414 // CHECK-LABEL: @test_mm_mask_getmant_sd 5415 // CHECK: @llvm.x86.avx512.mask.getmant.sd 5416 return _mm_mask_getmant_sd(__W, __U, __A, __B, 1, 2); 5417 } 5418 5419 __m128d test_mm_mask_getmant_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5420 // CHECK-LABEL: @test_mm_mask_getmant_round_sd 5421 // CHECK: @llvm.x86.avx512.mask.getmant.sd 5422 return _mm_mask_getmant_round_sd(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION); 5423 } 5424 5425 __m128d test_mm_maskz_getmant_sd(__mmask8 __U, __m128d __A, __m128d __B){ 5426 // CHECK-LABEL: @test_mm_maskz_getmant_sd 5427 // CHECK: @llvm.x86.avx512.mask.getmant.sd 5428 return _mm_maskz_getmant_sd(__U, __A, __B, 1, 2); 5429 } 5430 5431 __m128d test_mm_maskz_getmant_round_sd(__mmask8 __U, __m128d __A, __m128d __B){ 5432 // CHECK-LABEL: @test_mm_maskz_getmant_round_sd 5433 // CHECK: @llvm.x86.avx512.mask.getmant.sd 5434 return _mm_maskz_getmant_round_sd(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION); 5435 } 5436 5437 __m128 test_mm_mask_getmant_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5438 // CHECK-LABEL: @test_mm_mask_getmant_ss 5439 // CHECK: @llvm.x86.avx512.mask.getmant.ss 5440 return _mm_mask_getmant_ss(__W, __U, __A, __B, 1, 2); 5441 } 5442 5443 __m128 test_mm_mask_getmant_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5444 // CHECK-LABEL: @test_mm_mask_getmant_round_ss 5445 // CHECK: @llvm.x86.avx512.mask.getmant.ss 5446 return _mm_mask_getmant_round_ss(__W, __U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION); 5447 } 5448 5449 __m128 test_mm_maskz_getmant_ss(__mmask8 __U, __m128 __A, __m128 __B){ 5450 // CHECK-LABEL: @test_mm_maskz_getmant_ss 5451 // CHECK: @llvm.x86.avx512.mask.getmant.ss 5452 return _mm_maskz_getmant_ss(__U, __A, __B, 1, 2); 5453 } 5454 5455 __m128 test_mm_maskz_getmant_round_ss(__mmask8 __U, __m128 __A, __m128 __B){ 5456 // CHECK-LABEL: @test_mm_maskz_getmant_round_ss 5457 // CHECK: @llvm.x86.avx512.mask.getmant.ss 5458 return _mm_maskz_getmant_round_ss(__U, __A, __B, 1, 2, _MM_FROUND_CUR_DIRECTION); 5459 } 5460 5461 __m128 test_mm_mask_fmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5462 // CHECK-LABEL: @test_mm_mask_fmadd_ss 5463 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5464 return _mm_mask_fmadd_ss(__W, __U, __A, __B); 5465 } 5466 5467 __m128 test_mm_mask_fmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5468 // CHECK-LABEL: @test_mm_mask_fmadd_round_ss 5469 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5470 return _mm_mask_fmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5471 } 5472 5473 __m128 test_mm_maskz_fmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5474 // CHECK-LABEL: @test_mm_maskz_fmadd_ss 5475 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5476 return _mm_maskz_fmadd_ss(__U, __A, __B, __C); 5477 } 5478 5479 __m128 test_mm_maskz_fmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5480 // CHECK-LABEL: @test_mm_maskz_fmadd_round_ss 5481 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5482 return _mm_maskz_fmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5483 } 5484 5485 __m128 test_mm_mask3_fmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5486 // CHECK-LABEL: @test_mm_mask3_fmadd_ss 5487 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5488 return _mm_mask3_fmadd_ss(__W, __X, __Y, __U); 5489 } 5490 5491 __m128 test_mm_mask3_fmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5492 // CHECK-LABEL: @test_mm_mask3_fmadd_round_ss 5493 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5494 return _mm_mask3_fmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5495 } 5496 5497 __m128 test_mm_mask_fmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5498 // CHECK-LABEL: @test_mm_mask_fmsub_ss 5499 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5500 return _mm_mask_fmsub_ss(__W, __U, __A, __B); 5501 } 5502 5503 __m128 test_mm_mask_fmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5504 // CHECK-LABEL: @test_mm_mask_fmsub_round_ss 5505 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5506 return _mm_mask_fmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5507 } 5508 5509 __m128 test_mm_maskz_fmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5510 // CHECK-LABEL: @test_mm_maskz_fmsub_ss 5511 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5512 return _mm_maskz_fmsub_ss(__U, __A, __B, __C); 5513 } 5514 5515 __m128 test_mm_maskz_fmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5516 // CHECK-LABEL: @test_mm_maskz_fmsub_round_ss 5517 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5518 return _mm_maskz_fmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5519 } 5520 5521 __m128 test_mm_mask3_fmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5522 // CHECK-LABEL: @test_mm_mask3_fmsub_ss 5523 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5524 return _mm_mask3_fmsub_ss(__W, __X, __Y, __U); 5525 } 5526 5527 __m128 test_mm_mask3_fmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5528 // CHECK-LABEL: @test_mm_mask3_fmsub_round_ss 5529 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5530 return _mm_mask3_fmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5531 } 5532 5533 __m128 test_mm_mask_fnmadd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5534 // CHECK-LABEL: @test_mm_mask_fnmadd_ss 5535 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5536 return _mm_mask_fnmadd_ss(__W, __U, __A, __B); 5537 } 5538 5539 __m128 test_mm_mask_fnmadd_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5540 // CHECK-LABEL: @test_mm_mask_fnmadd_round_ss 5541 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5542 return _mm_mask_fnmadd_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5543 } 5544 5545 __m128 test_mm_maskz_fnmadd_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5546 // CHECK-LABEL: @test_mm_maskz_fnmadd_ss 5547 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5548 return _mm_maskz_fnmadd_ss(__U, __A, __B, __C); 5549 } 5550 5551 __m128 test_mm_maskz_fnmadd_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5552 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_ss 5553 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5554 return _mm_maskz_fnmadd_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5555 } 5556 5557 __m128 test_mm_mask3_fnmadd_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5558 // CHECK-LABEL: @test_mm_mask3_fnmadd_ss 5559 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5560 return _mm_mask3_fnmadd_ss(__W, __X, __Y, __U); 5561 } 5562 5563 __m128 test_mm_mask3_fnmadd_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5564 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_ss 5565 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5566 return _mm_mask3_fnmadd_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5567 } 5568 5569 __m128 test_mm_mask_fnmsub_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5570 // CHECK-LABEL: @test_mm_mask_fnmsub_ss 5571 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5572 return _mm_mask_fnmsub_ss(__W, __U, __A, __B); 5573 } 5574 5575 __m128 test_mm_mask_fnmsub_round_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B){ 5576 // CHECK-LABEL: @test_mm_mask_fnmsub_round_ss 5577 // CHECK: @llvm.x86.avx512.mask.vfmadd.ss 5578 return _mm_mask_fnmsub_round_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5579 } 5580 5581 __m128 test_mm_maskz_fnmsub_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5582 // CHECK-LABEL: @test_mm_maskz_fnmsub_ss 5583 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5584 return _mm_maskz_fnmsub_ss(__U, __A, __B, __C); 5585 } 5586 5587 __m128 test_mm_maskz_fnmsub_round_ss(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C){ 5588 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_ss 5589 // CHECK: @llvm.x86.avx512.maskz.vfmadd.ss 5590 return _mm_maskz_fnmsub_round_ss(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5591 } 5592 5593 __m128 test_mm_mask3_fnmsub_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5594 // CHECK-LABEL: @test_mm_mask3_fnmsub_ss 5595 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5596 return _mm_mask3_fnmsub_ss(__W, __X, __Y, __U); 5597 } 5598 5599 __m128 test_mm_mask3_fnmsub_round_ss(__m128 __W, __m128 __X, __m128 __Y, __mmask8 __U){ 5600 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_ss 5601 // CHECK: @llvm.x86.avx512.mask3.vfmadd.ss 5602 return _mm_mask3_fnmsub_round_ss(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5603 } 5604 5605 __m128d test_mm_mask_fmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5606 // CHECK-LABEL: @test_mm_mask_fmadd_sd 5607 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5608 return _mm_mask_fmadd_sd(__W, __U, __A, __B); 5609 } 5610 5611 __m128d test_mm_mask_fmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5612 // CHECK-LABEL: @test_mm_mask_fmadd_round_sd 5613 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5614 return _mm_mask_fmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5615 } 5616 5617 __m128d test_mm_maskz_fmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5618 // CHECK-LABEL: @test_mm_maskz_fmadd_sd 5619 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5620 return _mm_maskz_fmadd_sd(__U, __A, __B, __C); 5621 } 5622 5623 __m128d test_mm_maskz_fmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5624 // CHECK-LABEL: @test_mm_maskz_fmadd_round_sd 5625 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5626 return _mm_maskz_fmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5627 } 5628 5629 __m128d test_mm_mask3_fmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5630 // CHECK-LABEL: @test_mm_mask3_fmadd_sd 5631 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5632 return _mm_mask3_fmadd_sd(__W, __X, __Y, __U); 5633 } 5634 5635 __m128d test_mm_mask3_fmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5636 // CHECK-LABEL: @test_mm_mask3_fmadd_round_sd 5637 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5638 return _mm_mask3_fmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5639 } 5640 5641 __m128d test_mm_mask_fmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5642 // CHECK-LABEL: @test_mm_mask_fmsub_sd 5643 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5644 return _mm_mask_fmsub_sd(__W, __U, __A, __B); 5645 } 5646 5647 __m128d test_mm_mask_fmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5648 // CHECK-LABEL: @test_mm_mask_fmsub_round_sd 5649 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5650 return _mm_mask_fmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5651 } 5652 5653 __m128d test_mm_maskz_fmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5654 // CHECK-LABEL: @test_mm_maskz_fmsub_sd 5655 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5656 return _mm_maskz_fmsub_sd(__U, __A, __B, __C); 5657 } 5658 5659 __m128d test_mm_maskz_fmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5660 // CHECK-LABEL: @test_mm_maskz_fmsub_round_sd 5661 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5662 return _mm_maskz_fmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5663 } 5664 5665 __m128d test_mm_mask3_fmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5666 // CHECK-LABEL: @test_mm_mask3_fmsub_sd 5667 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5668 return _mm_mask3_fmsub_sd(__W, __X, __Y, __U); 5669 } 5670 5671 __m128d test_mm_mask3_fmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5672 // CHECK-LABEL: @test_mm_mask3_fmsub_round_sd 5673 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5674 return _mm_mask3_fmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5675 } 5676 5677 __m128d test_mm_mask_fnmadd_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5678 // CHECK-LABEL: @test_mm_mask_fnmadd_sd 5679 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5680 return _mm_mask_fnmadd_sd(__W, __U, __A, __B); 5681 } 5682 5683 __m128d test_mm_mask_fnmadd_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5684 // CHECK-LABEL: @test_mm_mask_fnmadd_round_sd 5685 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5686 return _mm_mask_fnmadd_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5687 } 5688 5689 __m128d test_mm_maskz_fnmadd_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5690 // CHECK-LABEL: @test_mm_maskz_fnmadd_sd 5691 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5692 return _mm_maskz_fnmadd_sd(__U, __A, __B, __C); 5693 } 5694 5695 __m128d test_mm_maskz_fnmadd_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5696 // CHECK-LABEL: @test_mm_maskz_fnmadd_round_sd 5697 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5698 return _mm_maskz_fnmadd_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5699 } 5700 5701 __m128d test_mm_mask3_fnmadd_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5702 // CHECK-LABEL: @test_mm_mask3_fnmadd_sd 5703 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5704 return _mm_mask3_fnmadd_sd(__W, __X, __Y, __U); 5705 } 5706 5707 __m128d test_mm_mask3_fnmadd_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5708 // CHECK-LABEL: @test_mm_mask3_fnmadd_round_sd 5709 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5710 return _mm_mask3_fnmadd_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5711 } 5712 5713 __m128d test_mm_mask_fnmsub_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5714 // CHECK-LABEL: @test_mm_mask_fnmsub_sd 5715 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5716 return _mm_mask_fnmsub_sd(__W, __U, __A, __B); 5717 } 5718 5719 __m128d test_mm_mask_fnmsub_round_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B){ 5720 // CHECK-LABEL: @test_mm_mask_fnmsub_round_sd 5721 // CHECK: @llvm.x86.avx512.mask.vfmadd.sd 5722 return _mm_mask_fnmsub_round_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 5723 } 5724 5725 __m128d test_mm_maskz_fnmsub_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5726 // CHECK-LABEL: @test_mm_maskz_fnmsub_sd 5727 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5728 return _mm_maskz_fnmsub_sd(__U, __A, __B, __C); 5729 } 5730 5731 __m128d test_mm_maskz_fnmsub_round_sd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C){ 5732 // CHECK-LABEL: @test_mm_maskz_fnmsub_round_sd 5733 // CHECK: @llvm.x86.avx512.maskz.vfmadd.sd 5734 return _mm_maskz_fnmsub_round_sd(__U, __A, __B, __C, _MM_FROUND_CUR_DIRECTION); 5735 } 5736 5737 __m128d test_mm_mask3_fnmsub_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5738 // CHECK-LABEL: @test_mm_mask3_fnmsub_sd 5739 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5740 return _mm_mask3_fnmsub_sd(__W, __X, __Y, __U); 5741 } 5742 5743 __m128d test_mm_mask3_fnmsub_round_sd(__m128d __W, __m128d __X, __m128d __Y, __mmask8 __U){ 5744 // CHECK-LABEL: @test_mm_mask3_fnmsub_round_sd 5745 // CHECK: @llvm.x86.avx512.mask3.vfmadd.sd 5746 return _mm_mask3_fnmsub_round_sd(__W, __X, __Y, __U, _MM_FROUND_CUR_DIRECTION); 5747 } 5748 5749 __m512d test_mm512_permutex_pd(__m512d __X) { 5750 // CHECK-LABEL: @test_mm512_permutex_pd 5751 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 5752 return _mm512_permutex_pd(__X, 0); 5753 } 5754 5755 __m512d test_mm512_mask_permutex_pd(__m512d __W, __mmask8 __U, __m512d __X) { 5756 // CHECK-LABEL: @test_mm512_mask_permutex_pd 5757 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 5758 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 5759 return _mm512_mask_permutex_pd(__W, __U, __X, 0); 5760 } 5761 5762 __m512d test_mm512_maskz_permutex_pd(__mmask8 __U, __m512d __X) { 5763 // CHECK-LABEL: @test_mm512_maskz_permutex_pd 5764 // CHECK: shufflevector <8 x double> %{{.*}}, <8 x double> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 5765 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 5766 return _mm512_maskz_permutex_pd(__U, __X, 0); 5767 } 5768 5769 __m512i test_mm512_permutex_epi64(__m512i __X) { 5770 // CHECK-LABEL: @test_mm512_permutex_epi64 5771 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 5772 return _mm512_permutex_epi64(__X, 0); 5773 } 5774 5775 __m512i test_mm512_mask_permutex_epi64(__m512i __W, __mmask8 __M, __m512i __X) { 5776 // CHECK-LABEL: @test_mm512_mask_permutex_epi64 5777 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 5778 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 5779 return _mm512_mask_permutex_epi64(__W, __M, __X, 0); 5780 } 5781 5782 __m512i test_mm512_maskz_permutex_epi64(__mmask8 __M, __m512i __X) { 5783 // CHECK-LABEL: @test_mm512_maskz_permutex_epi64 5784 // CHECK: shufflevector <8 x i64> %{{.*}}, <8 x i64> undef, <8 x i32> <i32 0, i32 0, i32 0, i32 0, i32 4, i32 4, i32 4, i32 4> 5785 // CHECK: select <8 x i1> %{{.*}}, <8 x i64> %{{.*}}, <8 x i64> %{{.*}} 5786 return _mm512_maskz_permutex_epi64(__M, __X, 0); 5787 } 5788 5789 __m512d test_mm512_permutexvar_pd(__m512i __X, __m512d __Y) { 5790 // CHECK-LABEL: @test_mm512_permutexvar_pd 5791 // CHECK: @llvm.x86.avx512.mask.permvar.df.512 5792 return _mm512_permutexvar_pd(__X, __Y); 5793 } 5794 5795 __m512d test_mm512_mask_permutexvar_pd(__m512d __W, __mmask8 __U, __m512i __X, __m512d __Y) { 5796 // CHECK-LABEL: @test_mm512_mask_permutexvar_pd 5797 // CHECK: @llvm.x86.avx512.mask.permvar.df.512 5798 return _mm512_mask_permutexvar_pd(__W, __U, __X, __Y); 5799 } 5800 5801 __m512d test_mm512_maskz_permutexvar_pd(__mmask8 __U, __m512i __X, __m512d __Y) { 5802 // CHECK-LABEL: @test_mm512_maskz_permutexvar_pd 5803 // CHECK: @llvm.x86.avx512.mask.permvar.df.512 5804 return _mm512_maskz_permutexvar_pd(__U, __X, __Y); 5805 } 5806 5807 __m512i test_mm512_maskz_permutexvar_epi64(__mmask8 __M, __m512i __X, __m512i __Y) { 5808 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi64 5809 // CHECK: @llvm.x86.avx512.mask.permvar.di.512 5810 return _mm512_maskz_permutexvar_epi64(__M, __X, __Y); 5811 } 5812 5813 __m512i test_mm512_permutexvar_epi64(__m512i __X, __m512i __Y) { 5814 // CHECK-LABEL: @test_mm512_permutexvar_epi64 5815 // CHECK: @llvm.x86.avx512.mask.permvar.di.512 5816 return _mm512_permutexvar_epi64(__X, __Y); 5817 } 5818 5819 __m512i test_mm512_mask_permutexvar_epi64(__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y) { 5820 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi64 5821 // CHECK: @llvm.x86.avx512.mask.permvar.di.512 5822 return _mm512_mask_permutexvar_epi64(__W, __M, __X, __Y); 5823 } 5824 5825 __m512 test_mm512_permutexvar_ps(__m512i __X, __m512 __Y) { 5826 // CHECK-LABEL: @test_mm512_permutexvar_ps 5827 // CHECK: @llvm.x86.avx512.mask.permvar.sf.512 5828 return _mm512_permutexvar_ps(__X, __Y); 5829 } 5830 5831 __m512 test_mm512_mask_permutexvar_ps(__m512 __W, __mmask16 __U, __m512i __X, __m512 __Y) { 5832 // CHECK-LABEL: @test_mm512_mask_permutexvar_ps 5833 // CHECK: @llvm.x86.avx512.mask.permvar.sf.512 5834 return _mm512_mask_permutexvar_ps(__W, __U, __X, __Y); 5835 } 5836 5837 __m512 test_mm512_maskz_permutexvar_ps(__mmask16 __U, __m512i __X, __m512 __Y) { 5838 // CHECK-LABEL: @test_mm512_maskz_permutexvar_ps 5839 // CHECK: @llvm.x86.avx512.mask.permvar.sf.512 5840 return _mm512_maskz_permutexvar_ps(__U, __X, __Y); 5841 } 5842 5843 __m512i test_mm512_maskz_permutexvar_epi32(__mmask16 __M, __m512i __X, __m512i __Y) { 5844 // CHECK-LABEL: @test_mm512_maskz_permutexvar_epi32 5845 // CHECK: @llvm.x86.avx512.mask.permvar.si.512 5846 return _mm512_maskz_permutexvar_epi32(__M, __X, __Y); 5847 } 5848 5849 __m512i test_mm512_permutexvar_epi32(__m512i __X, __m512i __Y) { 5850 // CHECK-LABEL: @test_mm512_permutexvar_epi32 5851 // CHECK: @llvm.x86.avx512.mask.permvar.si.512 5852 return _mm512_permutexvar_epi32(__X, __Y); 5853 } 5854 5855 __m512i test_mm512_mask_permutexvar_epi32(__m512i __W, __mmask16 __M, __m512i __X, __m512i __Y) { 5856 // CHECK-LABEL: @test_mm512_mask_permutexvar_epi32 5857 // CHECK: @llvm.x86.avx512.mask.permvar.si.512 5858 return _mm512_mask_permutexvar_epi32(__W, __M, __X, __Y); 5859 } 5860 5861 __mmask16 test_mm512_kand(__mmask16 __A, __mmask16 __B) { 5862 // CHECK-LABEL: @test_mm512_kand 5863 // CHECK: @llvm.x86.avx512.kand.w 5864 return _mm512_kand(__A, __B); 5865 } 5866 5867 __mmask16 test_mm512_kandn(__mmask16 __A, __mmask16 __B) { 5868 // CHECK-LABEL: @test_mm512_kandn 5869 // CHECK: @llvm.x86.avx512.kandn.w 5870 return _mm512_kandn(__A, __B); 5871 } 5872 5873 __mmask16 test_mm512_kor(__mmask16 __A, __mmask16 __B) { 5874 // CHECK-LABEL: @test_mm512_kor 5875 // CHECK: @llvm.x86.avx512.kor.w 5876 return _mm512_kor(__A, __B); 5877 } 5878 5879 int test_mm512_kortestc(__mmask16 __A, __mmask16 __B) { 5880 // CHECK-LABEL: @test_mm512_kortestc 5881 // CHECK: @llvm.x86.avx512.kortestc.w 5882 return _mm512_kortestc(__A, __B); 5883 } 5884 5885 int test_mm512_kortestz(__mmask16 __A, __mmask16 __B) { 5886 // CHECK-LABEL: @test_mm512_kortestz 5887 // CHECK: @llvm.x86.avx512.kortestz.w 5888 return _mm512_kortestz(__A, __B); 5889 } 5890 5891 __mmask16 test_mm512_kunpackb(__mmask16 __A, __mmask16 __B) { 5892 // CHECK-LABEL: @test_mm512_kunpackb 5893 // CHECK: @llvm.x86.avx512.kunpck.bw 5894 return _mm512_kunpackb(__A, __B); 5895 } 5896 5897 __mmask16 test_mm512_kxnor(__mmask16 __A, __mmask16 __B) { 5898 // CHECK-LABEL: @test_mm512_kxnor 5899 // CHECK: @llvm.x86.avx512.kxnor.w 5900 return _mm512_kxnor(__A, __B); 5901 } 5902 5903 __mmask16 test_mm512_kxor(__mmask16 __A, __mmask16 __B) { 5904 // CHECK-LABEL: @test_mm512_kxor 5905 // CHECK: @llvm.x86.avx512.kxor.w 5906 return _mm512_kxor(__A, __B); 5907 } 5908 5909 void test_mm512_stream_si512(__m512i * __P, __m512i __A) { 5910 // CHECK-LABEL: @test_mm512_stream_si512 5911 // CHECK: store <8 x i64> %{{.*}}, <8 x i64>* %{{.*}}, align 64, !nontemporal 5912 _mm512_stream_si512(__P, __A); 5913 } 5914 5915 __m512i test_mm512_stream_load_si512(void *__P) { 5916 // CHECK-LABEL: @test_mm512_stream_load_si512 5917 // CHECK: @llvm.x86.avx512.movntdqa 5918 return _mm512_stream_load_si512(__P); 5919 } 5920 5921 void test_mm512_stream_pd(double *__P, __m512d __A) { 5922 // CHECK-LABEL: @test_mm512_stream_pd 5923 // CHECK: store <8 x double> %{{.*}}, <8 x double>* %{{.*}}, align 64, !nontemporal 5924 return _mm512_stream_pd(__P, __A); 5925 } 5926 5927 void test_mm512_stream_ps(float *__P, __m512 __A) { 5928 // CHECK-LABEL: @test_mm512_stream_ps 5929 // CHECK: store <16 x float> %{{.*}}, <16 x float>* %{{.*}}, align 64, !nontemporal 5930 _mm512_stream_ps(__P, __A); 5931 } 5932 5933 __m512d test_mm512_mask_compress_pd(__m512d __W, __mmask8 __U, __m512d __A) { 5934 // CHECK-LABEL: @test_mm512_mask_compress_pd 5935 // CHECK: @llvm.x86.avx512.mask.compress.pd.512 5936 return _mm512_mask_compress_pd(__W, __U, __A); 5937 } 5938 5939 __m512d test_mm512_maskz_compress_pd(__mmask8 __U, __m512d __A) { 5940 // CHECK-LABEL: @test_mm512_maskz_compress_pd 5941 // CHECK: @llvm.x86.avx512.mask.compress.pd.512 5942 return _mm512_maskz_compress_pd(__U, __A); 5943 } 5944 5945 __m512i test_mm512_mask_compress_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 5946 // CHECK-LABEL: @test_mm512_mask_compress_epi64 5947 // CHECK: @llvm.x86.avx512.mask.compress.q.512 5948 return _mm512_mask_compress_epi64(__W, __U, __A); 5949 } 5950 5951 __m512i test_mm512_maskz_compress_epi64(__mmask8 __U, __m512i __A) { 5952 // CHECK-LABEL: @test_mm512_maskz_compress_epi64 5953 // CHECK: @llvm.x86.avx512.mask.compress.q.512 5954 return _mm512_maskz_compress_epi64(__U, __A); 5955 } 5956 5957 __m512 test_mm512_mask_compress_ps(__m512 __W, __mmask16 __U, __m512 __A) { 5958 // CHECK-LABEL: @test_mm512_mask_compress_ps 5959 // CHECK: @llvm.x86.avx512.mask.compress.ps.512 5960 return _mm512_mask_compress_ps(__W, __U, __A); 5961 } 5962 5963 __m512 test_mm512_maskz_compress_ps(__mmask16 __U, __m512 __A) { 5964 // CHECK-LABEL: @test_mm512_maskz_compress_ps 5965 // CHECK: @llvm.x86.avx512.mask.compress.ps.512 5966 return _mm512_maskz_compress_ps(__U, __A); 5967 } 5968 5969 __m512i test_mm512_mask_compress_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 5970 // CHECK-LABEL: @test_mm512_mask_compress_epi32 5971 // CHECK: @llvm.x86.avx512.mask.compress.d.512 5972 return _mm512_mask_compress_epi32(__W, __U, __A); 5973 } 5974 5975 __m512i test_mm512_maskz_compress_epi32(__mmask16 __U, __m512i __A) { 5976 // CHECK-LABEL: @test_mm512_maskz_compress_epi32 5977 // CHECK: @llvm.x86.avx512.mask.compress.d.512 5978 return _mm512_maskz_compress_epi32(__U, __A); 5979 } 5980 5981 __mmask8 test_mm_cmp_round_ss_mask(__m128 __X, __m128 __Y) { 5982 // CHECK-LABEL: @test_mm_cmp_round_ss_mask 5983 // CHECK: @llvm.x86.avx512.mask.cmp 5984 return _mm_cmp_round_ss_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 5985 } 5986 5987 __mmask8 test_mm_mask_cmp_round_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) { 5988 // CHECK-LABEL: @test_mm_mask_cmp_round_ss_mask 5989 // CHECK: @llvm.x86.avx512.mask.cmp 5990 return _mm_mask_cmp_round_ss_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 5991 } 5992 5993 __mmask8 test_mm_cmp_ss_mask(__m128 __X, __m128 __Y) { 5994 // CHECK-LABEL: @test_mm_cmp_ss_mask 5995 // CHECK: @llvm.x86.avx512.mask.cmp 5996 return _mm_cmp_ss_mask(__X, __Y, 5); 5997 } 5998 5999 __mmask8 test_mm_mask_cmp_ss_mask(__mmask8 __M, __m128 __X, __m128 __Y) { 6000 // CHECK-LABEL: @test_mm_mask_cmp_ss_mask 6001 // CHECK: @llvm.x86.avx512.mask.cmp 6002 return _mm_mask_cmp_ss_mask(__M, __X, __Y, 5); 6003 } 6004 6005 __mmask8 test_mm_cmp_round_sd_mask(__m128d __X, __m128d __Y) { 6006 // CHECK-LABEL: @test_mm_cmp_round_sd_mask 6007 // CHECK: @llvm.x86.avx512.mask.cmp 6008 return _mm_cmp_round_sd_mask(__X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 6009 } 6010 6011 __mmask8 test_mm_mask_cmp_round_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) { 6012 // CHECK-LABEL: @test_mm_mask_cmp_round_sd_mask 6013 // CHECK: @llvm.x86.avx512.mask.cmp 6014 return _mm_mask_cmp_round_sd_mask(__M, __X, __Y, 5, _MM_FROUND_CUR_DIRECTION); 6015 } 6016 6017 __mmask8 test_mm_cmp_sd_mask(__m128d __X, __m128d __Y) { 6018 // CHECK-LABEL: @test_mm_cmp_sd_mask 6019 // CHECK: @llvm.x86.avx512.mask.cmp 6020 return _mm_cmp_sd_mask(__X, __Y, 5); 6021 } 6022 6023 __mmask8 test_mm_mask_cmp_sd_mask(__mmask8 __M, __m128d __X, __m128d __Y) { 6024 // CHECK-LABEL: @test_mm_mask_cmp_sd_mask 6025 // CHECK: @llvm.x86.avx512.mask.cmp 6026 return _mm_mask_cmp_sd_mask(__M, __X, __Y, 5); 6027 } 6028 6029 __m512 test_mm512_movehdup_ps(__m512 __A) { 6030 // CHECK-LABEL: @test_mm512_movehdup_ps 6031 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 6032 return _mm512_movehdup_ps(__A); 6033 } 6034 6035 __m512 test_mm512_mask_movehdup_ps(__m512 __W, __mmask16 __U, __m512 __A) { 6036 // CHECK-LABEL: @test_mm512_mask_movehdup_ps 6037 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 6038 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 6039 return _mm512_mask_movehdup_ps(__W, __U, __A); 6040 } 6041 6042 __m512 test_mm512_maskz_movehdup_ps(__mmask16 __U, __m512 __A) { 6043 // CHECK-LABEL: @test_mm512_maskz_movehdup_ps 6044 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 1, i32 1, i32 3, i32 3, i32 5, i32 5, i32 7, i32 7, i32 9, i32 9, i32 11, i32 11, i32 13, i32 13, i32 15, i32 15> 6045 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 6046 return _mm512_maskz_movehdup_ps(__U, __A); 6047 } 6048 6049 __m512 test_mm512_moveldup_ps(__m512 __A) { 6050 // CHECK-LABEL: @test_mm512_moveldup_ps 6051 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 6052 return _mm512_moveldup_ps(__A); 6053 } 6054 6055 __m512 test_mm512_mask_moveldup_ps(__m512 __W, __mmask16 __U, __m512 __A) { 6056 // CHECK-LABEL: @test_mm512_mask_moveldup_ps 6057 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 6058 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 6059 return _mm512_mask_moveldup_ps(__W, __U, __A); 6060 } 6061 6062 __m512 test_mm512_maskz_moveldup_ps(__mmask16 __U, __m512 __A) { 6063 // CHECK-LABEL: @test_mm512_maskz_moveldup_ps 6064 // CHECK: shufflevector <16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x i32> <i32 0, i32 0, i32 2, i32 2, i32 4, i32 4, i32 6, i32 6, i32 8, i32 8, i32 10, i32 10, i32 12, i32 12, i32 14, i32 14> 6065 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 6066 return _mm512_maskz_moveldup_ps(__U, __A); 6067 } 6068 6069 __m512i test_mm512_shuffle_epi32(__m512i __A) { 6070 // CHECK-LABEL: @test_mm512_shuffle_epi32 6071 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12> 6072 return _mm512_shuffle_epi32(__A, 1); 6073 } 6074 6075 __m512i test_mm512_mask_shuffle_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 6076 // CHECK-LABEL: @test_mm512_mask_shuffle_epi32 6077 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12> 6078 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 6079 return _mm512_mask_shuffle_epi32(__W, __U, __A, 1); 6080 } 6081 6082 __m512i test_mm512_maskz_shuffle_epi32(__mmask16 __U, __m512i __A) { 6083 // CHECK-LABEL: @test_mm512_maskz_shuffle_epi32 6084 // CHECK: shufflevector <16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> <i32 1, i32 0, i32 0, i32 0, i32 5, i32 4, i32 4, i32 4, i32 9, i32 8, i32 8, i32 8, i32 13, i32 12, i32 12, i32 12> 6085 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 6086 return _mm512_maskz_shuffle_epi32(__U, __A, 1); 6087 } 6088 6089 __m512d test_mm512_mask_expand_pd(__m512d __W, __mmask8 __U, __m512d __A) { 6090 // CHECK-LABEL: @test_mm512_mask_expand_pd 6091 // CHECK: @llvm.x86.avx512.mask.expand.pd.512 6092 return _mm512_mask_expand_pd(__W, __U, __A); 6093 } 6094 6095 __m512d test_mm512_maskz_expand_pd(__mmask8 __U, __m512d __A) { 6096 // CHECK-LABEL: @test_mm512_maskz_expand_pd 6097 // CHECK: @llvm.x86.avx512.mask.expand.pd.512 6098 return _mm512_maskz_expand_pd(__U, __A); 6099 } 6100 6101 __m512i test_mm512_mask_expand_epi64(__m512i __W, __mmask8 __U, __m512i __A) { 6102 // CHECK-LABEL: @test_mm512_mask_expand_epi64 6103 // CHECK: @llvm.x86.avx512.mask.expand.q.512 6104 return _mm512_mask_expand_epi64(__W, __U, __A); 6105 } 6106 6107 __m512i test_mm512_maskz_expand_epi64(__mmask8 __U, __m512i __A) { 6108 // CHECK-LABEL: @test_mm512_maskz_expand_epi64 6109 // CHECK: @llvm.x86.avx512.mask.expand.q.512 6110 return _mm512_maskz_expand_epi64(__U, __A); 6111 } 6112 __m512i test_mm512_mask_expandloadu_epi64(__m512i __W, __mmask8 __U, void const *__P) { 6113 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi64 6114 // CHECK: @llvm.x86.avx512.mask.expand.load.q.512 6115 return _mm512_mask_expandloadu_epi64(__W, __U, __P); 6116 } 6117 6118 __m512i test_mm512_maskz_expandloadu_epi64(__mmask8 __U, void const *__P) { 6119 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi64 6120 // CHECK: @llvm.x86.avx512.mask.expand.load.q.512 6121 return _mm512_maskz_expandloadu_epi64(__U, __P); 6122 } 6123 6124 __m512d test_mm512_mask_expandloadu_pd(__m512d __W, __mmask8 __U, void const *__P) { 6125 // CHECK-LABEL: @test_mm512_mask_expandloadu_pd 6126 // CHECK: @llvm.x86.avx512.mask.expand.load.pd.512 6127 return _mm512_mask_expandloadu_pd(__W, __U, __P); 6128 } 6129 6130 __m512d test_mm512_maskz_expandloadu_pd(__mmask8 __U, void const *__P) { 6131 // CHECK-LABEL: @test_mm512_maskz_expandloadu_pd 6132 // CHECK: @llvm.x86.avx512.mask.expand.load.pd.512 6133 return _mm512_maskz_expandloadu_pd(__U, __P); 6134 } 6135 6136 __m512i test_mm512_mask_expandloadu_epi32(__m512i __W, __mmask16 __U, void const *__P) { 6137 // CHECK-LABEL: @test_mm512_mask_expandloadu_epi32 6138 // CHECK: @llvm.x86.avx512.mask.expand.load.d.512 6139 return _mm512_mask_expandloadu_epi32(__W, __U, __P); 6140 } 6141 6142 __m512i test_mm512_maskz_expandloadu_epi32(__mmask16 __U, void const *__P) { 6143 // CHECK-LABEL: @test_mm512_maskz_expandloadu_epi32 6144 // CHECK: @llvm.x86.avx512.mask.expand.load.d.512 6145 return _mm512_maskz_expandloadu_epi32(__U, __P); 6146 } 6147 6148 __m512 test_mm512_mask_expand_ps(__m512 __W, __mmask16 __U, __m512 __A) { 6149 // CHECK-LABEL: @test_mm512_mask_expand_ps 6150 // CHECK: @llvm.x86.avx512.mask.expand.ps.512 6151 return _mm512_mask_expand_ps(__W, __U, __A); 6152 } 6153 6154 __m512 test_mm512_maskz_expand_ps(__mmask16 __U, __m512 __A) { 6155 // CHECK-LABEL: @test_mm512_maskz_expand_ps 6156 // CHECK: @llvm.x86.avx512.mask.expand.ps.512 6157 return _mm512_maskz_expand_ps(__U, __A); 6158 } 6159 6160 __m512i test_mm512_mask_expand_epi32(__m512i __W, __mmask16 __U, __m512i __A) { 6161 // CHECK-LABEL: @test_mm512_mask_expand_epi32 6162 // CHECK: @llvm.x86.avx512.mask.expand.d.512 6163 return _mm512_mask_expand_epi32(__W, __U, __A); 6164 } 6165 6166 __m512i test_mm512_maskz_expand_epi32(__mmask16 __U, __m512i __A) { 6167 // CHECK-LABEL: @test_mm512_maskz_expand_epi32 6168 // CHECK: @llvm.x86.avx512.mask.expand.d.512 6169 return _mm512_maskz_expand_epi32(__U, __A); 6170 } 6171 __m512d test_mm512_cvt_roundps_pd(__m256 __A) { 6172 // CHECK-LABEL: @test_mm512_cvt_roundps_pd 6173 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 6174 return _mm512_cvt_roundps_pd(__A, _MM_FROUND_CUR_DIRECTION); 6175 } 6176 6177 __m512d test_mm512_mask_cvt_roundps_pd(__m512d __W, __mmask8 __U, __m256 __A) { 6178 // CHECK-LABEL: @test_mm512_mask_cvt_roundps_pd 6179 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 6180 return _mm512_mask_cvt_roundps_pd(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 6181 } 6182 6183 __m512d test_mm512_maskz_cvt_roundps_pd(__mmask8 __U, __m256 __A) { 6184 // CHECK-LABEL: @test_mm512_maskz_cvt_roundps_pd 6185 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 6186 return _mm512_maskz_cvt_roundps_pd(__U, __A, _MM_FROUND_CUR_DIRECTION); 6187 } 6188 6189 __m512d test_mm512_cvtps_pd(__m256 __A) { 6190 // CHECK-LABEL: @test_mm512_cvtps_pd 6191 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 6192 return _mm512_cvtps_pd(__A); 6193 } 6194 6195 __m512d test_mm512_mask_cvtps_pd(__m512d __W, __mmask8 __U, __m256 __A) { 6196 // CHECK-LABEL: @test_mm512_mask_cvtps_pd 6197 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 6198 return _mm512_mask_cvtps_pd(__W, __U, __A); 6199 } 6200 6201 __m512d test_mm512_maskz_cvtps_pd(__mmask8 __U, __m256 __A) { 6202 // CHECK-LABEL: @test_mm512_maskz_cvtps_pd 6203 // CHECK: @llvm.x86.avx512.mask.cvtps2pd.512 6204 return _mm512_maskz_cvtps_pd(__U, __A); 6205 } 6206 __m512d test_mm512_mask_mov_pd(__m512d __W, __mmask8 __U, __m512d __A) { 6207 // CHECK-LABEL: @test_mm512_mask_mov_pd 6208 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 6209 return _mm512_mask_mov_pd(__W, __U, __A); 6210 } 6211 6212 __m512d test_mm512_maskz_mov_pd(__mmask8 __U, __m512d __A) { 6213 // CHECK-LABEL: @test_mm512_maskz_mov_pd 6214 // CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}} 6215 return _mm512_maskz_mov_pd(__U, __A); 6216 } 6217 6218 __m512 test_mm512_mask_mov_ps(__m512 __W, __mmask16 __U, __m512 __A) { 6219 // CHECK-LABEL: @test_mm512_mask_mov_ps 6220 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 6221 return _mm512_mask_mov_ps(__W, __U, __A); 6222 } 6223 6224 __m512 test_mm512_maskz_mov_ps(__mmask16 __U, __m512 __A) { 6225 // CHECK-LABEL: @test_mm512_maskz_mov_ps 6226 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}} 6227 return _mm512_maskz_mov_ps(__U, __A); 6228 } 6229 6230 void test_mm512_mask_compressstoreu_pd(void *__P, __mmask8 __U, __m512d __A) { 6231 // CHECK-LABEL: @test_mm512_mask_compressstoreu_pd 6232 // CHECK: @llvm.x86.avx512.mask.compress.store.pd.512 6233 return _mm512_mask_compressstoreu_pd(__P, __U, __A); 6234 } 6235 6236 void test_mm512_mask_compressstoreu_epi64(void *__P, __mmask8 __U, __m512i __A) { 6237 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi64 6238 // CHECK: @llvm.x86.avx512.mask.compress.store.q.512 6239 return _mm512_mask_compressstoreu_epi64(__P, __U, __A); 6240 } 6241 6242 void test_mm512_mask_compressstoreu_ps(void *__P, __mmask16 __U, __m512 __A) { 6243 // CHECK-LABEL: @test_mm512_mask_compressstoreu_ps 6244 // CHECK: @llvm.x86.avx512.mask.compress.store.ps.512 6245 return _mm512_mask_compressstoreu_ps(__P, __U, __A); 6246 } 6247 6248 void test_mm512_mask_compressstoreu_epi32(void *__P, __mmask16 __U, __m512i __A) { 6249 // CHECK-LABEL: @test_mm512_mask_compressstoreu_epi32 6250 // CHECK: @llvm.x86.avx512.mask.compress.store.d.512 6251 return _mm512_mask_compressstoreu_epi32(__P, __U, __A); 6252 } 6253 6254 __m256i test_mm512_cvtt_roundpd_epu32(__m512d __A) { 6255 // CHECK-LABEL: @test_mm512_cvtt_roundpd_epu32 6256 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 6257 return _mm512_cvtt_roundpd_epu32(__A, _MM_FROUND_CUR_DIRECTION); 6258 } 6259 6260 __m256i test_mm512_mask_cvtt_roundpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) { 6261 // CHECK-LABEL: @test_mm512_mask_cvtt_roundpd_epu32 6262 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 6263 return _mm512_mask_cvtt_roundpd_epu32(__W, __U, __A, _MM_FROUND_CUR_DIRECTION); 6264 } 6265 6266 __m256i test_mm512_maskz_cvtt_roundpd_epu32(__mmask8 __U, __m512d __A) { 6267 // CHECK-LABEL: @test_mm512_maskz_cvtt_roundpd_epu32 6268 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 6269 return _mm512_maskz_cvtt_roundpd_epu32(__U, __A, _MM_FROUND_CUR_DIRECTION); 6270 } 6271 6272 __m256i test_mm512_cvttpd_epu32(__m512d __A) { 6273 // CHECK-LABEL: @test_mm512_cvttpd_epu32 6274 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 6275 return _mm512_cvttpd_epu32(__A); 6276 } 6277 6278 __m256i test_mm512_mask_cvttpd_epu32(__m256i __W, __mmask8 __U, __m512d __A) { 6279 // CHECK-LABEL: @test_mm512_mask_cvttpd_epu32 6280 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 6281 return _mm512_mask_cvttpd_epu32(__W, __U, __A); 6282 } 6283 6284 __m256i test_mm512_maskz_cvttpd_epu32(__mmask8 __U, __m512d __A) { 6285 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epu32 6286 // CHECK: @llvm.x86.avx512.mask.cvttpd2udq.512 6287 return _mm512_maskz_cvttpd_epu32(__U, __A); 6288 } 6289 6290 __m512 test_mm512_castpd_ps (__m512d __A) 6291 { 6292 // CHECK-LABEL: @test_mm512_castpd_ps 6293 // CHECK: bitcast <8 x double> %{{.}} to <16 x float> 6294 return _mm512_castpd_ps (__A); 6295 } 6296 6297 __m512d test_mm512_castps_pd (__m512 __A) 6298 { 6299 // CHECK-LABEL: @test_mm512_castps_pd 6300 // CHECK: bitcast <16 x float> %{{.}} to <8 x double> 6301 return _mm512_castps_pd (__A); 6302 } 6303 6304 __m512i test_mm512_castpd_si512 (__m512d __A) 6305 { 6306 // CHECK-LABEL: @test_mm512_castpd_si512 6307 // CHECK: bitcast <8 x double> %{{.}} to <8 x i64> 6308 return _mm512_castpd_si512 (__A); 6309 } 6310 6311 __m512 test_mm512_castps128_ps512(__m128 __A) { 6312 // CHECK-LABEL: @test_mm512_castps128_ps512 6313 // CHECK: shufflevector <4 x float> %{{.*}}, <4 x float> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> 6314 return _mm512_castps128_ps512(__A); 6315 } 6316 6317 __m512d test_mm512_castpd128_pd512(__m128d __A) { 6318 // CHECK-LABEL: @test_mm512_castpd128_pd512 6319 // CHECK: shufflevector <2 x double> %{{.*}}, <2 x double> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> 6320 return _mm512_castpd128_pd512(__A); 6321 } 6322 6323 __m512d test_mm512_set1_epi8(char d) 6324 { 6325 // CHECK-LABEL: @test_mm512_set1_epi8 6326 // CHECK: insertelement <64 x i8> {{.*}}, i32 0 6327 // CHECK: insertelement <64 x i8> {{.*}}, i32 1 6328 // CHECK: insertelement <64 x i8> {{.*}}, i32 2 6329 // CHECK: insertelement <64 x i8> {{.*}}, i32 3 6330 // CHECK: insertelement <64 x i8> {{.*}}, i32 4 6331 // CHECK: insertelement <64 x i8> {{.*}}, i32 5 6332 // CHECK: insertelement <64 x i8> {{.*}}, i32 6 6333 // CHECK: insertelement <64 x i8> {{.*}}, i32 7 6334 // CHECK: insertelement <64 x i8> {{.*}}, i32 63 6335 return _mm512_set1_epi8(d); 6336 } 6337 6338 __m512d test_mm512_set1_epi16(short d) 6339 { 6340 // CHECK-LABEL: @test_mm512_set1_epi16 6341 // CHECK: insertelement <32 x i16> {{.*}}, i32 0 6342 // CHECK: insertelement <32 x i16> {{.*}}, i32 1 6343 // CHECK: insertelement <32 x i16> {{.*}}, i32 2 6344 // CHECK: insertelement <32 x i16> {{.*}}, i32 3 6345 // CHECK: insertelement <32 x i16> {{.*}}, i32 4 6346 // CHECK: insertelement <32 x i16> {{.*}}, i32 5 6347 // CHECK: insertelement <32 x i16> {{.*}}, i32 6 6348 // CHECK: insertelement <32 x i16> {{.*}}, i32 7 6349 // CHECK: insertelement <32 x i16> {{.*}}, i32 31 6350 return _mm512_set1_epi16(d); 6351 } 6352 6353 __m512i test_mm512_set4_epi32 (int __A, int __B, int __C, int __D) 6354 { 6355 // CHECK-LABEL: @test_mm512_set4_epi32 6356 // CHECK: insertelement <16 x i32> {{.*}}, i32 15 6357 return _mm512_set4_epi32 (__A,__B,__C,__D); 6358 } 6359 6360 __m512i test_mm512_set4_epi64 (long long __A, long long __B, long long __C, long long __D) 6361 { 6362 // CHECK-LABEL: @test_mm512_set4_epi64 6363 // CHECK: insertelement <8 x i64> {{.*}}, i32 7 6364 return _mm512_set4_epi64 (__A,__B,__C,__D); 6365 } 6366 6367 __m512d test_mm512_set4_pd (double __A, double __B, double __C, double __D) 6368 { 6369 // CHECK-LABEL: @test_mm512_set4_pd 6370 // CHECK: insertelement <8 x double> {{.*}}, i32 7 6371 return _mm512_set4_pd (__A,__B,__C,__D); 6372 } 6373 6374 __m512 test_mm512_set4_ps (float __A, float __B, float __C, float __D) 6375 { 6376 // CHECK-LABEL: @test_mm512_set4_ps 6377 // CHECK: insertelement <16 x float> {{.*}}, i32 15 6378 return _mm512_set4_ps (__A,__B,__C,__D); 6379 } 6380 6381 __m512i test_mm512_setr4_epi32(int e0, int e1, int e2, int e3) 6382 { 6383 // CHECK-LABEL: @test_mm512_setr4_epi32 6384 // CHECK: insertelement <16 x i32> {{.*}}, i32 15 6385 return _mm512_setr4_epi32(e0, e1, e2, e3); 6386 } 6387 6388 __m512i test_mm512_setr4_epi64(long long e0, long long e1, long long e2, long long e3) 6389 { 6390 // CHECK-LABEL: @test_mm512_setr4_epi64 6391 // CHECK: insertelement <8 x i64> {{.*}}, i32 7 6392 return _mm512_setr4_epi64(e0, e1, e2, e3); 6393 } 6394 6395 __m512i test_mm512_setr4_pd(double e0, double e1, double e2, double e3) 6396 { 6397 // CHECK-LABEL: @test_mm512_setr4_pd 6398 // CHECK: insertelement <8 x double> {{.*}}, i32 7 6399 return _mm512_setr4_pd(e0,e1,e2,e3); 6400 } 6401 6402 __m512i test_mm512_setr4_ps(float e0, float e1, float e2, float e3) 6403 { 6404 // CHECK-LABEL: @test_mm512_setr4_ps 6405 // CHECK: insertelement <16 x float> {{.*}}, i32 15 6406 return _mm512_setr4_ps(e0,e1,e2,e3); 6407 } 6408 6409 __m512d test_mm512_castpd256_pd512(__m256d a) 6410 { 6411 // CHECK-LABEL: @test_mm512_castpd256_pd512 6412 // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef> 6413 return _mm512_castpd256_pd512(a); 6414 } 6415 6416 __m256d test_mm512_castpd512_pd256 (__m512d __A) 6417 { 6418 // CHECK-LABEL: @test_mm512_castpd512_pd256 6419 // CHECK: shufflevector <8 x double> %{{.}}, <8 x double> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 6420 return _mm512_castpd512_pd256 (__A); 6421 } 6422 6423 __m256 test_mm512_castps512_ps256 (__m512 __A) 6424 { 6425 // CHECK-LABEL: @test_mm512_castps512_ps256 6426 // CHECK: shufflevector <16 x float> %{{.}}, <16 x float> %{{.}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7> 6427 return _mm512_castps512_ps256 (__A); 6428 } 6429 6430 __m512i test_mm512_castps_si512 (__m512 __A) 6431 { 6432 // CHECK-LABEL: @test_mm512_castps_si512 6433 // CHECK: bitcast <16 x float> %{{.}} to <8 x i64> 6434 return _mm512_castps_si512 (__A); 6435 } 6436 __m512i test_mm512_castsi128_si512(__m128i __A) { 6437 // CHECK-LABEL: @test_mm512_castsi128_si512 6438 // CHECK: shufflevector <2 x i64> %{{.*}}, <2 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef> 6439 return _mm512_castsi128_si512(__A); 6440 } 6441 6442 __m512i test_mm512_castsi256_si512(__m256i __A) { 6443 // CHECK-LABEL: @test_mm512_castsi256_si512 6444 // CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef> 6445 return _mm512_castsi256_si512(__A); 6446 } 6447 6448 __m512 test_mm512_castsi512_ps (__m512i __A) 6449 { 6450 // CHECK-LABEL: @test_mm512_castsi512_ps 6451 // CHECK: bitcast <8 x i64> %{{.}} to <16 x float> 6452 return _mm512_castsi512_ps (__A); 6453 } 6454 6455 __m512d test_mm512_castsi512_pd (__m512i __A) 6456 { 6457 // CHECK-LABEL: @test_mm512_castsi512_pd 6458 // CHECK: bitcast <8 x i64> %{{.}} to <8 x double> 6459 return _mm512_castsi512_pd (__A); 6460 } 6461 6462 __m128i test_mm512_castsi512_si128 (__m512i __A) 6463 { 6464 // CHECK-LABEL: @test_mm512_castsi512_si128 6465 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <2 x i32> <i32 0, i32 1> 6466 return _mm512_castsi512_si128 (__A); 6467 } 6468 6469 __m256i test_mm512_castsi512_si256 (__m512i __A) 6470 { 6471 // CHECK-LABEL: @test_mm512_castsi512_si256 6472 // CHECK: shufflevector <8 x i64> %{{.}}, <8 x i64> %{{.}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3> 6473 return _mm512_castsi512_si256 (__A); 6474 } 6475 6476 __m128 test_mm_cvt_roundsd_ss(__m128 __A, __m128d __B) { 6477 // CHECK-LABEL: @test_mm_cvt_roundsd_ss 6478 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round 6479 return _mm_cvt_roundsd_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6480 } 6481 6482 __m128 test_mm_mask_cvt_roundsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) { 6483 // CHECK-LABEL: @test_mm_mask_cvt_roundsd_ss 6484 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round 6485 return _mm_mask_cvt_roundsd_ss(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 6486 } 6487 6488 __m128 test_mm_maskz_cvt_roundsd_ss(__mmask8 __U, __m128 __A, __m128d __B) { 6489 // CHECK-LABEL: @test_mm_maskz_cvt_roundsd_ss 6490 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round 6491 return _mm_maskz_cvt_roundsd_ss(__U, __A, __B, _MM_FROUND_CUR_DIRECTION); 6492 } 6493 6494 __m128d test_mm_cvt_roundi64_sd(__m128d __A, long long __B) { 6495 // CHECK-LABEL: @test_mm_cvt_roundi64_sd 6496 // CHECK: @llvm.x86.avx512.cvtsi2sd64 6497 return _mm_cvt_roundi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 6498 } 6499 6500 __m128d test_mm_cvt_roundsi64_sd(__m128d __A, long long __B) { 6501 // CHECK-LABEL: @test_mm_cvt_roundsi64_sd 6502 // CHECK: @llvm.x86.avx512.cvtsi2sd64 6503 return _mm_cvt_roundsi64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 6504 } 6505 6506 __m128 test_mm_cvt_roundsi32_ss(__m128 __A, int __B) { 6507 // CHECK-LABEL: @test_mm_cvt_roundsi32_ss 6508 // CHECK: @llvm.x86.avx512.cvtsi2ss32 6509 return _mm_cvt_roundsi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6510 } 6511 6512 __m128 test_mm_cvt_roundi32_ss(__m128 __A, int __B) { 6513 // CHECK-LABEL: @test_mm_cvt_roundi32_ss 6514 // CHECK: @llvm.x86.avx512.cvtsi2ss32 6515 return _mm_cvt_roundi32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6516 } 6517 6518 __m128 test_mm_cvt_roundsi64_ss(__m128 __A, long long __B) { 6519 // CHECK-LABEL: @test_mm_cvt_roundsi64_ss 6520 // CHECK: @llvm.x86.avx512.cvtsi2ss64 6521 return _mm_cvt_roundsi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6522 } 6523 6524 __m128 test_mm_cvt_roundi64_ss(__m128 __A, long long __B) { 6525 // CHECK-LABEL: @test_mm_cvt_roundi64_ss 6526 // CHECK: @llvm.x86.avx512.cvtsi2ss64 6527 return _mm_cvt_roundi64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6528 } 6529 6530 __m128d test_mm_cvt_roundss_sd(__m128d __A, __m128 __B) { 6531 // CHECK-LABEL: @test_mm_cvt_roundss_sd 6532 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round 6533 return _mm_cvt_roundss_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 6534 } 6535 6536 __m128d test_mm_mask_cvt_roundss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) { 6537 // CHECK-LABEL: @test_mm_mask_cvt_roundss_sd 6538 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round 6539 return _mm_mask_cvt_roundss_sd(__W, __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 6540 } 6541 6542 __m128d test_mm_maskz_cvt_roundss_sd( __mmask8 __U, __m128d __A, __m128 __B) { 6543 // CHECK-LABEL: @test_mm_maskz_cvt_roundss_sd 6544 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round 6545 return _mm_maskz_cvt_roundss_sd( __U, __A, __B, _MM_FROUND_CUR_DIRECTION); 6546 } 6547 6548 __m128d test_mm_cvtu32_sd(__m128d __A, unsigned __B) { 6549 // CHECK-LABEL: @test_mm_cvtu32_sd 6550 // CHECK: @llvm.x86.avx512.cvtusi2sd 6551 return _mm_cvtu32_sd(__A, __B); 6552 } 6553 6554 __m128d test_mm_cvt_roundu64_sd(__m128d __A, unsigned long long __B) { 6555 // CHECK-LABEL: @test_mm_cvt_roundu64_sd 6556 // CHECK: @llvm.x86.avx512.cvtusi642sd 6557 return _mm_cvt_roundu64_sd(__A, __B, _MM_FROUND_CUR_DIRECTION); 6558 } 6559 6560 __m128d test_mm_cvtu64_sd(__m128d __A, unsigned long long __B) { 6561 // CHECK-LABEL: @test_mm_cvtu64_sd 6562 // CHECK: @llvm.x86.avx512.cvtusi642sd 6563 return _mm_cvtu64_sd(__A, __B); 6564 } 6565 6566 __m128 test_mm_cvt_roundu32_ss(__m128 __A, unsigned __B) { 6567 // CHECK-LABEL: @test_mm_cvt_roundu32_ss 6568 // CHECK: @llvm.x86.avx512.cvtusi2ss 6569 return _mm_cvt_roundu32_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6570 } 6571 6572 __m128 test_mm_cvtu32_ss(__m128 __A, unsigned __B) { 6573 // CHECK-LABEL: @test_mm_cvtu32_ss 6574 // CHECK: @llvm.x86.avx512.cvtusi2ss 6575 return _mm_cvtu32_ss(__A, __B); 6576 } 6577 6578 __m128 test_mm_cvt_roundu64_ss(__m128 __A, unsigned long long __B) { 6579 // CHECK-LABEL: @test_mm_cvt_roundu64_ss 6580 // CHECK: @llvm.x86.avx512.cvtusi642ss 6581 return _mm_cvt_roundu64_ss(__A, __B, _MM_FROUND_CUR_DIRECTION); 6582 } 6583 6584 __m128 test_mm_cvtu64_ss(__m128 __A, unsigned long long __B) { 6585 // CHECK-LABEL: @test_mm_cvtu64_ss 6586 // CHECK: @llvm.x86.avx512.cvtusi642ss 6587 return _mm_cvtu64_ss(__A, __B); 6588 } 6589 6590 __m512i test_mm512_mask_cvttps_epu32 (__m512i __W, __mmask16 __U, __m512 __A) 6591 { 6592 // CHECK-LABEL: @test_mm512_mask_cvttps_epu32 6593 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512 6594 return _mm512_mask_cvttps_epu32 (__W,__U,__A); 6595 } 6596 6597 __m512i test_mm512_maskz_cvttps_epu32 (__mmask16 __U, __m512 __A) 6598 { 6599 // CHECK-LABEL: @test_mm512_maskz_cvttps_epu32 6600 // CHECK: @llvm.x86.avx512.mask.cvttps2udq.512 6601 return _mm512_maskz_cvttps_epu32 (__U,__A); 6602 } 6603 6604 __m512 test_mm512_cvtepu32_ps (__m512i __A) 6605 { 6606 // CHECK-LABEL: @test_mm512_cvtepu32_ps 6607 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512 6608 return _mm512_cvtepu32_ps (__A); 6609 } 6610 6611 __m512 test_mm512_mask_cvtepu32_ps (__m512 __W, __mmask16 __U, __m512i __A) 6612 { 6613 // CHECK-LABEL: @test_mm512_mask_cvtepu32_ps 6614 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512 6615 return _mm512_mask_cvtepu32_ps (__W,__U,__A); 6616 } 6617 6618 __m512 test_mm512_maskz_cvtepu32_ps (__mmask16 __U, __m512i __A) 6619 { 6620 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_ps 6621 // CHECK: @llvm.x86.avx512.mask.cvtudq2ps.512 6622 return _mm512_maskz_cvtepu32_ps (__U,__A); 6623 } 6624 6625 __m512d test_mm512_mask_cvtepi32_pd (__m512d __W, __mmask8 __U, __m256i __A) 6626 { 6627 // CHECK-LABEL: @test_mm512_mask_cvtepi32_pd 6628 // CHECK: @llvm.x86.avx512.mask.cvtdq2pd.512 6629 return _mm512_mask_cvtepi32_pd (__W,__U,__A); 6630 } 6631 6632 __m512d test_mm512_maskz_cvtepi32_pd (__mmask8 __U, __m256i __A) 6633 { 6634 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_pd 6635 // CHECK: @llvm.x86.avx512.mask.cvtdq2pd.512 6636 return _mm512_maskz_cvtepi32_pd (__U,__A); 6637 } 6638 6639 __m512 test_mm512_cvtepi32_ps (__m512i __A) 6640 { 6641 // CHECK-LABEL: @test_mm512_cvtepi32_ps 6642 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512 6643 return _mm512_cvtepi32_ps (__A); 6644 } 6645 6646 __m512 test_mm512_mask_cvtepi32_ps (__m512 __W, __mmask16 __U, __m512i __A) 6647 { 6648 // CHECK-LABEL: @test_mm512_mask_cvtepi32_ps 6649 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512 6650 return _mm512_mask_cvtepi32_ps (__W,__U,__A); 6651 } 6652 6653 __m512 test_mm512_maskz_cvtepi32_ps (__mmask16 __U, __m512i __A) 6654 { 6655 // CHECK-LABEL: @test_mm512_maskz_cvtepi32_ps 6656 // CHECK: @llvm.x86.avx512.mask.cvtdq2ps.512 6657 return _mm512_maskz_cvtepi32_ps (__U,__A); 6658 } 6659 6660 __m512d test_mm512_mask_cvtepu32_pd (__m512d __W, __mmask8 __U, __m256i __A) 6661 { 6662 // CHECK-LABEL: @test_mm512_mask_cvtepu32_pd 6663 // CHECK: @llvm.x86.avx512.mask.cvtudq2pd.512 6664 return _mm512_mask_cvtepu32_pd (__W,__U,__A); 6665 } 6666 6667 __m512d test_mm512_maskz_cvtepu32_pd (__mmask8 __U, __m256i __A) 6668 { 6669 // CHECK-LABEL: @test_mm512_maskz_cvtepu32_pd 6670 // CHECK: @llvm.x86.avx512.mask.cvtudq2pd.512 6671 return _mm512_maskz_cvtepu32_pd (__U,__A); 6672 } 6673 6674 __m256 test_mm512_cvtpd_ps (__m512d __A) 6675 { 6676 // CHECK-LABEL: @test_mm512_cvtpd_ps 6677 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 6678 return _mm512_cvtpd_ps (__A); 6679 } 6680 6681 __m256 test_mm512_mask_cvtpd_ps (__m256 __W, __mmask8 __U, __m512d __A) 6682 { 6683 // CHECK-LABEL: @test_mm512_mask_cvtpd_ps 6684 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 6685 return _mm512_mask_cvtpd_ps (__W,__U,__A); 6686 } 6687 6688 __m256 test_mm512_maskz_cvtpd_ps (__mmask8 __U, __m512d __A) 6689 { 6690 // CHECK-LABEL: @test_mm512_maskz_cvtpd_ps 6691 // CHECK: @llvm.x86.avx512.mask.cvtpd2ps.512 6692 return _mm512_maskz_cvtpd_ps (__U,__A); 6693 } 6694 6695 __m512 test_mm512_mask_cvtph_ps (__m512 __W, __mmask16 __U, __m256i __A) 6696 { 6697 // CHECK-LABEL: @test_mm512_mask_cvtph_ps 6698 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512 6699 return _mm512_mask_cvtph_ps (__W,__U,__A); 6700 } 6701 6702 __m512 test_mm512_maskz_cvtph_ps (__mmask16 __U, __m256i __A) 6703 { 6704 // CHECK-LABEL: @test_mm512_maskz_cvtph_ps 6705 // CHECK: @llvm.x86.avx512.mask.vcvtph2ps.512 6706 return _mm512_maskz_cvtph_ps (__U,__A); 6707 } 6708 6709 __m256i test_mm512_mask_cvttpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A) 6710 { 6711 // CHECK-LABEL: @test_mm512_mask_cvttpd_epi32 6712 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512 6713 return _mm512_mask_cvttpd_epi32 (__W,__U,__A); 6714 } 6715 6716 __m256i test_mm512_maskz_cvttpd_epi32 (__mmask8 __U, __m512d __A) 6717 { 6718 // CHECK-LABEL: @test_mm512_maskz_cvttpd_epi32 6719 // CHECK: @llvm.x86.avx512.mask.cvttpd2dq.512 6720 return _mm512_maskz_cvttpd_epi32 (__U,__A); 6721 } 6722 6723 __m512i test_mm512_mask_cvttps_epi32 (__m512i __W, __mmask16 __U, __m512 __A) 6724 { 6725 // CHECK-LABEL: @test_mm512_mask_cvttps_epi32 6726 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512 6727 return _mm512_mask_cvttps_epi32 (__W,__U,__A); 6728 } 6729 6730 __m512i test_mm512_maskz_cvttps_epi32 (__mmask16 __U, __m512 __A) 6731 { 6732 // CHECK-LABEL: @test_mm512_maskz_cvttps_epi32 6733 // CHECK: @llvm.x86.avx512.mask.cvttps2dq.512 6734 return _mm512_maskz_cvttps_epi32 (__U,__A); 6735 } 6736 6737 __m512i test_mm512_cvtps_epi32 (__m512 __A) 6738 { 6739 // CHECK-LABEL: @test_mm512_cvtps_epi32 6740 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512 6741 return _mm512_cvtps_epi32 (__A); 6742 } 6743 6744 __m512i test_mm512_mask_cvtps_epi32 (__m512i __W, __mmask16 __U, __m512 __A) 6745 { 6746 // CHECK-LABEL: @test_mm512_mask_cvtps_epi32 6747 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512 6748 return _mm512_mask_cvtps_epi32 (__W,__U,__A); 6749 } 6750 6751 __m512i test_mm512_maskz_cvtps_epi32 (__mmask16 __U, __m512 __A) 6752 { 6753 // CHECK-LABEL: @test_mm512_maskz_cvtps_epi32 6754 // CHECK: @llvm.x86.avx512.mask.cvtps2dq.512 6755 return _mm512_maskz_cvtps_epi32 (__U,__A); 6756 } 6757 6758 __m256i test_mm512_cvtpd_epi32 (__m512d __A) 6759 { 6760 // CHECK-LABEL: @test_mm512_cvtpd_epi32 6761 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512 6762 return _mm512_cvtpd_epi32 (__A); 6763 } 6764 6765 __m256i test_mm512_mask_cvtpd_epi32 (__m256i __W, __mmask8 __U, __m512d __A) 6766 { 6767 // CHECK-LABEL: @test_mm512_mask_cvtpd_epi32 6768 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512 6769 return _mm512_mask_cvtpd_epi32 (__W,__U,__A); 6770 } 6771 6772 __m256i test_mm512_maskz_cvtpd_epi32 (__mmask8 __U, __m512d __A) 6773 { 6774 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epi32 6775 // CHECK: @llvm.x86.avx512.mask.cvtpd2dq.512 6776 return _mm512_maskz_cvtpd_epi32 (__U,__A); 6777 } 6778 6779 __m256i test_mm512_cvtpd_epu32 (__m512d __A) 6780 { 6781 // CHECK-LABEL: @test_mm512_cvtpd_epu32 6782 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512 6783 return _mm512_cvtpd_epu32 (__A); 6784 } 6785 6786 __m256i test_mm512_mask_cvtpd_epu32 (__m256i __W, __mmask8 __U, __m512d __A) 6787 { 6788 // CHECK-LABEL: @test_mm512_mask_cvtpd_epu32 6789 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512 6790 return _mm512_mask_cvtpd_epu32 (__W,__U,__A); 6791 } 6792 6793 __m256i test_mm512_maskz_cvtpd_epu32 (__mmask8 __U, __m512d __A) 6794 { 6795 // CHECK-LABEL: @test_mm512_maskz_cvtpd_epu32 6796 // CHECK: @llvm.x86.avx512.mask.cvtpd2udq.512 6797 return _mm512_maskz_cvtpd_epu32 (__U,__A); 6798 } 6799 6800 __m256i test_mm512_mask_cvtps_ph(__m256i src, __mmask16 k, __m512 a) 6801 { 6802 // CHECK-LABEL: @test_mm512_mask_cvtps_ph 6803 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512 6804 return _mm512_mask_cvtps_ph(src, k, a,_MM_FROUND_CUR_DIRECTION); 6805 } 6806 6807 __m256i test_mm512_maskz_cvtps_ph (__mmask16 k, __m512 a) 6808 { 6809 // CHECK-LABEL: @test_mm512_maskz_cvtps_ph 6810 // CHECK: @llvm.x86.avx512.mask.vcvtps2ph.512 6811 return _mm512_maskz_cvtps_ph( k, a,_MM_FROUND_CUR_DIRECTION); 6812 } 6813 6814 __m512i test_mm512_cvtps_epu32 ( __m512 __A) 6815 { 6816 // CHECK-LABEL: @test_mm512_cvtps_epu32 6817 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512 6818 return _mm512_cvtps_epu32(__A); 6819 } 6820 6821 __m512i test_mm512_mask_cvtps_epu32 (__m512i __W, __mmask16 __U, __m512 __A) 6822 { 6823 // CHECK-LABEL: @test_mm512_mask_cvtps_epu32 6824 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512 6825 return _mm512_mask_cvtps_epu32( __W, __U, __A); 6826 } 6827 __m512i test_mm512_maskz_cvtps_epu32 (__mmask16 __U, __m512 __A) 6828 { 6829 // CHECK-LABEL: @test_mm512_maskz_cvtps_epu32 6830 // CHECK: @llvm.x86.avx512.mask.cvtps2udq.512 6831 return _mm512_maskz_cvtps_epu32( __U, __A); 6832 } 6833 6834 __m512d test_mm512_mask_max_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) 6835 { 6836 // CHECK-LABEL: @test_mm512_mask_max_pd 6837 // CHECK: @llvm.x86.avx512.mask.max.pd.512 6838 return _mm512_mask_max_pd (__W,__U,__A,__B); 6839 } 6840 6841 __m512d test_mm512_maskz_max_pd (__mmask8 __U, __m512d __A, __m512d __B) 6842 { 6843 // CHECK-LABEL: @test_mm512_maskz_max_pd 6844 // CHECK: @llvm.x86.avx512.mask.max.pd.512 6845 return _mm512_maskz_max_pd (__U,__A,__B); 6846 } 6847 6848 __m512 test_mm512_mask_max_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) 6849 { 6850 // CHECK-LABEL: @test_mm512_mask_max_ps 6851 // CHECK: @llvm.x86.avx512.mask.max.ps.512 6852 return _mm512_mask_max_ps (__W,__U,__A,__B); 6853 } 6854 6855 __m512d test_mm512_mask_max_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B) 6856 { 6857 // CHECK-LABEL: @test_mm512_mask_max_round_pd 6858 // CHECK: @llvm.x86.avx512.mask.max.pd.512 6859 return _mm512_mask_max_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6860 } 6861 6862 __m512d test_mm512_maskz_max_round_pd(__mmask8 __U,__m512d __A,__m512d __B) 6863 { 6864 // CHECK-LABEL: @test_mm512_maskz_max_round_pd 6865 // CHECK: @llvm.x86.avx512.mask.max.pd.512 6866 return _mm512_maskz_max_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6867 } 6868 6869 __m512d test_mm512_max_round_pd(__m512d __A,__m512d __B) 6870 { 6871 // CHECK-LABEL: @test_mm512_max_round_pd 6872 // CHECK: @llvm.x86.avx512.mask.max.pd.512 6873 return _mm512_max_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION); 6874 } 6875 6876 __m512 test_mm512_maskz_max_ps (__mmask16 __U, __m512 __A, __m512 __B) 6877 { 6878 // CHECK-LABEL: @test_mm512_maskz_max_ps 6879 // CHECK: @llvm.x86.avx512.mask.max.ps.512 6880 return _mm512_maskz_max_ps (__U,__A,__B); 6881 } 6882 6883 __m512 test_mm512_mask_max_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B) 6884 { 6885 // CHECK-LABEL: @test_mm512_mask_max_round_ps 6886 // CHECK: @llvm.x86.avx512.mask.max.ps.512 6887 return _mm512_mask_max_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6888 } 6889 6890 __m512 test_mm512_maskz_max_round_ps(__mmask16 __U,__m512 __A,__m512 __B) 6891 { 6892 // CHECK-LABEL: @test_mm512_maskz_max_round_ps 6893 // CHECK: @llvm.x86.avx512.mask.max.ps.512 6894 return _mm512_maskz_max_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6895 } 6896 6897 __m512 test_mm512_max_round_ps(__m512 __A,__m512 __B) 6898 { 6899 // CHECK-LABEL: @test_mm512_max_round_ps 6900 // CHECK: @llvm.x86.avx512.mask.max.ps.512 6901 return _mm512_max_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION); 6902 } 6903 6904 __m512d test_mm512_mask_min_pd (__m512d __W, __mmask8 __U, __m512d __A, __m512d __B) 6905 { 6906 // CHECK-LABEL: @test_mm512_mask_min_pd 6907 // CHECK: @llvm.x86.avx512.mask.min.pd.512 6908 return _mm512_mask_min_pd (__W,__U,__A,__B); 6909 } 6910 6911 __m512d test_mm512_maskz_min_pd (__mmask8 __U, __m512d __A, __m512d __B) 6912 { 6913 // CHECK-LABEL: @test_mm512_maskz_min_pd 6914 // CHECK: @llvm.x86.avx512.mask.min.pd.512 6915 return _mm512_maskz_min_pd (__U,__A,__B); 6916 } 6917 6918 __m512d test_mm512_mask_min_round_pd(__m512d __W,__mmask8 __U,__m512d __A,__m512d __B) 6919 { 6920 // CHECK-LABEL: @test_mm512_mask_min_round_pd 6921 // CHECK: @llvm.x86.avx512.mask.min.pd.512 6922 return _mm512_mask_min_round_pd(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6923 } 6924 6925 __m512d test_mm512_maskz_min_round_pd(__mmask8 __U,__m512d __A,__m512d __B) 6926 { 6927 // CHECK-LABEL: @test_mm512_maskz_min_round_pd 6928 // CHECK: @llvm.x86.avx512.mask.min.pd.512 6929 return _mm512_maskz_min_round_pd(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6930 } 6931 6932 __m512d test_mm512_min_round_pd( __m512d __A,__m512d __B) 6933 { 6934 // CHECK-LABEL: @test_mm512_min_round_pd 6935 // CHECK: @llvm.x86.avx512.mask.min.pd.512 6936 return _mm512_min_round_pd(__A,__B,_MM_FROUND_CUR_DIRECTION); 6937 } 6938 6939 __m512 test_mm512_mask_min_ps (__m512 __W, __mmask16 __U, __m512 __A, __m512 __B) 6940 { 6941 // CHECK-LABEL: @test_mm512_mask_min_ps 6942 // CHECK: @llvm.x86.avx512.mask.min.ps.512 6943 return _mm512_mask_min_ps (__W,__U,__A,__B); 6944 } 6945 6946 __m512 test_mm512_maskz_min_ps (__mmask16 __U, __m512 __A, __m512 __B) 6947 { 6948 // CHECK-LABEL: @test_mm512_maskz_min_ps 6949 // CHECK: @llvm.x86.avx512.mask.min.ps.512 6950 return _mm512_maskz_min_ps (__U,__A,__B); 6951 } 6952 6953 __m512 test_mm512_mask_min_round_ps(__m512 __W,__mmask16 __U,__m512 __A,__m512 __B) 6954 { 6955 // CHECK-LABEL: @test_mm512_mask_min_round_ps 6956 // CHECK: @llvm.x86.avx512.mask.min.ps.512 6957 return _mm512_mask_min_round_ps(__W,__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6958 } 6959 6960 __m512 test_mm512_maskz_min_round_ps(__mmask16 __U,__m512 __A,__m512 __B) 6961 { 6962 // CHECK-LABEL: @test_mm512_maskz_min_round_ps 6963 // CHECK: @llvm.x86.avx512.mask.min.ps.512 6964 return _mm512_maskz_min_round_ps(__U,__A,__B,_MM_FROUND_CUR_DIRECTION); 6965 } 6966 6967 __m512 test_mm512_min_round_ps(__m512 __A,__m512 __B) 6968 { 6969 // CHECK-LABEL: @test_mm512_min_round_ps 6970 // CHECK: @llvm.x86.avx512.mask.min.ps.512 6971 return _mm512_min_round_ps(__A,__B,_MM_FROUND_CUR_DIRECTION); 6972 } 6973 6974 __m512 test_mm512_mask_floor_ps (__m512 __W, __mmask16 __U, __m512 __A) 6975 { 6976 // CHECK-LABEL: @test_mm512_mask_floor_ps 6977 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 6978 return _mm512_mask_floor_ps (__W,__U,__A); 6979 } 6980 6981 __m512d test_mm512_mask_floor_pd (__m512d __W, __mmask8 __U, __m512d __A) 6982 { 6983 // CHECK-LABEL: @test_mm512_mask_floor_pd 6984 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 6985 return _mm512_mask_floor_pd (__W,__U,__A); 6986 } 6987 6988 __m512 test_mm512_mask_ceil_ps (__m512 __W, __mmask16 __U, __m512 __A) 6989 { 6990 // CHECK-LABEL: @test_mm512_mask_ceil_ps 6991 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 6992 return _mm512_mask_ceil_ps (__W,__U,__A); 6993 } 6994 6995 __m512d test_mm512_mask_ceil_pd (__m512d __W, __mmask8 __U, __m512d __A) 6996 { 6997 // CHECK-LABEL: @test_mm512_mask_ceil_pd 6998 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 6999 return _mm512_mask_ceil_pd (__W,__U,__A); 7000 } 7001 7002 __m512 test_mm512_mask_roundscale_ps(__m512 __W, __mmask16 __U, __m512 __A) 7003 { 7004 // CHECK-LABEL: @test_mm512_mask_roundscale_ps 7005 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 7006 return _mm512_mask_roundscale_ps(__W,__U,__A, 1); 7007 } 7008 7009 __m512 test_mm512_maskz_roundscale_ps(__mmask16 __U, __m512 __A) 7010 { 7011 // CHECK-LABEL: @test_mm512_maskz_roundscale_ps 7012 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 7013 return _mm512_maskz_roundscale_ps(__U,__A, 1); 7014 } 7015 7016 __m512 test_mm512_mask_roundscale_round_ps(__m512 __A,__mmask16 __U,__m512 __C) 7017 { 7018 // CHECK-LABEL: @test_mm512_mask_roundscale_round_ps 7019 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 7020 return _mm512_mask_roundscale_round_ps(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION); 7021 } 7022 7023 __m512 test_mm512_maskz_roundscale_round_ps(__m512 __A,__mmask16 __U) 7024 { 7025 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_ps 7026 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 7027 return _mm512_maskz_roundscale_round_ps(__U,__A,3,_MM_FROUND_CUR_DIRECTION); 7028 } 7029 7030 __m512 test_mm512_roundscale_round_ps(__m512 __A) 7031 { 7032 // CHECK-LABEL: @test_mm512_roundscale_round_ps 7033 // CHECK: @llvm.x86.avx512.mask.rndscale.ps.512 7034 return _mm512_roundscale_round_ps(__A,3,_MM_FROUND_CUR_DIRECTION); 7035 } 7036 7037 __m512d test_mm512_mask_roundscale_pd(__m512d __W, __mmask8 __U, __m512d __A) 7038 { 7039 // CHECK-LABEL: @test_mm512_mask_roundscale_pd 7040 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 7041 return _mm512_mask_roundscale_pd(__W,__U,__A, 1); 7042 } 7043 7044 __m512d test_mm512_maskz_roundscale_pd(__mmask8 __U, __m512d __A) 7045 { 7046 // CHECK-LABEL: @test_mm512_maskz_roundscale_pd 7047 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 7048 return _mm512_maskz_roundscale_pd(__U,__A, 1); 7049 } 7050 7051 __m512d test_mm512_mask_roundscale_round_pd(__m512d __A,__mmask8 __U,__m512d __C) 7052 { 7053 // CHECK-LABEL: @test_mm512_mask_roundscale_round_pd 7054 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 7055 return _mm512_mask_roundscale_round_pd(__A,__U,__C,3,_MM_FROUND_CUR_DIRECTION); 7056 } 7057 7058 __m512d test_mm512_maskz_roundscale_round_pd(__m512d __A,__mmask8 __U) 7059 { 7060 // CHECK-LABEL: @test_mm512_maskz_roundscale_round_pd 7061 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 7062 return _mm512_maskz_roundscale_round_pd(__U,__A,3,_MM_FROUND_CUR_DIRECTION); 7063 } 7064 7065 __m512d test_mm512_roundscale_round_pd(__m512d __A) 7066 { 7067 // CHECK-LABEL: @test_mm512_roundscale_round_pd 7068 // CHECK: @llvm.x86.avx512.mask.rndscale.pd.512 7069 return _mm512_roundscale_round_pd(__A,3,_MM_FROUND_CUR_DIRECTION); 7070 } 7071 7072 __m512i test_mm512_mask_max_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) 7073 { 7074 // CHECK-LABEL: @test_mm512_mask_max_epi32 7075 // CHECK: @llvm.x86.avx512.mask.pmaxs.d.512 7076 return _mm512_mask_max_epi32 (__W,__M,__A,__B); 7077 } 7078 7079 __m512i test_mm512_maskz_max_epi32 (__mmask16 __M, __m512i __A, __m512i __B) 7080 { 7081 // CHECK-LABEL: @test_mm512_maskz_max_epi32 7082 // CHECK: @llvm.x86.avx512.mask.pmaxs.d.512 7083 return _mm512_maskz_max_epi32 (__M,__A,__B); 7084 } 7085 7086 __m512i test_mm512_mask_max_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) 7087 { 7088 // CHECK-LABEL: @test_mm512_mask_max_epi64 7089 // CHECK: @llvm.x86.avx512.mask.pmaxs.q.512 7090 return _mm512_mask_max_epi64 (__W,__M,__A,__B); 7091 } 7092 7093 __m512i test_mm512_maskz_max_epi64 (__mmask8 __M, __m512i __A, __m512i __B) 7094 { 7095 // CHECK-LABEL: @test_mm512_maskz_max_epi64 7096 // CHECK: @llvm.x86.avx512.mask.pmaxs.q.512 7097 return _mm512_maskz_max_epi64 (__M,__A,__B); 7098 } 7099 7100 __m512i test_mm512_mask_max_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) 7101 { 7102 // CHECK-LABEL: @test_mm512_mask_max_epu64 7103 // CHECK: @llvm.x86.avx512.mask.pmaxu.q.512 7104 return _mm512_mask_max_epu64 (__W,__M,__A,__B); 7105 } 7106 7107 __m512i test_mm512_maskz_max_epu64 (__mmask8 __M, __m512i __A, __m512i __B) 7108 { 7109 // CHECK-LABEL: @test_mm512_maskz_max_epu64 7110 // CHECK: @llvm.x86.avx512.mask.pmaxu.q.512 7111 return _mm512_maskz_max_epu64 (__M,__A,__B); 7112 } 7113 7114 __m512i test_mm512_mask_max_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) 7115 { 7116 // CHECK-LABEL: @test_mm512_mask_max_epu32 7117 // CHECK: @llvm.x86.avx512.mask.pmaxu.d.512 7118 return _mm512_mask_max_epu32 (__W,__M,__A,__B); 7119 } 7120 7121 __m512i test_mm512_maskz_max_epu32 (__mmask16 __M, __m512i __A, __m512i __B) 7122 { 7123 // CHECK-LABEL: @test_mm512_maskz_max_epu32 7124 // CHECK: @llvm.x86.avx512.mask.pmaxu.d.512 7125 return _mm512_maskz_max_epu32 (__M,__A,__B); 7126 } 7127 7128 __m512i test_mm512_mask_min_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) 7129 { 7130 // CHECK-LABEL: @test_mm512_mask_min_epi32 7131 // CHECK: @llvm.x86.avx512.mask.pmins.d.512 7132 return _mm512_mask_min_epi32 (__W,__M,__A,__B); 7133 } 7134 7135 __m512i test_mm512_maskz_min_epi32 (__mmask16 __M, __m512i __A, __m512i __B) 7136 { 7137 // CHECK-LABEL: @test_mm512_maskz_min_epi32 7138 // CHECK: @llvm.x86.avx512.mask.pmins.d.512 7139 return _mm512_maskz_min_epi32 (__M,__A,__B); 7140 } 7141 7142 __m512i test_mm512_mask_min_epu32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B) 7143 { 7144 // CHECK-LABEL: @test_mm512_mask_min_epu32 7145 // CHECK: @llvm.x86.avx512.mask.pminu.d.512 7146 return _mm512_mask_min_epu32 (__W,__M,__A,__B); 7147 } 7148 7149 __m512i test_mm512_maskz_min_epu32 (__mmask16 __M, __m512i __A, __m512i __B) 7150 { 7151 // CHECK-LABEL: @test_mm512_maskz_min_epu32 7152 // CHECK: @llvm.x86.avx512.mask.pminu.d.512 7153 return _mm512_maskz_min_epu32 (__M,__A,__B); 7154 } 7155 7156 __m512i test_mm512_mask_min_epi64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) 7157 { 7158 // CHECK-LABEL: @test_mm512_mask_min_epi64 7159 // CHECK: @llvm.x86.avx512.mask.pmins.q.512 7160 return _mm512_mask_min_epi64 (__W,__M,__A,__B); 7161 } 7162 7163 __m512i test_mm512_maskz_min_epi64 (__mmask8 __M, __m512i __A, __m512i __B) 7164 { 7165 // CHECK-LABEL: @test_mm512_maskz_min_epi64 7166 // CHECK: @llvm.x86.avx512.mask.pmins.q.512 7167 return _mm512_maskz_min_epi64 (__M,__A,__B); 7168 } 7169 7170 __m512i test_mm512_mask_min_epu64 (__m512i __W, __mmask8 __M, __m512i __A, __m512i __B) 7171 { 7172 // CHECK-LABEL: @test_mm512_mask_min_epu64 7173 // CHECK: @llvm.x86.avx512.mask.pminu.q.512 7174 return _mm512_mask_min_epu64 (__W,__M,__A,__B); 7175 } 7176 7177 __m512i test_mm512_maskz_min_epu64 (__mmask8 __M, __m512i __A, __m512i __B) 7178 { 7179 // CHECK-LABEL: @test_mm512_maskz_min_epu64 7180 // CHECK: @llvm.x86.avx512.mask.pminu.q.512 7181 return _mm512_maskz_min_epu64 (__M,__A,__B); 7182 } 7183 7184 __m512i test_mm512_mask_set1_epi32 (__m512i __O, __mmask16 __M, int __A) 7185 { 7186 //CHECK-LABEL: @test_mm512_mask_set1_epi32 7187 //CHECK: @llvm.x86.avx512.mask.pbroadcast.d.gpr.512 7188 return _mm512_mask_set1_epi32 ( __O, __M, __A); 7189 } 7190 7191 __m512i test_mm512_set_epi32 (int __A, int __B, int __C, int __D, 7192 int __E, int __F, int __G, int __H, 7193 int __I, int __J, int __K, int __L, 7194 int __M, int __N, int __O, int __P) 7195 { 7196 //CHECK-LABEL: @test_mm512_set_epi32 7197 //CHECK: insertelement{{.*}}i32 0 7198 //CHECK: insertelement{{.*}}i32 1 7199 //CHECK: insertelement{{.*}}i32 2 7200 //CHECK: insertelement{{.*}}i32 3 7201 //CHECK: insertelement{{.*}}i32 4 7202 //CHECK: insertelement{{.*}}i32 5 7203 //CHECK: insertelement{{.*}}i32 6 7204 //CHECK: insertelement{{.*}}i32 7 7205 //CHECK: insertelement{{.*}}i32 8 7206 //CHECK: insertelement{{.*}}i32 9 7207 //CHECK: insertelement{{.*}}i32 10 7208 //CHECK: insertelement{{.*}}i32 11 7209 //CHECK: insertelement{{.*}}i32 12 7210 //CHECK: insertelement{{.*}}i32 13 7211 //CHECK: insertelement{{.*}}i32 14 7212 //CHECK: insertelement{{.*}}i32 15 7213 return _mm512_set_epi32( __A, __B, __C, __D,__E, __F, __G, __H, 7214 __I, __J, __K, __L,__M, __N, __O, __P); 7215 } 7216 7217 __m512i test_mm512_setr_epi32 (int __A, int __B, int __C, int __D, 7218 int __E, int __F, int __G, int __H, 7219 int __I, int __J, int __K, int __L, 7220 int __M, int __N, int __O, int __P) 7221 { 7222 //CHECK-LABEL: @test_mm512_setr_epi32 7223 //CHECK: load{{.*}}%__P.addr, align 4 7224 //CHECK: load{{.*}}%__O.addr, align 4 7225 //CHECK: load{{.*}}%__N.addr, align 4 7226 //CHECK: load{{.*}}%__M.addr, align 4 7227 //CHECK: load{{.*}}%__L.addr, align 4 7228 //CHECK: load{{.*}}%__K.addr, align 4 7229 //CHECK: load{{.*}}%__J.addr, align 4 7230 //CHECK: load{{.*}}%__I.addr, align 4 7231 //CHECK: load{{.*}}%__H.addr, align 4 7232 //CHECK: load{{.*}}%__G.addr, align 4 7233 //CHECK: load{{.*}}%__F.addr, align 4 7234 //CHECK: load{{.*}}%__E.addr, align 4 7235 //CHECK: load{{.*}}%__D.addr, align 4 7236 //CHECK: load{{.*}}%__C.addr, align 4 7237 //CHECK: load{{.*}}%__B.addr, align 4 7238 //CHECK: load{{.*}}%__A.addr, align 4 7239 //CHECK: insertelement{{.*}}i32 0 7240 //CHECK: insertelement{{.*}}i32 1 7241 //CHECK: insertelement{{.*}}i32 2 7242 //CHECK: insertelement{{.*}}i32 3 7243 //CHECK: insertelement{{.*}}i32 4 7244 //CHECK: insertelement{{.*}}i32 5 7245 //CHECK: insertelement{{.*}}i32 6 7246 //CHECK: insertelement{{.*}}i32 7 7247 //CHECK: insertelement{{.*}}i32 8 7248 //CHECK: insertelement{{.*}}i32 9 7249 //CHECK: insertelement{{.*}}i32 10 7250 //CHECK: insertelement{{.*}}i32 11 7251 //CHECK: insertelement{{.*}}i32 12 7252 //CHECK: insertelement{{.*}}i32 13 7253 //CHECK: insertelement{{.*}}i32 14 7254 //CHECK: insertelement{{.*}}i32 15 7255 return _mm512_setr_epi32( __A, __B, __C, __D,__E, __F, __G, __H, 7256 __I, __J, __K, __L,__M, __N, __O, __P); 7257 } 7258 7259 __m512i test_mm512_mask_set1_epi64 (__m512i __O, __mmask8 __M, long long __A) 7260 { 7261 //CHECK-LABEL: @test_mm512_mask_set1_epi64 7262 //CHECK: @llvm.x86.avx512.mask.pbroadcast.q.gpr.512 7263 return _mm512_mask_set1_epi64 (__O, __M, __A); 7264 } 7265 7266 __m512i test_mm512_set_epi64 (long long __A, long long __B, long long __C, 7267 long long __D, long long __E, long long __F, 7268 long long __G, long long __H) 7269 { 7270 //CHECK-LABEL: @test_mm512_set_epi64 7271 //CHECK: insertelement{{.*}}i32 0 7272 //CHECK: insertelement{{.*}}i32 1 7273 //CHECK: insertelement{{.*}}i32 2 7274 //CHECK: insertelement{{.*}}i32 3 7275 //CHECK: insertelement{{.*}}i32 4 7276 //CHECK: insertelement{{.*}}i32 5 7277 //CHECK: insertelement{{.*}}i32 6 7278 //CHECK: insertelement{{.*}}i32 7 7279 return _mm512_set_epi64(__A, __B, __C, __D, __E, __F, __G, __H ); 7280 } 7281 7282 __m512i test_mm512_setr_epi64 (long long __A, long long __B, long long __C, 7283 long long __D, long long __E, long long __F, 7284 long long __G, long long __H) 7285 { 7286 //CHECK-LABEL: @test_mm512_setr_epi64 7287 //CHECK: load{{.*}}%__H.addr, align 8 7288 //CHECK: load{{.*}}%__G.addr, align 8 7289 //CHECK: load{{.*}}%__F.addr, align 8 7290 //CHECK: load{{.*}}%__E.addr, align 8 7291 //CHECK: load{{.*}}%__D.addr, align 8 7292 //CHECK: load{{.*}}%__C.addr, align 8 7293 //CHECK: load{{.*}}%__B.addr, align 8 7294 //CHECK: load{{.*}}%__A.addr, align 8 7295 //CHECK: insertelement{{.*}}i32 0 7296 //CHECK: insertelement{{.*}}i32 1 7297 //CHECK: insertelement{{.*}}i32 2 7298 //CHECK: insertelement{{.*}}i32 3 7299 //CHECK: insertelement{{.*}}i32 4 7300 //CHECK: insertelement{{.*}}i32 5 7301 //CHECK: insertelement{{.*}}i32 6 7302 //CHECK: insertelement{{.*}}i32 7 7303 return _mm512_setr_epi64(__A, __B, __C, __D, __E, __F, __G, __H ); 7304 } 7305 7306 __m512d test_mm512_set_pd (double __A, double __B, double __C, double __D, 7307 double __E, double __F, double __G, double __H) 7308 { 7309 //CHECK-LABEL: @test_mm512_set_pd 7310 //CHECK: insertelement{{.*}}i32 0 7311 //CHECK: insertelement{{.*}}i32 1 7312 //CHECK: insertelement{{.*}}i32 2 7313 //CHECK: insertelement{{.*}}i32 3 7314 //CHECK: insertelement{{.*}}i32 4 7315 //CHECK: insertelement{{.*}}i32 5 7316 //CHECK: insertelement{{.*}}i32 6 7317 //CHECK: insertelement{{.*}}i32 7 7318 return _mm512_set_pd( __A, __B, __C, __D, __E, __F, __G, __H); 7319 } 7320 7321 __m512d test_mm512_setr_pd (double __A, double __B, double __C, double __D, 7322 double __E, double __F, double __G, double __H) 7323 { 7324 //CHECK-LABEL: @test_mm512_setr_pd 7325 //CHECK: load{{.*}}%__H.addr, align 8 7326 //CHECK: load{{.*}}%__G.addr, align 8 7327 //CHECK: load{{.*}}%__F.addr, align 8 7328 //CHECK: load{{.*}}%__E.addr, align 8 7329 //CHECK: load{{.*}}%__D.addr, align 8 7330 //CHECK: load{{.*}}%__C.addr, align 8 7331 //CHECK: load{{.*}}%__B.addr, align 8 7332 //CHECK: load{{.*}}%__A.addr, align 8 7333 //CHECK: insertelement{{.*}}i32 0 7334 //CHECK: insertelement{{.*}}i32 1 7335 //CHECK: insertelement{{.*}}i32 2 7336 //CHECK: insertelement{{.*}}i32 3 7337 //CHECK: insertelement{{.*}}i32 4 7338 //CHECK: insertelement{{.*}}i32 5 7339 //CHECK: insertelement{{.*}}i32 6 7340 //CHECK: insertelement{{.*}}i32 7 7341 return _mm512_setr_pd( __A, __B, __C, __D, __E, __F, __G, __H); 7342 } 7343 7344 __m512 test_mm512_set_ps (float __A, float __B, float __C, float __D, 7345 float __E, float __F, float __G, float __H, 7346 float __I, float __J, float __K, float __L, 7347 float __M, float __N, float __O, float __P) 7348 { 7349 //CHECK-LABEL: @test_mm512_set_ps 7350 //CHECK: insertelement{{.*}}i32 0 7351 //CHECK: insertelement{{.*}}i32 1 7352 //CHECK: insertelement{{.*}}i32 2 7353 //CHECK: insertelement{{.*}}i32 3 7354 //CHECK: insertelement{{.*}}i32 4 7355 //CHECK: insertelement{{.*}}i32 5 7356 //CHECK: insertelement{{.*}}i32 6 7357 //CHECK: insertelement{{.*}}i32 7 7358 //CHECK: insertelement{{.*}}i32 8 7359 //CHECK: insertelement{{.*}}i32 9 7360 //CHECK: insertelement{{.*}}i32 10 7361 //CHECK: insertelement{{.*}}i32 11 7362 //CHECK: insertelement{{.*}}i32 12 7363 //CHECK: insertelement{{.*}}i32 13 7364 //CHECK: insertelement{{.*}}i32 14 7365 //CHECK: insertelement{{.*}}i32 15 7366 return _mm512_set_ps( __A, __B, __C, __D, __E, __F, __G, __H, 7367 __I, __J, __K, __L, __M, __N, __O, __P); 7368 } 7369 7370 __m512i test_mm512_mask_abs_epi64 (__m512i __W, __mmask8 __U, __m512i __A) 7371 { 7372 // CHECK-LABEL: @test_mm512_mask_abs_epi64 7373 // CHECK: @llvm.x86.avx512.mask.pabs.q.512 7374 return _mm512_mask_abs_epi64 (__W,__U,__A); 7375 } 7376 7377 __m512i test_mm512_maskz_abs_epi64 (__mmask8 __U, __m512i __A) 7378 { 7379 // CHECK-LABEL: @test_mm512_maskz_abs_epi64 7380 // CHECK: @llvm.x86.avx512.mask.pabs.q.512 7381 return _mm512_maskz_abs_epi64 (__U,__A); 7382 } 7383 7384 __m512i test_mm512_mask_abs_epi32 (__m512i __W, __mmask16 __U, __m512i __A) 7385 { 7386 // CHECK-LABEL: @test_mm512_mask_abs_epi32 7387 // CHECK: @llvm.x86.avx512.mask.pabs.d.512 7388 return _mm512_mask_abs_epi32 (__W,__U,__A); 7389 } 7390 7391 __m512i test_mm512_maskz_abs_epi32 (__mmask16 __U, __m512i __A) 7392 { 7393 // CHECK-LABEL: @test_mm512_maskz_abs_epi32 7394 // CHECK: @llvm.x86.avx512.mask.pabs.d.512 7395 return _mm512_maskz_abs_epi32 (__U,__A); 7396 } 7397 7398 __m512 test_mm512_setr_ps (float __A, float __B, float __C, float __D, 7399 float __E, float __F, float __G, float __H, 7400 float __I, float __J, float __K, float __L, 7401 float __M, float __N, float __O, float __P) 7402 { 7403 //CHECK-LABEL: @test_mm512_setr_ps 7404 //CHECK: load{{.*}}%__P.addr, align 4 7405 //CHECK: load{{.*}}%__O.addr, align 4 7406 //CHECK: load{{.*}}%__N.addr, align 4 7407 //CHECK: load{{.*}}%__M.addr, align 4 7408 //CHECK: load{{.*}}%__L.addr, align 4 7409 //CHECK: load{{.*}}%__K.addr, align 4 7410 //CHECK: load{{.*}}%__J.addr, align 4 7411 //CHECK: load{{.*}}%__I.addr, align 4 7412 //CHECK: load{{.*}}%__H.addr, align 4 7413 //CHECK: load{{.*}}%__G.addr, align 4 7414 //CHECK: load{{.*}}%__F.addr, align 4 7415 //CHECK: load{{.*}}%__E.addr, align 4 7416 //CHECK: load{{.*}}%__D.addr, align 4 7417 //CHECK: load{{.*}}%__C.addr, align 4 7418 //CHECK: load{{.*}}%__B.addr, align 4 7419 //CHECK: load{{.*}}%__A.addr, align 4 7420 //CHECK: insertelement{{.*}}i32 0 7421 //CHECK: insertelement{{.*}}i32 1 7422 //CHECK: insertelement{{.*}}i32 2 7423 //CHECK: insertelement{{.*}}i32 3 7424 //CHECK: insertelement{{.*}}i32 4 7425 //CHECK: insertelement{{.*}}i32 5 7426 //CHECK: insertelement{{.*}}i32 6 7427 //CHECK: insertelement{{.*}}i32 7 7428 //CHECK: insertelement{{.*}}i32 8 7429 //CHECK: insertelement{{.*}}i32 9 7430 //CHECK: insertelement{{.*}}i32 10 7431 //CHECK: insertelement{{.*}}i32 11 7432 //CHECK: insertelement{{.*}}i32 12 7433 //CHECK: insertelement{{.*}}i32 13 7434 //CHECK: insertelement{{.*}}i32 14 7435 //CHECK: insertelement{{.*}}i32 15 7436 return _mm512_setr_ps( __A, __B, __C, __D, __E, __F, __G, __H, 7437 __I, __J, __K, __L, __M, __N, __O, __P); 7438 } 7439 7440 int test_mm_cvtss_i32(__m128 A) { 7441 // CHECK-LABEL: test_mm_cvtss_i32 7442 // CHECK: call i32 @llvm.x86.sse.cvtss2si(<4 x float> %{{.*}}) 7443 return _mm_cvtss_i32(A); 7444 } 7445 7446 long long test_mm_cvtss_i64(__m128 A) { 7447 // CHECK-LABEL: test_mm_cvtss_i64 7448 // CHECK: call i64 @llvm.x86.sse.cvtss2si64(<4 x float> %{{.*}}) 7449 return _mm_cvtss_i64(A); 7450 } 7451 7452 __m128d test_mm_cvti32_sd(__m128d A, int B) { 7453 // CHECK-LABEL: test_mm_cvti32_sd 7454 // CHECK: sitofp i32 %{{.*}} to double 7455 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0 7456 return _mm_cvti32_sd(A, B); 7457 } 7458 7459 __m128d test_mm_cvti64_sd(__m128d A, long long B) { 7460 // CHECK-LABEL: test_mm_cvti64_sd 7461 // CHECK: sitofp i64 %{{.*}} to double 7462 // CHECK: insertelement <2 x double> %{{.*}}, double %{{.*}}, i32 0 7463 return _mm_cvti64_sd(A, B); 7464 } 7465 7466 __m128 test_mm_cvti32_ss(__m128 A, int B) { 7467 // CHECK-LABEL: test_mm_cvti32_ss 7468 // CHECK: sitofp i32 %{{.*}} to float 7469 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0 7470 return _mm_cvti32_ss(A, B); 7471 } 7472 7473 __m128 test_mm_cvti64_ss(__m128 A, long long B) { 7474 // CHECK-LABEL: test_mm_cvti64_ss 7475 // CHECK: sitofp i64 %{{.*}} to float 7476 // CHECK: insertelement <4 x float> %{{.*}}, float %{{.*}}, i32 0 7477 return _mm_cvti64_ss(A, B); 7478 } 7479 7480 int test_mm_cvtsd_i32(__m128d A) { 7481 // CHECK-LABEL: test_mm_cvtsd_i32 7482 // CHECK: call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> %{{.*}}) 7483 return _mm_cvtsd_i32(A); 7484 } 7485 7486 long long test_mm_cvtsd_i64(__m128d A) { 7487 // CHECK-LABEL: test_mm_cvtsd_i64 7488 // CHECK: call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> %{{.*}}) 7489 return _mm_cvtsd_i64(A); 7490 } 7491 7492 __m128d test_mm_mask_cvtss_sd(__m128d __W, __mmask8 __U, __m128d __A, __m128 __B) { 7493 // CHECK-LABEL: @test_mm_mask_cvtss_sd 7494 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round 7495 return _mm_mask_cvtss_sd(__W, __U, __A, __B); 7496 } 7497 7498 __m128d test_mm_maskz_cvtss_sd( __mmask8 __U, __m128d __A, __m128 __B) { 7499 // CHECK-LABEL: @test_mm_maskz_cvtss_sd 7500 // CHECK: @llvm.x86.avx512.mask.cvtss2sd.round 7501 return _mm_maskz_cvtss_sd( __U, __A, __B); 7502 } 7503 7504 __m128 test_mm_mask_cvtsd_ss(__m128 __W, __mmask8 __U, __m128 __A, __m128d __B) { 7505 // CHECK-LABEL: @test_mm_mask_cvtsd_ss 7506 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round 7507 return _mm_mask_cvtsd_ss(__W, __U, __A, __B); 7508 } 7509 7510 __m128 test_mm_maskz_cvtsd_ss(__mmask8 __U, __m128 __A, __m128d __B) { 7511 // CHECK-LABEL: @test_mm_maskz_cvtsd_ss 7512 // CHECK: @llvm.x86.avx512.mask.cvtsd2ss.round 7513 return _mm_maskz_cvtsd_ss(__U, __A, __B); 7514 } 7515 7516 7517 __m512i test_mm512_setzero_epi32() 7518 { 7519 // CHECK-LABEL: @test_mm512_setzero_epi32 7520 // CHECK: zeroinitializer 7521 return _mm512_setzero_epi32(); 7522 } 7523 7524 __m512i test_mm512_setzero() 7525 { 7526 // CHECK-LABEL: @test_mm512_setzero 7527 // CHECK: zeroinitializer 7528 return _mm512_setzero(); 7529 } 7530 7531 __m512i test_mm512_setzero_si512() 7532 { 7533 // CHECK-LABEL: @test_mm512_setzero_si512 7534 // CHECK: zeroinitializer 7535 return _mm512_setzero_si512(); 7536 } 7537 7538 __m512i test_mm512_setzero_ps() 7539 { 7540 // CHECK-LABEL: @test_mm512_setzero_ps 7541 // CHECK: zeroinitializer 7542 return _mm512_setzero_ps(); 7543 } 7544 7545 __m512d test_mm512_setzero_pd() 7546 { 7547 // CHECK-LABEL: @test_mm512_setzero_pd 7548 // CHECK: zeroinitializer 7549 return _mm512_setzero_pd(); 7550 } 7551 7552 __m512d test_mm512_abs_pd(__m512d a){ 7553 // CHECK-LABEL: @test_mm512_abs_pd 7554 // CHECK: and <8 x i64> 7555 return _mm512_abs_pd(a); 7556 } 7557 7558 __m512d test_mm512_mask_abs_pd (__m512d __W, __mmask8 __U, __m512d __A){ 7559 // CHECK-LABEL: @test_mm512_mask_abs_pd 7560 // CHECK: %[[AND_RES:.*]] = and <8 x i64> 7561 // CHECK: %[[MASK:.*]] = bitcast i8 %{{.*}} to <8 x i1> 7562 // CHECK: select <8 x i1> %[[MASK]], <8 x i64> %[[AND_RES]], <8 x i64> %{{.*}} 7563 return _mm512_mask_abs_pd (__W,__U,__A); 7564 } 7565 7566 __m512 test_mm512_abs_ps(__m512 a){ 7567 // CHECK-LABEL: @test_mm512_abs_ps 7568 // CHECK: and <16 x i32> 7569 return _mm512_abs_ps(a); 7570 } 7571 7572 __m512 test_mm512_mask_abs_ps(__m512 __W, __mmask16 __U, __m512 __A){ 7573 // CHECK-LABEL: @test_mm512_mask_abs_ps 7574 // CHECK: and <16 x i32> 7575 // CHECK: %[[MASK:.*]] = bitcast i16 %{{.*}} to <16 x i1> 7576 // CHECK: select <16 x i1> %[[MASK]], <16 x i32> %{{.*}}, <16 x i32> %{{.*}} 7577 return _mm512_mask_abs_ps( __W, __U, __A); 7578 } 7579 7580