/*
 * Copyright (C) Huawei Technologies Co., Ltd. 2023-2024. All rights reserved.
 * SPDX-License-Identifier: MIT
 */

#ifndef VATOMIC_CONFIG_U16_SC_H
#define VATOMIC_CONFIG_U16_SC_H
/* !!!Warning: File generated by tmplr; DO NOT EDIT.!!! */

#include <vsync/atomic/await.h>

#if defined(VATOMIC_ENABLE_ATOMIC_SC)

    #define VATOMIC16_READ_RLX
static inline vuint16_t
vatomic16_read_rlx(const vatomic16_t *a)
{
    return vatomic16_read(a);
}
    #define VATOMIC16_READ_ACQ
static inline vuint16_t
vatomic16_read_acq(const vatomic16_t *a)
{
    return vatomic16_read(a);
}

    #define VATOMIC16_WRITE_RLX
static inline void
vatomic16_write_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_write(a, v);
}
    #define VATOMIC16_WRITE_REL
static inline void
vatomic16_write_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_write(a, v);
}

    #define VATOMIC16_XCHG_RLX
static inline vuint16_t
vatomic16_xchg_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_xchg(a, v);
}
    #define VATOMIC16_XCHG_ACQ
static inline vuint16_t
vatomic16_xchg_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_xchg(a, v);
}
    #define VATOMIC16_XCHG_REL
static inline vuint16_t
vatomic16_xchg_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_xchg(a, v);
}

    #define VATOMIC16_CMPXCHG_RLX
static inline vuint16_t
vatomic16_cmpxchg_rlx(vatomic16_t *a, vuint16_t e, vuint16_t v)
{
    return vatomic16_cmpxchg(a, e, v);
}
    #define VATOMIC16_CMPXCHG_ACQ
static inline vuint16_t
vatomic16_cmpxchg_acq(vatomic16_t *a, vuint16_t e, vuint16_t v)
{
    return vatomic16_cmpxchg(a, e, v);
}
    #define VATOMIC16_CMPXCHG_REL
static inline vuint16_t
vatomic16_cmpxchg_rel(vatomic16_t *a, vuint16_t e, vuint16_t v)
{
    return vatomic16_cmpxchg(a, e, v);
}

    #define VATOMIC16_GET_MAX_RLX
static inline vuint16_t
vatomic16_get_max_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_max(a, v);
}
    #define VATOMIC16_GET_AND_RLX
static inline vuint16_t
vatomic16_get_and_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_and(a, v);
}
    #define VATOMIC16_GET_OR_RLX
static inline vuint16_t
vatomic16_get_or_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_or(a, v);
}
    #define VATOMIC16_GET_XOR_RLX
static inline vuint16_t
vatomic16_get_xor_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_xor(a, v);
}
    #define VATOMIC16_GET_ADD_RLX
static inline vuint16_t
vatomic16_get_add_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_add(a, v);
}
    #define VATOMIC16_GET_SUB_RLX
static inline vuint16_t
vatomic16_get_sub_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_sub(a, v);
}
    #define VATOMIC16_MAX_GET_RLX
static inline vuint16_t
vatomic16_max_get_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_max_get(a, v);
}
    #define VATOMIC16_AND_GET_RLX
static inline vuint16_t
vatomic16_and_get_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_and_get(a, v);
}
    #define VATOMIC16_OR_GET_RLX
static inline vuint16_t
vatomic16_or_get_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_or_get(a, v);
}
    #define VATOMIC16_XOR_GET_RLX
static inline vuint16_t
vatomic16_xor_get_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_xor_get(a, v);
}
    #define VATOMIC16_ADD_GET_RLX
static inline vuint16_t
vatomic16_add_get_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_add_get(a, v);
}
    #define VATOMIC16_SUB_GET_RLX
static inline vuint16_t
vatomic16_sub_get_rlx(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_sub_get(a, v);
}
    #define VATOMIC16_GET_MAX_ACQ
static inline vuint16_t
vatomic16_get_max_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_max(a, v);
}
    #define VATOMIC16_GET_AND_ACQ
static inline vuint16_t
vatomic16_get_and_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_and(a, v);
}
    #define VATOMIC16_GET_OR_ACQ
static inline vuint16_t
vatomic16_get_or_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_or(a, v);
}
    #define VATOMIC16_GET_XOR_ACQ
static inline vuint16_t
vatomic16_get_xor_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_xor(a, v);
}
    #define VATOMIC16_GET_ADD_ACQ
static inline vuint16_t
vatomic16_get_add_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_add(a, v);
}
    #define VATOMIC16_GET_SUB_ACQ
static inline vuint16_t
vatomic16_get_sub_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_sub(a, v);
}
    #define VATOMIC16_MAX_GET_ACQ
static inline vuint16_t
vatomic16_max_get_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_max_get(a, v);
}
    #define VATOMIC16_AND_GET_ACQ
static inline vuint16_t
vatomic16_and_get_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_and_get(a, v);
}
    #define VATOMIC16_OR_GET_ACQ
static inline vuint16_t
vatomic16_or_get_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_or_get(a, v);
}
    #define VATOMIC16_XOR_GET_ACQ
static inline vuint16_t
vatomic16_xor_get_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_xor_get(a, v);
}
    #define VATOMIC16_ADD_GET_ACQ
static inline vuint16_t
vatomic16_add_get_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_add_get(a, v);
}
    #define VATOMIC16_SUB_GET_ACQ
static inline vuint16_t
vatomic16_sub_get_acq(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_sub_get(a, v);
}
    #define VATOMIC16_GET_MAX_REL
static inline vuint16_t
vatomic16_get_max_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_max(a, v);
}
    #define VATOMIC16_GET_AND_REL
static inline vuint16_t
vatomic16_get_and_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_and(a, v);
}
    #define VATOMIC16_GET_OR_REL
static inline vuint16_t
vatomic16_get_or_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_or(a, v);
}
    #define VATOMIC16_GET_XOR_REL
static inline vuint16_t
vatomic16_get_xor_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_xor(a, v);
}
    #define VATOMIC16_GET_ADD_REL
static inline vuint16_t
vatomic16_get_add_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_add(a, v);
}
    #define VATOMIC16_GET_SUB_REL
static inline vuint16_t
vatomic16_get_sub_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_get_sub(a, v);
}
    #define VATOMIC16_MAX_GET_REL
static inline vuint16_t
vatomic16_max_get_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_max_get(a, v);
}
    #define VATOMIC16_AND_GET_REL
static inline vuint16_t
vatomic16_and_get_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_and_get(a, v);
}
    #define VATOMIC16_OR_GET_REL
static inline vuint16_t
vatomic16_or_get_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_or_get(a, v);
}
    #define VATOMIC16_XOR_GET_REL
static inline vuint16_t
vatomic16_xor_get_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_xor_get(a, v);
}
    #define VATOMIC16_ADD_GET_REL
static inline vuint16_t
vatomic16_add_get_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_add_get(a, v);
}
    #define VATOMIC16_SUB_GET_REL
static inline vuint16_t
vatomic16_sub_get_rel(vatomic16_t *a, vuint16_t v)
{
    return vatomic16_sub_get(a, v);
}

    #define VATOMIC16_GET_INC_RLX
static inline vuint16_t
vatomic16_get_inc_rlx(vatomic16_t *a)
{
    return vatomic16_get_inc(a);
}
    #define VATOMIC16_INC_GET_RLX
static inline vuint16_t
vatomic16_inc_get_rlx(vatomic16_t *a)
{
    return vatomic16_inc_get(a);
}
    #define VATOMIC16_GET_DEC_RLX
static inline vuint16_t
vatomic16_get_dec_rlx(vatomic16_t *a)
{
    return vatomic16_get_dec(a);
}
    #define VATOMIC16_DEC_GET_RLX
static inline vuint16_t
vatomic16_dec_get_rlx(vatomic16_t *a)
{
    return vatomic16_dec_get(a);
}
    #define VATOMIC16_GET_INC_ACQ
static inline vuint16_t
vatomic16_get_inc_acq(vatomic16_t *a)
{
    return vatomic16_get_inc(a);
}
    #define VATOMIC16_INC_GET_ACQ
static inline vuint16_t
vatomic16_inc_get_acq(vatomic16_t *a)
{
    return vatomic16_inc_get(a);
}
    #define VATOMIC16_GET_DEC_ACQ
static inline vuint16_t
vatomic16_get_dec_acq(vatomic16_t *a)
{
    return vatomic16_get_dec(a);
}
    #define VATOMIC16_DEC_GET_ACQ
static inline vuint16_t
vatomic16_dec_get_acq(vatomic16_t *a)
{
    return vatomic16_dec_get(a);
}
    #define VATOMIC16_GET_INC_REL
static inline vuint16_t
vatomic16_get_inc_rel(vatomic16_t *a)
{
    return vatomic16_get_inc(a);
}
    #define VATOMIC16_INC_GET_REL
static inline vuint16_t
vatomic16_inc_get_rel(vatomic16_t *a)
{
    return vatomic16_inc_get(a);
}
    #define VATOMIC16_GET_DEC_REL
static inline vuint16_t
vatomic16_get_dec_rel(vatomic16_t *a)
{
    return vatomic16_get_dec(a);
}
    #define VATOMIC16_DEC_GET_REL
static inline vuint16_t
vatomic16_dec_get_rel(vatomic16_t *a)
{
    return vatomic16_dec_get(a);
}

    #define VATOMIC16_MAX_RLX
static inline void
vatomic16_max_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_max(a, v);
}
    #define VATOMIC16_AND_RLX
static inline void
vatomic16_and_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_and(a, v);
}
    #define VATOMIC16_OR_RLX
static inline void
vatomic16_or_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_or(a, v);
}
    #define VATOMIC16_XOR_RLX
static inline void
vatomic16_xor_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_xor(a, v);
}
    #define VATOMIC16_ADD_RLX
static inline void
vatomic16_add_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_add(a, v);
}
    #define VATOMIC16_SUB_RLX
static inline void
vatomic16_sub_rlx(vatomic16_t *a, vuint16_t v)
{
    vatomic16_sub(a, v);
}
    #define VATOMIC16_MAX_REL
static inline void
vatomic16_max_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_max(a, v);
}
    #define VATOMIC16_AND_REL
static inline void
vatomic16_and_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_and(a, v);
}
    #define VATOMIC16_OR_REL
static inline void
vatomic16_or_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_or(a, v);
}
    #define VATOMIC16_XOR_REL
static inline void
vatomic16_xor_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_xor(a, v);
}
    #define VATOMIC16_ADD_REL
static inline void
vatomic16_add_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_add(a, v);
}
    #define VATOMIC16_SUB_REL
static inline void
vatomic16_sub_rel(vatomic16_t *a, vuint16_t v)
{
    vatomic16_sub(a, v);
}

    #define VATOMIC16_INC_RLX
static inline void
vatomic16_inc_rlx(vatomic16_t *a)
{
    vatomic16_inc(a);
}
    #define VATOMIC16_DEC_RLX
static inline void
vatomic16_dec_rlx(vatomic16_t *a)
{
    vatomic16_dec(a);
}
    #define VATOMIC16_INC_REL
static inline void
vatomic16_inc_rel(vatomic16_t *a)
{
    vatomic16_inc(a);
}
    #define VATOMIC16_DEC_REL
static inline void
vatomic16_dec_rel(vatomic16_t *a)
{
    vatomic16_dec(a);
}

#endif
#endif
