gcc/ChangeLog: * doc/extend.texi: Add section for LoongArch BASE Built-in functions. --- gcc/doc/extend.texi | 89 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+)
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 3adb67aa47a..417af6c368d 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -14669,6 +14669,7 @@ instructions, but allow the compiler to schedule those calls. * Blackfin Built-in Functions:: * BPF Built-in Functions:: * FR-V Built-in Functions:: +* LoongArch BASE Built-in Functions:: * MIPS DSP Built-in Functions:: * MIPS Paired-Single Support:: * MIPS Loongson Built-in Functions:: @@ -16197,6 +16198,94 @@ Use the @code{nldub} instruction to load the contents of address @var{x} into the data cache. The instruction is issued in slot I1@. @end table +@node LoongArch BASE Built-in Functions +@subsection LoongArch BASE Built-in Functions + +These built-in functions are available for LoongArch. + +@itemize +@item @code{imm0_31}, an integer literal in range 0 to 31; +@item @code{imm0_16383}, an integer literal in range 0 to 16383; +@item @code{imm0_32767}, an integer literal in range 0 to 32767; +@item @code{imm_n2048_2047}, an integer literal in range -2048 to 2047; +@item @code{i8, u8, i16, u16, i32, u32, i64, u64, __drdtime_t, __rdtime_t} are included +in @code{larchintrin.h} and defined as follows: +@end itemize + +@smallexample + typedef char i8; + typedef unsigned char u8; + typedef short i16; + typedef unsigned short u16; + typedef int i32; + typedef unsigned int u32; +#if __LONG_MAX__ == __LONG_LONG_MAX__ + typedef long int i64; + typedef unsigned long int u64; +#else + typedef long long i64; + typedef unsigned long long u64; +#endif + + typedef struct drdtime@{ + unsigned long dvalue; + unsigned long dtimeid; + @} __drdtime_t; + + typedef struct rdtime@{ + unsigned int value; + unsigned int timeid; + @} __rdtime_t; +@end smallexample + +The intrinsics provided are listed below; each is named after the +machine instruction. + +@smallexample + __drdtime_t __rdtime_d (void) + __rdtime_t __rdtimel_w (void) + __rdtime_t __rdtimeh_w (void) + u32 __movfcsr2gr (imm0_31) + void __movgr2fcsr (imm0_32, u32) + void __cacop_d (imm0_31, u64, imm_n2048_2047) + u32 __cpucfg (u32) + void __asrtle_d (i64, i64) + void __asrtgt_d (i64, i64) + i64 __lddir_d (i64, imm0_31) + void __ldpte_d (i64, imm0_31) + + i32 __crc_w_b_w (i8, i32) + i32 __crc_w_h_w (i16, i32) + i32 __crc_w_w_w (i32, i32) + i32 __crc_w_d_w (i64, i32) + i32 __crcc_w_b_w (i8, i32) + i32 __crcc_w_h_w (i16, i32) + i32 __crcc_w_w_w (i32, i32) + i32 __crcc_w_d_w (i64, i32) + + u32 __csrrd_w (imm0_16383) + u32 __csrwr_w (u32, imm0_16383) + u32 __csrxchg_w (u32, u32, imm0_16383) + u64 __csrrd_d (imm0_16383) + u64 __csrwr_d (u64, imm0_16383) + u64 __csrxchg_d (u64, u64, imm0_16383) + + u8 __iocsrrd_b (u32) + u16 __iocsrrd_h (u32) + u32 __iocsrrd_w (u32) + u64 __iocsrrd_d (u32) + void __iocsrwr_b (u8, u32) + void __iocsrwr_h (u16, u32) + void __iocsrwr_w (u32, u32) + void __iocsrwr_d (u64, u32) + + void __dbar (imm0_32767) + void __ibar (imm0_32767) + + void __syscall (imm0_32767) + void __break (imm0_32767) +@end smallexample + @node MIPS DSP Built-in Functions @subsection MIPS DSP Built-in Functions -- 2.31.1