<shiyul...@iscas.ac.cn>於 2024年10月29日 週二,18:13寫道: > From: yulong <shiyul...@iscas.ac.cn> > > gcc/ChangeLog: > > * config.gcc: Add riscv_cmo.h. > * config/riscv/riscv_cmo.h: New file. > > --- > gcc/config.gcc | 2 +- > gcc/config/riscv/riscv_cmo.h | 93 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 94 insertions(+), 1 deletion(-) > create mode 100644 gcc/config/riscv/riscv_cmo.h > > diff --git a/gcc/config.gcc b/gcc/config.gcc > index fd848228722..e2ed3b309cc 100644 > --- a/gcc/config.gcc > +++ b/gcc/config.gcc > @@ -558,7 +558,7 @@ riscv*) > extra_objs="${extra_objs} riscv-vector-builtins.o > riscv-vector-builtins-shapes.o riscv-vector-builtins-bases.o" > extra_objs="${extra_objs} thead.o riscv-target-attr.o" > d_target_objs="riscv-d.o" > - extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h > riscv_th_vector.h" > + extra_headers="riscv_vector.h riscv_crypto.h riscv_bitmanip.h > riscv_th_vector.h riscv_cmo.h" > target_gtfiles="$target_gtfiles > \$(srcdir)/config/riscv/riscv-vector-builtins.cc" > target_gtfiles="$target_gtfiles > \$(srcdir)/config/riscv/riscv-vector-builtins.h" > ;; > diff --git a/gcc/config/riscv/riscv_cmo.h b/gcc/config/riscv/riscv_cmo.h > new file mode 100644 > index 00000000000..95bf60da082 > --- /dev/null > +++ b/gcc/config/riscv/riscv_cmo.h > @@ -0,0 +1,93 @@ > +/* RISC-V CMO Extension intrinsics include file. > + Copyright (C) 2024 Free Software Foundation, Inc. > + > + This file is part of GCC. > + > + GCC is free software; you can redistribute it and/or modify it > + under the terms of the GNU General Public License as published > + by the Free Software Foundation; either version 3, or (at your > + option) any later version. > + > + GCC is distributed in the hope that it will be useful, but WITHOUT > + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY > + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public > + License for more details. > + > + Under Section 7 of GPL version 3, you are granted additional > + permissions described in the GCC Runtime Library Exception, version > + 3.1, as published by the Free Software Foundation. > + > + You should have received a copy of the GNU General Public License and > + a copy of the GCC Runtime Library Exception along with this program; > + see the files COPYING3 and COPYING.RUNTIME respectively. If not, see > + <http://www.gnu.org/licenses/>. */ > + > +#ifndef __RISCV_CMO_H > +#define __RISCV_CMO_H > + > +#include <stdint.h>
It seems not used anything from stdint.h? > + > +#ifdef __cplusplus > +extern "C" { > +#endif No need for this since all function suppose to be inlined, so no mangling issue > + > +#if defined (__riscv_zicbom) > + > +extern __inline void > +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > +__riscv_cmo_clean (void *addr) > +{ > + __builtin_riscv_zicbom_cbo_clean(addr); > +} > + > +extern __inline void > +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > +__riscv_cmo_flush (void *addr) > +{ > + __builtin_riscv_zicbom_cbo_flush(addr); > +} > + > +extern __inline void > +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > +__riscv_cmo_inval (void *addr) > +{ > + __builtin_riscv_zicbom_cbo_inval(addr); > +} > + > +#endif // __riscv_zicbom > + > +#if defined (__riscv_zicbop) > + > +# define rnum 1 > + > +extern __inline void > +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > +__riscv_cmo_prefetch (void *addr, const int vs1, const int vs2) > +{ > + __builtin_prefetch(addr,vs1,vs2); > +} > + > +extern __inline int > +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > +__riscv_cmo_prefetchi () > +{ > + return __builtin_riscv_zicbop_cbo_prefetchi(rnum); > +} > + > +#endif // __riscv_zicbop > + > +#if defined (__riscv_zicboz) > + > +extern __inline void > +__attribute__ ((__gnu_inline__, __always_inline__, __artificial__)) > +__riscv_cmo_zero (void *addr) > +{ > + __builtin_riscv_zicboz_cbo_zero(addr); > +} > + > +#endif // __riscv_zicboz > + > +#if defined (__cplusplus) > +} > +#endif // __cplusplus > +#endif // __RISCV_CMO_H > \ No newline at end of file > -- > 2.34.1 > >