31 :
"+r"(tmp)::
"memory");
70#ifdef __TOOLCHAIN_LLVM__
71 __builtin_ssr_enable();
73 asm volatile(
"csrsi 0x7C0, 1\n");
81#ifdef __TOOLCHAIN_LLVM__
82 __builtin_ssr_disable();
84 asm volatile(
"csrci 0x7C0, 1\n");
96 asm volatile(
"scfgri %[value], %[dm] | %[reg]<<5\n"
97 : [ value ]
"=r"(value)
98 : [ dm ]
"i"(dm), [ reg ]
"i"(reg));
109 asm volatile(
"scfgwi %[value], %[dm] | %[reg]<<5\n" ::[value]
"r"(value),
110 [ dm ]
"i"(dm), [ reg ]
"i"(reg));
136 size_t s0,
size_t s1) {
159 size_t b2,
size_t s0,
size_t s1,
size_t s2) {
188 size_t b2,
size_t b3,
size_t s0,
size_t s1,
189 size_t s2,
size_t s3) {
225 volatile void *ptr) {
236 volatile void *ptr) {
snrt_ssr_dm
The different SSRs.
Definition ssr.h:37
@ SNRT_SSR_DM0
Definition ssr.h:38
@ SNRT_SSR_DM_ALL
Definition ssr.h:41
@ SNRT_SSR_DM1
Definition ssr.h:39
@ SNRT_SSR_DM2
Definition ssr.h:40
void snrt_ssr_loop_3d(enum snrt_ssr_dm dm, size_t b0, size_t b1, size_t b2, size_t s0, size_t s1, size_t s2)
Configure an SSR data mover for a 3D loop nest.
Definition ssr.h:158
void snrt_ssr_loop_4d(enum snrt_ssr_dm dm, size_t b0, size_t b1, size_t b2, size_t b3, size_t s0, size_t s1, size_t s2, size_t s3)
Configure an SSR data mover for a 4D loop nest.
Definition ssr.h:187
void snrt_ssr_repeat(enum snrt_ssr_dm dm, size_t count)
Configure the repetition count for a stream.
Definition ssr.h:214
uint32_t read_ssr_cfg(uint32_t reg, uint32_t dm)
Read the value of an SSR configuration register.
Definition ssr.h:94
void snrt_ssr_write(enum snrt_ssr_dm dm, enum snrt_ssr_dim dim, volatile void *ptr)
Start a streaming write.
Definition ssr.h:235
void snrt_ssr_enable()
Enable all SSRs.
Definition ssr.h:69
void snrt_ssr_loop_2d(enum snrt_ssr_dm dm, size_t b0, size_t b1, size_t s0, size_t s1)
Configure an SSR data mover for a 2D loop nest.
Definition ssr.h:135
void snrt_ssr_read(enum snrt_ssr_dm dm, enum snrt_ssr_dim dim, volatile void *ptr)
Start a streaming read.
Definition ssr.h:224
void write_ssr_cfg(uint32_t reg, uint32_t dm, uint32_t value)
Write a value to an SSR configuration register.
Definition ssr.h:108
void snrt_ssr_loop_1d(enum snrt_ssr_dm dm, size_t b0, size_t s0)
Configure an SSR data mover for a 1D loop nest.
Definition ssr.h:119
@ REG_REPEAT
Definition ssr.h:59
@ REG_BOUNDS
Definition ssr.h:60
@ REG_WPTR
Definition ssr.h:63
@ REG_RPTR
Definition ssr.h:62
@ REG_STATUS
Definition ssr.h:58
@ REG_STRIDES
Definition ssr.h:61
void snrt_ssr_disable()
Disable all SSRs.
Definition ssr.h:80
void snrt_fpu_fence()
Synchronize the integer and float pipelines.
Definition ssr.h:26
snrt_ssr_dim
The different dimensions.
Definition ssr.h:47
@ SNRT_SSR_2D
Definition ssr.h:49
@ SNRT_SSR_1D
Definition ssr.h:48
@ SNRT_SSR_3D
Definition ssr.h:50
@ SNRT_SSR_4D
Definition ssr.h:51