<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
>
>

Reply via email to