/* ---------------------------------------------- */
/* This file is extracted from `gcc` v15.1.0 `libatomic.a`. */
/* This file is generated by https://github.com/kbkpbot/gen_atomic.git */
/* This file is generated at 2025-06-24 21:37. */
/* This file implements for i386/x86_64/arm/aarch64/riscv:
 * __atomic_load_[1,2,4,8]
 * __atomic_store_[1,2,4,8]
 * __atomic_compare_exchange_[1,2,4,8]
 * __atomic_test_and_set_[1,2,4,8]
 * atomic_thread_fence
 * atomic_signal_fence
 * atomic_flag_test_and_set
 * atomic_flag_test_and_set_explicit
 * atomic_flag_clear
 * atomic_flag_clear_explicit
 */
/* SPDX-License-Identifier: GPL-3.0-or-later WITH GCC-exception-3.1
 * Copyright (C) 2012-2025 Free Software Foundation, Inc.
 */
#ifdef __leading_underscore
# define _(s) _##s
#else
# define _(s) s
#endif


/* ---------------------------------------------- */
#if defined __i386__

#define endbr32

        .text

        .global _(__atomic_load_1)
        .type   _(__atomic_load_1), %function
_(__atomic_load_1):
        endbr32
        mov    0x4(%esp),%eax
        movzbl (%eax),%eax
        ret
	.size   _(__atomic_load_1), .-_(__atomic_load_1)

        .global _(__atomic_load_2)
        .type   _(__atomic_load_2), %function
_(__atomic_load_2):
        endbr32
        mov    0x4(%esp),%eax
        movzwl (%eax),%eax
        ret
	.size   _(__atomic_load_2), .-_(__atomic_load_2)

        .global _(__atomic_load_4)
        .type   _(__atomic_load_4), %function
_(__atomic_load_4):
        endbr32
        mov    0x4(%esp),%eax
        mov    (%eax),%eax
        ret
	.size   _(__atomic_load_4), .-_(__atomic_load_4)

        .global _(__atomic_load_8)
        .type   _(__atomic_load_8), %function
_(__atomic_load_8):
        endbr32
        sub    $0xc,%esp
        mov    0x10(%esp),%eax
        fildll (%eax)
        fistpll (%esp)
        mov    (%esp),%eax
        mov    0x4(%esp),%edx
        add    $0xc,%esp
        ret
	.size   _(__atomic_load_8), .-_(__atomic_load_8)

        .global _(__atomic_store_1)
        .type   _(__atomic_store_1), %function
_(__atomic_store_1):
        endbr32
        mov    0x4(%esp),%edx
        mov    0x8(%esp),%eax
        xchg   %al,(%edx)
        ret
	.size   _(__atomic_store_1), .-_(__atomic_store_1)

        .global _(__atomic_store_2)
        .type   _(__atomic_store_2), %function
_(__atomic_store_2):
        endbr32
        mov    0x4(%esp),%edx
        mov    0x8(%esp),%eax
        xchg   %ax,(%edx)
        ret
	.size   _(__atomic_store_2), .-_(__atomic_store_2)

        .global _(__atomic_store_4)
        .type   _(__atomic_store_4), %function
_(__atomic_store_4):
        endbr32
        mov    0x4(%esp),%edx
        mov    0x8(%esp),%eax
        xchg   %eax,(%edx)
        ret
	.size   _(__atomic_store_4), .-_(__atomic_store_4)

        .global _(__atomic_store_8)
        .type   _(__atomic_store_8), %function
_(__atomic_store_8):
        endbr32
        push   %ebx
        sub    $0x8,%esp
        mov    0x18(%esp),%ebx
        mov    0x14(%esp),%ecx
        mov    %ecx,(%esp)
        mov    %ebx,0x4(%esp)
        fildll (%esp)
        mov    0x10(%esp),%eax
        fistpll (%eax)
        lock orl $0x0,(%esp)
        add    $0x8,%esp
        pop    %ebx
        ret
	.size   _(__atomic_store_8), .-_(__atomic_store_8)

        .global _(__atomic_compare_exchange_1)
        .type   _(__atomic_compare_exchange_1), %function
_(__atomic_compare_exchange_1):
        endbr32
        push   %ebx
        mov    0xc(%esp),%ecx
        mov    0x8(%esp),%edx
        movzbl 0x10(%esp),%ebx
        movzbl (%ecx),%eax
        lock cmpxchg %bl,(%edx)
        sete   %dl
        je      .L___atomic_compare_exchange_1_020
        mov    %al,(%ecx)
.L___atomic_compare_exchange_1_020:
        mov    %edx,%eax
        pop    %ebx
        ret
	.size   _(__atomic_compare_exchange_1), .-_(__atomic_compare_exchange_1)

        .global _(__atomic_compare_exchange_2)
        .type   _(__atomic_compare_exchange_2), %function
_(__atomic_compare_exchange_2):
        endbr32
        push   %ebx
        mov    0xc(%esp),%ecx
        mov    0x8(%esp),%edx
        movzwl 0x10(%esp),%ebx
        movzwl (%ecx),%eax
        lock cmpxchg %bx,(%edx)
        sete   %dl
        je      .L___atomic_compare_exchange_2_022
        mov    %ax,(%ecx)
.L___atomic_compare_exchange_2_022:
        mov    %edx,%eax
        pop    %ebx
        ret
	.size   _(__atomic_compare_exchange_2), .-_(__atomic_compare_exchange_2)

        .global _(__atomic_compare_exchange_4)
        .type   _(__atomic_compare_exchange_4), %function
_(__atomic_compare_exchange_4):
        endbr32
        push   %ebx
        mov    0xc(%esp),%ecx
        mov    0x8(%esp),%edx
        mov    0x10(%esp),%ebx
        mov    (%ecx),%eax
        lock cmpxchg %ebx,(%edx)
        sete   %dl
        je      .L___atomic_compare_exchange_4_01e
        mov    %eax,(%ecx)
.L___atomic_compare_exchange_4_01e:
        mov    %edx,%eax
        pop    %ebx
        ret
	.size   _(__atomic_compare_exchange_4), .-_(__atomic_compare_exchange_4)

        .global _(__atomic_compare_exchange_8)
        .type   _(__atomic_compare_exchange_8), %function
_(__atomic_compare_exchange_8):
        endbr32
        push   %edi
        push   %esi
        push   %ebx
        mov    0x14(%esp),%esi
        mov    0x1c(%esp),%ecx
        mov    0x10(%esp),%edi
        mov    (%esi),%eax
        mov    0x4(%esi),%edx
        mov    0x18(%esp),%ebx
        lock cmpxchg8b (%edi)
        sete   %cl
        je      .L___atomic_compare_exchange_8_02a
        mov    %eax,(%esi)
        mov    %edx,0x4(%esi)
.L___atomic_compare_exchange_8_02a:
        pop    %ebx
        mov    %ecx,%eax
        pop    %esi
        pop    %edi
        ret
	.size   _(__atomic_compare_exchange_8), .-_(__atomic_compare_exchange_8)

        .global _(__atomic_test_and_set_1)
        .type   _(__atomic_test_and_set_1), %function
_(__atomic_test_and_set_1):
        endbr32
        mov    0x4(%esp),%edx
        mov    $0x1,%eax
        xchg   %al,(%edx)
        ret
	.size   _(__atomic_test_and_set_1), .-_(__atomic_test_and_set_1)

        .global _(__atomic_test_and_set_2)
        .type   _(__atomic_test_and_set_2), %function
_(__atomic_test_and_set_2):
        endbr32
        mov    0x4(%esp),%edx
        mov    $0x1,%eax
        xchg   %al,(%edx)
        ret
	.size   _(__atomic_test_and_set_2), .-_(__atomic_test_and_set_2)

        .global _(__atomic_test_and_set_4)
        .type   _(__atomic_test_and_set_4), %function
_(__atomic_test_and_set_4):
        endbr32
        mov    0x4(%esp),%edx
        mov    $0x1,%eax
        xchg   %al,(%edx)
        ret
	.size   _(__atomic_test_and_set_4), .-_(__atomic_test_and_set_4)

        .global _(__atomic_test_and_set_8)
        .type   _(__atomic_test_and_set_8), %function
_(__atomic_test_and_set_8):
        endbr32
        mov    0x4(%esp),%edx
        mov    $0x1,%eax
        xchg   %al,(%edx)
        ret
	.size   _(__atomic_test_and_set_8), .-_(__atomic_test_and_set_8)

        .global _(atomic_thread_fence)
        .type   _(atomic_thread_fence), %function
_(atomic_thread_fence):
        endbr32
        lock orl $0x0,(%esp)
        ret
	.size   _(atomic_thread_fence), .-_(atomic_thread_fence)

        .global _(atomic_signal_fence)
        .type   _(atomic_signal_fence), %function
_(atomic_signal_fence):
        endbr32
        ret
	.size   _(atomic_signal_fence), .-_(atomic_signal_fence)

        .global _(atomic_flag_test_and_set)
        .type   _(atomic_flag_test_and_set), %function
_(atomic_flag_test_and_set):
        endbr32
        mov    0x4(%esp),%edx
        mov    $0x1,%eax
        xchg   %al,(%edx)
        ret
	.size   _(atomic_flag_test_and_set), .-_(atomic_flag_test_and_set)

        .global _(atomic_flag_test_and_set_explicit)
        .type   _(atomic_flag_test_and_set_explicit), %function
_(atomic_flag_test_and_set_explicit):
        endbr32
        mov    0x4(%esp),%edx
        mov    $0x1,%eax
        xchg   %al,(%edx)
        ret
	.size   _(atomic_flag_test_and_set_explicit), .-_(atomic_flag_test_and_set_explicit)

        .global _(atomic_flag_clear)
        .type   _(atomic_flag_clear), %function
_(atomic_flag_clear):
        endbr32
        mov    0x4(%esp),%edx
        xor    %eax,%eax
        xchg   %al,(%edx)
        ret
	.size   _(atomic_flag_clear), .-_(atomic_flag_clear)

        .global _(atomic_flag_clear_explicit)
        .type   _(atomic_flag_clear_explicit), %function
_(atomic_flag_clear_explicit):
        endbr32
        mov    0x4(%esp),%edx
        xor    %eax,%eax
        xchg   %al,(%edx)
        ret
	.size   _(atomic_flag_clear_explicit), .-_(atomic_flag_clear_explicit)

#endif //__i386__

/* ---------------------------------------------- */
#if defined __x86_64__ && !defined _WIN32

#define endbr64

        .text

        .global _(__atomic_load_1)
        .type   _(__atomic_load_1), %function
_(__atomic_load_1):
        endbr64
        movzbl (%rdi),%eax
        ret
	.size   _(__atomic_load_1), .-_(__atomic_load_1)

        .global _(__atomic_load_2)
        .type   _(__atomic_load_2), %function
_(__atomic_load_2):
        endbr64
        movzwl (%rdi),%eax
        ret
	.size   _(__atomic_load_2), .-_(__atomic_load_2)

        .global _(__atomic_load_4)
        .type   _(__atomic_load_4), %function
_(__atomic_load_4):
        endbr64
        mov    (%rdi),%eax
        ret
	.size   _(__atomic_load_4), .-_(__atomic_load_4)

        .global _(__atomic_load_8)
        .type   _(__atomic_load_8), %function
_(__atomic_load_8):
        endbr64
        mov    (%rdi),%rax
        ret
	.size   _(__atomic_load_8), .-_(__atomic_load_8)

        .global _(__atomic_store_1)
        .type   _(__atomic_store_1), %function
_(__atomic_store_1):
        endbr64
        xchg   %sil,(%rdi)
        ret
	.size   _(__atomic_store_1), .-_(__atomic_store_1)

        .global _(__atomic_store_2)
        .type   _(__atomic_store_2), %function
_(__atomic_store_2):
        endbr64
        xchg   %si,(%rdi)
        ret
	.size   _(__atomic_store_2), .-_(__atomic_store_2)

        .global _(__atomic_store_4)
        .type   _(__atomic_store_4), %function
_(__atomic_store_4):
        endbr64
        xchg   %esi,(%rdi)
        ret
	.size   _(__atomic_store_4), .-_(__atomic_store_4)

        .global _(__atomic_store_8)
        .type   _(__atomic_store_8), %function
_(__atomic_store_8):
        endbr64
        xchg   %rsi,(%rdi)
        ret
	.size   _(__atomic_store_8), .-_(__atomic_store_8)

        .global _(__atomic_compare_exchange_1)
        .type   _(__atomic_compare_exchange_1), %function
_(__atomic_compare_exchange_1):
        endbr64
        movzbl (%rsi),%eax
        lock cmpxchg %dl,(%rdi)
        sete   %dl
        je      .L___atomic_compare_exchange_1_012
        mov    %al,(%rsi)
.L___atomic_compare_exchange_1_012:
        mov    %edx,%eax
        ret
	.size   _(__atomic_compare_exchange_1), .-_(__atomic_compare_exchange_1)

        .global _(__atomic_compare_exchange_2)
        .type   _(__atomic_compare_exchange_2), %function
_(__atomic_compare_exchange_2):
        endbr64
        movzwl (%rsi),%eax
        lock cmpxchg %dx,(%rdi)
        sete   %dl
        je      .L___atomic_compare_exchange_2_014
        mov    %ax,(%rsi)
.L___atomic_compare_exchange_2_014:
        mov    %edx,%eax
        ret
	.size   _(__atomic_compare_exchange_2), .-_(__atomic_compare_exchange_2)

        .global _(__atomic_compare_exchange_4)
        .type   _(__atomic_compare_exchange_4), %function
_(__atomic_compare_exchange_4):
        endbr64
        mov    (%rsi),%eax
        lock cmpxchg %edx,(%rdi)
        sete   %dl
        je      .L___atomic_compare_exchange_4_011
        mov    %eax,(%rsi)
.L___atomic_compare_exchange_4_011:
        mov    %edx,%eax
        ret
	.size   _(__atomic_compare_exchange_4), .-_(__atomic_compare_exchange_4)

        .global _(__atomic_compare_exchange_8)
        .type   _(__atomic_compare_exchange_8), %function
_(__atomic_compare_exchange_8):
        endbr64
        mov    (%rsi),%rax
        lock cmpxchg %rdx,(%rdi)
        sete   %dl
        je      .L___atomic_compare_exchange_8_014
        mov    %rax,(%rsi)
.L___atomic_compare_exchange_8_014:
        mov    %edx,%eax
        ret
	.size   _(__atomic_compare_exchange_8), .-_(__atomic_compare_exchange_8)

        .global _(__atomic_test_and_set_1)
        .type   _(__atomic_test_and_set_1), %function
_(__atomic_test_and_set_1):
        endbr64
        mov    $0x1,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(__atomic_test_and_set_1), .-_(__atomic_test_and_set_1)

        .global _(__atomic_test_and_set_2)
        .type   _(__atomic_test_and_set_2), %function
_(__atomic_test_and_set_2):
        endbr64
        mov    $0x1,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(__atomic_test_and_set_2), .-_(__atomic_test_and_set_2)

        .global _(__atomic_test_and_set_4)
        .type   _(__atomic_test_and_set_4), %function
_(__atomic_test_and_set_4):
        endbr64
        mov    $0x1,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(__atomic_test_and_set_4), .-_(__atomic_test_and_set_4)

        .global _(__atomic_test_and_set_8)
        .type   _(__atomic_test_and_set_8), %function
_(__atomic_test_and_set_8):
        endbr64
        mov    $0x1,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(__atomic_test_and_set_8), .-_(__atomic_test_and_set_8)

        .global _(atomic_thread_fence)
        .type   _(atomic_thread_fence), %function
_(atomic_thread_fence):
        endbr64
        lock orq $0x0,(%rsp)
        ret
	.size   _(atomic_thread_fence), .-_(atomic_thread_fence)

        .global _(atomic_signal_fence)
        .type   _(atomic_signal_fence), %function
_(atomic_signal_fence):
        endbr64
        ret
	.size   _(atomic_signal_fence), .-_(atomic_signal_fence)

        .global _(atomic_flag_test_and_set)
        .type   _(atomic_flag_test_and_set), %function
_(atomic_flag_test_and_set):
        endbr64
        mov    $0x1,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(atomic_flag_test_and_set), .-_(atomic_flag_test_and_set)

        .global _(atomic_flag_test_and_set_explicit)
        .type   _(atomic_flag_test_and_set_explicit), %function
_(atomic_flag_test_and_set_explicit):
        endbr64
        mov    $0x1,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(atomic_flag_test_and_set_explicit), .-_(atomic_flag_test_and_set_explicit)

        .global _(atomic_flag_clear)
        .type   _(atomic_flag_clear), %function
_(atomic_flag_clear):
        endbr64
        xor    %eax,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(atomic_flag_clear), .-_(atomic_flag_clear)

        .global _(atomic_flag_clear_explicit)
        .type   _(atomic_flag_clear_explicit), %function
_(atomic_flag_clear_explicit):
        endbr64
        xor    %eax,%eax
        xchg   %al,(%rdi)
        ret
	.size   _(atomic_flag_clear_explicit), .-_(atomic_flag_clear_explicit)

#endif //__x86_64__ && !_WIN32

/* ---------------------------------------------- */
#if defined __x86_64__ && defined _WIN32
        .text

        .global _(__atomic_load_1)
        .type   _(__atomic_load_1), %function
_(__atomic_load_1):
        movzbl (%rcx),%eax
        ret
	.size   _(__atomic_load_1), .-_(__atomic_load_1)

        .global _(__atomic_load_2)
        .type   _(__atomic_load_2), %function
_(__atomic_load_2):
        movzwl (%rcx),%eax
        ret
	.size   _(__atomic_load_2), .-_(__atomic_load_2)

        .global _(__atomic_load_4)
        .type   _(__atomic_load_4), %function
_(__atomic_load_4):
        mov    (%rcx),%eax
        ret
	.size   _(__atomic_load_4), .-_(__atomic_load_4)

        .global _(__atomic_load_8)
        .type   _(__atomic_load_8), %function
_(__atomic_load_8):
        mov    (%rcx),%rax
        ret
	.size   _(__atomic_load_8), .-_(__atomic_load_8)

        .global _(__atomic_store_1)
        .type   _(__atomic_store_1), %function
_(__atomic_store_1):
        xchg   %dl,(%rcx)
        ret
	.size   _(__atomic_store_1), .-_(__atomic_store_1)

        .global _(__atomic_store_2)
        .type   _(__atomic_store_2), %function
_(__atomic_store_2):
        xchg   %dx,(%rcx)
        ret
	.size   _(__atomic_store_2), .-_(__atomic_store_2)

        .global _(__atomic_store_4)
        .type   _(__atomic_store_4), %function
_(__atomic_store_4):
        xchg   %edx,(%rcx)
        ret
	.size   _(__atomic_store_4), .-_(__atomic_store_4)

        .global _(__atomic_store_8)
        .type   _(__atomic_store_8), %function
_(__atomic_store_8):
        xchg   %rdx,(%rcx)
        ret
	.size   _(__atomic_store_8), .-_(__atomic_store_8)

        .global _(__atomic_compare_exchange_1)
        .type   _(__atomic_compare_exchange_1), %function
_(__atomic_compare_exchange_1):
        movzbl (%rdx),%eax
        lock cmpxchg %r8b,(%rcx)
        sete   %cl
        je      .L___atomic_compare_exchange_1_00f
        mov    %al,(%rdx)
.L___atomic_compare_exchange_1_00f:
        mov    %ecx,%eax
        ret
	.size   _(__atomic_compare_exchange_1), .-_(__atomic_compare_exchange_1)

        .global _(__atomic_compare_exchange_2)
        .type   _(__atomic_compare_exchange_2), %function
_(__atomic_compare_exchange_2):
        movzwl (%rdx),%eax
        lock cmpxchg %r8w,(%rcx)
        sete   %cl
        je      .L___atomic_compare_exchange_2_011
        mov    %ax,(%rdx)
.L___atomic_compare_exchange_2_011:
        mov    %ecx,%eax
        ret
	.size   _(__atomic_compare_exchange_2), .-_(__atomic_compare_exchange_2)

        .global _(__atomic_compare_exchange_4)
        .type   _(__atomic_compare_exchange_4), %function
_(__atomic_compare_exchange_4):
        mov    (%rdx),%eax
        lock cmpxchg %r8d,(%rcx)
        sete   %cl
        je      .L___atomic_compare_exchange_4_00e
        mov    %eax,(%rdx)
.L___atomic_compare_exchange_4_00e:
        mov    %ecx,%eax
        ret
	.size   _(__atomic_compare_exchange_4), .-_(__atomic_compare_exchange_4)

        .global _(__atomic_compare_exchange_8)
        .type   _(__atomic_compare_exchange_8), %function
_(__atomic_compare_exchange_8):
        mov    (%rdx),%rax
        lock cmpxchg %r8,(%rcx)
        sete   %cl
        je      .L___atomic_compare_exchange_8_010
        mov    %rax,(%rdx)
.L___atomic_compare_exchange_8_010:
        mov    %ecx,%eax
        ret
	.size   _(__atomic_compare_exchange_8), .-_(__atomic_compare_exchange_8)

        .global _(__atomic_test_and_set_1)
        .type   _(__atomic_test_and_set_1), %function
_(__atomic_test_and_set_1):
        mov    $0x1,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(__atomic_test_and_set_1), .-_(__atomic_test_and_set_1)

        .global _(__atomic_test_and_set_2)
        .type   _(__atomic_test_and_set_2), %function
_(__atomic_test_and_set_2):
        mov    $0x1,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(__atomic_test_and_set_2), .-_(__atomic_test_and_set_2)

        .global _(__atomic_test_and_set_4)
        .type   _(__atomic_test_and_set_4), %function
_(__atomic_test_and_set_4):
        mov    $0x1,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(__atomic_test_and_set_4), .-_(__atomic_test_and_set_4)

        .global _(__atomic_test_and_set_8)
        .type   _(__atomic_test_and_set_8), %function
_(__atomic_test_and_set_8):
        mov    $0x1,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(__atomic_test_and_set_8), .-_(__atomic_test_and_set_8)

        .global _(atomic_thread_fence)
        .type   _(atomic_thread_fence), %function
_(atomic_thread_fence):
        lock orq $0x0,(%rsp)
        ret
	.size   _(atomic_thread_fence), .-_(atomic_thread_fence)

        .global _(atomic_signal_fence)
        .type   _(atomic_signal_fence), %function
_(atomic_signal_fence):
        ret
	.size   _(atomic_signal_fence), .-_(atomic_signal_fence)

        .global _(atomic_flag_test_and_set)
        .type   _(atomic_flag_test_and_set), %function
_(atomic_flag_test_and_set):
        mov    $0x1,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(atomic_flag_test_and_set), .-_(atomic_flag_test_and_set)

        .global _(atomic_flag_test_and_set_explicit)
        .type   _(atomic_flag_test_and_set_explicit), %function
_(atomic_flag_test_and_set_explicit):
        mov    $0x1,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(atomic_flag_test_and_set_explicit), .-_(atomic_flag_test_and_set_explicit)

        .global _(atomic_flag_clear)
        .type   _(atomic_flag_clear), %function
_(atomic_flag_clear):
        xor    %eax,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(atomic_flag_clear), .-_(atomic_flag_clear)

        .global _(atomic_flag_clear_explicit)
        .type   _(atomic_flag_clear_explicit), %function
_(atomic_flag_clear_explicit):
        xor    %eax,%eax
        xchg   %al,(%rcx)
        ret
	.size   _(atomic_flag_clear_explicit), .-_(atomic_flag_clear_explicit)

#endif //__x86_64__ && _WIN32

/* ---------------------------------------------- */
#if defined __arm__
        .text
#ifndef __TINYC__
        .arch   armv6k
        .syntax unified
#endif

        .global _(__atomic_load_1)
        .type   _(__atomic_load_1), %function
_(__atomic_load_1):
#ifdef __TINYC__
        .int 0xe3510000
        .int 0x1a000002
        .int 0xe5d00000
        .int 0xe6ef0070
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe5d00000
        .int 0xee070fba
        .int 0xe6ef0070
        .int 0xe12fff1e
#else
        cmp r1, #0
        bne  .L___atomic_load_1_014
        ldrb    r0, [r0]
        uxtb    r0, r0
        bx  lr
.L___atomic_load_1_014:
        mcr     p15, #0, r0, c7, c10, #5
        ldrb    r0, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        uxtb    r0, r0
        bx  lr
	.size   _(__atomic_load_1), .-_(__atomic_load_1)

#endif
        .global _(__atomic_load_2)
        .type   _(__atomic_load_2), %function
_(__atomic_load_2):
#ifdef __TINYC__
        .int 0xe3510000
        .int 0x1a000002
        .int 0xe1d000b0
        .int 0xe6ff0070
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1d000b0
        .int 0xee070fba
        .int 0xe6ff0070
        .int 0xe12fff1e
#else
        cmp r1, #0
        bne  .L___atomic_load_2_03c
        ldrh    r0, [r0]
        uxth    r0, r0
        bx  lr
.L___atomic_load_2_03c:
        mcr     p15, #0, r0, c7, c10, #5
        ldrh    r0, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        uxth    r0, r0
        bx  lr
	.size   _(__atomic_load_2), .-_(__atomic_load_2)

#endif
        .global _(__atomic_load_4)
        .type   _(__atomic_load_4), %function
_(__atomic_load_4):
#ifdef __TINYC__
        .int 0xe3510000
        .int 0x1a000001
        .int 0xe5900000
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe5900000
        .int 0xee070fba
        .int 0xe12fff1e
#else
        cmp r1, #0
        bne  .L___atomic_load_4_060
        ldr r0, [r0]
        bx  lr
.L___atomic_load_4_060:
        mcr     p15, #0, r0, c7, c10, #5
        ldr r0, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_load_4), .-_(__atomic_load_4)

#endif
        .global _(__atomic_load_8)
        .type   _(__atomic_load_8), %function
_(__atomic_load_8):
#ifdef __TINYC__
        .int 0xe3510000
        .int 0x1a000001
        .int 0xe1b00f9f
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1b00f9f
        .int 0xee070fba
        .int 0xe12fff1e
#else
        cmp r1, #0
        bne  .L___atomic_load_8_080
        ldrexd  r0, [r0]
        bx  lr
.L___atomic_load_8_080:
        mcr     p15, #0, r0, c7, c10, #5
        ldrexd  r0, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_load_8), .-_(__atomic_load_8)

#endif
        .global _(__atomic_store_1)
        .type   _(__atomic_store_1), %function
_(__atomic_store_1):
#ifdef __TINYC__
        .int 0xe3520000
        .int 0x1a000001
        .int 0xe5c01000
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe5c01000
        .int 0xee070fba
        .int 0xe12fff1e
#else
        cmp r2, #0
        bne  .L___atomic_store_1_0a0
        strb    r1, [r0]
        bx  lr
.L___atomic_store_1_0a0:
        mcr     p15, #0, r0, c7, c10, #5
        strb    r1, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_store_1), .-_(__atomic_store_1)

#endif
        .global _(__atomic_store_2)
        .type   _(__atomic_store_2), %function
_(__atomic_store_2):
#ifdef __TINYC__
        .int 0xe3520000
        .int 0x1a000001
        .int 0xe1c010b0
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1c010b0
        .int 0xee070fba
        .int 0xe12fff1e
#else
        cmp r2, #0
        bne  .L___atomic_store_2_0c0
        strh    r1, [r0]
        bx  lr
.L___atomic_store_2_0c0:
        mcr     p15, #0, r0, c7, c10, #5
        strh    r1, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_store_2), .-_(__atomic_store_2)

#endif
        .global _(__atomic_store_4)
        .type   _(__atomic_store_4), %function
_(__atomic_store_4):
#ifdef __TINYC__
        .int 0xe3520000
        .int 0x1a000001
        .int 0xe5801000
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe5801000
        .int 0xee070fba
        .int 0xe12fff1e
#else
        cmp r2, #0
        bne  .L___atomic_store_4_0e0
        str r1, [r0]
        bx  lr
.L___atomic_store_4_0e0:
        mcr     p15, #0, r0, c7, c10, #5
        str r1, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_store_4), .-_(__atomic_store_4)

#endif
        .global _(__atomic_store_8)
        .type   _(__atomic_store_8), %function
_(__atomic_store_8):
#ifdef __TINYC__
        .int 0xe92d0030
        .int 0xe1a04002
        .int 0xe59d1008
        .int 0xe1a05003
        .int 0xe3510000
        .int 0x1a000005
        .int 0xe1b02f9f
        .int 0xe1a01f94
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe8bd0030
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1b02f9f
        .int 0xe1a01f94
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xee070fba
        .int 0xe8bd0030
        .int 0xe12fff1e
#else
        push    {r4, r5}
        mov r4, r2
        ldr r1, [sp, #8]
        mov r5, r3
        cmp r1, #0
        bne  .L___atomic_store_8_120
.L___atomic_store_8_108:
        ldrexd  r2, [r0]
        strexd  r1, r4, [r0]
        cmp r1, #0
        bne  .L___atomic_store_8_108
        pop {r4, r5}
        bx  lr
.L___atomic_store_8_120:
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_store_8_124:
        ldrexd  r2, [r0]
        strexd  r1, r4, [r0]
        cmp r1, #0
        bne  .L___atomic_store_8_124
        mcr     p15, #0, r0, c7, c10, #5
        pop {r4, r5}
        bx  lr
	.size   _(__atomic_store_8), .-_(__atomic_store_8)

#endif
        .global _(__atomic_compare_exchange_1)
        .type   _(__atomic_compare_exchange_1), %function
_(__atomic_compare_exchange_1):
#ifdef __TINYC__
        .int 0xe52de004
        .int 0xe3530000
        .int 0x1a00000a
        .int 0xe5d13000
        .int 0xe1d0cf9f
        .int 0xe15c0003
        .int 0x1a000002
        .int 0xe1c0ef92
        .int 0xe35e0000
        .int 0x1afffff9
        .int 0x03a00001
        .int 0x13a00000
        .int 0x15c1c000
        .int 0xe49df004
        .int 0xe5d13000
        .int 0xee070fba
        .int 0xe1d0cf9f
        .int 0xe15c0003
        .int 0x1afffff6
        .int 0xe1c0ef92
        .int 0xe35e0000
        .int 0x1afffff9
        .int 0xee070fba
        .int 0xeafffff1
#else
        push    {lr}        @ (str lr, [sp, #-4]!)
        cmp r3, #0
        bne  .L___atomic_compare_exchange_1_178
        ldrb    r3, [r1]
.L___atomic_compare_exchange_1_150:
        ldrexb  ip, [r0]
        cmp ip, r3
        bne  .L___atomic_compare_exchange_1_168
        strexb  lr, r2, [r0]
        cmp lr, #0
        bne  .L___atomic_compare_exchange_1_150
.L___atomic_compare_exchange_1_168:
        moveq   r0, #1
        movne   r0, #0
        strbne  ip, [r1]
        pop {pc}        @ (ldr pc, [sp], #4)
.L___atomic_compare_exchange_1_178:
        ldrb    r3, [r1]
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_compare_exchange_1_180:
        ldrexb  ip, [r0]
        cmp ip, r3
        bne  .L___atomic_compare_exchange_1_168
        strexb  lr, r2, [r0]
        cmp lr, #0
        bne  .L___atomic_compare_exchange_1_180
        mcr     p15, #0, r0, c7, c10, #5
        b    .L___atomic_compare_exchange_1_168
	.size   _(__atomic_compare_exchange_1), .-_(__atomic_compare_exchange_1)

#endif
        .global _(__atomic_compare_exchange_2)
        .type   _(__atomic_compare_exchange_2), %function
_(__atomic_compare_exchange_2):
#ifdef __TINYC__
        .int 0xe52de004
        .int 0xe3530000
        .int 0x1a00000a
        .int 0xe1d130b0
        .int 0xe1f0cf9f
        .int 0xe15c0003
        .int 0x1a000002
        .int 0xe1e0ef92
        .int 0xe35e0000
        .int 0x1afffff9
        .int 0x03a00001
        .int 0x13a00000
        .int 0x11c1c0b0
        .int 0xe49df004
        .int 0xe1d130b0
        .int 0xee070fba
        .int 0xe1f0cf9f
        .int 0xe15c0003
        .int 0x1afffff6
        .int 0xe1e0ef92
        .int 0xe35e0000
        .int 0x1afffff9
        .int 0xee070fba
        .int 0xeafffff1
#else
        push    {lr}        @ (str lr, [sp, #-4]!)
        cmp r3, #0
        bne  .L___atomic_compare_exchange_2_1d8
        ldrh    r3, [r1]
.L___atomic_compare_exchange_2_1b0:
        ldrexh  ip, [r0]
        cmp ip, r3
        bne  .L___atomic_compare_exchange_2_1c8
        strexh  lr, r2, [r0]
        cmp lr, #0
        bne  .L___atomic_compare_exchange_2_1b0
.L___atomic_compare_exchange_2_1c8:
        moveq   r0, #1
        movne   r0, #0
        strhne  ip, [r1]
        pop {pc}        @ (ldr pc, [sp], #4)
.L___atomic_compare_exchange_2_1d8:
        ldrh    r3, [r1]
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_compare_exchange_2_1e0:
        ldrexh  ip, [r0]
        cmp ip, r3
        bne  .L___atomic_compare_exchange_2_1c8
        strexh  lr, r2, [r0]
        cmp lr, #0
        bne  .L___atomic_compare_exchange_2_1e0
        mcr     p15, #0, r0, c7, c10, #5
        b    .L___atomic_compare_exchange_2_1c8
	.size   _(__atomic_compare_exchange_2), .-_(__atomic_compare_exchange_2)

#endif
        .global _(__atomic_compare_exchange_4)
        .type   _(__atomic_compare_exchange_4), %function
_(__atomic_compare_exchange_4):
#ifdef __TINYC__
        .int 0xe52d4004
        .int 0xe3530000
        .int 0x1a00000b
        .int 0xe5913000
        .int 0xe1904f9f
        .int 0xe1540003
        .int 0x1a000002
        .int 0xe180cf92
        .int 0xe35c0000
        .int 0x1afffff9
        .int 0x03a00001
        .int 0x13a00000
        .int 0x15814000
        .int 0xe49d4004
        .int 0xe12fff1e
        .int 0xe5913000
        .int 0xee070fba
        .int 0xe1904f9f
        .int 0xe1540003
        .int 0x1afffff5
        .int 0xe180cf92
        .int 0xe35c0000
        .int 0x1afffff9
        .int 0xee070fba
        .int 0xeafffff0
#else
        push    {r4}        @ (str r4, [sp, #-4]!)
        cmp r3, #0
        bne  .L___atomic_compare_exchange_4_23c
        ldr r3, [r1]
.L___atomic_compare_exchange_4_210:
        ldrex   r4, [r0]
        cmp r4, r3
        bne  .L___atomic_compare_exchange_4_228
        strex   ip, r2, [r0]
        cmp ip, #0
        bne  .L___atomic_compare_exchange_4_210
.L___atomic_compare_exchange_4_228:
        moveq   r0, #1
        movne   r0, #0
        strne   r4, [r1]
        pop {r4}        @ (ldr r4, [sp], #4)
        bx  lr
.L___atomic_compare_exchange_4_23c:
        ldr r3, [r1]
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_compare_exchange_4_244:
        ldrex   r4, [r0]
        cmp r4, r3
        bne  .L___atomic_compare_exchange_4_228
        strex   ip, r2, [r0]
        cmp ip, #0
        bne  .L___atomic_compare_exchange_4_244
        mcr     p15, #0, r0, c7, c10, #5
        b    .L___atomic_compare_exchange_4_228
	.size   _(__atomic_compare_exchange_4), .-_(__atomic_compare_exchange_4)

#endif
        .global _(__atomic_compare_exchange_8)
        .type   _(__atomic_compare_exchange_8), %function
_(__atomic_compare_exchange_8):
#ifdef __TINYC__
        .int 0xe92d00f0
        .int 0xe1a05003
        .int 0xe59d3010
        .int 0xe1a04002
        .int 0xe3530000
        .int 0x1a00000c
        .int 0xe1c120d0
        .int 0xe1b06f9f
        .int 0xe1570003
        .int 0x01560002
        .int 0x1a000002
        .int 0xe1a0cf94
        .int 0xe35c0000
        .int 0x1afffff8
        .int 0x03a00001
        .int 0x13a00000
        .int 0x11c160f0
        .int 0xe8bd00f0
        .int 0xe12fff1e
        .int 0xe1c120d0
        .int 0xee070fba
        .int 0xe1b06f9f
        .int 0xe1570003
        .int 0x01560002
        .int 0x1afffff4
        .int 0xe1a0cf94
        .int 0xe35c0000
        .int 0x1afffff8
        .int 0xee070fba
        .int 0xeaffffef
#else
        push    {r4, r5, r6, r7}
        mov r5, r3
        ldr r3, [sp, #16]
        mov r4, r2
        cmp r3, #0
        bne  .L___atomic_compare_exchange_8_2b0
        ldrd    r2, [r1]
.L___atomic_compare_exchange_8_280:
        ldrexd  r6, [r0]
        cmp r7, r3
        cmpeq   r6, r2
        bne  .L___atomic_compare_exchange_8_29c
        strexd  ip, r4, [r0]
        cmp ip, #0
        bne  .L___atomic_compare_exchange_8_280
.L___atomic_compare_exchange_8_29c:
        moveq   r0, #1
        movne   r0, #0
        strdne  r6, [r1]
        pop {r4, r5, r6, r7}
        bx  lr
.L___atomic_compare_exchange_8_2b0:
        ldrd    r2, [r1]
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_compare_exchange_8_2b8:
        ldrexd  r6, [r0]
        cmp r7, r3
        cmpeq   r6, r2
        bne  .L___atomic_compare_exchange_8_29c
        strexd  ip, r4, [r0]
        cmp ip, #0
        bne  .L___atomic_compare_exchange_8_2b8
        mcr     p15, #0, r0, c7, c10, #5
        b    .L___atomic_compare_exchange_8_29c
	.size   _(__atomic_compare_exchange_8), .-_(__atomic_compare_exchange_8)

#endif
        .global _(__atomic_test_and_set_1)
        .type   _(__atomic_test_and_set_1), %function
_(__atomic_test_and_set_1):
#ifdef __TINYC__
        .int 0xe3a02001
        .int 0xe3510000
        .int 0x1a000005
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mov r2, #1
        cmp r1, #0
        bne  .L___atomic_test_and_set_1_300
.L___atomic_test_and_set_1_2e8:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_1_2e8
        uxtb    r0, r3
        bx  lr
.L___atomic_test_and_set_1_300:
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_test_and_set_1_304:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_1_304
        uxtb    r0, r3
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_test_and_set_1), .-_(__atomic_test_and_set_1)

#endif
        .global _(__atomic_test_and_set_2)
        .type   _(__atomic_test_and_set_2), %function
_(__atomic_test_and_set_2):
#ifdef __TINYC__
        .int 0xe3a02001
        .int 0xe3510000
        .int 0x1a000005
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mov r2, #1
        cmp r1, #0
        bne  .L___atomic_test_and_set_2_344
.L___atomic_test_and_set_2_32c:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_2_32c
        uxtb    r0, r3
        bx  lr
.L___atomic_test_and_set_2_344:
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_test_and_set_2_348:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_2_348
        uxtb    r0, r3
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_test_and_set_2), .-_(__atomic_test_and_set_2)

#endif
        .global _(__atomic_test_and_set_4)
        .type   _(__atomic_test_and_set_4), %function
_(__atomic_test_and_set_4):
#ifdef __TINYC__
        .int 0xe3a02001
        .int 0xe3510000
        .int 0x1a000005
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mov r2, #1
        cmp r1, #0
        bne  .L___atomic_test_and_set_4_388
.L___atomic_test_and_set_4_370:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_4_370
        uxtb    r0, r3
        bx  lr
.L___atomic_test_and_set_4_388:
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_test_and_set_4_38c:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_4_38c
        uxtb    r0, r3
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_test_and_set_4), .-_(__atomic_test_and_set_4)

#endif
        .global _(__atomic_test_and_set_8)
        .type   _(__atomic_test_and_set_8), %function
_(__atomic_test_and_set_8):
#ifdef __TINYC__
        .int 0xe3a02001
        .int 0xe3510000
        .int 0x1a000005
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xe12fff1e
        .int 0xee070fba
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mov r2, #1
        cmp r1, #0
        bne  .L___atomic_test_and_set_8_3cc
.L___atomic_test_and_set_8_3b4:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_8_3b4
        uxtb    r0, r3
        bx  lr
.L___atomic_test_and_set_8_3cc:
        mcr     p15, #0, r0, c7, c10, #5
.L___atomic_test_and_set_8_3d0:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L___atomic_test_and_set_8_3d0
        uxtb    r0, r3
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(__atomic_test_and_set_8), .-_(__atomic_test_and_set_8)

#endif
        .global _(atomic_thread_fence)
        .type   _(atomic_thread_fence), %function
_(atomic_thread_fence):
#ifdef __TINYC__
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(atomic_thread_fence), .-_(atomic_thread_fence)

#endif
        .global _(atomic_signal_fence)
        .type   _(atomic_signal_fence), %function
_(atomic_signal_fence):
#ifdef __TINYC__
        .int 0xe12fff1e
#else
        bx  lr
	.size   _(atomic_signal_fence), .-_(atomic_signal_fence)

#endif
        .global _(atomic_flag_test_and_set)
        .type   _(atomic_flag_test_and_set), %function
_(atomic_flag_test_and_set):
#ifdef __TINYC__
        .int 0xe3a02001
        .int 0xee070fba
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mov r2, #1
        mcr     p15, #0, r0, c7, c10, #5
.L_atomic_flag_test_and_set_400:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L_atomic_flag_test_and_set_400
        uxtb    r0, r3
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(atomic_flag_test_and_set), .-_(atomic_flag_test_and_set)

#endif
        .global _(atomic_flag_test_and_set_explicit)
        .type   _(atomic_flag_test_and_set_explicit), %function
_(atomic_flag_test_and_set_explicit):
#ifdef __TINYC__
        .int 0xe3a02001
        .int 0xee070fba
        .int 0xe1d03f9f
        .int 0xe1c01f92
        .int 0xe3510000
        .int 0x1afffffb
        .int 0xe6ef0073
        .int 0xee070fba
        .int 0xe12fff1e
#else
        mov r2, #1
        mcr     p15, #0, r0, c7, c10, #5
.L_atomic_flag_test_and_set_explicit_424:
        ldrexb  r3, [r0]
        strexb  r1, r2, [r0]
        cmp r1, #0
        bne  .L_atomic_flag_test_and_set_explicit_424
        uxtb    r0, r3
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(atomic_flag_test_and_set_explicit), .-_(atomic_flag_test_and_set_explicit)

#endif
        .global _(atomic_flag_clear)
        .type   _(atomic_flag_clear), %function
_(atomic_flag_clear):
#ifdef __TINYC__
        .int 0xe3b03000
        .int 0xee070fba
        .int 0xe5c03000
        .int 0xee070fba
        .int 0xe12fff1e
#else
        movs    r3, #0
        mcr     p15, #0, r0, c7, c10, #5
        strb    r3, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(atomic_flag_clear), .-_(atomic_flag_clear)

#endif
        .global _(atomic_flag_clear_explicit)
        .type   _(atomic_flag_clear_explicit), %function
_(atomic_flag_clear_explicit):
#ifdef __TINYC__
        .int 0xe3b03000
        .int 0xee070fba
        .int 0xe5c03000
        .int 0xee070fba
        .int 0xe12fff1e
#else
        movs    r3, #0
        mcr     p15, #0, r0, c7, c10, #5
        strb    r3, [r0]
        mcr     p15, #0, r0, c7, c10, #5
        bx  lr
	.size   _(atomic_flag_clear_explicit), .-_(atomic_flag_clear_explicit)

#endif
#endif //__arm__

/* ---------------------------------------------- */
#if defined __aarch64__
        .text

        .global _(__atomic_load_1)
        .type   _(__atomic_load_1), %function
_(__atomic_load_1):
#ifdef __TINYC__
        .int 0x35000081
        .int 0x39400000
        .int 0x12001c00
        .int 0xd65f03c0
        .int 0x08dffc00
        .int 0x12001c00
        .int 0xd65f03c0
#else
        cbnz    w1,  .L___atomic_load_1_010
        ldrb    w0, [x0]
        and w0, w0, #0xff
        ret
.L___atomic_load_1_010:
        ldarb   w0, [x0]
        and w0, w0, #0xff
        ret
	.size   _(__atomic_load_1), .-_(__atomic_load_1)

#endif
        .global _(__atomic_load_2)
        .type   _(__atomic_load_2), %function
_(__atomic_load_2):
#ifdef __TINYC__
        .int 0x35000081
        .int 0x79400000
        .int 0x12003c00
        .int 0xd65f03c0
        .int 0x48dffc00
        .int 0x12003c00
        .int 0xd65f03c0
#else
        cbnz    w1,  .L___atomic_load_2_010
        ldrh    w0, [x0]
        and w0, w0, #0xffff
        ret
.L___atomic_load_2_010:
        ldarh   w0, [x0]
        and w0, w0, #0xffff
        ret
	.size   _(__atomic_load_2), .-_(__atomic_load_2)

#endif
        .global _(__atomic_load_4)
        .type   _(__atomic_load_4), %function
_(__atomic_load_4):
#ifdef __TINYC__
        .int 0x35000061
        .int 0xb9400000
        .int 0xd65f03c0
        .int 0x88dffc00
        .int 0xd65f03c0
#else
        cbnz    w1,  .L___atomic_load_4_00c
        ldr w0, [x0]
        ret
.L___atomic_load_4_00c:
        ldar    w0, [x0]
        ret
	.size   _(__atomic_load_4), .-_(__atomic_load_4)

#endif
        .global _(__atomic_load_8)
        .type   _(__atomic_load_8), %function
_(__atomic_load_8):
#ifdef __TINYC__
        .int 0x35000061
        .int 0xf9400000
        .int 0xd65f03c0
        .int 0xc8dffc00
        .int 0xd65f03c0
#else
        cbnz    w1,  .L___atomic_load_8_00c
        ldr x0, [x0]
        ret
.L___atomic_load_8_00c:
        ldar    x0, [x0]
        ret
	.size   _(__atomic_load_8), .-_(__atomic_load_8)

#endif
        .global _(__atomic_store_1)
        .type   _(__atomic_store_1), %function
_(__atomic_store_1):
#ifdef __TINYC__
        .int 0x12001c21
        .int 0x35000062
        .int 0x39000001
        .int 0xd65f03c0
        .int 0x089ffc01
        .int 0xd65f03c0
#else
        and w1, w1, #0xff
        cbnz    w2,  .L___atomic_store_1_010
        strb    w1, [x0]
        ret
.L___atomic_store_1_010:
        stlrb   w1, [x0]
        ret
	.size   _(__atomic_store_1), .-_(__atomic_store_1)

#endif
        .global _(__atomic_store_2)
        .type   _(__atomic_store_2), %function
_(__atomic_store_2):
#ifdef __TINYC__
        .int 0x12003c21
        .int 0x35000062
        .int 0x79000001
        .int 0xd65f03c0
        .int 0x489ffc01
        .int 0xd65f03c0
#else
        and w1, w1, #0xffff
        cbnz    w2,  .L___atomic_store_2_010
        strh    w1, [x0]
        ret
.L___atomic_store_2_010:
        stlrh   w1, [x0]
        ret
	.size   _(__atomic_store_2), .-_(__atomic_store_2)

#endif
        .global _(__atomic_store_4)
        .type   _(__atomic_store_4), %function
_(__atomic_store_4):
#ifdef __TINYC__
        .int 0x35000062
        .int 0xb9000001
        .int 0xd65f03c0
        .int 0x889ffc01
        .int 0xd65f03c0
#else
        cbnz    w2,  .L___atomic_store_4_00c
        str w1, [x0]
        ret
.L___atomic_store_4_00c:
        stlr    w1, [x0]
        ret
	.size   _(__atomic_store_4), .-_(__atomic_store_4)

#endif
        .global _(__atomic_store_8)
        .type   _(__atomic_store_8), %function
_(__atomic_store_8):
#ifdef __TINYC__
        .int 0x35000062
        .int 0xf9000001
        .int 0xd65f03c0
        .int 0xc89ffc01
        .int 0xd65f03c0
#else
        cbnz    w2,  .L___atomic_store_8_00c
        str x1, [x0]
        ret
.L___atomic_store_8_00c:
        stlr    x1, [x0]
        ret
	.size   _(__atomic_store_8), .-_(__atomic_store_8)

#endif
        .global _(__atomic_compare_exchange_1)
        .type   _(__atomic_compare_exchange_1), %function
_(__atomic_compare_exchange_1):
#ifdef __TINYC__
        .int 0x12001c42
        .int 0x35000143
        .int 0x39400023
        .int 0x085f7c04
        .int 0x6b23009f
        .int 0x54000061
        .int 0x08057c02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54000141
        .int 0xd65f03c0
        .int 0x39400023
        .int 0x085ffc04
        .int 0x6b23009f
        .int 0x54000061
        .int 0x0805fc02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54ffff00
        .int 0x39000024
        .int 0xd65f03c0
#else
        and w2, w2, #0xff
        cbnz    w3,  .L___atomic_compare_exchange_1_02c
        ldrb    w3, [x1]
.L___atomic_compare_exchange_1_00c:
        ldxrb   w4, [x0]
        cmp w4, w3, uxtb
        b.ne     .L___atomic_compare_exchange_1_020
        stxrb   w5, w2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_1_00c
.L___atomic_compare_exchange_1_020:
        cset    w0, eq  // eq = none
        b.ne     .L___atomic_compare_exchange_1_04c
.L___atomic_compare_exchange_1_028:
        ret
.L___atomic_compare_exchange_1_02c:
        ldrb    w3, [x1]
.L___atomic_compare_exchange_1_030:
        ldaxrb  w4, [x0]
        cmp w4, w3, uxtb
        b.ne     .L___atomic_compare_exchange_1_044
        stlxrb  w5, w2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_1_030
.L___atomic_compare_exchange_1_044:
        cset    w0, eq  // eq = none
        b.eq     .L___atomic_compare_exchange_1_028
.L___atomic_compare_exchange_1_04c:
        strb    w4, [x1]
        ret
	.size   _(__atomic_compare_exchange_1), .-_(__atomic_compare_exchange_1)

#endif
        .global _(__atomic_compare_exchange_2)
        .type   _(__atomic_compare_exchange_2), %function
_(__atomic_compare_exchange_2):
#ifdef __TINYC__
        .int 0x12003c42
        .int 0x35000143
        .int 0x79400023
        .int 0x485f7c04
        .int 0x6b23209f
        .int 0x54000061
        .int 0x48057c02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54000141
        .int 0xd65f03c0
        .int 0x79400023
        .int 0x485ffc04
        .int 0x6b23209f
        .int 0x54000061
        .int 0x4805fc02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54ffff00
        .int 0x79000024
        .int 0xd65f03c0
#else
        and w2, w2, #0xffff
        cbnz    w3,  .L___atomic_compare_exchange_2_02c
        ldrh    w3, [x1]
.L___atomic_compare_exchange_2_00c:
        ldxrh   w4, [x0]
        cmp w4, w3, uxth
        b.ne     .L___atomic_compare_exchange_2_020
        stxrh   w5, w2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_2_00c
.L___atomic_compare_exchange_2_020:
        cset    w0, eq  // eq = none
        b.ne     .L___atomic_compare_exchange_2_04c
.L___atomic_compare_exchange_2_028:
        ret
.L___atomic_compare_exchange_2_02c:
        ldrh    w3, [x1]
.L___atomic_compare_exchange_2_030:
        ldaxrh  w4, [x0]
        cmp w4, w3, uxth
        b.ne     .L___atomic_compare_exchange_2_044
        stlxrh  w5, w2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_2_030
.L___atomic_compare_exchange_2_044:
        cset    w0, eq  // eq = none
        b.eq     .L___atomic_compare_exchange_2_028
.L___atomic_compare_exchange_2_04c:
        strh    w4, [x1]
        ret
	.size   _(__atomic_compare_exchange_2), .-_(__atomic_compare_exchange_2)

#endif
        .global _(__atomic_compare_exchange_4)
        .type   _(__atomic_compare_exchange_4), %function
_(__atomic_compare_exchange_4):
#ifdef __TINYC__
        .int 0x35000143
        .int 0xb9400023
        .int 0x885f7c04
        .int 0x6b03009f
        .int 0x54000061
        .int 0x88057c02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54000141
        .int 0xd65f03c0
        .int 0xb9400023
        .int 0x885ffc04
        .int 0x6b03009f
        .int 0x54000061
        .int 0x8805fc02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54ffff00
        .int 0xb9000024
        .int 0xd65f03c0
#else
        cbnz    w3,  .L___atomic_compare_exchange_4_028
        ldr w3, [x1]
.L___atomic_compare_exchange_4_008:
        ldxr    w4, [x0]
        cmp w4, w3
        b.ne     .L___atomic_compare_exchange_4_01c
        stxr    w5, w2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_4_008
.L___atomic_compare_exchange_4_01c:
        cset    w0, eq  // eq = none
        b.ne     .L___atomic_compare_exchange_4_048
.L___atomic_compare_exchange_4_024:
        ret
.L___atomic_compare_exchange_4_028:
        ldr w3, [x1]
.L___atomic_compare_exchange_4_02c:
        ldaxr   w4, [x0]
        cmp w4, w3
        b.ne     .L___atomic_compare_exchange_4_040
        stlxr   w5, w2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_4_02c
.L___atomic_compare_exchange_4_040:
        cset    w0, eq  // eq = none
        b.eq     .L___atomic_compare_exchange_4_024
.L___atomic_compare_exchange_4_048:
        str w4, [x1]
        ret
	.size   _(__atomic_compare_exchange_4), .-_(__atomic_compare_exchange_4)

#endif
        .global _(__atomic_compare_exchange_8)
        .type   _(__atomic_compare_exchange_8), %function
_(__atomic_compare_exchange_8):
#ifdef __TINYC__
        .int 0x35000143
        .int 0xf9400023
        .int 0xc85f7c04
        .int 0xeb03009f
        .int 0x54000061
        .int 0xc8057c02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54000141
        .int 0xd65f03c0
        .int 0xf9400023
        .int 0xc85ffc04
        .int 0xeb03009f
        .int 0x54000061
        .int 0xc805fc02
        .int 0x35ffff85
        .int 0x1a9f17e0
        .int 0x54ffff00
        .int 0xf9000024
        .int 0xd65f03c0
#else
        cbnz    w3,  .L___atomic_compare_exchange_8_028
        ldr x3, [x1]
.L___atomic_compare_exchange_8_008:
        ldxr    x4, [x0]
        cmp x4, x3
        b.ne     .L___atomic_compare_exchange_8_01c
        stxr    w5, x2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_8_008
.L___atomic_compare_exchange_8_01c:
        cset    w0, eq  // eq = none
        b.ne     .L___atomic_compare_exchange_8_048
.L___atomic_compare_exchange_8_024:
        ret
.L___atomic_compare_exchange_8_028:
        ldr x3, [x1]
.L___atomic_compare_exchange_8_02c:
        ldaxr   x4, [x0]
        cmp x4, x3
        b.ne     .L___atomic_compare_exchange_8_040
        stlxr   w5, x2, [x0]
        cbnz    w5,  .L___atomic_compare_exchange_8_02c
.L___atomic_compare_exchange_8_040:
        cset    w0, eq  // eq = none
        b.eq     .L___atomic_compare_exchange_8_024
.L___atomic_compare_exchange_8_048:
        str x4, [x1]
        ret
	.size   _(__atomic_compare_exchange_8), .-_(__atomic_compare_exchange_8)

#endif
        .global _(__atomic_test_and_set_1)
        .type   _(__atomic_test_and_set_1), %function
_(__atomic_test_and_set_1):
#ifdef __TINYC__
        .int 0x52800022
        .int 0x350000c1
        .int 0x085f7c01
        .int 0x08037c02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
        .int 0x085ffc01
        .int 0x0803fc02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
#else
        mov w2, #0x1                    // #1
        cbnz    w1,  .L___atomic_test_and_set_1_01c
.L___atomic_test_and_set_1_008:
        ldxrb   w1, [x0]
        stxrb   w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_1_008
        and w0, w1, #0xff
        ret
.L___atomic_test_and_set_1_01c:
        ldaxrb  w1, [x0]
        stlxrb  w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_1_01c
        and w0, w1, #0xff
        ret
	.size   _(__atomic_test_and_set_1), .-_(__atomic_test_and_set_1)

#endif
        .global _(__atomic_test_and_set_2)
        .type   _(__atomic_test_and_set_2), %function
_(__atomic_test_and_set_2):
#ifdef __TINYC__
        .int 0x52800022
        .int 0x350000c1
        .int 0x085f7c01
        .int 0x08037c02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
        .int 0x085ffc01
        .int 0x0803fc02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
#else
        mov w2, #0x1                    // #1
        cbnz    w1,  .L___atomic_test_and_set_2_01c
.L___atomic_test_and_set_2_008:
        ldxrb   w1, [x0]
        stxrb   w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_2_008
        and w0, w1, #0xff
        ret
.L___atomic_test_and_set_2_01c:
        ldaxrb  w1, [x0]
        stlxrb  w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_2_01c
        and w0, w1, #0xff
        ret
	.size   _(__atomic_test_and_set_2), .-_(__atomic_test_and_set_2)

#endif
        .global _(__atomic_test_and_set_4)
        .type   _(__atomic_test_and_set_4), %function
_(__atomic_test_and_set_4):
#ifdef __TINYC__
        .int 0x52800022
        .int 0x350000c1
        .int 0x085f7c01
        .int 0x08037c02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
        .int 0x085ffc01
        .int 0x0803fc02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
#else
        mov w2, #0x1                    // #1
        cbnz    w1,  .L___atomic_test_and_set_4_01c
.L___atomic_test_and_set_4_008:
        ldxrb   w1, [x0]
        stxrb   w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_4_008
        and w0, w1, #0xff
        ret
.L___atomic_test_and_set_4_01c:
        ldaxrb  w1, [x0]
        stlxrb  w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_4_01c
        and w0, w1, #0xff
        ret
	.size   _(__atomic_test_and_set_4), .-_(__atomic_test_and_set_4)

#endif
        .global _(__atomic_test_and_set_8)
        .type   _(__atomic_test_and_set_8), %function
_(__atomic_test_and_set_8):
#ifdef __TINYC__
        .int 0x52800022
        .int 0x350000c1
        .int 0x085f7c01
        .int 0x08037c02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
        .int 0x085ffc01
        .int 0x0803fc02
        .int 0x35ffffc3
        .int 0x12001c20
        .int 0xd65f03c0
#else
        mov w2, #0x1                    // #1
        cbnz    w1,  .L___atomic_test_and_set_8_01c
.L___atomic_test_and_set_8_008:
        ldxrb   w1, [x0]
        stxrb   w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_8_008
        and w0, w1, #0xff
        ret
.L___atomic_test_and_set_8_01c:
        ldaxrb  w1, [x0]
        stlxrb  w3, w2, [x0]
        cbnz    w3,  .L___atomic_test_and_set_8_01c
        and w0, w1, #0xff
        ret
	.size   _(__atomic_test_and_set_8), .-_(__atomic_test_and_set_8)

#endif
        .global _(atomic_thread_fence)
        .type   _(atomic_thread_fence), %function
_(atomic_thread_fence):
#ifdef __TINYC__
        .int 0xd5033bbf
        .int 0xd65f03c0
#else
        dmb ish
        ret
	.size   _(atomic_thread_fence), .-_(atomic_thread_fence)

#endif
        .global _(atomic_signal_fence)
        .type   _(atomic_signal_fence), %function
_(atomic_signal_fence):
#ifdef __TINYC__
        .int 0xd65f03c0
#else
        ret
	.size   _(atomic_signal_fence), .-_(atomic_signal_fence)

#endif
        .global _(atomic_flag_test_and_set)
        .type   _(atomic_flag_test_and_set), %function
_(atomic_flag_test_and_set):
#ifdef __TINYC__
        .int 0xaa0003e1
        .int 0x52800022
        .int 0x085ffc20
        .int 0x0803fc22
        .int 0x35ffffc3
        .int 0xd65f03c0
#else
        mov x1, x0
        mov w2, #0x1                    // #1
.L_atomic_flag_test_and_set_008:
        ldaxrb  w0, [x1]
        stlxrb  w3, w2, [x1]
        cbnz    w3,  .L_atomic_flag_test_and_set_008
        ret
	.size   _(atomic_flag_test_and_set), .-_(atomic_flag_test_and_set)

#endif
        .global _(atomic_flag_test_and_set_explicit)
        .type   _(atomic_flag_test_and_set_explicit), %function
_(atomic_flag_test_and_set_explicit):
#ifdef __TINYC__
        .int 0xaa0003e1
        .int 0x52800022
        .int 0x085ffc20
        .int 0x0803fc22
        .int 0x35ffffc3
        .int 0xd65f03c0
#else
        mov x1, x0
        mov w2, #0x1                    // #1
.L_atomic_flag_test_and_set_explicit_020:
        ldaxrb  w0, [x1]
        stlxrb  w3, w2, [x1]
        cbnz    w3,  .L_atomic_flag_test_and_set_explicit_020
        ret
	.size   _(atomic_flag_test_and_set_explicit), .-_(atomic_flag_test_and_set_explicit)

#endif
        .global _(atomic_flag_clear)
        .type   _(atomic_flag_clear), %function
_(atomic_flag_clear):
#ifdef __TINYC__
        .int 0x089ffc1f
        .int 0xd65f03c0
#else
        stlrb   wzr, [x0]
        ret
	.size   _(atomic_flag_clear), .-_(atomic_flag_clear)

#endif
        .global _(atomic_flag_clear_explicit)
        .type   _(atomic_flag_clear_explicit), %function
_(atomic_flag_clear_explicit):
#ifdef __TINYC__
        .int 0x089ffc1f
        .int 0xd65f03c0
#else
        stlrb   wzr, [x0]
        ret
	.size   _(atomic_flag_clear_explicit), .-_(atomic_flag_clear_explicit)

#endif
#endif //__aarch64__

/* ---------------------------------------------- */
#if defined __riscv
        .text

        .global _(__atomic_load_1)
        .type   _(__atomic_load_1), %function
_(__atomic_load_1):
#ifdef __TINYC__
        .int 0x0330000f
        .int 0x00054503
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        lbu a0,0(a0)
        fence   rw,rw
        ret
	.size   _(__atomic_load_1), .-_(__atomic_load_1)

#endif
        .global _(__atomic_load_2)
        .type   _(__atomic_load_2), %function
_(__atomic_load_2):
#ifdef __TINYC__
        .int 0x0330000f
        .int 0x00055503
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        lhu a0,0(a0)
        fence   rw,rw
        ret
	.size   _(__atomic_load_2), .-_(__atomic_load_2)

#endif
        .global _(__atomic_load_4)
        .type   _(__atomic_load_4), %function
_(__atomic_load_4):
#ifdef __TINYC__
        .int 0x0330000f
        .short 0x4108
        .int 0x0230000f
        .short 0x2501
        .short 0x8082
#else
        fence   rw,rw
        lw  a0,0(a0)
        fence   r,rw
        sext.w  a0,a0
        ret
	.size   _(__atomic_load_4), .-_(__atomic_load_4)

#endif
        .global _(__atomic_load_8)
        .type   _(__atomic_load_8), %function
_(__atomic_load_8):
#ifdef __TINYC__
        .int 0x0330000f
        .short 0x6108
        .int 0x0230000f
        .short 0x8082
#else
        fence   rw,rw
        ld  a0,0(a0)
        fence   r,rw
        ret
	.size   _(__atomic_load_8), .-_(__atomic_load_8)

#endif
        .global _(__atomic_store_1)
        .type   _(__atomic_store_1), %function
_(__atomic_store_1):
#ifdef __TINYC__
        .int 0x0330000f
        .int 0x00b50023
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        sb  a1,0(a0)
        fence   rw,rw
        ret
	.size   _(__atomic_store_1), .-_(__atomic_store_1)

#endif
        .global _(__atomic_store_2)
        .type   _(__atomic_store_2), %function
_(__atomic_store_2):
#ifdef __TINYC__
        .int 0x0330000f
        .int 0x00b51023
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        sh  a1,0(a0)
        fence   rw,rw
        ret
	.size   _(__atomic_store_2), .-_(__atomic_store_2)

#endif
        .global _(__atomic_store_4)
        .type   _(__atomic_store_4), %function
_(__atomic_store_4):
#ifdef __TINYC__
        .int 0x0310000f
        .short 0xc10c
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,w
        sw  a1,0(a0)
        fence   rw,rw
        ret
	.size   _(__atomic_store_4), .-_(__atomic_store_4)

#endif
        .global _(__atomic_store_8)
        .type   _(__atomic_store_8), %function
_(__atomic_store_8):
#ifdef __TINYC__
        .int 0x0310000f
        .short 0xe10c
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,w
        sd  a1,0(a0)
        fence   rw,rw
        ret
	.size   _(__atomic_store_8), .-_(__atomic_store_8)

#endif
        .global _(__atomic_compare_exchange_1)
        .type   _(__atomic_compare_exchange_1), %function
_(__atomic_compare_exchange_1):
#ifdef __TINYC__
        .int 0x0005c683
        .int 0x00357793
        .int 0x0037979b
        .int 0x0ff00713
        .int 0x00f7173b
        .int 0x00f698bb
        .int 0x00f6163b
        .short 0x9971
        .int 0xfff74313
        .int 0x00e8f8b3
        .short 0x8e79
        .int 0x1605282f
        .int 0x00e87e33
        .int 0x011e1a63
        .int 0x00687e33
        .int 0x00ce6e33
        .int 0x1bc52e2f
        .int 0xfe0e14e3
        .int 0x40f8583b
        .int 0x0188179b
        .int 0x0186969b
        .int 0x4187d79b
        .int 0x4186d69b
        .short 0x9f95
        .int 0x0017b513
        .short 0xc399
        .int 0x01058023
        .short 0x8905
        .short 0x8082
#else
        lbu a3,0(a1)
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a4,255
        sllw    a4,a4,a5
        sllw    a7,a3,a5
        sllw    a2,a2,a5
        andi    a0,a0,-4
        not t1,a4
        and a7,a7,a4
        and a2,a2,a4
.L___atomic_compare_exchange_1_028:
        lr.w.aqrl   a6,(a0)
        and t3,a6,a4
        bne t3,a7, .L___atomic_compare_exchange_1_044
        and t3,a6,t1
        or  t3,t3,a2
        sc.w.rl t3,t3,(a0)
        bnez    t3, .L___atomic_compare_exchange_1_028
.L___atomic_compare_exchange_1_044:
        sraw    a6,a6,a5
        slliw   a5,a6,0x18
        slliw   a3,a3,0x18
        sraiw   a5,a5,0x18
        sraiw   a3,a3,0x18
        subw    a5,a5,a3
        seqz    a0,a5
        beqz    a5, .L___atomic_compare_exchange_1_064
        sb  a6,0(a1)
.L___atomic_compare_exchange_1_064:
        andi    a0,a0,1
        ret
	.size   _(__atomic_compare_exchange_1), .-_(__atomic_compare_exchange_1)

#endif
        .global _(__atomic_compare_exchange_2)
        .type   _(__atomic_compare_exchange_2), %function
_(__atomic_compare_exchange_2):
#ifdef __TINYC__
        .int 0x0005d683
        .int 0x00357713
        .short 0x67c1
        .int 0x0037171b
        .short 0x37fd
        .int 0x00e797bb
        .int 0x00e698bb
        .int 0x00e6163b
        .short 0x9971
        .int 0xfff7c313
        .int 0x00f8f8b3
        .short 0x8e7d
        .int 0x1605282f
        .int 0x00f87e33
        .int 0x011e1a63
        .int 0x00687e33
        .int 0x00ce6e33
        .int 0x1bc52e2f
        .int 0xfe0e14e3
        .int 0x40e8583b
        .int 0x0108179b
        .int 0x0106969b
        .int 0x4107d79b
        .int 0x4106d69b
        .short 0x9f95
        .int 0x0017b513
        .short 0xc399
        .int 0x01059023
        .short 0x8905
        .short 0x8082
#else
        lhu a3,0(a1)
        andi    a4,a0,3
        lui a5,0x10
        slliw   a4,a4,0x3
        addiw   a5,a5,-1 # ffff <.LASF16+0xfec8>
        sllw    a5,a5,a4
        sllw    a7,a3,a4
        sllw    a2,a2,a4
        andi    a0,a0,-4
        not t1,a5
        and a7,a7,a5
        and a2,a2,a5
.L___atomic_compare_exchange_2_028:
        lr.w.aqrl   a6,(a0)
        and t3,a6,a5
        bne t3,a7, .L___atomic_compare_exchange_2_044
        and t3,a6,t1
        or  t3,t3,a2
        sc.w.rl t3,t3,(a0)
        bnez    t3, .L___atomic_compare_exchange_2_028
.L___atomic_compare_exchange_2_044:
        sraw    a6,a6,a4
        slliw   a5,a6,0x10
        slliw   a3,a3,0x10
        sraiw   a5,a5,0x10
        sraiw   a3,a3,0x10
        subw    a5,a5,a3
        seqz    a0,a5
        beqz    a5, .L___atomic_compare_exchange_2_064
        sh  a6,0(a1)
.L___atomic_compare_exchange_2_064:
        andi    a0,a0,1
        ret
	.size   _(__atomic_compare_exchange_2), .-_(__atomic_compare_exchange_2)

#endif
        .global _(__atomic_compare_exchange_4)
        .type   _(__atomic_compare_exchange_4), %function
_(__atomic_compare_exchange_4):
#ifdef __TINYC__
        .short 0x419c
        .int 0x1605272f
        .int 0x00f71563
        .int 0x1ac526af
        .short 0xfaf5
        .int 0x40f707bb
        .int 0x0017b513
        .short 0xc391
        .short 0xc198
        .short 0x8905
        .short 0x8082
#else
        lw  a5,0(a1)
.L___atomic_compare_exchange_4_002:
        lr.w.aqrl   a4,(a0)
        bne a4,a5, .L___atomic_compare_exchange_4_010
        sc.w.rl a3,a2,(a0)
        bnez    a3, .L___atomic_compare_exchange_4_002
.L___atomic_compare_exchange_4_010:
        subw    a5,a4,a5
        seqz    a0,a5
        beqz    a5, .L___atomic_compare_exchange_4_01c
        sw  a4,0(a1)
.L___atomic_compare_exchange_4_01c:
        andi    a0,a0,1
        ret
	.size   _(__atomic_compare_exchange_4), .-_(__atomic_compare_exchange_4)

#endif
        .global _(__atomic_compare_exchange_8)
        .type   _(__atomic_compare_exchange_8), %function
_(__atomic_compare_exchange_8):
#ifdef __TINYC__
        .short 0x619c
        .int 0x1605372f
        .int 0x00f71563
        .int 0x1ac536af
        .short 0xfaf5
        .int 0x40f707b3
        .int 0x0017b513
        .short 0xc391
        .short 0xe198
        .short 0x8905
        .short 0x8082
#else
        ld  a5,0(a1)
.L___atomic_compare_exchange_8_002:
        lr.d.aqrl   a4,(a0)
        bne a4,a5, .L___atomic_compare_exchange_8_010
        sc.d.rl a3,a2,(a0)
        bnez    a3, .L___atomic_compare_exchange_8_002
.L___atomic_compare_exchange_8_010:
        sub a5,a4,a5
        seqz    a0,a5
        beqz    a5, .L___atomic_compare_exchange_8_01c
        sd  a4,0(a1)
.L___atomic_compare_exchange_8_01c:
        andi    a0,a0,1
        ret
	.size   _(__atomic_compare_exchange_8), .-_(__atomic_compare_exchange_8)

#endif
        .global _(__atomic_test_and_set_1)
        .type   _(__atomic_test_and_set_1), %function
_(__atomic_test_and_set_1):
#ifdef __TINYC__
        .int 0x00357793
        .int 0x0037979b
        .short 0x4685
        .short 0x9971
        .int 0x00f696bb
        .int 0x46d5272f
        .int 0x00f7553b
        .int 0x0ff57513
        .short 0x8082
#else
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a3,1
        andi    a0,a0,-4
        sllw    a3,a3,a5
        amoor.w.aqrl    a4,a3,(a0)
        srlw    a0,a4,a5
        zext.b  a0,a0
        ret
	.size   _(__atomic_test_and_set_1), .-_(__atomic_test_and_set_1)

#endif
        .global _(__atomic_test_and_set_2)
        .type   _(__atomic_test_and_set_2), %function
_(__atomic_test_and_set_2):
#ifdef __TINYC__
        .int 0x00357793
        .int 0x0037979b
        .short 0x4685
        .short 0x9971
        .int 0x00f696bb
        .int 0x46d5272f
        .int 0x00f7553b
        .int 0x0ff57513
        .short 0x8082
#else
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a3,1
        andi    a0,a0,-4
        sllw    a3,a3,a5
        amoor.w.aqrl    a4,a3,(a0)
        srlw    a0,a4,a5
        zext.b  a0,a0
        ret
	.size   _(__atomic_test_and_set_2), .-_(__atomic_test_and_set_2)

#endif
        .global _(__atomic_test_and_set_4)
        .type   _(__atomic_test_and_set_4), %function
_(__atomic_test_and_set_4):
#ifdef __TINYC__
        .int 0x00357793
        .int 0x0037979b
        .short 0x4685
        .short 0x9971
        .int 0x00f696bb
        .int 0x46d5272f
        .int 0x00f7553b
        .int 0x0ff57513
        .short 0x8082
#else
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a3,1
        andi    a0,a0,-4
        sllw    a3,a3,a5
        amoor.w.aqrl    a4,a3,(a0)
        srlw    a0,a4,a5
        zext.b  a0,a0
        ret
	.size   _(__atomic_test_and_set_4), .-_(__atomic_test_and_set_4)

#endif
        .global _(__atomic_test_and_set_8)
        .type   _(__atomic_test_and_set_8), %function
_(__atomic_test_and_set_8):
#ifdef __TINYC__
        .int 0x00357793
        .int 0x0037979b
        .short 0x4685
        .short 0x9971
        .int 0x00f696bb
        .int 0x46d5272f
        .int 0x00f7553b
        .int 0x0ff57513
        .short 0x8082
#else
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a3,1
        andi    a0,a0,-4
        sllw    a3,a3,a5
        amoor.w.aqrl    a4,a3,(a0)
        srlw    a0,a4,a5
        zext.b  a0,a0
        ret
	.size   _(__atomic_test_and_set_8), .-_(__atomic_test_and_set_8)

#endif
        .global _(atomic_thread_fence)
        .type   _(atomic_thread_fence), %function
_(atomic_thread_fence):
#ifdef __TINYC__
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        ret
	.size   _(atomic_thread_fence), .-_(atomic_thread_fence)

#endif
        .global _(atomic_signal_fence)
        .type   _(atomic_signal_fence), %function
_(atomic_signal_fence):
#ifdef __TINYC__
        .short 0x8082
#else
        ret
	.size   _(atomic_signal_fence), .-_(atomic_signal_fence)

#endif
        .global _(atomic_flag_test_and_set)
        .type   _(atomic_flag_test_and_set), %function
_(atomic_flag_test_and_set):
#ifdef __TINYC__
        .int 0x00357793
        .int 0x0037979b
        .short 0x4685
        .short 0x9971
        .int 0x00f696bb
        .int 0x46d5272f
        .int 0x00f7553b
        .int 0x0ff57513
        .short 0x8082
#else
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a3,1
        andi    a0,a0,-4
        sllw    a3,a3,a5
        amoor.w.aqrl    a4,a3,(a0)
        srlw    a0,a4,a5
        zext.b  a0,a0
        ret
	.size   _(atomic_flag_test_and_set), .-_(atomic_flag_test_and_set)

#endif
        .global _(atomic_flag_test_and_set_explicit)
        .type   _(atomic_flag_test_and_set_explicit), %function
_(atomic_flag_test_and_set_explicit):
#ifdef __TINYC__
        .int 0x00357793
        .int 0x0037979b
        .short 0x4685
        .short 0x9971
        .int 0x00f696bb
        .int 0x46d5272f
        .int 0x00f7553b
        .int 0x0ff57513
        .short 0x8082
#else
        andi    a5,a0,3
        slliw   a5,a5,0x3
        li  a3,1
        andi    a0,a0,-4
        sllw    a3,a3,a5
        amoor.w.aqrl    a4,a3,(a0)
        srlw    a0,a4,a5
        zext.b  a0,a0
        ret
	.size   _(atomic_flag_test_and_set_explicit), .-_(atomic_flag_test_and_set_explicit)

#endif
        .global _(atomic_flag_clear)
        .type   _(atomic_flag_clear), %function
_(atomic_flag_clear):
#ifdef __TINYC__
        .int 0x0330000f
        .int 0x00050023
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        sb  zero,0(a0)
        fence   rw,rw
        ret
	.size   _(atomic_flag_clear), .-_(atomic_flag_clear)

#endif
        .global _(atomic_flag_clear_explicit)
        .type   _(atomic_flag_clear_explicit), %function
_(atomic_flag_clear_explicit):
#ifdef __TINYC__
        .int 0x0330000f
        .int 0x00050023
        .int 0x0330000f
        .short 0x8082
#else
        fence   rw,rw
        sb  zero,0(a0)
        fence   rw,rw
        ret
	.size   _(atomic_flag_clear_explicit), .-_(atomic_flag_clear_explicit)

#endif
#endif //__riscv
