clang 22.0.0git
vaesintrin.h
Go to the documentation of this file.
1/*===------------------ vaesintrin.h - VAES intrinsics ---------------------===
2 *
3 *
4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5 * See https://llvm.org/LICENSE.txt for license information.
6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 *
8 *===-----------------------------------------------------------------------===
9 */
10#ifndef __IMMINTRIN_H
11#error "Never use <vaesintrin.h> directly; include <immintrin.h> instead."
12#endif
13
14#ifndef __VAESINTRIN_H
15#define __VAESINTRIN_H
16
17/* Default attributes for YMM forms. */
18#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("vaes"), __min_vector_width__(256)))
19
20/* Default attributes for ZMM forms. */
21#define __DEFAULT_FN_ATTRS_F \
22 __attribute__((__always_inline__, __nodebug__, __target__("avx512f,vaes"), \
23 __min_vector_width__(512)))
24
25static __inline__ __m256i __DEFAULT_FN_ATTRS
26 _mm256_aesenc_epi128(__m256i __A, __m256i __B)
27{
28 return (__m256i) __builtin_ia32_aesenc256((__v4di) __A,
29 (__v4di) __B);
30}
31
32static __inline__ __m256i __DEFAULT_FN_ATTRS
33 _mm256_aesdec_epi128(__m256i __A, __m256i __B)
34{
35 return (__m256i) __builtin_ia32_aesdec256((__v4di) __A,
36 (__v4di) __B);
37}
38
39static __inline__ __m256i __DEFAULT_FN_ATTRS
40 _mm256_aesenclast_epi128(__m256i __A, __m256i __B)
41{
42 return (__m256i) __builtin_ia32_aesenclast256((__v4di) __A,
43 (__v4di) __B);
44}
45
46static __inline__ __m256i __DEFAULT_FN_ATTRS
47 _mm256_aesdeclast_epi128(__m256i __A, __m256i __B)
48{
49 return (__m256i) __builtin_ia32_aesdeclast256((__v4di) __A,
50 (__v4di) __B);
51}
52
53#ifdef __AVX512FINTRIN_H
54static __inline__ __m512i __DEFAULT_FN_ATTRS_F
55 _mm512_aesenc_epi128(__m512i __A, __m512i __B)
56{
57 return (__m512i) __builtin_ia32_aesenc512((__v8di) __A,
58 (__v8di) __B);
59}
60
61static __inline__ __m512i __DEFAULT_FN_ATTRS_F
62 _mm512_aesdec_epi128(__m512i __A, __m512i __B)
63{
64 return (__m512i) __builtin_ia32_aesdec512((__v8di) __A,
65 (__v8di) __B);
66}
67
68static __inline__ __m512i __DEFAULT_FN_ATTRS_F
69 _mm512_aesenclast_epi128(__m512i __A, __m512i __B)
70{
71 return (__m512i) __builtin_ia32_aesenclast512((__v8di) __A,
72 (__v8di) __B);
73}
74
75static __inline__ __m512i __DEFAULT_FN_ATTRS_F
76 _mm512_aesdeclast_epi128(__m512i __A, __m512i __B)
77{
78 return (__m512i) __builtin_ia32_aesdeclast512((__v8di) __A,
79 (__v8di) __B);
80}
81#endif // __AVX512FINTRIN_H
82
83#undef __DEFAULT_FN_ATTRS
84#undef __DEFAULT_FN_ATTRS_F
85
86#endif // __VAESINTRIN_H
#define __DEFAULT_FN_ATTRS
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesdec_epi128(__m256i __A, __m256i __B)
Definition vaesintrin.h:33
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesenc_epi128(__m256i __A, __m256i __B)
Definition vaesintrin.h:26
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesdeclast_epi128(__m256i __A, __m256i __B)
Definition vaesintrin.h:47
#define __DEFAULT_FN_ATTRS_F
Definition vaesintrin.h:21
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_aesenclast_epi128(__m256i __A, __m256i __B)
Definition vaesintrin.h:40