avx512f-builtins.c revision 3ea9e33ea25e0c2b12db56418ba3f994eb662c04
1// RUN: %clang_cc1 %s -O0 -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.sqrt.pd.512 12 return _mm512_sqrt_pd(a); 13} 14 15__m512 test_mm512_sqrt_ps(__m512 a) 16{ 17 // CHECK-LABEL: @test_mm512_sqrt_ps 18 // CHECK: @llvm.x86.avx512.sqrt.ps.512 19 return _mm512_sqrt_ps(a); 20} 21 22__m512d test_mm512_rsqrt14_pd(__m512d a) 23{ 24 // CHECK-LABEL: @test_mm512_rsqrt14_pd 25 // CHECK: @llvm.x86.avx512.rsqrt14.pd.512 26 return _mm512_rsqrt14_pd(a); 27} 28 29__m512 test_mm512_rsqrt14_ps(__m512 a) 30{ 31 // CHECK-LABEL: @test_mm512_rsqrt14_ps 32 // CHECK: @llvm.x86.avx512.rsqrt14.ps.512 33 return _mm512_rsqrt14_ps(a); 34} 35 36__m512 test_mm512_add_ps(__m512 a, __m512 b) 37{ 38 // CHECK-LABEL: @test_mm512_add_ps 39 // CHECK: fadd <16 x float> 40 return _mm512_add_ps(a, b); 41} 42 43__m512d test_mm512_add_pd(__m512d a, __m512d b) 44{ 45 // CHECK-LABEL: @test_mm512_add_pd 46 // CHECK: fadd <8 x double> 47 return _mm512_add_pd(a, b); 48} 49 50__m512 test_mm512_mul_ps(__m512 a, __m512 b) 51{ 52 // CHECK-LABEL: @test_mm512_mul_ps 53 // CHECK: fmul <16 x float> 54 return _mm512_mul_ps(a, b); 55} 56 57__m512d test_mm512_mul_pd(__m512d a, __m512d b) 58{ 59 // CHECK-LABEL: @test_mm512_mul_pd 60 // CHECK: fmul <8 x double> 61 return _mm512_mul_pd(a, b); 62} 63 64void test_mm512_storeu_ps(void *p, __m512 a) 65{ 66 // CHECK-LABEL: @test_mm512_storeu_ps 67 // CHECK: @llvm.x86.avx512.mask.storeu.ps.512 68 _mm512_storeu_ps(p, a); 69} 70 71void test_mm512_storeu_pd(void *p, __m512d a) 72{ 73 // CHECK-LABEL: @test_mm512_storeu_pd 74 // CHECK: @llvm.x86.avx512.mask.storeu.pd.512 75 _mm512_storeu_pd(p, a); 76} 77 78void test_mm512_mask_store_ps(void *p, __m512 a, __mmask16 m) 79{ 80 // CHECK-LABEL: @test_mm512_mask_store_ps 81 // CHECK: @llvm.x86.avx512.mask.store.ps.512 82 _mm512_mask_store_ps(p, m, a); 83} 84 85void test_mm512_store_ps(void *p, __m512 a) 86{ 87 // CHECK-LABEL: @test_mm512_store_ps 88 // CHECK: store <16 x float> 89 _mm512_store_ps(p, a); 90} 91 92void test_mm512_mask_store_pd(void *p, __m512d a, __mmask8 m) 93{ 94 // CHECK-LABEL: @test_mm512_mask_store_pd 95 // CHECK: @llvm.x86.avx512.mask.store.pd.512 96 _mm512_mask_store_pd(p, m, a); 97} 98 99void test_mm512_store_pd(void *p, __m512d a) 100{ 101 // CHECK-LABEL: @test_mm512_store_pd 102 // CHECK: store <8 x double> 103 _mm512_store_pd(p, a); 104} 105 106__m512 test_mm512_loadu_ps(void *p) 107{ 108 // CHECK-LABEL: @test_mm512_loadu_ps 109 // CHECK: load <16 x float>, <16 x float>* {{.*}}, align 1{{$}} 110 return _mm512_loadu_ps(p); 111} 112 113__m512d test_mm512_loadu_pd(void *p) 114{ 115 // CHECK-LABEL: @test_mm512_loadu_pd 116 // CHECK: load <8 x double>, <8 x double>* {{.*}}, align 1{{$}} 117 return _mm512_loadu_pd(p); 118} 119 120__m512 test_mm512_maskz_load_ps(void *p, __mmask16 m) 121{ 122 // CHECK-LABEL: @test_mm512_maskz_load_ps 123 // CHECK: @llvm.x86.avx512.mask.load.ps.512 124 return _mm512_maskz_load_ps(m, p); 125} 126 127__m512 test_mm512_load_ps(void *p) 128{ 129 // CHECK-LABEL: @test_mm512_load_ps 130 // CHECK: @llvm.x86.avx512.mask.load.ps.512 131 return _mm512_load_ps(p); 132} 133 134__m512d test_mm512_maskz_load_pd(void *p, __mmask8 m) 135{ 136 // CHECK-LABEL: @test_mm512_maskz_load_pd 137 // CHECK: @llvm.x86.avx512.mask.load.pd.512 138 return _mm512_maskz_load_pd(m, p); 139} 140 141__m512d test_mm512_load_pd(void *p) 142{ 143 // CHECK-LABEL: @test_mm512_load_pd 144 // CHECK: @llvm.x86.avx512.mask.load.pd.512 145 return _mm512_load_pd(p); 146} 147 148__m512d test_mm512_set1_pd(double d) 149{ 150 // CHECK-LABEL: @test_mm512_set1_pd 151 // CHECK: insertelement <8 x double> {{.*}}, i32 0 152 // CHECK: insertelement <8 x double> {{.*}}, i32 1 153 // CHECK: insertelement <8 x double> {{.*}}, i32 2 154 // CHECK: insertelement <8 x double> {{.*}}, i32 3 155 // CHECK: insertelement <8 x double> {{.*}}, i32 4 156 // CHECK: insertelement <8 x double> {{.*}}, i32 5 157 // CHECK: insertelement <8 x double> {{.*}}, i32 6 158 // CHECK: insertelement <8 x double> {{.*}}, i32 7 159 return _mm512_set1_pd(d); 160} 161 162__m512d test_mm512_castpd256_pd512(__m256d a) 163{ 164 // CHECK-LABEL: @test_mm512_castpd256_pd512 165 // CHECK: shufflevector <4 x double> {{.*}} <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef> 166 return _mm512_castpd256_pd512(a); 167} 168 169__mmask16 test_mm512_knot(__mmask16 a) 170{ 171 // CHECK-LABEL: @test_mm512_knot 172 // CHECK: @llvm.x86.avx512.knot.w 173 return _mm512_knot(a); 174} 175 176__m512i test_mm512_alignr_epi32(__m512i a, __m512i b) 177{ 178 // CHECK-LABEL: @test_mm512_alignr_epi32 179 // CHECK: @llvm.x86.avx512.mask.valign.d.512 180 return _mm512_alignr_epi32(a, b, 2); 181} 182 183__m512i test_mm512_alignr_epi64(__m512i a, __m512i b) 184{ 185 // CHECK-LABEL: @test_mm512_alignr_epi64 186 // CHECK: @llvm.x86.avx512.mask.valign.q.512 187 return _mm512_alignr_epi64(a, b, 2); 188} 189 190__m512d test_mm512_broadcastsd_pd(__m128d a) 191{ 192 // CHECK-LABEL: @test_mm512_broadcastsd_pd 193 // CHECK: insertelement <8 x double> {{.*}}, i32 0 194 // CHECK: insertelement <8 x double> {{.*}}, i32 1 195 // CHECK: insertelement <8 x double> {{.*}}, i32 2 196 // CHECK: insertelement <8 x double> {{.*}}, i32 3 197 // CHECK: insertelement <8 x double> {{.*}}, i32 4 198 // CHECK: insertelement <8 x double> {{.*}}, i32 5 199 // CHECK: insertelement <8 x double> {{.*}}, i32 6 200 // CHECK: insertelement <8 x double> {{.*}}, i32 7 201 return _mm512_broadcastsd_pd(a); 202} 203 204__m512i test_mm512_fmadd_pd(__m512d a, __m512d b, __m512d c) 205{ 206 // CHECK-LABEL: @test_mm512_fmadd_pd 207 // CHECK: @llvm.x86.fma.mask.vfmadd.pd.512 208 return _mm512_fmadd_pd(a, b, c); 209} 210 211__mmask16 test_mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) { 212 // CHECK-LABEL: @test_mm512_cmpeq_epi32_mask 213 // CHECK: @llvm.x86.avx512.mask.pcmpeq.d.512 214 return (__mmask16)_mm512_cmpeq_epi32_mask(__a, __b); 215} 216 217__mmask16 test_mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 218 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi32_mask 219 // CHECK: @llvm.x86.avx512.mask.pcmpeq.d.512 220 return (__mmask16)_mm512_mask_cmpeq_epi32_mask(__u, __a, __b); 221} 222 223__mmask8 test_mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 224 // CHECK-LABEL: @test_mm512_mask_cmpeq_epi64_mask 225 // CHECK: @llvm.x86.avx512.mask.pcmpeq.q.512 226 return (__mmask8)_mm512_mask_cmpeq_epi64_mask(__u, __a, __b); 227} 228 229__mmask8 test_mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) { 230 // CHECK-LABEL: @test_mm512_cmpeq_epi64_mask 231 // CHECK: @llvm.x86.avx512.mask.pcmpeq.q.512 232 return (__mmask8)_mm512_cmpeq_epi64_mask(__a, __b); 233} 234 235__mmask16 test_mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) { 236 // CHECK-LABEL: @test_mm512_cmpgt_epi32_mask 237 // CHECK: @llvm.x86.avx512.mask.pcmpgt.d.512 238 return (__mmask16)_mm512_cmpgt_epi32_mask(__a, __b); 239} 240 241__mmask16 test_mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 242 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi32_mask 243 // CHECK: @llvm.x86.avx512.mask.pcmpgt.d.512 244 return (__mmask16)_mm512_mask_cmpgt_epi32_mask(__u, __a, __b); 245} 246 247__mmask8 test_mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 248 // CHECK-LABEL: @test_mm512_mask_cmpgt_epi64_mask 249 // CHECK: @llvm.x86.avx512.mask.pcmpgt.q.512 250 return (__mmask8)_mm512_mask_cmpgt_epi64_mask(__u, __a, __b); 251} 252 253__mmask8 test_mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) { 254 // CHECK-LABEL: @test_mm512_cmpgt_epi64_mask 255 // CHECK: @llvm.x86.avx512.mask.pcmpgt.q.512 256 return (__mmask8)_mm512_cmpgt_epi64_mask(__a, __b); 257} 258 259__m512d test_mm512_unpackhi_pd(__m512d a, __m512d b) 260{ 261 // CHECK-LABEL: @test_mm512_unpackhi_pd 262 // CHECK: shufflevector <8 x double> {{.*}} <i32 1, i32 9, i32 3, i32 11, i32 5, i32 13, i32 7, i32 15> 263 return _mm512_unpackhi_pd(a, b); 264} 265 266__m512d test_mm512_unpacklo_pd(__m512d a, __m512d b) 267{ 268 // CHECK-LABEL: @test_mm512_unpacklo_pd 269 // CHECK: shufflevector <8 x double> {{.*}} <i32 0, i32 8, i32 2, i32 10, i32 4, i32 12, i32 6, i32 14> 270 return _mm512_unpacklo_pd(a, b); 271} 272 273__m512 test_mm512_unpackhi_ps(__m512 a, __m512 b) 274{ 275 // CHECK-LABEL: @test_mm512_unpackhi_ps 276 // 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> 277 return _mm512_unpackhi_ps(a, b); 278} 279 280__m512 test_mm512_unpacklo_ps(__m512 a, __m512 b) 281{ 282 // CHECK-LABEL: @test_mm512_unpacklo_ps 283 // 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> 284 return _mm512_unpacklo_ps(a, b); 285} 286 287__mmask16 test_mm512_cmp_round_ps_mask(__m512 a, __m512 b) { 288 // CHECK-LABEL: @test_mm512_cmp_round_ps_mask 289 // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 290 return _mm512_cmp_round_ps_mask(a, b, 0, _MM_FROUND_TO_NEAREST_INT); 291} 292 293__mmask16 test_mm512_mask_cmp_round_ps_mask(__mmask16 m, __m512 a, __m512 b) { 294 // CHECK-LABEL: @test_mm512_mask_cmp_round_ps_mask 295 // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 296 return _mm512_mask_cmp_round_ps_mask(m, a, b, 0, _MM_FROUND_TO_NEAREST_INT); 297} 298 299__mmask16 test_mm512_cmp_ps_mask(__m512 a, __m512 b) { 300 // check-label: @test_mm512_cmp_ps_mask 301 // check: @llvm.x86.avx512.mask.cmp.ps.512 302 return _mm512_cmp_ps_mask(a, b, 0); 303} 304 305__mmask16 test_mm512_mask_cmp_ps_mask(__mmask16 m, __m512 a, __m512 b) { 306 // CHECK-LABEL: @test_mm512_mask_cmp_ps_mask 307 // CHECK: @llvm.x86.avx512.mask.cmp.ps.512 308 return _mm512_mask_cmp_ps_mask(m, a, b, 0); 309} 310 311__mmask8 test_mm512_cmp_round_pd_mask(__m512d a, __m512d b) { 312 // CHECK-LABEL: @test_mm512_cmp_round_pd_mask 313 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 314 return _mm512_cmp_round_pd_mask(a, b, 0, _MM_FROUND_TO_NEAREST_INT); 315} 316 317__mmask8 test_mm512_mask_cmp_round_pd_mask(__mmask8 m, __m512d a, __m512d b) { 318 // CHECK-LABEL: @test_mm512_mask_cmp_round_pd_mask 319 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 320 return _mm512_mask_cmp_round_pd_mask(m, a, b, 0, _MM_FROUND_TO_NEAREST_INT); 321} 322 323__mmask8 test_mm512_cmp_pd_mask(__m512d a, __m512d b) { 324 // check-label: @test_mm512_cmp_pd_mask 325 // check: @llvm.x86.avx512.mask.cmp.pd.512 326 return _mm512_cmp_pd_mask(a, b, 0); 327} 328 329__mmask8 test_mm512_mask_cmp_pd_mask(__mmask8 m, __m512d a, __m512d b) { 330 // CHECK-LABEL: @test_mm512_mask_cmp_pd_mask 331 // CHECK: @llvm.x86.avx512.mask.cmp.pd.512 332 return _mm512_mask_cmp_pd_mask(m, a, b, 0); 333} 334 335__m256d test_mm512_extractf64x4_pd(__m512d a) 336{ 337 // CHECK-LABEL: @test_mm512_extractf64x4_pd 338 // CHECK: @llvm.x86.avx512.mask.vextractf64x4.512 339 return _mm512_extractf64x4_pd(a, 1); 340} 341 342__m128 test_mm512_extractf32x4_ps(__m512 a) 343{ 344 // CHECK-LABEL: @test_mm512_extractf32x4_ps 345 // CHECK: @llvm.x86.avx512.mask.vextractf32x4.512 346 return _mm512_extractf32x4_ps(a, 1); 347} 348 349__mmask16 test_mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) { 350 // CHECK-LABEL: @test_mm512_cmpeq_epu32_mask 351 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 0, i16 -1) 352 return (__mmask16)_mm512_cmpeq_epu32_mask(__a, __b); 353} 354 355__mmask16 test_mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 356 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu32_mask 357 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 0, i16 {{.*}}) 358 return (__mmask16)_mm512_mask_cmpeq_epu32_mask(__u, __a, __b); 359} 360 361__mmask8 test_mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) { 362 // CHECK-LABEL: @test_mm512_cmpeq_epu64_mask 363 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 0, i8 -1) 364 return (__mmask8)_mm512_cmpeq_epu64_mask(__a, __b); 365} 366 367__mmask8 test_mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 368 // CHECK-LABEL: @test_mm512_mask_cmpeq_epu64_mask 369 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 0, i8 {{.*}}) 370 return (__mmask8)_mm512_mask_cmpeq_epu64_mask(__u, __a, __b); 371} 372 373__mmask16 test_mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) { 374 // CHECK-LABEL: @test_mm512_cmpge_epi32_mask 375 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 -1) 376 return (__mmask16)_mm512_cmpge_epi32_mask(__a, __b); 377} 378 379__mmask16 test_mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 380 // CHECK-LABEL: @test_mm512_mask_cmpge_epi32_mask 381 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 {{.*}}) 382 return (__mmask16)_mm512_mask_cmpge_epi32_mask(__u, __a, __b); 383} 384 385__mmask8 test_mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) { 386 // CHECK-LABEL: @test_mm512_cmpge_epi64_mask 387 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 -1) 388 return (__mmask8)_mm512_cmpge_epi64_mask(__a, __b); 389} 390 391__mmask8 test_mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 392 // CHECK-LABEL: @test_mm512_mask_cmpge_epi64_mask 393 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 {{.*}}) 394 return (__mmask8)_mm512_mask_cmpge_epi64_mask(__u, __a, __b); 395} 396 397__mmask16 test_mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) { 398 // CHECK-LABEL: @test_mm512_cmpge_epu32_mask 399 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 -1) 400 return (__mmask16)_mm512_cmpge_epu32_mask(__a, __b); 401} 402 403__mmask16 test_mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 404 // CHECK-LABEL: @test_mm512_mask_cmpge_epu32_mask 405 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 5, i16 {{.*}}) 406 return (__mmask16)_mm512_mask_cmpge_epu32_mask(__u, __a, __b); 407} 408 409__mmask8 test_mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) { 410 // CHECK-LABEL: @test_mm512_cmpge_epu64_mask 411 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 -1) 412 return (__mmask8)_mm512_cmpge_epu64_mask(__a, __b); 413} 414 415__mmask8 test_mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 416 // CHECK-LABEL: @test_mm512_mask_cmpge_epu64_mask 417 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 5, i8 {{.*}}) 418 return (__mmask8)_mm512_mask_cmpge_epu64_mask(__u, __a, __b); 419} 420 421__mmask16 test_mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) { 422 // CHECK-LABEL: @test_mm512_cmpgt_epu32_mask 423 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 6, i16 -1) 424 return (__mmask16)_mm512_cmpgt_epu32_mask(__a, __b); 425} 426 427__mmask16 test_mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 428 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu32_mask 429 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 6, i16 {{.*}}) 430 return (__mmask16)_mm512_mask_cmpgt_epu32_mask(__u, __a, __b); 431} 432 433__mmask8 test_mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) { 434 // CHECK-LABEL: @test_mm512_cmpgt_epu64_mask 435 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 6, i8 -1) 436 return (__mmask8)_mm512_cmpgt_epu64_mask(__a, __b); 437} 438 439__mmask8 test_mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 440 // CHECK-LABEL: @test_mm512_mask_cmpgt_epu64_mask 441 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 6, i8 {{.*}}) 442 return (__mmask8)_mm512_mask_cmpgt_epu64_mask(__u, __a, __b); 443} 444 445__mmask16 test_mm512_cmple_epi32_mask(__m512i __a, __m512i __b) { 446 // CHECK-LABEL: @test_mm512_cmple_epi32_mask 447 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 -1) 448 return (__mmask16)_mm512_cmple_epi32_mask(__a, __b); 449} 450 451__mmask16 test_mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 452 // CHECK-LABEL: @test_mm512_mask_cmple_epi32_mask 453 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 {{.*}}) 454 return (__mmask16)_mm512_mask_cmple_epi32_mask(__u, __a, __b); 455} 456 457__mmask8 test_mm512_cmple_epi64_mask(__m512i __a, __m512i __b) { 458 // CHECK-LABEL: @test_mm512_cmple_epi64_mask 459 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 -1) 460 return (__mmask8)_mm512_cmple_epi64_mask(__a, __b); 461} 462 463__mmask8 test_mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 464 // CHECK-LABEL: @test_mm512_mask_cmple_epi64_mask 465 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 {{.*}}) 466 return (__mmask8)_mm512_mask_cmple_epi64_mask(__u, __a, __b); 467} 468 469__mmask16 test_mm512_cmple_epu32_mask(__m512i __a, __m512i __b) { 470 // CHECK-LABEL: @test_mm512_cmple_epu32_mask 471 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 -1) 472 return (__mmask16)_mm512_cmple_epu32_mask(__a, __b); 473} 474 475__mmask16 test_mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 476 // CHECK-LABEL: @test_mm512_mask_cmple_epu32_mask 477 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 2, i16 {{.*}}) 478 return (__mmask16)_mm512_mask_cmple_epu32_mask(__u, __a, __b); 479} 480 481__mmask8 test_mm512_cmple_epu64_mask(__m512i __a, __m512i __b) { 482 // CHECK-LABEL: @test_mm512_cmple_epu64_mask 483 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 -1) 484 return (__mmask8)_mm512_cmple_epu64_mask(__a, __b); 485} 486 487__mmask8 test_mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 488 // CHECK-LABEL: @test_mm512_mask_cmple_epu64_mask 489 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 2, i8 {{.*}}) 490 return (__mmask8)_mm512_mask_cmple_epu64_mask(__u, __a, __b); 491} 492 493__mmask16 test_mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) { 494 // CHECK-LABEL: @test_mm512_cmplt_epi32_mask 495 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 -1) 496 return (__mmask16)_mm512_cmplt_epi32_mask(__a, __b); 497} 498 499__mmask16 test_mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 500 // CHECK-LABEL: @test_mm512_mask_cmplt_epi32_mask 501 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 {{.*}}) 502 return (__mmask16)_mm512_mask_cmplt_epi32_mask(__u, __a, __b); 503} 504 505__mmask8 test_mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) { 506 // CHECK-LABEL: @test_mm512_cmplt_epi64_mask 507 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 -1) 508 return (__mmask8)_mm512_cmplt_epi64_mask(__a, __b); 509} 510 511__mmask8 test_mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 512 // CHECK-LABEL: @test_mm512_mask_cmplt_epi64_mask 513 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 {{.*}}) 514 return (__mmask8)_mm512_mask_cmplt_epi64_mask(__u, __a, __b); 515} 516 517__mmask16 test_mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) { 518 // CHECK-LABEL: @test_mm512_cmplt_epu32_mask 519 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 -1) 520 return (__mmask16)_mm512_cmplt_epu32_mask(__a, __b); 521} 522 523__mmask16 test_mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 524 // CHECK-LABEL: @test_mm512_mask_cmplt_epu32_mask 525 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 1, i16 {{.*}}) 526 return (__mmask16)_mm512_mask_cmplt_epu32_mask(__u, __a, __b); 527} 528 529__mmask8 test_mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) { 530 // CHECK-LABEL: @test_mm512_cmplt_epu64_mask 531 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 -1) 532 return (__mmask8)_mm512_cmplt_epu64_mask(__a, __b); 533} 534 535__mmask8 test_mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 536 // CHECK-LABEL: @test_mm512_mask_cmplt_epu64_mask 537 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 1, i8 {{.*}}) 538 return (__mmask8)_mm512_mask_cmplt_epu64_mask(__u, __a, __b); 539} 540 541__mmask16 test_mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) { 542 // CHECK-LABEL: @test_mm512_cmpneq_epi32_mask 543 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 -1) 544 return (__mmask16)_mm512_cmpneq_epi32_mask(__a, __b); 545} 546 547__mmask16 test_mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 548 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi32_mask 549 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 {{.*}}) 550 return (__mmask16)_mm512_mask_cmpneq_epi32_mask(__u, __a, __b); 551} 552 553__mmask8 test_mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) { 554 // CHECK-LABEL: @test_mm512_cmpneq_epi64_mask 555 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 -1) 556 return (__mmask8)_mm512_cmpneq_epi64_mask(__a, __b); 557} 558 559__mmask8 test_mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 560 // CHECK-LABEL: @test_mm512_mask_cmpneq_epi64_mask 561 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 {{.*}}) 562 return (__mmask8)_mm512_mask_cmpneq_epi64_mask(__u, __a, __b); 563} 564 565__mmask16 test_mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) { 566 // CHECK-LABEL: @test_mm512_cmpneq_epu32_mask 567 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 -1) 568 return (__mmask16)_mm512_cmpneq_epu32_mask(__a, __b); 569} 570 571__mmask16 test_mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 572 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu32_mask 573 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 4, i16 {{.*}}) 574 return (__mmask16)_mm512_mask_cmpneq_epu32_mask(__u, __a, __b); 575} 576 577__mmask8 test_mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) { 578 // CHECK-LABEL: @test_mm512_cmpneq_epu64_mask 579 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 -1) 580 return (__mmask8)_mm512_cmpneq_epu64_mask(__a, __b); 581} 582 583__mmask8 test_mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 584 // CHECK-LABEL: @test_mm512_mask_cmpneq_epu64_mask 585 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 4, i8 {{.*}}) 586 return (__mmask8)_mm512_mask_cmpneq_epu64_mask(__u, __a, __b); 587} 588 589__mmask16 test_mm512_cmp_epi32_mask(__m512i __a, __m512i __b) { 590 // CHECK-LABEL: @test_mm512_cmp_epi32_mask 591 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 -1) 592 return (__mmask16)_mm512_cmp_epi32_mask(__a, __b, 3); 593} 594 595__mmask16 test_mm512_mask_cmp_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 596 // CHECK-LABEL: @test_mm512_mask_cmp_epi32_mask 597 // CHECK: @llvm.x86.avx512.mask.cmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 {{.*}}) 598 return (__mmask16)_mm512_mask_cmp_epi32_mask(__u, __a, __b, 3); 599} 600 601__mmask8 test_mm512_cmp_epi64_mask(__m512i __a, __m512i __b) { 602 // CHECK-LABEL: @test_mm512_cmp_epi64_mask 603 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 -1) 604 return (__mmask8)_mm512_cmp_epi64_mask(__a, __b, 3); 605} 606 607__mmask8 test_mm512_mask_cmp_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 608 // CHECK-LABEL: @test_mm512_mask_cmp_epi64_mask 609 // CHECK: @llvm.x86.avx512.mask.cmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 {{.*}}) 610 return (__mmask8)_mm512_mask_cmp_epi64_mask(__u, __a, __b, 3); 611} 612 613__mmask16 test_mm512_cmp_epu32_mask(__m512i __a, __m512i __b) { 614 // CHECK-LABEL: @test_mm512_cmp_epu32_mask 615 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 -1) 616 return (__mmask16)_mm512_cmp_epu32_mask(__a, __b, 3); 617} 618 619__mmask16 test_mm512_mask_cmp_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) { 620 // CHECK-LABEL: @test_mm512_mask_cmp_epu32_mask 621 // CHECK: @llvm.x86.avx512.mask.ucmp.d.512(<16 x i32> {{.*}}, <16 x i32> {{.*}}, i8 3, i16 {{.*}}) 622 return (__mmask16)_mm512_mask_cmp_epu32_mask(__u, __a, __b, 3); 623} 624 625__mmask8 test_mm512_cmp_epu64_mask(__m512i __a, __m512i __b) { 626 // CHECK-LABEL: @test_mm512_cmp_epu64_mask 627 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 -1) 628 return (__mmask8)_mm512_cmp_epu64_mask(__a, __b, 3); 629} 630 631__mmask8 test_mm512_mask_cmp_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) { 632 // CHECK-LABEL: @test_mm512_mask_cmp_epu64_mask 633 // CHECK: @llvm.x86.avx512.mask.ucmp.q.512(<8 x i64> {{.*}}, <8 x i64> {{.*}}, i8 3, i8 {{.*}}) 634 return (__mmask8)_mm512_mask_cmp_epu64_mask(__u, __a, __b, 3); 635} 636