summaryrefslogtreecommitdiffstats
path: root/clang/lib/Headers/avx512fintrin.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Headers/avx512fintrin.h')
-rw-r--r--clang/lib/Headers/avx512fintrin.h44
1 files changed, 28 insertions, 16 deletions
diff --git a/clang/lib/Headers/avx512fintrin.h b/clang/lib/Headers/avx512fintrin.h
index c85c793bf48..e70d7516888 100644
--- a/clang/lib/Headers/avx512fintrin.h
+++ b/clang/lib/Headers/avx512fintrin.h
@@ -7181,23 +7181,35 @@ _mm_maskz_scalef_ss (__mmask8 __U, __m128 __A, __m128 __B)
(__v8df)_mm512_shuffle_pd((A), (B), (M)), \
(__v8df)_mm512_setzero_pd()); })
-#define _mm512_shuffle_ps(M, V, imm) __extension__ ({ \
- (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
- (__v16sf)(__m512)(V), (int)(imm), \
- (__v16sf)_mm512_undefined_ps(), \
- (__mmask16)-1); })
-
-#define _mm512_mask_shuffle_ps(W, U, M, V, imm) __extension__ ({ \
- (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
- (__v16sf)(__m512)(V), (int)(imm), \
- (__v16sf)(__m512)(W), \
- (__mmask16)(U)); })
+#define _mm512_shuffle_ps(A, B, M) __extension__ ({ \
+ (__m512d)__builtin_shufflevector((__v16sf)(__m512)(A), \
+ (__v16sf)(__m512)(B), \
+ 0 + (((M) >> 0) & 0x3), \
+ 0 + (((M) >> 2) & 0x3), \
+ 16 + (((M) >> 4) & 0x3), \
+ 16 + (((M) >> 6) & 0x3), \
+ 4 + (((M) >> 0) & 0x3), \
+ 4 + (((M) >> 2) & 0x3), \
+ 20 + (((M) >> 4) & 0x3), \
+ 20 + (((M) >> 6) & 0x3), \
+ 8 + (((M) >> 0) & 0x3), \
+ 8 + (((M) >> 2) & 0x3), \
+ 24 + (((M) >> 4) & 0x3), \
+ 24 + (((M) >> 6) & 0x3), \
+ 12 + (((M) >> 0) & 0x3), \
+ 12 + (((M) >> 2) & 0x3), \
+ 28 + (((M) >> 4) & 0x3), \
+ 28 + (((M) >> 6) & 0x3)); })
+
+#define _mm512_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
+ (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
+ (__v16sf)_mm512_shuffle_ps((A), (B), (M)), \
+ (__v16sf)(__m512)(W)); })
-#define _mm512_maskz_shuffle_ps(U, M, V, imm) __extension__ ({ \
- (__m512)__builtin_ia32_shufps512_mask((__v16sf)(__m512)(M), \
- (__v16sf)(__m512)(V), (int)(imm), \
- (__v16sf)_mm512_setzero_ps(), \
- (__mmask16)(U)); })
+#define _mm512_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
+ (__m512)__builtin_ia32_selectps_512((__mmask16)(U), \
+ (__v16sf)_mm512_shuffle_ps((A), (B), (M)), \
+ (__v16sf)_mm512_setzero_ps()); })
#define _mm_sqrt_round_sd(A, B, R) __extension__ ({ \
(__m128d)__builtin_ia32_sqrtsd_round_mask((__v2df)(__m128d)(A), \
OpenPOWER on IntegriCloud