L'equivalente del compilatore Sun di __sync_fetch_and_add di GCC? aka Oracle Studio 12.2
-
28-10-2019 - |
Domanda
Il compilatore Oracle (Sun) Studio 12.2 C/C ++/FORTRAN per Linux 64-bit ha un equivalente alla funzione __Sync_fetch_and_add fornita in GCC? Non riesco a trovare il codice wrapper per Intel Atomics nella documentazione Sun né i file .h nella mia installazione Sun Studio. Ciò significa che sono solo cattivo nella ricerca, o potrebbe non esistere, non sono sicuro di quale.
Mi è necessario accedere a qualsiasi funzione hardware atomica sia disponibile sui Intel I7 utilizzando i compilatori Sun C/C ++, come test-and-set, confronto e swap, prese e foo.
Ciò è complicato dal fatto che non sono un programmatore di assemblaggi e che questo è un compilatore solare, non un compilatore GCC, quindi copiare il codice ASM dall'implementazione open source di GCC non funzionerà necessariamente, e infine è il compilatore a 64 bit e Hardware, quindi gli esempi a 32 bit che si trovano facilmente non funzionano necessariamente sul sistema a 64 bit.
Contesto: lo scopo è l'implementazione di alcuni programmi simultanei per il multicore che richiedono queste particolari atomiche hardware.
Grazie per aver letto.
Nessuna soluzione corretta
Altri suggerimenti
Dalla documentazione Oracle, dovrai includere Atomic.h e utilizzare una delle seguenti:
uint_t atomic_add_int_nv(volatile uint_t *target, int delta);
uint64_t atomic_cas_64(volatile uint64_t *target, uint64_t cmp, uint64_t newval);
void atomic_or_32(volatile uint32_t *target, uint32_t bits);
... eccetera.
http://docs.oracle.com/cd/e19253-01/816-5168/6mbb3hr06/index.html