Snitch Runtime
Loading...
Searching...
No Matches
sync_decls.h
1// Copyright 2023 ETH Zurich and University of Bologna.
2// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3// SPDX-License-Identifier: Apache-2.0
4
5#pragma once
6
7#include <stdint.h>
8
9typedef struct {
10 uint32_t volatile cnt;
11 uint32_t volatile iteration;
13
14typedef struct {
15 volatile uint32_t *barrier_ptr;
16 uint32_t size;
17 uint32_t is_participant;
19
21
22extern volatile uint32_t _snrt_mutex;
23extern volatile snrt_barrier_t _snrt_barrier;
24extern volatile uint32_t _reduction_result;
25
26inline volatile uint32_t *snrt_mutex();
27
28inline void snrt_mutex_acquire(volatile uint32_t *pmtx);
29
30inline void snrt_mutex_ttas_acquire(volatile uint32_t *pmtx);
31
32inline void snrt_mutex_release(volatile uint32_t *pmtx);
33
34inline void snrt_cluster_hw_barrier();
35
36inline void snrt_global_barrier(snrt_comm_t comm = NULL);
37
38inline uint32_t snrt_global_all_to_all_reduction(uint32_t value);
39
40inline void snrt_wait_writeback(uint32_t val);
41
42inline void snrt_enable_multicast(uint32_t mask);
43
44inline void snrt_disable_multicast();
Definition sync_decls.h:9
Definition sync_decls.h:14