10#ifndef __RISCV_COREV_ALU_H
11#define __RISCV_COREV_ALU_H
15#if defined(__cplusplus)
19#define __riscv_intrinsic_xcvalu 1
21#if defined(__riscv_xcvalu)
23#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
26 return __builtin_abs(a);
30 return __builtin_riscv_cv_alu_sle(a,
b);
34__riscv_cv_alu_sleu(
unsigned long a,
unsigned long b) {
35 return __builtin_riscv_cv_alu_sleu(a,
b);
39 return __builtin_elementwise_min(a,
b);
43__riscv_cv_alu_minu(
unsigned long a,
unsigned long b) {
44 return __builtin_elementwise_min(a,
b);
48 return __builtin_elementwise_max(a,
b);
52__riscv_cv_alu_maxu(
unsigned long a,
unsigned long b) {
53 return __builtin_elementwise_max(a,
b);
57 return __builtin_riscv_cv_alu_exths(a);
61__riscv_cv_alu_exthz(uint16_t a) {
62 return __builtin_riscv_cv_alu_exthz(a);
66 return __builtin_riscv_cv_alu_extbs(a);
70__riscv_cv_alu_extbz(uint8_t a) {
71 return __builtin_riscv_cv_alu_extbz(a);
76 return __builtin_riscv_cv_alu_clip(a,
b);
80__riscv_cv_alu_clipu(
unsigned long a,
unsigned long b) {
81 return __builtin_riscv_cv_alu_clipu(a,
b);
86 return __builtin_riscv_cv_alu_addN(a,
b, shft);
90__riscv_cv_alu_adduN(
unsigned long a,
unsigned long b, uint8_t shft) {
91 return __builtin_riscv_cv_alu_adduN(a,
b, shft);
96 return __builtin_riscv_cv_alu_addRN(a,
b, shft);
100__riscv_cv_alu_adduRN(
unsigned long a,
unsigned long b, uint8_t shft) {
101 return __builtin_riscv_cv_alu_adduRN(a,
b, shft);
106 return __builtin_riscv_cv_alu_subN(a,
b, shft);
110__riscv_cv_alu_subuN(
unsigned long a,
unsigned long b, uint8_t shft) {
111 return __builtin_riscv_cv_alu_subuN(a,
b, shft);
116 return __builtin_riscv_cv_alu_subRN(a,
b, shft);
120__riscv_cv_alu_subuRN(
unsigned long a,
unsigned long b, uint8_t shft) {
121 return __builtin_riscv_cv_alu_subuRN(a,
b, shft);
126#if defined(__cplusplus)
#define __DEFAULT_FN_ATTRS