<[email protected]>於 2024年10月29日 週二,18:13寫道:
> From: yulong <[email protected]>
>
> 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
>
>