brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 84f4d08 Raw
129 lines · c
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-exception6 *7 *===-----------------------------------------------------------------------===8 */9 10#ifndef __RISCV_COREV_ALU_H11#define __RISCV_COREV_ALU_H12 13#include <stdint.h>14 15#if defined(__cplusplus)16extern "C" {17#endif18 19#if defined(__riscv_xcvalu)20 21#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))22 23static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_abs(long a) {24  return __builtin_abs(a);25}26 27static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_sle(long a, long b) {28  return __builtin_riscv_cv_alu_sle(a, b);29}30 31static __inline__ long __DEFAULT_FN_ATTRS32__riscv_cv_alu_sleu(unsigned long a, unsigned long b) {33  return __builtin_riscv_cv_alu_sleu(a, b);34}35 36static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_min(long a, long b) {37  return __builtin_elementwise_min(a, b);38}39 40static __inline__ unsigned long __DEFAULT_FN_ATTRS41__riscv_cv_alu_minu(unsigned long a, unsigned long b) {42  return __builtin_elementwise_min(a, b);43}44 45static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_max(long a, long b) {46  return __builtin_elementwise_max(a, b);47}48 49static __inline__ unsigned long __DEFAULT_FN_ATTRS50__riscv_cv_alu_maxu(unsigned long a, unsigned long b) {51  return __builtin_elementwise_max(a, b);52}53 54static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_exths(int16_t a) {55  return __builtin_riscv_cv_alu_exths(a);56}57 58static __inline__ unsigned long __DEFAULT_FN_ATTRS59__riscv_cv_alu_exthz(uint16_t a) {60  return __builtin_riscv_cv_alu_exthz(a);61}62 63static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_extbs(int8_t a) {64  return __builtin_riscv_cv_alu_extbs(a);65}66 67static __inline__ unsigned long __DEFAULT_FN_ATTRS68__riscv_cv_alu_extbz(uint8_t a) {69  return __builtin_riscv_cv_alu_extbz(a);70}71 72static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_clip(long a,73                                                              unsigned long b) {74  return __builtin_riscv_cv_alu_clip(a, b);75}76 77static __inline__ unsigned long __DEFAULT_FN_ATTRS78__riscv_cv_alu_clipu(unsigned long a, unsigned long b) {79  return __builtin_riscv_cv_alu_clipu(a, b);80}81 82static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addN(long a, long b,83                                                              uint8_t shft) {84  return __builtin_riscv_cv_alu_addN(a, b, shft);85}86 87static __inline__ unsigned long __DEFAULT_FN_ATTRS88__riscv_cv_alu_adduN(unsigned long a, unsigned long b, uint8_t shft) {89  return __builtin_riscv_cv_alu_adduN(a, b, shft);90}91 92static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addRN(long a, long b,93                                                               uint8_t shft) {94  return __builtin_riscv_cv_alu_addRN(a, b, shft);95}96 97static __inline__ unsigned long __DEFAULT_FN_ATTRS98__riscv_cv_alu_adduRN(unsigned long a, unsigned long b, uint8_t shft) {99  return __builtin_riscv_cv_alu_adduRN(a, b, shft);100}101 102static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subN(long a, long b,103                                                              uint8_t shft) {104  return __builtin_riscv_cv_alu_subN(a, b, shft);105}106 107static __inline__ unsigned long __DEFAULT_FN_ATTRS108__riscv_cv_alu_subuN(unsigned long a, unsigned long b, uint8_t shft) {109  return __builtin_riscv_cv_alu_subuN(a, b, shft);110}111 112static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subRN(long a, long b,113                                                               uint8_t shft) {114  return __builtin_riscv_cv_alu_subRN(a, b, shft);115}116 117static __inline__ unsigned long __DEFAULT_FN_ATTRS118__riscv_cv_alu_subuRN(unsigned long a, unsigned long b, uint8_t shft) {119  return __builtin_riscv_cv_alu_subuRN(a, b, shft);120}121 122#endif // defined(__riscv_xcvalu)123 124#if defined(__cplusplus)125}126#endif127 128#endif // define __RISCV_COREV_ALU_H129