| 1 | /*===--------------- sm4evexintrin.h - SM4 EVEX intrinsics -----------------=== |
| 2 | * |
| 3 | * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| 4 | * See https://llvm.org/LICENSE.txt for license information. |
| 5 | * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| 6 | * |
| 7 | *===----------------------------------------------------------------------=== |
| 8 | */ |
| 9 | #ifndef __IMMINTRIN_H |
| 10 | #error "Never use <sm4evexintrin.h> directly; include <immintrin.h> instead." |
| 11 | #endif // __IMMINTRIN_H |
| 12 | |
| 13 | #ifndef __SM4EVEXINTRIN_H |
| 14 | #define __SM4EVEXINTRIN_H |
| 15 | |
| 16 | #define __DEFAULT_FN_ATTRS512 \ |
| 17 | __attribute__((__always_inline__, __nodebug__, __target__("sm4,avx10.2"), \ |
| 18 | __min_vector_width__(512))) |
| 19 | |
| 20 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 |
| 21 | _mm512_sm4key4_epi32(__m512i __A, __m512i __B) { |
| 22 | return (__m512i)__builtin_ia32_vsm4key4512((__v16su)__A, (__v16su)__B); |
| 23 | } |
| 24 | |
| 25 | static __inline__ __m512i __DEFAULT_FN_ATTRS512 |
| 26 | _mm512_sm4rnds4_epi32(__m512i __A, __m512i __B) { |
| 27 | return (__m512i)__builtin_ia32_vsm4rnds4512((__v16su)__A, (__v16su)__B); |
| 28 | } |
| 29 | |
| 30 | #undef __DEFAULT_FN_ATTRS512 |
| 31 | |
| 32 | #endif // __SM4EVEXINTRIN_H |