[PATCH] RISC-V: Implment __builtin_thread_pointer

Jim Wilson jimw@sifive.com
Wed Jul 8 19:59:21 GMT 2020


On Tue, Jul 7, 2020 at 2:52 AM Kito Cheng <kito.cheng@sifive.com> wrote:
> gcc/ChangeLog:
>         * gcc/config/riscv/riscv.md (): New.
>         (TP_REGNUM): Ditto.
>         * doc/extend.texi (Target Builtins): Add RISC-V built-in section.
>         Document __builtin_thread_pointer.
> gcc/testsuite/ChangeLog:
>         * gcc.target/riscv/read-thread-pointer.c: New.

It looks OK to me in general.

You added builtin_thread_pointer but not builtin_set_thread_pointer.
Maybe we should implement both as long as we are implementing one?  If
clang only implements one, maybe it should implement the other also?
This doesn't have to be part of this patch.  This could be a separate
issue.

The builtin_thread_pointer docs looks out-of-date.  It is documented
for alpha and SH, but it is implemented in gcc/builtins.c not in the
backends.  A scan of md files show that quite a few targets support it
but don't document it.  I think it should be documented in the generic
builtins section not in the target dependent builtins sections with
some language that says not all targets support it.  This doesn't have
to be part of this patch.  This could be a separate issue.

We have two existing undocumented builtins.  __builtin_riscv_fsflags
and __builtin_riscv_frflags for setting or reading the FP flags.  I
don't know if anyone uses them though.  newlib and glbic both use
extended asms for these operations.  This doesn't have to be part of
this patch.  This could be a separate issue.

There is a document https://github.com/riscv/riscv-c-api-doc for
coordinating gcc and llvm work that has an empty list of builtin
functions.  I'm not sure if this document is still useful.  If this is
a RISC-V specific builtin then it should be listed here, but I don't
think it should be considered a RISC-V specific builtin.  There is an
unresolved pull request for the frflags and fsflags builtins.  I guess
I forgot about that.

Jim


More information about the Gcc-patches mailing list