# name	meta	args...
#
# Where meta contains a string of variants to generate.
# Upper-case implies _{acquire,release,relaxed} variants.
# Valid meta values are:
# * B/b	- bool: returns bool
# * v	- void: returns void
# * I/i	- int: returns base type
# * R	- return: returns base type (has _return variants)
# * F/f	- fetch: returns base type (has fetch_ variants)
# * l	- load: returns base type (has _acquire order variant)
# * s	- store: returns void (has _release order variant)
#
# Where args contains list of type[:name], where type is:
# * cv	- const pointer to atomic base type (atomic_t/atomic64_t/atomic_long_t)
# * v	- pointer to atomic base type (atomic_t/atomic64_t/atomic_long_t)
# * i	- base type (int/s64/long)
# * p	- pointer to base type (int/s64/long)
#
read			l	cv
set			s	v	i
add			vRF	i	v
sub			vRF	i	v
inc			vRF	v
dec			vRF	v
and			vF	i	v
andnot			vF	i	v
or			vF	i	v
xor			vF	i	v
xchg			I	v	i
cmpxchg			I	v	i:old	i:new
try_cmpxchg		B	v	p:old	i:new
sub_and_test		b	i	v
dec_and_test		b	v
inc_and_test		b	v
add_negative		b	i	v
add_unless		fb	v	i:a	i:u
inc_not_zero		b	v
inc_unless_negative	b	v
dec_unless_positive	b	v
dec_if_positive		i	v
