[offload] [test] Use test compiler ID rather than host (#124408)
[llvm-project.git] / clang / lib / Headers / riscv_crypto.h
blob7cd2a708f5575635ef9273921ef842ef3f05e1aa
1 /*===---- riscv_crypto.h - RISC-V Zk* intrinsics ---------------------------===
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
7 *===-----------------------------------------------------------------------===
8 */
10 #ifndef __RISCV_CRYPTO_H
11 #define __RISCV_CRYPTO_H
13 #include <stdint.h>
15 #if defined(__cplusplus)
16 extern "C" {
17 #endif
19 #if defined(__riscv_zknd)
20 #if __riscv_xlen == 32
21 #define __riscv_aes32dsi(x, y, bs) __builtin_riscv_aes32dsi(x, y, bs)
22 #define __riscv_aes32dsmi(x, y, bs) __builtin_riscv_aes32dsmi(x, y, bs)
23 #endif
25 #if __riscv_xlen == 64
26 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
27 __riscv_aes64ds(uint64_t __x, uint64_t __y) {
28 return __builtin_riscv_aes64ds(__x, __y);
31 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
32 __riscv_aes64dsm(uint64_t __x, uint64_t __y) {
33 return __builtin_riscv_aes64dsm(__x, __y);
36 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
37 __riscv_aes64im(uint64_t __x) {
38 return __builtin_riscv_aes64im(__x);
40 #endif
41 #endif // defined(__riscv_zknd)
43 #if defined(__riscv_zkne)
44 #if __riscv_xlen == 32
45 #define __riscv_aes32esi(x, y, bs) __builtin_riscv_aes32esi(x, y, bs)
46 #define __riscv_aes32esmi(x, y, bs) __builtin_riscv_aes32esmi(x, y, bs)
47 #endif
49 #if __riscv_xlen == 64
50 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
51 __riscv_aes64es(uint64_t __x, uint64_t __y) {
52 return __builtin_riscv_aes64es(__x, __y);
55 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
56 __riscv_aes64esm(uint64_t __x, uint64_t __y) {
57 return __builtin_riscv_aes64esm(__x, __y);
59 #endif
60 #endif // defined(__riscv_zkne)
62 #if defined(__riscv_zknd) || defined(__riscv_zkne)
63 #if __riscv_xlen == 64
64 #define __riscv_aes64ks1i(x, rnum) __builtin_riscv_aes64ks1i(x, rnum)
66 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
67 __riscv_aes64ks2(uint64_t __x, uint64_t __y) {
68 return __builtin_riscv_aes64ks2(__x, __y);
70 #endif
71 #endif // defined(__riscv_zknd) || defined(__riscv_zkne)
73 #if defined(__riscv_zknh)
74 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
75 __riscv_sha256sig0(uint32_t __x) {
76 return __builtin_riscv_sha256sig0(__x);
79 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
80 __riscv_sha256sig1(uint32_t __x) {
81 return __builtin_riscv_sha256sig1(__x);
84 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
85 __riscv_sha256sum0(uint32_t __x) {
86 return __builtin_riscv_sha256sum0(__x);
89 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
90 __riscv_sha256sum1(uint32_t __x) {
91 return __builtin_riscv_sha256sum1(__x);
94 #if __riscv_xlen == 32
95 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
96 __riscv_sha512sig0h(uint32_t __x, uint32_t __y) {
97 return __builtin_riscv_sha512sig0h(__x, __y);
100 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
101 __riscv_sha512sig0l(uint32_t __x, uint32_t __y) {
102 return __builtin_riscv_sha512sig0l(__x, __y);
105 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
106 __riscv_sha512sig1h(uint32_t __x, uint32_t __y) {
107 return __builtin_riscv_sha512sig1h(__x, __y);
110 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
111 __riscv_sha512sig1l(uint32_t __x, uint32_t __y) {
112 return __builtin_riscv_sha512sig1l(__x, __y);
115 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
116 __riscv_sha512sum0r(uint32_t __x, uint32_t __y) {
117 return __builtin_riscv_sha512sum0r(__x, __y);
120 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
121 __riscv_sha512sum1r(uint32_t __x, uint32_t __y) {
122 return __builtin_riscv_sha512sum1r(__x, __y);
124 #endif
126 #if __riscv_xlen == 64
127 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
128 __riscv_sha512sig0(uint64_t __x) {
129 return __builtin_riscv_sha512sig0(__x);
132 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
133 __riscv_sha512sig1(uint64_t __x) {
134 return __builtin_riscv_sha512sig1(__x);
137 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
138 __riscv_sha512sum0(uint64_t __x) {
139 return __builtin_riscv_sha512sum0(__x);
142 static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
143 __riscv_sha512sum1(uint64_t __x) {
144 return __builtin_riscv_sha512sum1(__x);
146 #endif
147 #endif // defined(__riscv_zknh)
149 #if defined(__riscv_zksh)
150 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
151 __riscv_sm3p0(uint32_t __x) {
152 return __builtin_riscv_sm3p0(__x);
155 static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
156 __riscv_sm3p1(uint32_t __x) {
157 return __builtin_riscv_sm3p1(__x);
159 #endif // defined(__riscv_zksh)
161 #if defined(__riscv_zksed)
162 #define __riscv_sm4ed(x, y, bs) __builtin_riscv_sm4ed(x, y, bs);
163 #define __riscv_sm4ks(x, y, bs) __builtin_riscv_sm4ks(x, y, bs);
164 #endif // defined(__riscv_zksed)
166 #if defined(__cplusplus)
168 #endif
170 #endif