for op in add and cas nand or sub swap xor
for sz in 8 16 32 64
SRCS.atomic+= atomic_${op}_${sz}.S
endfor
endfor
SRCS.atomic+= atomic_dec_32.S atomic_dec_64.S
SRCS.atomic+= atomic_inc_32.S atomic_inc_64.S
SRCS.atomic+= membar_ops.S
#and cas nand or sub swap xor
for op in swp cas clr set eor add
for sz in 1 2 4 8
for ar in _relax _acq _rel _acq_rel _sync
__aarch64_${op}${sz}${ar}.S: __aarch64_lse.S
${_MKTARGET_CREATE}
printf '#define OP ${op}\n#define OP_${op}\n#define SZ ${sz}\n#define AR ${ar}\n#define AR${ar}\n#include "__aarch64_lse.S"\n' > ${.TARGET}
SRCS.gen+= __aarch64_${op}${sz}${ar}.S
endfor
endfor
endfor
for op in casp
for ar in _relax _acq _rel _acq_rel _sync
__aarch64_${op}${ar}.S: __aarch64_lse.S
${_MKTARGET_CREATE}
printf '#define OP ${op}\n#define OP_${op}\n#define AR ${ar}\n#define AR${ar}\n#include "__aarch64_lse.S"\n' > ${.TARGET}
SRCS.gen+= __aarch64_${op}${ar}.S
endfor
endfor
#.for op in add and nand or sub xor
#SRCS.atomic+= sync_fetch_and_${op}_8.S
#.endfor
#.for sz in 1 2 4 8
#SRCS.atomic+= sync_bool_compare_and_swap_${sz}.S
#.endfor