LemonBoy created this revision. LemonBoy added a reviewer: craig.topper. LemonBoy requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
AMD Zen3 architecture supports the VAES instruction set but not the 512bit variants, add a feature gate on __AVX512F__ to avoid raising a compile error (due to `__m512i` being undefined) whenever a user imports the intrinsic module. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D99465 Files: clang/lib/Headers/vaesintrin.h Index: clang/lib/Headers/vaesintrin.h =================================================================== --- clang/lib/Headers/vaesintrin.h +++ clang/lib/Headers/vaesintrin.h @@ -28,13 +28,6 @@ (__v4di) __B); } -static __inline__ __m512i __DEFAULT_FN_ATTRS_F - _mm512_aesenc_epi128(__m512i __A, __m512i __B) -{ - return (__m512i) __builtin_ia32_aesenc512((__v8di) __A, - (__v8di) __B); -} - static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesdec_epi128(__m256i __A, __m256i __B) { @@ -42,13 +35,6 @@ (__v4di) __B); } -static __inline__ __m512i __DEFAULT_FN_ATTRS_F - _mm512_aesdec_epi128(__m512i __A, __m512i __B) -{ - return (__m512i) __builtin_ia32_aesdec512((__v8di) __A, - (__v8di) __B); -} - static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesenclast_epi128(__m256i __A, __m256i __B) { @@ -56,13 +42,6 @@ (__v4di) __B); } -static __inline__ __m512i __DEFAULT_FN_ATTRS_F - _mm512_aesenclast_epi128(__m512i __A, __m512i __B) -{ - return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A, - (__v8di) __B); -} - static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesdeclast_epi128(__m256i __A, __m256i __B) { @@ -70,6 +49,29 @@ (__v4di) __B); } +#ifdef __AVX512F__ + +static __inline__ __m512i __DEFAULT_FN_ATTRS_F + _mm512_aesenc_epi128(__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_aesenc512((__v8di) __A, + (__v8di) __B); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS_F + _mm512_aesdec_epi128(__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_aesdec512((__v8di) __A, + (__v8di) __B); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS_F + _mm512_aesenclast_epi128(__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A, + (__v8di) __B); +} + static __inline__ __m512i __DEFAULT_FN_ATTRS_F _mm512_aesdeclast_epi128(__m512i __A, __m512i __B) { @@ -77,6 +79,7 @@ (__v8di) __B); } +#endif /* __AVX512F__ */ #undef __DEFAULT_FN_ATTRS #undef __DEFAULT_FN_ATTRS_F
Index: clang/lib/Headers/vaesintrin.h =================================================================== --- clang/lib/Headers/vaesintrin.h +++ clang/lib/Headers/vaesintrin.h @@ -28,13 +28,6 @@ (__v4di) __B); } -static __inline__ __m512i __DEFAULT_FN_ATTRS_F - _mm512_aesenc_epi128(__m512i __A, __m512i __B) -{ - return (__m512i) __builtin_ia32_aesenc512((__v8di) __A, - (__v8di) __B); -} - static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesdec_epi128(__m256i __A, __m256i __B) { @@ -42,13 +35,6 @@ (__v4di) __B); } -static __inline__ __m512i __DEFAULT_FN_ATTRS_F - _mm512_aesdec_epi128(__m512i __A, __m512i __B) -{ - return (__m512i) __builtin_ia32_aesdec512((__v8di) __A, - (__v8di) __B); -} - static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesenclast_epi128(__m256i __A, __m256i __B) { @@ -56,13 +42,6 @@ (__v4di) __B); } -static __inline__ __m512i __DEFAULT_FN_ATTRS_F - _mm512_aesenclast_epi128(__m512i __A, __m512i __B) -{ - return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A, - (__v8di) __B); -} - static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesdeclast_epi128(__m256i __A, __m256i __B) { @@ -70,6 +49,29 @@ (__v4di) __B); } +#ifdef __AVX512F__ + +static __inline__ __m512i __DEFAULT_FN_ATTRS_F + _mm512_aesenc_epi128(__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_aesenc512((__v8di) __A, + (__v8di) __B); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS_F + _mm512_aesdec_epi128(__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_aesdec512((__v8di) __A, + (__v8di) __B); +} + +static __inline__ __m512i __DEFAULT_FN_ATTRS_F + _mm512_aesenclast_epi128(__m512i __A, __m512i __B) +{ + return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A, + (__v8di) __B); +} + static __inline__ __m512i __DEFAULT_FN_ATTRS_F _mm512_aesdeclast_epi128(__m512i __A, __m512i __B) { @@ -77,6 +79,7 @@ (__v8di) __B); } +#endif /* __AVX512F__ */ #undef __DEFAULT_FN_ATTRS #undef __DEFAULT_FN_ATTRS_F
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits