| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,271 @@ | ||
| /*===---- avx512erintrin.h - AVX512ER intrinsics ---------------------------=== | ||
| * | ||
| * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| * See https://llvm.org/LICENSE.txt for license information. | ||
| * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| * | ||
| *===-----------------------------------------------------------------------=== | ||
| */ | ||
| #ifndef __IMMINTRIN_H | ||
| #error "Never use <avx512erintrin.h> directly; include <immintrin.h> instead." | ||
| #endif | ||
|
|
||
| #ifndef __AVX512ERINTRIN_H | ||
| #define __AVX512ERINTRIN_H | ||
|
|
||
| /* exp2a23 */ | ||
| #define _mm512_exp2a23_round_pd(A, R) \ | ||
| ((__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)_mm512_setzero_pd(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm512_mask_exp2a23_round_pd(S, M, A, R) \ | ||
| ((__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)(__m512d)(S), (__mmask8)(M), \ | ||
| (int)(R))) | ||
|
|
||
| #define _mm512_maskz_exp2a23_round_pd(M, A, R) \ | ||
| ((__m512d)__builtin_ia32_exp2pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)_mm512_setzero_pd(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm512_exp2a23_pd(A) \ | ||
| _mm512_exp2a23_round_pd((A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_mask_exp2a23_pd(S, M, A) \ | ||
| _mm512_mask_exp2a23_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_maskz_exp2a23_pd(M, A) \ | ||
| _mm512_maskz_exp2a23_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_exp2a23_round_ps(A, R) \ | ||
| ((__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)_mm512_setzero_ps(), \ | ||
| (__mmask16)-1, (int)(R))) | ||
|
|
||
| #define _mm512_mask_exp2a23_round_ps(S, M, A, R) \ | ||
| ((__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)(__m512)(S), (__mmask16)(M), \ | ||
| (int)(R))) | ||
|
|
||
| #define _mm512_maskz_exp2a23_round_ps(M, A, R) \ | ||
| ((__m512)__builtin_ia32_exp2ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)_mm512_setzero_ps(), \ | ||
| (__mmask16)(M), (int)(R))) | ||
|
|
||
| #define _mm512_exp2a23_ps(A) \ | ||
| _mm512_exp2a23_round_ps((A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_mask_exp2a23_ps(S, M, A) \ | ||
| _mm512_mask_exp2a23_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_maskz_exp2a23_ps(M, A) \ | ||
| _mm512_maskz_exp2a23_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| /* rsqrt28 */ | ||
| #define _mm512_rsqrt28_round_pd(A, R) \ | ||
| ((__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)_mm512_setzero_pd(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm512_mask_rsqrt28_round_pd(S, M, A, R) \ | ||
| ((__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)(__m512d)(S), (__mmask8)(M), \ | ||
| (int)(R))) | ||
|
|
||
| #define _mm512_maskz_rsqrt28_round_pd(M, A, R) \ | ||
| ((__m512d)__builtin_ia32_rsqrt28pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)_mm512_setzero_pd(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm512_rsqrt28_pd(A) \ | ||
| _mm512_rsqrt28_round_pd((A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_mask_rsqrt28_pd(S, M, A) \ | ||
| _mm512_mask_rsqrt28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_maskz_rsqrt28_pd(M, A) \ | ||
| _mm512_maskz_rsqrt28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_rsqrt28_round_ps(A, R) \ | ||
| ((__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)_mm512_setzero_ps(), \ | ||
| (__mmask16)-1, (int)(R))) | ||
|
|
||
| #define _mm512_mask_rsqrt28_round_ps(S, M, A, R) \ | ||
| ((__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)(__m512)(S), (__mmask16)(M), \ | ||
| (int)(R))) | ||
|
|
||
| #define _mm512_maskz_rsqrt28_round_ps(M, A, R) \ | ||
| ((__m512)__builtin_ia32_rsqrt28ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)_mm512_setzero_ps(), \ | ||
| (__mmask16)(M), (int)(R))) | ||
|
|
||
| #define _mm512_rsqrt28_ps(A) \ | ||
| _mm512_rsqrt28_round_ps((A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_mask_rsqrt28_ps(S, M, A) \ | ||
| _mm512_mask_rsqrt28_round_ps((S), (M), A, _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_maskz_rsqrt28_ps(M, A) \ | ||
| _mm512_maskz_rsqrt28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_rsqrt28_round_ss(A, B, R) \ | ||
| ((__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \ | ||
| (__v4sf)(__m128)(B), \ | ||
| (__v4sf)_mm_setzero_ps(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm_mask_rsqrt28_round_ss(S, M, A, B, R) \ | ||
| ((__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \ | ||
| (__v4sf)(__m128)(B), \ | ||
| (__v4sf)(__m128)(S), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_maskz_rsqrt28_round_ss(M, A, B, R) \ | ||
| ((__m128)__builtin_ia32_rsqrt28ss_round_mask((__v4sf)(__m128)(A), \ | ||
| (__v4sf)(__m128)(B), \ | ||
| (__v4sf)_mm_setzero_ps(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_rsqrt28_ss(A, B) \ | ||
| _mm_rsqrt28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_mask_rsqrt28_ss(S, M, A, B) \ | ||
| _mm_mask_rsqrt28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_maskz_rsqrt28_ss(M, A, B) \ | ||
| _mm_maskz_rsqrt28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_rsqrt28_round_sd(A, B, R) \ | ||
| ((__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \ | ||
| (__v2df)(__m128d)(B), \ | ||
| (__v2df)_mm_setzero_pd(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm_mask_rsqrt28_round_sd(S, M, A, B, R) \ | ||
| ((__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \ | ||
| (__v2df)(__m128d)(B), \ | ||
| (__v2df)(__m128d)(S), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_maskz_rsqrt28_round_sd(M, A, B, R) \ | ||
| ((__m128d)__builtin_ia32_rsqrt28sd_round_mask((__v2df)(__m128d)(A), \ | ||
| (__v2df)(__m128d)(B), \ | ||
| (__v2df)_mm_setzero_pd(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_rsqrt28_sd(A, B) \ | ||
| _mm_rsqrt28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_mask_rsqrt28_sd(S, M, A, B) \ | ||
| _mm_mask_rsqrt28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_maskz_rsqrt28_sd(M, A, B) \ | ||
| _mm_maskz_rsqrt28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| /* rcp28 */ | ||
| #define _mm512_rcp28_round_pd(A, R) \ | ||
| ((__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)_mm512_setzero_pd(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm512_mask_rcp28_round_pd(S, M, A, R) \ | ||
| ((__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)(__m512d)(S), (__mmask8)(M), \ | ||
| (int)(R))) | ||
|
|
||
| #define _mm512_maskz_rcp28_round_pd(M, A, R) \ | ||
| ((__m512d)__builtin_ia32_rcp28pd_mask((__v8df)(__m512d)(A), \ | ||
| (__v8df)_mm512_setzero_pd(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm512_rcp28_pd(A) \ | ||
| _mm512_rcp28_round_pd((A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_mask_rcp28_pd(S, M, A) \ | ||
| _mm512_mask_rcp28_round_pd((S), (M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_maskz_rcp28_pd(M, A) \ | ||
| _mm512_maskz_rcp28_round_pd((M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_rcp28_round_ps(A, R) \ | ||
| ((__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)_mm512_setzero_ps(), \ | ||
| (__mmask16)-1, (int)(R))) | ||
|
|
||
| #define _mm512_mask_rcp28_round_ps(S, M, A, R) \ | ||
| ((__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)(__m512)(S), (__mmask16)(M), \ | ||
| (int)(R))) | ||
|
|
||
| #define _mm512_maskz_rcp28_round_ps(M, A, R) \ | ||
| ((__m512)__builtin_ia32_rcp28ps_mask((__v16sf)(__m512)(A), \ | ||
| (__v16sf)_mm512_setzero_ps(), \ | ||
| (__mmask16)(M), (int)(R))) | ||
|
|
||
| #define _mm512_rcp28_ps(A) \ | ||
| _mm512_rcp28_round_ps((A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_mask_rcp28_ps(S, M, A) \ | ||
| _mm512_mask_rcp28_round_ps((S), (M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm512_maskz_rcp28_ps(M, A) \ | ||
| _mm512_maskz_rcp28_round_ps((M), (A), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_rcp28_round_ss(A, B, R) \ | ||
| ((__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \ | ||
| (__v4sf)(__m128)(B), \ | ||
| (__v4sf)_mm_setzero_ps(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm_mask_rcp28_round_ss(S, M, A, B, R) \ | ||
| ((__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \ | ||
| (__v4sf)(__m128)(B), \ | ||
| (__v4sf)(__m128)(S), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_maskz_rcp28_round_ss(M, A, B, R) \ | ||
| ((__m128)__builtin_ia32_rcp28ss_round_mask((__v4sf)(__m128)(A), \ | ||
| (__v4sf)(__m128)(B), \ | ||
| (__v4sf)_mm_setzero_ps(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_rcp28_ss(A, B) \ | ||
| _mm_rcp28_round_ss((A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_mask_rcp28_ss(S, M, A, B) \ | ||
| _mm_mask_rcp28_round_ss((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_maskz_rcp28_ss(M, A, B) \ | ||
| _mm_maskz_rcp28_round_ss((M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_rcp28_round_sd(A, B, R) \ | ||
| ((__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \ | ||
| (__v2df)(__m128d)(B), \ | ||
| (__v2df)_mm_setzero_pd(), \ | ||
| (__mmask8)-1, (int)(R))) | ||
|
|
||
| #define _mm_mask_rcp28_round_sd(S, M, A, B, R) \ | ||
| ((__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \ | ||
| (__v2df)(__m128d)(B), \ | ||
| (__v2df)(__m128d)(S), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_maskz_rcp28_round_sd(M, A, B, R) \ | ||
| ((__m128d)__builtin_ia32_rcp28sd_round_mask((__v2df)(__m128d)(A), \ | ||
| (__v2df)(__m128d)(B), \ | ||
| (__v2df)_mm_setzero_pd(), \ | ||
| (__mmask8)(M), (int)(R))) | ||
|
|
||
| #define _mm_rcp28_sd(A, B) \ | ||
| _mm_rcp28_round_sd((A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_mask_rcp28_sd(S, M, A, B) \ | ||
| _mm_mask_rcp28_round_sd((S), (M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #define _mm_maskz_rcp28_sd(M, A, B) \ | ||
| _mm_maskz_rcp28_round_sd((M), (A), (B), _MM_FROUND_CUR_DIRECTION) | ||
|
|
||
| #endif /* __AVX512ERINTRIN_H */ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,92 @@ | ||
| /*===------------- avx512pfintrin.h - PF intrinsics ------------------------=== | ||
| * | ||
| * | ||
| * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
| * See https://llvm.org/LICENSE.txt for license information. | ||
| * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
| * | ||
| *===-----------------------------------------------------------------------=== | ||
| */ | ||
| #ifndef __IMMINTRIN_H | ||
| #error "Never use <avx512pfintrin.h> directly; include <immintrin.h> instead." | ||
| #endif | ||
|
|
||
| #ifndef __AVX512PFINTRIN_H | ||
| #define __AVX512PFINTRIN_H | ||
|
|
||
| #define _mm512_mask_prefetch_i32gather_pd(index, mask, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfdpd((__mmask8)(mask), (__v8si)(__m256i)(index), \ | ||
| (void const *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i32gather_pd(index, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfdpd((__mmask8) -1, (__v8si)(__m256i)(index), \ | ||
| (void const *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i32gather_ps(index, mask, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfdps((__mmask16)(mask), \ | ||
| (__v16si)(__m512i)(index), (void const *)(addr), \ | ||
| (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i32gather_ps(index, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfdps((__mmask16) -1, \ | ||
| (__v16si)(__m512i)(index), (void const *)(addr), \ | ||
| (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i64gather_pd(index, mask, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfqpd((__mmask8)(mask), (__v8di)(__m512i)(index), \ | ||
| (void const *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i64gather_pd(index, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfqpd((__mmask8) -1, (__v8di)(__m512i)(index), \ | ||
| (void const *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i64gather_ps(index, mask, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfqps((__mmask8)(mask), (__v8di)(__m512i)(index), \ | ||
| (void const *)(addr), (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i64gather_ps(index, addr, scale, hint) \ | ||
| __builtin_ia32_gatherpfqps((__mmask8) -1, (__v8di)(__m512i)(index), \ | ||
| (void const *)(addr), (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i32scatter_pd(addr, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfdpd((__mmask8)-1, (__v8si)(__m256i)(index), \ | ||
| (void *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i32scatter_pd(addr, mask, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfdpd((__mmask8)(mask), (__v8si)(__m256i)(index), \ | ||
| (void *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i32scatter_ps(addr, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfdps((__mmask16)-1, (__v16si)(__m512i)(index), \ | ||
| (void *)(addr), (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i32scatter_ps(addr, mask, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfdps((__mmask16)(mask), \ | ||
| (__v16si)(__m512i)(index), (void *)(addr), \ | ||
| (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i64scatter_pd(addr, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfqpd((__mmask8)-1, (__v8di)(__m512i)(index), \ | ||
| (void *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i64scatter_pd(addr, mask, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfqpd((__mmask8)(mask), (__v8di)(__m512i)(index), \ | ||
| (void *)(addr), (int)(scale), \ | ||
| (int)(hint)) | ||
|
|
||
| #define _mm512_prefetch_i64scatter_ps(addr, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfqps((__mmask8)-1, (__v8di)(__m512i)(index), \ | ||
| (void *)(addr), (int)(scale), (int)(hint)) | ||
|
|
||
| #define _mm512_mask_prefetch_i64scatter_ps(addr, mask, index, scale, hint) \ | ||
| __builtin_ia32_scatterpfqps((__mmask8)(mask), (__v8di)(__m512i)(index), \ | ||
| (void *)(addr), (int)(scale), (int)(hint)) | ||
|
|
||
| #endif |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,347 @@ | ||
| // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512f -target-feature +avx512er -emit-llvm -o - -Wall | FileCheck %s | ||
|
|
||
|
|
||
| #include <immintrin.h> | ||
|
|
||
| __m512d test_mm512_rsqrt28_round_pd(__m512d a) { | ||
| // CHECK-LABEL: @test_mm512_rsqrt28_round_pd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.pd | ||
| return _mm512_rsqrt28_round_pd(a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_mask_rsqrt28_round_pd(__m512d s, __mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rsqrt28_round_pd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.pd | ||
| return _mm512_mask_rsqrt28_round_pd(s, m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_maskz_rsqrt28_round_pd(__mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rsqrt28_round_pd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.pd | ||
| return _mm512_maskz_rsqrt28_round_pd(m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_rsqrt28_pd(__m512d a) { | ||
| // CHECK-LABEL: @test_mm512_rsqrt28_pd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.pd | ||
| return _mm512_rsqrt28_pd(a); | ||
| } | ||
|
|
||
| __m512d test_mm512_mask_rsqrt28_pd(__m512d s, __mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rsqrt28_pd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.pd | ||
| return _mm512_mask_rsqrt28_pd(s, m, a); | ||
| } | ||
|
|
||
| __m512d test_mm512_maskz_rsqrt28_pd(__mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rsqrt28_pd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.pd | ||
| return _mm512_maskz_rsqrt28_pd(m, a); | ||
| } | ||
|
|
||
| __m512 test_mm512_rsqrt28_round_ps(__m512 a) { | ||
| // CHECK-LABEL: @test_mm512_rsqrt28_round_ps | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ps | ||
| return _mm512_rsqrt28_round_ps(a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_mask_rsqrt28_round_ps(__m512 s, __mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rsqrt28_round_ps | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ps | ||
| return _mm512_mask_rsqrt28_round_ps(s, m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_maskz_rsqrt28_round_ps(__mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rsqrt28_round_ps | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ps | ||
| return _mm512_maskz_rsqrt28_round_ps(m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_rsqrt28_ps(__m512 a) { | ||
| // CHECK-LABEL: @test_mm512_rsqrt28_ps | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ps | ||
| return _mm512_rsqrt28_ps(a); | ||
| } | ||
|
|
||
| __m512 test_mm512_mask_rsqrt28_ps(__m512 s, __mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rsqrt28_ps | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ps | ||
| return _mm512_mask_rsqrt28_ps(s, m, a); | ||
| } | ||
|
|
||
| __m512 test_mm512_maskz_rsqrt28_ps(__mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rsqrt28_ps | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ps | ||
| return _mm512_maskz_rsqrt28_ps(m, a); | ||
| } | ||
|
|
||
| __m128 test_mm_rsqrt28_round_ss(__m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_rsqrt28_round_ss | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ss | ||
| return _mm_rsqrt28_round_ss(a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128 test_mm_mask_rsqrt28_round_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_mask_rsqrt28_round_ss | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ss | ||
| return _mm_mask_rsqrt28_round_ss(s, m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128 test_mm_maskz_rsqrt28_round_ss(__mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rsqrt28_round_ss | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ss | ||
| return _mm_maskz_rsqrt28_round_ss(m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128 test_mm_rsqrt28_ss(__m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_rsqrt28_ss | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ss | ||
| return _mm_rsqrt28_ss(a, b); | ||
| } | ||
|
|
||
| __m128 test_mm_mask_rsqrt28_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_mask_rsqrt28_ss | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ss | ||
| return _mm_mask_rsqrt28_ss(s, m, a, b); | ||
| } | ||
|
|
||
| __m128 test_mm_maskz_rsqrt28_ss(__mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rsqrt28_ss | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.ss | ||
| return _mm_maskz_rsqrt28_ss(m, a, b); | ||
| } | ||
|
|
||
| __m128d test_mm_rsqrt28_round_sd(__m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_rsqrt28_round_sd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.sd | ||
| return _mm_rsqrt28_round_sd(a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128d test_mm_mask_rsqrt28_round_sd(__m128d s, __mmask8 m, __m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_mask_rsqrt28_round_sd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.sd | ||
| return _mm_mask_rsqrt28_round_sd(s, m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128d test_mm_maskz_rsqrt28_round_sd(__mmask8 m, __m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rsqrt28_round_sd | ||
| // CHECK: @llvm.x86.avx512.rsqrt28.sd | ||
| return _mm_maskz_rsqrt28_round_sd(m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_rcp28_round_pd(__m512d a) { | ||
| // CHECK-LABEL: @test_mm512_rcp28_round_pd | ||
| // CHECK: @llvm.x86.avx512.rcp28.pd | ||
| return _mm512_rcp28_round_pd(a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_mask_rcp28_round_pd(__m512d s, __mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rcp28_round_pd | ||
| // CHECK: @llvm.x86.avx512.rcp28.pd | ||
| return _mm512_mask_rcp28_round_pd(s, m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_maskz_rcp28_round_pd(__mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rcp28_round_pd | ||
| // CHECK: @llvm.x86.avx512.rcp28.pd | ||
| return _mm512_maskz_rcp28_round_pd(m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_rcp28_pd(__m512d a) { | ||
| // CHECK-LABEL: @test_mm512_rcp28_pd | ||
| // CHECK: @llvm.x86.avx512.rcp28.pd | ||
| return _mm512_rcp28_pd(a); | ||
| } | ||
|
|
||
| __m512d test_mm512_mask_rcp28_pd(__m512d s, __mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rcp28_pd | ||
| // CHECK: @llvm.x86.avx512.rcp28.pd | ||
| return _mm512_mask_rcp28_pd(s, m, a); | ||
| } | ||
|
|
||
| __m512d test_mm512_maskz_rcp28_pd(__mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rcp28_pd | ||
| // CHECK: @llvm.x86.avx512.rcp28.pd | ||
| return _mm512_maskz_rcp28_pd(m, a); | ||
| } | ||
|
|
||
| __m512 test_mm512_rcp28_round_ps(__m512 a) { | ||
| // CHECK-LABEL: @test_mm512_rcp28_round_ps | ||
| // CHECK: @llvm.x86.avx512.rcp28.ps | ||
| return _mm512_rcp28_round_ps(a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_mask_rcp28_round_ps(__m512 s, __mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rcp28_round_ps | ||
| // CHECK: @llvm.x86.avx512.rcp28.ps | ||
| return _mm512_mask_rcp28_round_ps(s, m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_maskz_rcp28_round_ps(__mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rcp28_round_ps | ||
| // CHECK: @llvm.x86.avx512.rcp28.ps | ||
| return _mm512_maskz_rcp28_round_ps(m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_rcp28_ps(__m512 a) { | ||
| // CHECK-LABEL: @test_mm512_rcp28_ps | ||
| // CHECK: @llvm.x86.avx512.rcp28.ps | ||
| return _mm512_rcp28_ps(a); | ||
| } | ||
|
|
||
| __m512 test_mm512_mask_rcp28_ps(__m512 s, __mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_mask_rcp28_ps | ||
| // CHECK: @llvm.x86.avx512.rcp28.ps | ||
| return _mm512_mask_rcp28_ps(s, m, a); | ||
| } | ||
|
|
||
| __m512 test_mm512_maskz_rcp28_ps(__mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_rcp28_ps | ||
| // CHECK: @llvm.x86.avx512.rcp28.ps | ||
| return _mm512_maskz_rcp28_ps(m, a); | ||
| } | ||
|
|
||
| __m128 test_mm_rcp28_round_ss(__m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_rcp28_round_ss | ||
| // CHECK: @llvm.x86.avx512.rcp28.ss | ||
| return _mm_rcp28_round_ss(a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128 test_mm_mask_rcp28_round_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_mask_rcp28_round_ss | ||
| // CHECK: @llvm.x86.avx512.rcp28.ss | ||
| return _mm_mask_rcp28_round_ss(s, m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128 test_mm_maskz_rcp28_round_ss(__mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rcp28_round_ss | ||
| // CHECK: @llvm.x86.avx512.rcp28.ss | ||
| return _mm_maskz_rcp28_round_ss(m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128 test_mm_rcp28_ss(__m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_rcp28_ss | ||
| // CHECK: @llvm.x86.avx512.rcp28.ss | ||
| return _mm_rcp28_ss(a, b); | ||
| } | ||
|
|
||
| __m128 test_mm_mask_rcp28_ss(__m128 s, __mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_mask_rcp28_ss | ||
| // CHECK: @llvm.x86.avx512.rcp28.ss | ||
| return _mm_mask_rcp28_ss(s, m, a, b); | ||
| } | ||
|
|
||
| __m128 test_mm_maskz_rcp28_ss(__mmask16 m, __m128 a, __m128 b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rcp28_ss | ||
| // CHECK: @llvm.x86.avx512.rcp28.ss | ||
| return _mm_maskz_rcp28_ss(m, a, b); | ||
| } | ||
|
|
||
| __m128d test_mm_rcp28_round_sd(__m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_rcp28_round_sd | ||
| // CHECK: @llvm.x86.avx512.rcp28.sd | ||
| return _mm_rcp28_round_sd(a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128d test_mm_mask_rcp28_round_sd(__m128d s, __mmask8 m, __m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_mask_rcp28_round_sd | ||
| // CHECK: @llvm.x86.avx512.rcp28.sd | ||
| return _mm_mask_rcp28_round_sd(s, m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128d test_mm_maskz_rcp28_round_sd(__mmask8 m, __m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rcp28_round_sd | ||
| // CHECK: @llvm.x86.avx512.rcp28.sd | ||
| return _mm_maskz_rcp28_round_sd(m, a, b, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m128d test_mm_rcp28_sd(__m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_rcp28_sd | ||
| // CHECK: @llvm.x86.avx512.rcp28.sd | ||
| return _mm_rcp28_sd(a, b); | ||
| } | ||
|
|
||
| __m128d test_mm_mask_rcp28_sd(__m128d s, __mmask8 m, __m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_mask_rcp28_sd | ||
| // CHECK: @llvm.x86.avx512.rcp28.sd | ||
| return _mm_mask_rcp28_sd(s, m, a, b); | ||
| } | ||
|
|
||
| __m128d test_mm_maskz_rcp28_sd(__mmask8 m, __m128d a, __m128d b) { | ||
| // CHECK-LABEL: @test_mm_maskz_rcp28_sd | ||
| // CHECK: @llvm.x86.avx512.rcp28.sd | ||
| return _mm_maskz_rcp28_sd(m, a, b); | ||
| } | ||
|
|
||
| __m512d test_mm512_exp2a23_round_pd(__m512d a) { | ||
| // CHECK-LABEL: @test_mm512_exp2a23_round_pd | ||
| // CHECK: @llvm.x86.avx512.exp2.pd | ||
| return _mm512_exp2a23_round_pd(a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_mask_exp2a23_round_pd(__m512d s, __mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_mask_exp2a23_round_pd | ||
| // CHECK: @llvm.x86.avx512.exp2.pd | ||
| return _mm512_mask_exp2a23_round_pd(s, m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_maskz_exp2a23_round_pd(__mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_exp2a23_round_pd | ||
| // CHECK: @llvm.x86.avx512.exp2.pd | ||
| return _mm512_maskz_exp2a23_round_pd(m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512d test_mm512_exp2a23_pd(__m512d a) { | ||
| // CHECK-LABEL: @test_mm512_exp2a23_pd | ||
| // CHECK: @llvm.x86.avx512.exp2.pd | ||
| return _mm512_exp2a23_pd(a); | ||
| } | ||
|
|
||
| __m512d test_mm512_mask_exp2a23_pd(__m512d s, __mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_mask_exp2a23_pd | ||
| // CHECK: @llvm.x86.avx512.exp2.pd | ||
| return _mm512_mask_exp2a23_pd(s, m, a); | ||
| } | ||
|
|
||
| __m512d test_mm512_maskz_exp2a23_pd(__mmask8 m, __m512d a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_exp2a23_pd | ||
| // CHECK: @llvm.x86.avx512.exp2.pd | ||
| return _mm512_maskz_exp2a23_pd(m, a); | ||
| } | ||
|
|
||
| __m512 test_mm512_exp2a23_round_ps(__m512 a) { | ||
| // CHECK-LABEL: @test_mm512_exp2a23_round_ps | ||
| // CHECK: @llvm.x86.avx512.exp2.ps | ||
| return _mm512_exp2a23_round_ps(a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_mask_exp2a23_round_ps(__m512 s, __mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_mask_exp2a23_round_ps | ||
| // CHECK: @llvm.x86.avx512.exp2.ps | ||
| return _mm512_mask_exp2a23_round_ps(s, m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_maskz_exp2a23_round_ps(__mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_exp2a23_round_ps | ||
| // CHECK: @llvm.x86.avx512.exp2.ps | ||
| return _mm512_maskz_exp2a23_round_ps(m, a, _MM_FROUND_NO_EXC); | ||
| } | ||
|
|
||
| __m512 test_mm512_exp2a23_ps(__m512 a) { | ||
| // CHECK-LABEL: @test_mm512_exp2a23_ps | ||
| // CHECK: @llvm.x86.avx512.exp2.ps | ||
| return _mm512_exp2a23_ps(a); | ||
| } | ||
|
|
||
| __m512 test_mm512_mask_exp2a23_ps(__m512 s, __mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_mask_exp2a23_ps | ||
| // CHECK: @llvm.x86.avx512.exp2.ps | ||
| return _mm512_mask_exp2a23_ps(s, m, a); | ||
| } | ||
|
|
||
| __m512 test_mm512_maskz_exp2a23_ps(__mmask16 m, __m512 a) { | ||
| // CHECK-LABEL: @test_mm512_maskz_exp2a23_ps | ||
| // CHECK: @llvm.x86.avx512.exp2.ps | ||
| return _mm512_maskz_exp2a23_ps(m, a); | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,100 @@ | ||
| // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512pf -emit-llvm -o - -Wall | FileCheck %s | ||
|
|
||
|
|
||
| #include <immintrin.h> | ||
|
|
||
| void test_mm512_mask_prefetch_i32gather_pd(__m256i index, __mmask8 mask, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i32gather_pd | ||
| // CHECK: @llvm.x86.avx512.gatherpf.dpd | ||
| return _mm512_mask_prefetch_i32gather_pd(index, mask, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i32gather_pd(__m256i index, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i32gather_pd | ||
| // CHECK: @llvm.x86.avx512.gatherpf.dpd | ||
| return _mm512_prefetch_i32gather_pd(index, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i32gather_ps(__m512i index, __mmask16 mask, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i32gather_ps | ||
| // CHECK: @llvm.x86.avx512.gatherpf.dps | ||
| return _mm512_mask_prefetch_i32gather_ps(index, mask, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i32gather_ps(__m512i index, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i32gather_ps | ||
| // CHECK: @llvm.x86.avx512.gatherpf.dps | ||
| return _mm512_prefetch_i32gather_ps(index, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i64gather_pd(__m512i index, __mmask8 mask, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i64gather_pd | ||
| // CHECK: @llvm.x86.avx512.gatherpf.qpd | ||
| return _mm512_mask_prefetch_i64gather_pd(index, mask, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i64gather_pd(__m512i index, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i64gather_pd | ||
| // CHECK: @llvm.x86.avx512.gatherpf.qpd | ||
| return _mm512_prefetch_i64gather_pd(index, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i64gather_ps(__m512i index, __mmask8 mask, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i64gather_ps | ||
| // CHECK: @llvm.x86.avx512.gatherpf.qps | ||
| return _mm512_mask_prefetch_i64gather_ps(index, mask, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i64gather_ps(__m512i index, void const *addr) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i64gather_ps | ||
| // CHECK: @llvm.x86.avx512.gatherpf.qps | ||
| return _mm512_prefetch_i64gather_ps(index, addr, 2, _MM_HINT_T0); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i32scatter_pd(void *addr, __m256i index) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i32scatter_pd | ||
| // CHECK: @llvm.x86.avx512.scatterpf.dpd.512 | ||
| return _mm512_prefetch_i32scatter_pd(addr, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i32scatter_pd(void *addr, __mmask8 mask, __m256i index) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i32scatter_pd | ||
| // CHECK: @llvm.x86.avx512.scatterpf.dpd.512 | ||
| return _mm512_mask_prefetch_i32scatter_pd(addr, mask, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i32scatter_ps(void *addr, __m512i index) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i32scatter_ps | ||
| // CHECK: @llvm.x86.avx512.scatterpf.dps.512 | ||
| return _mm512_prefetch_i32scatter_ps(addr, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i32scatter_ps(void *addr, __mmask16 mask, __m512i index) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i32scatter_ps | ||
| // CHECK: @llvm.x86.avx512.scatterpf.dps.512 | ||
| return _mm512_mask_prefetch_i32scatter_ps(addr, mask, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i64scatter_pd(void *addr, __m512i index) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i64scatter_pd | ||
| // CHECK: @llvm.x86.avx512.scatterpf.qpd.512 | ||
| return _mm512_prefetch_i64scatter_pd(addr, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i64scatter_pd(void *addr, __mmask16 mask, __m512i index) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i64scatter_pd | ||
| // CHECK: @llvm.x86.avx512.scatterpf.qpd.512 | ||
| return _mm512_mask_prefetch_i64scatter_pd(addr, mask, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_prefetch_i64scatter_ps(void *addr, __m512i index) { | ||
| // CHECK-LABEL: @test_mm512_prefetch_i64scatter_ps | ||
| // CHECK: @llvm.x86.avx512.scatterpf.qps.512 | ||
| return _mm512_prefetch_i64scatter_ps(addr, index, 1, _MM_HINT_T1); | ||
| } | ||
|
|
||
| void test_mm512_mask_prefetch_i64scatter_ps(void *addr, __mmask16 mask, __m512i index) { | ||
| // CHECK-LABEL: @test_mm512_mask_prefetch_i64scatter_ps | ||
| // CHECK: @llvm.x86.avx512.scatterpf.qps.512 | ||
| return _mm512_mask_prefetch_i64scatter_ps(addr, mask, index, 1, _MM_HINT_T1); | ||
| } |