clang 23.0.0git
riscv_corev_alu.h
Go to the documentation of this file.
1/*===---- riscv_corev_alu.h - CORE-V ALU 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
10#ifndef __RISCV_COREV_ALU_H
11#define __RISCV_COREV_ALU_H
12
13#include <stdint.h>
14
15#if defined(__cplusplus)
16extern "C" {
17#endif
18
19#define __riscv_intrinsic_xcvalu 1
20
21#if defined(__riscv_xcvalu)
22
23#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
24
25static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_abs(long a) {
26 return __builtin_abs(a);
27}
28
29static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_sle(long a, long b) {
30 return __builtin_riscv_cv_alu_sle(a, b);
31}
32
33static __inline__ long __DEFAULT_FN_ATTRS
34__riscv_cv_alu_sleu(unsigned long a, unsigned long b) {
35 return __builtin_riscv_cv_alu_sleu(a, b);
36}
37
38static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_min(long a, long b) {
39 return __builtin_elementwise_min(a, b);
40}
41
42static __inline__ unsigned long __DEFAULT_FN_ATTRS
43__riscv_cv_alu_minu(unsigned long a, unsigned long b) {
44 return __builtin_elementwise_min(a, b);
45}
46
47static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_max(long a, long b) {
48 return __builtin_elementwise_max(a, b);
49}
50
51static __inline__ unsigned long __DEFAULT_FN_ATTRS
52__riscv_cv_alu_maxu(unsigned long a, unsigned long b) {
53 return __builtin_elementwise_max(a, b);
54}
55
56static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_exths(int16_t a) {
57 return __builtin_riscv_cv_alu_exths(a);
58}
59
60static __inline__ unsigned long __DEFAULT_FN_ATTRS
61__riscv_cv_alu_exthz(uint16_t a) {
62 return __builtin_riscv_cv_alu_exthz(a);
63}
64
65static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_extbs(int8_t a) {
66 return __builtin_riscv_cv_alu_extbs(a);
67}
68
69static __inline__ unsigned long __DEFAULT_FN_ATTRS
70__riscv_cv_alu_extbz(uint8_t a) {
71 return __builtin_riscv_cv_alu_extbz(a);
72}
73
74static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_clip(long a,
75 unsigned long b) {
76 return __builtin_riscv_cv_alu_clip(a, b);
77}
78
79static __inline__ unsigned long __DEFAULT_FN_ATTRS
80__riscv_cv_alu_clipu(unsigned long a, unsigned long b) {
81 return __builtin_riscv_cv_alu_clipu(a, b);
82}
83
84static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addN(long a, long b,
85 uint8_t shft) {
86 return __builtin_riscv_cv_alu_addN(a, b, shft);
87}
88
89static __inline__ unsigned long __DEFAULT_FN_ATTRS
90__riscv_cv_alu_adduN(unsigned long a, unsigned long b, uint8_t shft) {
91 return __builtin_riscv_cv_alu_adduN(a, b, shft);
92}
93
94static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addRN(long a, long b,
95 uint8_t shft) {
96 return __builtin_riscv_cv_alu_addRN(a, b, shft);
97}
98
99static __inline__ unsigned long __DEFAULT_FN_ATTRS
100__riscv_cv_alu_adduRN(unsigned long a, unsigned long b, uint8_t shft) {
101 return __builtin_riscv_cv_alu_adduRN(a, b, shft);
102}
103
104static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subN(long a, long b,
105 uint8_t shft) {
106 return __builtin_riscv_cv_alu_subN(a, b, shft);
107}
108
109static __inline__ unsigned long __DEFAULT_FN_ATTRS
110__riscv_cv_alu_subuN(unsigned long a, unsigned long b, uint8_t shft) {
111 return __builtin_riscv_cv_alu_subuN(a, b, shft);
112}
113
114static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subRN(long a, long b,
115 uint8_t shft) {
116 return __builtin_riscv_cv_alu_subRN(a, b, shft);
117}
118
119static __inline__ unsigned long __DEFAULT_FN_ATTRS
120__riscv_cv_alu_subuRN(unsigned long a, unsigned long b, uint8_t shft) {
121 return __builtin_riscv_cv_alu_subuRN(a, b, shft);
122}
123
124#endif // defined(__riscv_xcvalu)
125
126#if defined(__cplusplus)
127}
128#endif
129
130#endif // define __RISCV_COREV_ALU_H
__device__ __2f16 b
#define __DEFAULT_FN_ATTRS