RISC-V: Add avail interface into function_group_info
Patch v3: Fix typo and remove the modification of rvv.exp. Patch v2: Using variadic macro and add the dependency into t-riscv. In order to add other extension about vector,this patch add unsigned int (*avail) (void) into function_group_info to determine whether to register the intrinsic based on ISA info. gcc/ChangeLog: * config/riscv/riscv-vector-builtins-functions.def (DEF_RVV_FUNCTION): Add AVAIL argument. (read_vl): Using AVAIL argument default value. (vlenb): Ditto. (vsetvl): Ditto. (vsetvlmax): Ditto. (vle): Ditto. (vse): Ditto. (vlm): Ditto. (vsm): Ditto. (vlse): Ditto. (vsse): Ditto. (vluxei8): Ditto. (vluxei16): Ditto. (vluxei32): Ditto. (vluxei64): Ditto. (vloxei8): Ditto. (vloxei16): Ditto. (vloxei32): Ditto. (vloxei64): Ditto. (vsuxei8): Ditto. (vsuxei16): Ditto. (vsuxei32): Ditto. (vsuxei64): Ditto. (vsoxei8): Ditto. (vsoxei16): Ditto. (vsoxei32): Ditto. (vsoxei64): Ditto. (vleff): Ditto. (vadd): Ditto. (vsub): Ditto. (vrsub): Ditto. (vneg): Ditto. (vwaddu): Ditto. (vwsubu): Ditto. (vwadd): Ditto. (vwsub): Ditto. (vwcvt_x): Ditto. (vwcvtu_x): Ditto. (vzext): Ditto. (vsext): Ditto. (vadc): Ditto. (vmadc): Ditto. (vsbc): Ditto. (vmsbc): Ditto. (vand): Ditto. (vor): Ditto. (vxor): Ditto. (vnot): Ditto. (vsll): Ditto. (vsra): Ditto. (vsrl): Ditto. (vnsrl): Ditto. (vnsra): Ditto. (vncvt_x): Ditto. (vmseq): Ditto. (vmsne): Ditto. (vmsltu): Ditto. (vmslt): Ditto. (vmsleu): Ditto. (vmsle): Ditto. (vmsgtu): Ditto. (vmsgt): Ditto. (vmsgeu): Ditto. (vmsge): Ditto. (vminu): Ditto. (vmin): Ditto. (vmaxu): Ditto. (vmax): Ditto. (vmul): Ditto. (vmulh): Ditto. (vmulhu): Ditto. (vmulhsu): Ditto. (vdivu): Ditto. (vdiv): Ditto. (vremu): Ditto. (vrem): Ditto. (vwmul): Ditto. (vwmulu): Ditto. (vwmulsu): Ditto. (vmacc): Ditto. (vnmsac): Ditto. (vmadd): Ditto. (vnmsub): Ditto. (vwmaccu): Ditto. (vwmacc): Ditto. (vwmaccsu): Ditto. (vwmaccus): Ditto. (vmerge): Ditto. (vmv_v): Ditto. (vsaddu): Ditto. (vsadd): Ditto. (vssubu): Ditto. (vssub): Ditto. (vaaddu): Ditto. (vaadd): Ditto. (vasubu): Ditto. (vasub): Ditto. (vsmul): Ditto. (vssrl): Ditto. (vssra): Ditto. (vnclipu): Ditto. (vnclip): Ditto. (vfadd): Ditto. (vfsub): Ditto. (vfrsub): Ditto. (vfadd_frm): Ditto. (vfsub_frm): Ditto. (vfrsub_frm): Ditto. (vfwadd): Ditto. (vfwsub): Ditto. (vfwadd_frm): Ditto. (vfwsub_frm): Ditto. (vfmul): Ditto. (vfdiv): Ditto. (vfrdiv): Ditto. (vfmul_frm): Ditto. (vfdiv_frm): Ditto. (vfrdiv_frm): Ditto. (vfwmul): Ditto. (vfwmul_frm): Ditto. (vfmacc): Ditto. (vfnmsac): Ditto. (vfmadd): Ditto. (vfnmsub): Ditto. (vfnmacc): Ditto. (vfmsac): Ditto. (vfnmadd): Ditto. (vfmsub): Ditto. (vfmacc_frm): Ditto. (vfnmacc_frm): Ditto. (vfmsac_frm): Ditto. (vfnmsac_frm): Ditto. (vfmadd_frm): Ditto. (vfnmadd_frm): Ditto. (vfmsub_frm): Ditto. (vfnmsub_frm): Ditto. (vfwmacc): Ditto. (vfwnmacc): Ditto. (vfwmsac): Ditto. (vfwnmsac): Ditto. (vfwmacc_frm): Ditto. (vfwnmacc_frm): Ditto. (vfwmsac_frm): Ditto. (vfwnmsac_frm): Ditto. (vfsqrt): Ditto. (vfsqrt_frm): Ditto. (vfrsqrt7): Ditto. (vfrec7): Ditto. (vfrec7_frm): Ditto. (vfmin): Ditto. (vfmax): Ditto. (vfsgnj): Ditto. (vfsgnjn): Ditto. (vfsgnjx): Ditto. (vfneg): Ditto. (vfabs): Ditto. (vmfeq): Ditto. (vmfne): Ditto. (vmflt): Ditto. (vmfle): Ditto. (vmfgt): Ditto. (vmfge): Ditto. (vfclass): Ditto. (vfmerge): Ditto. (vfmv_v): Ditto. (vfcvt_x): Ditto. (vfcvt_xu): Ditto. (vfcvt_rtz_x): Ditto. (vfcvt_rtz_xu): Ditto. (vfcvt_f): Ditto. (vfcvt_x_frm): Ditto. (vfcvt_xu_frm): Ditto. (vfcvt_f_frm): Ditto. (vfwcvt_x): Ditto. (vfwcvt_xu): Ditto. (vfwcvt_rtz_x): Ditto. (vfwcvt_rtz_xu) Ditto.: (vfwcvt_f): Ditto. (vfwcvt_x_frm): Ditto. (vfwcvt_xu_frm) Ditto.: (vfncvt_x): Ditto. (vfncvt_xu): Ditto. (vfncvt_rtz_x): Ditto. (vfncvt_rtz_xu): Ditto. (vfncvt_f): Ditto. (vfncvt_rod_f): Ditto. (vfncvt_x_frm): Ditto. (vfncvt_xu_frm): Ditto. (vfncvt_f_frm): Ditto. (vredsum): Ditto. (vredmaxu): Ditto. (vredmax): Ditto. (vredminu): Ditto. (vredmin): Ditto. (vredand): Ditto. (vredor): Ditto. (vredxor): Ditto. (vwredsum): Ditto. (vwredsumu): Ditto. (vfredusum): Ditto. (vfredosum): Ditto. (vfredmax): Ditto. (vfredmin): Ditto. (vfredusum_frm): Ditto. (vfredosum_frm): Ditto. (vfwredosum): Ditto. (vfwredusum): Ditto. (vfwredosum_frm): Ditto. (vfwredusum_frm): Ditto. (vmand): Ditto. (vmnand): Ditto. (vmandn): Ditto. (vmxor): Ditto. (vmor): Ditto. (vmnor): Ditto. (vmorn): Ditto. (vmxnor): Ditto. (vmmv): Ditto. (vmclr): Ditto. (vmset): Ditto. (vmnot): Ditto. (vcpop): Ditto. (vfirst): Ditto. (vmsbf): Ditto. (vmsif): Ditto. (vmsof): Ditto. (viota): Ditto. (vid): Ditto. (vmv_x): Ditto. (vmv_s): Ditto. (vfmv_f): Ditto. (vfmv_s): Ditto. (vslideup): Ditto. (vslidedown): Ditto. (vslide1up): Ditto. (vslide1down): Ditto. (vfslide1up): Ditto. (vfslide1down): Ditto. (vrgather): Ditto. (vrgatherei16): Ditto. (vcompress): Ditto. (vundefined): Ditto. (vreinterpret): Ditto. (vlmul_ext): Ditto. (vlmul_trunc): Ditto. (vset): Ditto. (vget): Ditto. (vcreate): Ditto. (vlseg): Ditto. (vsseg): Ditto. (vlsseg): Ditto. (vssseg): Ditto. (vluxseg): Ditto. (vloxseg): Ditto. (vsuxseg): Ditto. (vsoxseg): Ditto. (vlsegff): Ditto. * config/riscv/riscv-vector-builtins.cc (DEF_RVV_FUNCTION): Using variadic macro. * config/riscv/riscv-vector-builtins.h (struct function_group_info): Add avail function interface into struct. * config/riscv/t-riscv: Add dependency * config/riscv/riscv-vector-builtins-avail.h: New file.The definition of AVAIL marco.
This commit is contained in:
parent
fda2e1ab60
commit
ce7e66787b
5 changed files with 499 additions and 471 deletions
12
gcc/config/riscv/riscv-vector-builtins-avail.h
Normal file
12
gcc/config/riscv/riscv-vector-builtins-avail.h
Normal file
|
@ -0,0 +1,12 @@
|
|||
#ifndef GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
|
||||
#define GCC_RISCV_VECTOR_BUILTINS_AVAIL_H
|
||||
|
||||
#include "insn-codes.h"
|
||||
namespace riscv_vector {
|
||||
|
||||
/* Declare an availability predicate for built-in functions. */
|
||||
#define AVAIL(NAME, COND) \
|
||||
static unsigned int riscv_vector_avail_##NAME(void) { return (COND); }
|
||||
|
||||
} // namespace riscv_vector
|
||||
#endif
|
File diff suppressed because it is too large
Load diff
|
@ -51,6 +51,7 @@
|
|||
#include "riscv-vector-builtins.h"
|
||||
#include "riscv-vector-builtins-shapes.h"
|
||||
#include "riscv-vector-builtins-bases.h"
|
||||
#include "riscv-vector-builtins-avail.h"
|
||||
|
||||
using namespace riscv_vector;
|
||||
|
||||
|
@ -2684,8 +2685,9 @@ static CONSTEXPR const function_type_info function_types[] = {
|
|||
|
||||
/* A list of all RVV intrinsic functions. */
|
||||
static function_group_info function_groups[] = {
|
||||
#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO) \
|
||||
{#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
|
||||
#define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO, ...) \
|
||||
{#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO,\
|
||||
__VA_ARGS__},
|
||||
#include "riscv-vector-builtins-functions.def"
|
||||
};
|
||||
|
||||
|
|
|
@ -212,6 +212,14 @@ class function_shape;
|
|||
/* Static information about a set of functions. */
|
||||
struct function_group_info
|
||||
{
|
||||
constexpr function_group_info (const char *base_name,\
|
||||
const function_base *const *base,\
|
||||
const function_shape *const *shape,\
|
||||
const predication_type_index *preds,\
|
||||
const rvv_op_info ops_infos,\
|
||||
unsigned int (*avail)() = nullptr)
|
||||
: base_name (base_name), base (base), shape (shape), preds (preds),\
|
||||
ops_infos (ops_infos), avail (avail){};
|
||||
/* The base name, as a string. */
|
||||
const char *base_name;
|
||||
|
||||
|
@ -232,6 +240,8 @@ struct function_group_info
|
|||
on the index value. */
|
||||
const predication_type_index *preds;
|
||||
const rvv_op_info ops_infos;
|
||||
/* Whether the function is available. */
|
||||
unsigned int (*avail) (void);
|
||||
};
|
||||
|
||||
class GTY ((user)) function_instance
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
RISCV_BUILTINS_H = $(srcdir)/config/riscv/riscv-vector-builtins.h \
|
||||
$(srcdir)/config/riscv/riscv-vector-builtins-avail.h \
|
||||
$(srcdir)/config/riscv/riscv-vector-builtins.def \
|
||||
$(srcdir)/config/riscv/riscv-vector-builtins-functions.def \
|
||||
riscv-vector-type-indexer.gen.def
|
||||
|
|
Loading…
Add table
Reference in a new issue