De acuerdo con https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html , hay:
type __atomic_load_n (type *ptr, int memorder)
y (el "genérico"):
void __atomic_load (type *ptr, type *ret, int memorder)
entonces
void __atomic_store_n (type *ptr, type val, int memorder)
y ("el genérico")
void __atomic_store (type *ptr, type *val, int memorder)
etc.
¿Qué es genérico en las últimas versiones (eso no es genérico en las anteriores) y por qué son necesarias?