#include "atomic_op_asm.h"
ENTRY_NP(_atomic_dec_32)
li a1, 1
ENTRY_NP(_atomic_sub_32)
INT_SUB t0, zero, a1
amoadd.w.aq a0, t0, 0(a0)
ret
END(_atomic_sub_32)
END(_atomic_dec_32)
ATOMIC_OP_ALIAS(atomic_sub_32,_atomic_sub_32)
ATOMIC_OP_ALIAS(atomic_sub_int,_atomic_sub_32)
STRONG_ALIAS(_atomic_sub_int,_atomic_sub_32)
#ifndef _LP64
ATOMIC_OP_ALIAS(atomic_sub_long,_atomic_sub_32)
STRONG_ALIAS(_atomic_sub_long,_atomic_sub_32)
ATOMIC_OP_ALIAS(atomic_sub_ptr,_atomic_sub_32)
STRONG_ALIAS(_atomic_sub_ptr,_atomic_sub_32)
#endif
CRT_ALIAS(__sync_fetch_and_sub_4,_atomic_sub_32)
CRT_ALIAS(__atomic_fetch_sub_4,_atomic_sub_32)
ATOMIC_OP_ALIAS(atomic_dec_32,_atomic_dec_32)
ATOMIC_OP_ALIAS(atomic_dec_uint,_atomic_dec_32)
STRONG_ALIAS(_atomic_dec_uint,_atomic_dec_32)
#ifndef _LP64
ATOMIC_OP_ALIAS(atomic_dec_ulong,_atomic_dec_32)
STRONG_ALIAS(_atomic_dec_ulong,_atomic_dec_32)
ATOMIC_OP_ALIAS(atomic_dec_ptr,_atomic_dec_32)
STRONG_ALIAS(_atomic_dec_ptr,_atomic_dec_32)
#endif
ENTRY_NP(_atomic_dec_32_nv)
li a1, 1
ENTRY_NP(_atomic_sub_32_nv)
INT_SUB t1, zero, a1
amoadd.w.aq t0, t1, 0(a0)
INT_ADD a0, t0, t1
ret
END(_atomic_sub_32_nv)
END(_atomic_dec_32_nv)
ATOMIC_OP_ALIAS(atomic_sub_32_nv,_atomic_sub_32_nv)
ATOMIC_OP_ALIAS(atomic_sub_int_nv,_atomic_sub_32_nv)
STRONG_ALIAS(_atomic_sub_int_nv,_atomic_sub_32_nv)
#ifndef _LP64
ATOMIC_OP_ALIAS(atomic_sub_long_nv,_atomic_sub_32_nv)
STRONG_ALIAS(_atomic_sub_long_nv,_atomic_sub_32_nv)
ATOMIC_OP_ALIAS(atomic_sub_ptr_nv,_atomic_sub_32_nv)
STRONG_ALIAS(_atomic_sub_ptr_nv,_atomic_sub_32_nv)
#endif
CRT_ALIAS(__sync_sub_and_fetch_4,_atomic_sub_32_nv)
CRT_ALIAS(__atomic_sub_fetch_4,_atomic_sub_32_nv)
ATOMIC_OP_ALIAS(atomic_dec_32_nv,_atomic_dec_32_nv)
ATOMIC_OP_ALIAS(atomic_dec_uint_nv,_atomic_dec_32_nv)
STRONG_ALIAS(_atomic_dec_uint_nv,_atomic_dec_32_nv)
#ifndef _LP64
ATOMIC_OP_ALIAS(atomic_dec_ulong_nv,_atomic_dec_32_nv)
STRONG_ALIAS(_atomic_dec_ulong_nv,_atomic_dec_32_nv)
ATOMIC_OP_ALIAS(atomic_dec_ptr_nv,_atomic_dec_32_nv)
STRONG_ALIAS(_atomic_dec_ptr_nv,_atomic_dec_32_nv)
#endif