From de3c320222e912dcd9f7c5d706eebcfa7db5f7e4 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Fri, 11 Mar 2022 12:19:21 +0900 Subject: [PATCH] Update asm test --- .../atomic_memcpy_load_align1 | 695 +++++++++++++++--- .../atomic_memcpy_load_align16 | 35 +- .../atomic_memcpy_load_align2 | 304 +++++++- .../atomic_memcpy_load_align4 | 35 +- .../atomic_memcpy_load_align8 | 35 +- .../atomic_memcpy_store_align1 | 523 ++++++++++++- .../atomic_memcpy_store_align16 | 87 +-- .../atomic_memcpy_store_align2 | 198 ++++- .../atomic_memcpy_store_align4 | 87 +-- .../atomic_memcpy_store_align8 | 87 +-- .../atomic_memcpy_load_align1 | 695 +++++++++++++++--- .../atomic_memcpy_load_align16 | 35 +- .../atomic_memcpy_load_align2 | 304 +++++++- .../atomic_memcpy_load_align4 | 35 +- .../atomic_memcpy_load_align8 | 35 +- .../atomic_memcpy_store_align1 | 523 ++++++++++++- .../atomic_memcpy_store_align16 | 87 +-- .../atomic_memcpy_store_align2 | 198 ++++- .../atomic_memcpy_store_align4 | 87 +-- .../atomic_memcpy_store_align8 | 87 +-- 20 files changed, 3456 insertions(+), 716 deletions(-) diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align1 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align1 index 01aaf03..c8c5968 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align1 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align1 @@ -1,106 +1,416 @@ asm_test::atomic_memcpy_load_align1::acquire: - sw ra, 76(sp) - sw s0, 72(sp) - sw s1, 68(sp) - sw s2, 64(sp) - sw s3, 60(sp) - sw s4, 56(sp) - sw s5, 52(sp) - sw s6, 48(sp) - sw s7, 44(sp) - sw s8, 40(sp) - sw s9, 36(sp) - sw s10, 32(sp) - sw s11, 28(sp) - lb a2, 31(a1) - sw a2, 24(sp) - lb a2, 30(a1) - sw a2, 20(sp) - lb a2, 29(a1) - sw a2, 16(sp) - lb a2, 28(a1) - sw a2, 12(sp) - lb a2, 27(a1) - sw a2, 8(sp) - lb a7, 26(a1) - lb t0, 25(a1) - lb t1, 24(a1) - lb t2, 23(a1) - lb t3, 22(a1) - lb t4, 21(a1) - lb t5, 20(a1) - lb t6, 19(a1) - lb s0, 18(a1) - lb s1, 17(a1) - lb s2, 16(a1) - lb s3, 15(a1) - lb s4, 14(a1) - lb s5, 13(a1) - lb s6, 12(a1) - lb s7, 11(a1) - lb s8, 10(a1) - lb s9, 9(a1) - lb s10, 8(a1) - lb s11, 7(a1) - lb ra, 6(a1) - lb a6, 5(a1) - lb a5, 4(a1) - lb a4, 3(a1) - lb a3, 2(a1) - lb a2, 1(a1) + sw ra, 44(sp) + addi a4, a1, 3 + andi a3, a4, -4 + sub a2, a3, a1 + li a5, 33 + bltu a2, a5, .LBB0_2 + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 8(sp) + addi a2, a1, 1 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 9(sp) + addi a2, a1, 2 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 10(sp) + #APP + lb a2, 0(a4) + #NO_APP + sb a2, 11(sp) + addi a2, a1, 4 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 12(sp) + addi a2, a1, 5 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 13(sp) + addi a2, a1, 6 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 14(sp) + addi a2, a1, 7 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 15(sp) + addi a2, a1, 8 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 16(sp) + addi a2, a1, 9 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 17(sp) + addi a2, a1, 10 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 18(sp) + addi a2, a1, 11 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 19(sp) + addi a2, a1, 12 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 20(sp) + addi a2, a1, 13 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 21(sp) + addi a2, a1, 14 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 22(sp) + addi a2, a1, 15 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 23(sp) + addi a2, a1, 16 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 24(sp) + addi a2, a1, 17 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 25(sp) + addi a2, a1, 18 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 26(sp) + addi a2, a1, 19 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 27(sp) + addi a2, a1, 20 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 28(sp) + addi a2, a1, 21 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 29(sp) + addi a2, a1, 22 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 30(sp) + addi a2, a1, 23 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 31(sp) + addi a2, a1, 24 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 32(sp) + addi a2, a1, 25 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 33(sp) + addi a2, a1, 26 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 34(sp) + addi a2, a1, 27 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 35(sp) + addi a2, a1, 28 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 36(sp) + addi a2, a1, 29 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 37(sp) + addi a2, a1, 30 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 38(sp) + addi a1, a1, 31 + #APP lb a1, 0(a1) - sb a1, 0(a0) - sb a2, 1(a0) - sb a3, 2(a0) - sb a4, 3(a0) - sb a5, 4(a0) - sb a6, 5(a0) - sb ra, 6(a0) - sb s11, 7(a0) - sb s10, 8(a0) - sb s9, 9(a0) - sb s8, 10(a0) - sb s7, 11(a0) - sb s6, 12(a0) - sb s5, 13(a0) - sb s4, 14(a0) - sb s3, 15(a0) - sb s2, 16(a0) - sb s1, 17(a0) - sb s0, 18(a0) - sb t6, 19(a0) - sb t5, 20(a0) - sb t4, 21(a0) - sb t3, 22(a0) - sb t2, 23(a0) - sb t1, 24(a0) - sb t0, 25(a0) - sb a7, 26(a0) - lw a1, 8(sp) - sb a1, 27(a0) - lw a1, 12(sp) - sb a1, 28(a0) - lw a1, 16(sp) - sb a1, 29(a0) - lw a1, 20(sp) - sb a1, 30(a0) - lw a1, 24(sp) - sb a1, 31(a0) + #NO_APP + sb a1, 39(sp) + j .LBB0_12 +.LBB0_2: + beqz a2, .LBB0_6 + sub a6, a1, a3 + addi a4, sp, 8 + mv a5, a1 +.LBB0_4: + #APP + lb a7, 0(a5) + #NO_APP + mv t0, a6 + sb a7, 0(a4) + addi a4, a4, 1 + addi a6, a6, 1 + addi a5, a5, 1 + bgeu a6, t0, .LBB0_4 + sub a3, a1, a3 + addi a3, a3, 32 + li a4, 4 + bgeu a3, a4, .LBB0_7 + j .LBB0_9 +.LBB0_6: + li a3, 32 +.LBB0_7: + addi a4, sp, 8 + li a5, 3 +.LBB0_8: + add a6, a1, a2 + #APP + lw a6, 0(a6) + #NO_APP + add a7, a4, a2 + sb a6, 0(a7) + srli t0, a6, 24 + sb t0, 3(a7) + srli t0, a6, 16 + sb t0, 2(a7) + srli a6, a6, 8 + sb a6, 1(a7) + addi a3, a3, -4 + addi a2, a2, 4 + bltu a5, a3, .LBB0_8 +.LBB0_9: + beqz a3, .LBB0_12 + addi a4, sp, 8 + add a4, a4, a2 + add a1, a1, a2 +.LBB0_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB0_11 +.LBB0_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt fence r, rw - lw ra, 76(sp) - lw s0, 72(sp) - lw s1, 68(sp) - lw s2, 64(sp) - lw s3, 60(sp) - lw s4, 56(sp) - lw s5, 52(sp) - lw s6, 48(sp) - lw s7, 44(sp) - lw s8, 40(sp) - lw s9, 36(sp) - lw s10, 32(sp) - lw s11, 28(sp) - addi sp, sp, 80 + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB2_2: + beqz a1, .LBB2_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB2_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB2_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB2_7 + j .LBB2_9 +.LBB2_6: + li a2, 32 +.LBB2_7: + addi a3, sp, 32 + li a4, 3 +.LBB2_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB2_8 +.LBB2_9: + beqz a2, .LBB2_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB2_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB2_11 +.LBB2_12: + addi sp, sp, 64 + ret +.LBB4_2: + beqz a2, .LBB4_6 + sub a6, a1, a3 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv t0, a6 + sb a7, 0(a4) + addi a4, a4, 1 + addi a6, a6, 1 + addi a5, a5, 1 + bgeu a6, t0, .LBB4_4 + sub a3, a1, a3 + addi a3, a3, 32 + li a4, 4 + bgeu a3, a4, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a4, sp, 8 + li a5, 3 +.LBB4_8: + add a6, a1, a2 + #APP + lw a6, 0(a6) + #NO_APP + add a7, a4, a2 + sb a6, 0(a7) + srli t0, a6, 24 + sb t0, 3(a7) + srli t0, a6, 16 + sb t0, 2(a7) + srli a6, a6, 8 + sb a6, 1(a7) + addi a3, a3, -4 + addi a2, a2, 4 + bltu a5, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a4, sp, 8 + add a4, a4, a2 + add a1, a1, a2 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_load_align1::read_volatile_acquire_fence: sw ra, 76(sp) @@ -206,3 +516,188 @@ asm_test::atomic_memcpy_load_align1::read_volatile_acquire_fence: lw s11, 28(sp) addi sp, sp, 80 ret +.LBB2_2: + beqz a1, .LBB2_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB2_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB2_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB2_7 + j .LBB2_9 +.LBB2_6: + li a2, 32 +.LBB2_7: + addi a3, sp, 32 + li a4, 3 +.LBB2_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB2_8 +.LBB2_9: + beqz a2, .LBB2_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB2_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB2_11 +.LBB2_12: + addi sp, sp, 64 + ret +.LBB4_2: + beqz a2, .LBB4_6 + sub a6, a1, a3 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv t0, a6 + sb a7, 0(a4) + addi a4, a4, 1 + addi a6, a6, 1 + addi a5, a5, 1 + bgeu a6, t0, .LBB4_4 + sub a3, a1, a3 + addi a3, a3, 32 + li a4, 4 + bgeu a3, a4, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a4, sp, 8 + li a5, 3 +.LBB4_8: + add a6, a1, a2 + #APP + lw a6, 0(a6) + #NO_APP + add a7, a4, a2 + sb a6, 0(a7) + srli t0, a6, 24 + sb t0, 3(a7) + srli t0, a6, 16 + sb t0, 2(a7) + srli a6, a6, 8 + sb a6, 1(a7) + addi a3, a3, -4 + addi a2, a2, 4 + bltu a5, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a4, sp, 8 + add a4, a4, a2 + add a1, a1, a2 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 + ret diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align16 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align16 index 5e43c88..18bc36f 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align16 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align16 @@ -1,11 +1,34 @@ asm_test::atomic_memcpy_load_align16::acquire: - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - lw a6, 12(a1) - lw a7, 8(a1) - lw t0, 4(a1) + #APP + lw a2, 0(a2) + #NO_APP + addi a3, a1, 24 + #APP + lw a3, 0(a3) + #NO_APP + addi a4, a1, 20 + #APP + lw a4, 0(a4) + #NO_APP + addi a5, a1, 16 + #APP + lw a5, 0(a5) + #NO_APP + addi a6, a1, 12 + #APP + lw a6, 0(a6) + #NO_APP + addi a7, a1, 8 + #APP + lw a7, 0(a7) + #NO_APP + addi t0, a1, 4 + #APP + lw t0, 0(t0) + #NO_APP + #APP lw a1, 0(a1) + #NO_APP sw a1, 0(a0) sw t0, 4(a0) sw a7, 8(a0) diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align2 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align2 index 1982057..2ffb59c 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align2 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align2 @@ -1,42 +1,213 @@ asm_test::atomic_memcpy_load_align2::acquire: - sw s0, 12(sp) - sw s1, 8(sp) - lh a2, 30(a1) - lh a3, 28(a1) - lh a4, 26(a1) - lh a5, 24(a1) - lh a6, 22(a1) - lh a7, 20(a1) - lh t0, 18(a1) - lh t1, 16(a1) - lh t2, 14(a1) - lh t3, 12(a1) - lh t4, 10(a1) - lh t5, 8(a1) - lh t6, 6(a1) - lh s0, 4(a1) - lh s1, 2(a1) + sw ra, 44(sp) + addi a2, a1, 3 + andi a3, a2, -4 + sub a2, a3, a1 + li a4, 33 + bltu a2, a4, .LBB4_2 + addi a2, a1, 30 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 38(sp) + addi a2, a1, 28 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 36(sp) + addi a2, a1, 26 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 34(sp) + addi a2, a1, 24 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 32(sp) + addi a2, a1, 22 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 30(sp) + addi a2, a1, 20 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 28(sp) + addi a2, a1, 18 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 26(sp) + addi a2, a1, 16 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 24(sp) + addi a2, a1, 14 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 22(sp) + addi a2, a1, 12 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 20(sp) + addi a2, a1, 10 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 18(sp) + addi a2, a1, 8 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 16(sp) + addi a2, a1, 6 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 14(sp) + addi a2, a1, 4 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 12(sp) + addi a2, a1, 2 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 10(sp) + #APP lh a1, 0(a1) - sh a1, 0(a0) - sh s1, 2(a0) - sh s0, 4(a0) - sh t6, 6(a0) - sh t5, 8(a0) - sh t4, 10(a0) - sh t3, 12(a0) - sh t2, 14(a0) - sh t1, 16(a0) - sh t0, 18(a0) - sh a7, 20(a0) - sh a6, 22(a0) - sh a5, 24(a0) - sh a4, 26(a0) - sh a3, 28(a0) - sh a2, 30(a0) + #NO_APP + sh a1, 8(sp) + j .LBB4_12 +.LBB4_2: + beqz a2, .LBB4_6 + sub a6, a1, a3 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv t0, a6 + sb a7, 0(a4) + addi a4, a4, 1 + addi a6, a6, 1 + addi a5, a5, 1 + bgeu a6, t0, .LBB4_4 + sub a3, a1, a3 + addi a3, a3, 32 + li a4, 4 + bgeu a3, a4, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a4, sp, 8 + li a5, 3 +.LBB4_8: + add a6, a1, a2 + #APP + lw a6, 0(a6) + #NO_APP + add a7, a4, a2 + sb a6, 0(a7) + srli t0, a6, 24 + sb t0, 3(a7) + srli t0, a6, 16 + sb t0, 2(a7) + srli a6, a6, 8 + sb a6, 1(a7) + addi a3, a3, -4 + addi a2, a2, 4 + bltu a5, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a4, sp, 8 + add a4, a4, a2 + add a1, a1, a2 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt fence r, rw - lw s0, 12(sp) - lw s1, 8(sp) - addi sp, sp, 16 + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_load_align2::read_volatile_acquire_fence: sw s0, 12(sp) @@ -78,3 +249,64 @@ asm_test::atomic_memcpy_load_align2::read_volatile_acquire_fence: lw s1, 8(sp) addi sp, sp, 16 ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 + ret diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align4 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align4 index 186dd88..f7ec9dc 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align4 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align4 @@ -1,11 +1,34 @@ asm_test::atomic_memcpy_load_align4::acquire: - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - lw a6, 12(a1) - lw a7, 8(a1) - lw t0, 4(a1) + #APP + lw a2, 0(a2) + #NO_APP + addi a3, a1, 24 + #APP + lw a3, 0(a3) + #NO_APP + addi a4, a1, 20 + #APP + lw a4, 0(a4) + #NO_APP + addi a5, a1, 16 + #APP + lw a5, 0(a5) + #NO_APP + addi a6, a1, 12 + #APP + lw a6, 0(a6) + #NO_APP + addi a7, a1, 8 + #APP + lw a7, 0(a7) + #NO_APP + addi t0, a1, 4 + #APP + lw t0, 0(t0) + #NO_APP + #APP lw a1, 0(a1) + #NO_APP sw a1, 0(a0) sw t0, 4(a0) sw a7, 8(a0) diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align8 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align8 index e7f8982..2310280 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align8 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_load_align8 @@ -1,11 +1,34 @@ asm_test::atomic_memcpy_load_align8::acquire: - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - lw a6, 12(a1) - lw a7, 8(a1) - lw t0, 4(a1) + #APP + lw a2, 0(a2) + #NO_APP + addi a3, a1, 24 + #APP + lw a3, 0(a3) + #NO_APP + addi a4, a1, 20 + #APP + lw a4, 0(a4) + #NO_APP + addi a5, a1, 16 + #APP + lw a5, 0(a5) + #NO_APP + addi a6, a1, 12 + #APP + lw a6, 0(a6) + #NO_APP + addi a7, a1, 8 + #APP + lw a7, 0(a7) + #NO_APP + addi t0, a1, 4 + #APP + lw t0, 0(t0) + #NO_APP + #APP lw a1, 0(a1) + #NO_APP sw a1, 0(a0) sw t0, 4(a0) sw a7, 8(a0) diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align1 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align1 index 5ff2b49..5a80138 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align1 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align1 @@ -1,5 +1,4 @@ asm_test::atomic_memcpy_store_align1::release: - sw ra, 76(sp) lbu a2, 29(a1) lbu a3, 28(a1) lbu a4, 31(a1) @@ -10,7 +9,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 40(sp) + sw a2, 28(sp) lbu a2, 25(a1) lbu a3, 24(a1) lbu a4, 27(a1) @@ -21,7 +20,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 36(sp) + sw a2, 24(sp) lbu a2, 21(a1) lbu a3, 20(a1) lbu a4, 23(a1) @@ -32,7 +31,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 32(sp) + sw a2, 20(sp) lbu a2, 17(a1) lbu a3, 16(a1) lbu a4, 19(a1) @@ -43,7 +42,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 28(sp) + sw a2, 16(sp) lbu a2, 13(a1) lbu a3, 12(a1) lbu a4, 15(a1) @@ -54,7 +53,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 24(sp) + sw a2, 12(sp) lbu a2, 9(a1) lbu a3, 8(a1) lbu a4, 11(a1) @@ -65,7 +64,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 20(sp) + sw a2, 8(sp) lbu a2, 5(a1) lbu a3, 4(a1) lbu a4, 7(a1) @@ -76,7 +75,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a3, a2 - sw a2, 16(sp) + sw a2, 4(sp) lbu a2, 1(a1) lbu a3, 0(a1) lbu a4, 3(a1) @@ -87,29 +86,373 @@ asm_test::atomic_memcpy_store_align1::release: or a1, a3, a1 slli a1, a1, 16 or a1, a1, a2 - sw a1, 12(sp) + sw a1, 0(sp) fence rw, w - lw a1, 40(sp) - lw a2, 36(sp) - lw a3, 32(sp) - lw a4, 28(sp) - sw a1, 72(sp) - sw a2, 68(sp) - sw a3, 64(sp) - sw a4, 60(sp) - lw a1, 24(sp) - lw a2, 20(sp) - lw a3, 16(sp) - lw a4, 12(sp) - sw a1, 56(sp) - sw a2, 52(sp) - sw a3, 48(sp) - sw a4, 44(sp) - addi a1, sp, 44 + lw a1, 28(sp) + lw a2, 24(sp) + lw a3, 20(sp) + sw a1, 60(sp) + sw a2, 56(sp) + sw a3, 52(sp) + lw a1, 16(sp) + lw a2, 12(sp) + lw a3, 8(sp) + lw a4, 4(sp) + sw a1, 48(sp) + sw a2, 44(sp) + sw a3, 40(sp) + sw a4, 36(sp) + lw a4, 0(sp) + addi a3, a0, 3 + andi a2, a3, -4 + sub a1, a2, a0 + li a5, 33 + sw a4, 32(sp) + bltu a1, a5, .LBB2_2 + lbu a1, 32(sp) + #APP + sb a1, 0(a0) + #NO_APP + lbu a1, 33(sp) + addi a2, a0, 1 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 34(sp) + addi a2, a0, 2 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 35(sp) + #APP + sb a1, 0(a3) + #NO_APP + lbu a1, 36(sp) + addi a2, a0, 4 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 37(sp) + addi a2, a0, 5 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 38(sp) + addi a2, a0, 6 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 39(sp) + addi a2, a0, 7 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 40(sp) + addi a2, a0, 8 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 41(sp) + addi a2, a0, 9 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 42(sp) + addi a2, a0, 10 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 43(sp) + addi a2, a0, 11 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 44(sp) + addi a2, a0, 12 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 45(sp) + addi a2, a0, 13 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 46(sp) + addi a2, a0, 14 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 47(sp) + addi a2, a0, 15 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 48(sp) + addi a2, a0, 16 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 49(sp) + addi a2, a0, 17 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 50(sp) + addi a2, a0, 18 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 51(sp) + addi a2, a0, 19 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 52(sp) + addi a2, a0, 20 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 53(sp) + addi a2, a0, 21 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 54(sp) + addi a2, a0, 22 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 55(sp) + addi a2, a0, 23 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 56(sp) + addi a2, a0, 24 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 57(sp) + addi a2, a0, 25 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 58(sp) + addi a2, a0, 26 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 59(sp) + addi a2, a0, 27 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 60(sp) + addi a2, a0, 28 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 61(sp) + addi a2, a0, 29 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 62(sp) + addi a2, a0, 30 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 63(sp) + addi a0, a0, 31 + #APP + sb a1, 0(a0) + #NO_APP + addi sp, sp, 64 + ret +.LBB2_2: + beqz a1, .LBB2_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB2_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB2_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB2_7 + j .LBB2_9 +.LBB2_6: + li a2, 32 +.LBB2_7: + addi a3, sp, 32 + li a4, 3 +.LBB2_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB2_8 +.LBB2_9: + beqz a2, .LBB2_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB2_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB2_11 +.LBB2_12: + addi sp, sp, 64 + ret +.LBB4_2: + beqz a2, .LBB4_6 + sub a6, a1, a3 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv t0, a6 + sb a7, 0(a4) + addi a4, a4, 1 + addi a6, a6, 1 + addi a5, a5, 1 + bgeu a6, t0, .LBB4_4 + sub a3, a1, a3 + addi a3, a3, 32 + li a4, 4 + bgeu a3, a4, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a4, sp, 8 + li a5, 3 +.LBB4_8: + add a6, a1, a2 + #APP + lw a6, 0(a6) + #NO_APP + add a7, a4, a2 + sb a6, 0(a7) + srli t0, a6, 24 + sb t0, 3(a7) + srli t0, a6, 16 + sb t0, 2(a7) + srli a6, a6, 8 + sb a6, 1(a7) + addi a3, a3, -4 + addi a2, a2, 4 + bltu a5, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a4, sp, 8 + add a4, a4, a2 + add a1, a1, a2 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 li a2, 32 call memcpy@plt - lw ra, 76(sp) - addi sp, sp, 80 + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_store_align1::write_volatile_release_fence: sw ra, 44(sp) @@ -208,3 +551,127 @@ asm_test::atomic_memcpy_store_align1::write_volatile_release_fence: lw ra, 44(sp) addi sp, sp, 48 ret +.LBB4_2: + beqz a2, .LBB4_6 + sub a6, a1, a3 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv t0, a6 + sb a7, 0(a4) + addi a4, a4, 1 + addi a6, a6, 1 + addi a5, a5, 1 + bgeu a6, t0, .LBB4_4 + sub a3, a1, a3 + addi a3, a3, 32 + li a4, 4 + bgeu a3, a4, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a4, sp, 8 + li a5, 3 +.LBB4_8: + add a6, a1, a2 + #APP + lw a6, 0(a6) + #NO_APP + add a7, a4, a2 + sb a6, 0(a7) + srli t0, a6, 24 + sb t0, 3(a7) + srli t0, a6, 16 + sb t0, 2(a7) + srli a6, a6, 8 + sb a6, 1(a7) + addi a3, a3, -4 + addi a2, a2, 4 + bltu a5, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a4, sp, 8 + add a4, a4, a2 + add a1, a1, a2 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 + ret diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align16 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align16 index 6f3fc16..f534915 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align16 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align16 @@ -1,54 +1,43 @@ asm_test::atomic_memcpy_store_align16::release: - lw a2, 28(a1) - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - sw a2, 28(sp) - sw a3, 24(sp) - sw a4, 20(sp) - sw a5, 16(sp) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) - lw a1, 0(a1) - sw a2, 12(sp) - sw a3, 8(sp) - sw a4, 4(sp) - sw a1, 0(sp) + lw a3, 4(a1) + lw a4, 8(a1) + lw a5, 12(a1) + lw a6, 16(a1) + lw a7, 20(a1) + lw t0, 28(a1) + lw a1, 24(a1) fence rw, w - lw a1, 4(sp) - lw a2, 20(sp) - lw a3, 8(sp) - lw a4, 24(sp) - sw a1, 36(sp) - sw a2, 52(sp) - sw a3, 40(sp) - sw a4, 56(sp) - lw a1, 12(sp) - lw a2, 28(sp) - lw a3, 16(sp) - lw a4, 0(sp) - sw a1, 44(sp) - sw a2, 60(sp) - sw a3, 48(sp) - sw a4, 32(sp) - lw a1, 36(sp) - sw a1, 4(a0) - lw a1, 40(sp) - sw a1, 8(a0) - lw a1, 44(sp) - sw a1, 12(a0) - lw a1, 52(sp) - sw a1, 20(a0) - lw a1, 56(sp) - sw a1, 24(a0) - lw a1, 60(sp) - sw a1, 28(a0) - lw a1, 48(sp) - sw a1, 16(a0) - lw a1, 32(sp) - sw a1, 0(a0) - addi sp, sp, 64 + addi t1, a0, 28 + #APP + sw t0, 0(t1) + #NO_APP + addi t0, a0, 24 + #APP + sw a1, 0(t0) + #NO_APP + addi a1, a0, 20 + #APP + sw a7, 0(a1) + #NO_APP + addi a1, a0, 16 + #APP + sw a6, 0(a1) + #NO_APP + addi a1, a0, 12 + #APP + sw a5, 0(a1) + #NO_APP + addi a1, a0, 8 + #APP + sw a4, 0(a1) + #NO_APP + addi a1, a0, 4 + #APP + sw a3, 0(a1) + #NO_APP + #APP + sw a2, 0(a0) + #NO_APP ret asm_test::atomic_memcpy_store_align16::write_volatile_release_fence: fence rw, w diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align2 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align2 index 1338ccc..932c7d0 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align2 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align2 @@ -1,67 +1,207 @@ asm_test::atomic_memcpy_store_align2::release: - sw ra, 76(sp) lhu a2, 30(a1) lhu a3, 28(a1) slli a2, a2, 16 lhu a4, 26(a1) or a2, a2, a3 lhu a3, 24(a1) - sw a2, 40(sp) + sw a2, 28(sp) slli a2, a4, 16 lhu a4, 22(a1) or a2, a2, a3 lhu a3, 20(a1) - sw a2, 36(sp) + sw a2, 24(sp) slli a2, a4, 16 lhu a4, 18(a1) or a2, a2, a3 lhu a3, 16(a1) - sw a2, 32(sp) + sw a2, 20(sp) slli a2, a4, 16 lhu a4, 14(a1) or a2, a2, a3 lhu a3, 12(a1) - sw a2, 28(sp) + sw a2, 16(sp) slli a2, a4, 16 lhu a4, 10(a1) or a2, a2, a3 lhu a3, 8(a1) - sw a2, 24(sp) + sw a2, 12(sp) slli a2, a4, 16 lhu a4, 6(a1) or a2, a2, a3 - sw a2, 20(sp) + sw a2, 8(sp) lhu a2, 4(a1) slli a3, a4, 16 lhu a4, 2(a1) lhu a1, 0(a1) or a2, a3, a2 - sw a2, 16(sp) + sw a2, 4(sp) slli a2, a4, 16 or a1, a2, a1 - sw a1, 12(sp) + sw a1, 0(sp) fence rw, w - lw a1, 40(sp) - lw a2, 36(sp) - lw a3, 32(sp) - lw a4, 28(sp) - sw a1, 72(sp) - sw a2, 68(sp) - sw a3, 64(sp) - sw a4, 60(sp) - lw a1, 24(sp) - lw a2, 20(sp) - lw a3, 16(sp) - lw a4, 12(sp) - sw a1, 56(sp) - sw a2, 52(sp) - sw a3, 48(sp) - sw a4, 44(sp) - addi a1, sp, 44 + lw a1, 28(sp) + lw a2, 24(sp) + lw a3, 20(sp) + sw a1, 60(sp) + sw a2, 56(sp) + sw a3, 52(sp) + lw a1, 16(sp) + lw a2, 12(sp) + lw a3, 8(sp) + lw a4, 4(sp) + sw a1, 48(sp) + sw a2, 44(sp) + sw a3, 40(sp) + sw a4, 36(sp) + lw a3, 0(sp) + addi a1, a0, 3 + andi a2, a1, -4 + sub a1, a2, a0 + li a4, 33 + sw a3, 32(sp) + bltu a1, a4, .LBB6_2 + lhu a1, 62(sp) + addi a2, a0, 30 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 60(sp) + addi a2, a0, 28 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 58(sp) + addi a2, a0, 26 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 56(sp) + addi a2, a0, 24 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 54(sp) + addi a2, a0, 22 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 52(sp) + addi a2, a0, 20 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 50(sp) + addi a2, a0, 18 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 48(sp) + addi a2, a0, 16 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 46(sp) + addi a2, a0, 14 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 44(sp) + addi a2, a0, 12 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 42(sp) + addi a2, a0, 10 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 40(sp) + addi a2, a0, 8 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 38(sp) + addi a2, a0, 6 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 36(sp) + addi a2, a0, 4 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 34(sp) + addi a2, a0, 2 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 32(sp) + #APP + sh a1, 0(a0) + #NO_APP + addi sp, sp, 64 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a2 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a6, 0(a3) + mv a7, a5 + #APP + sb a6, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a7, .LBB6_4 + sub a2, a0, a2 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: li a2, 32 - call memcpy@plt - lw ra, 76(sp) - addi sp, sp, 80 +.LBB6_7: + addi a3, sp, 32 + li a4, 3 +.LBB6_8: + add a5, a3, a1 + lbu a6, 1(a5) + lbu a7, 0(a5) + lbu t0, 3(a5) + lbu a5, 2(a5) + slli a6, a6, 8 + or a6, a6, a7 + slli a7, t0, 8 + or a5, a7, a5 + slli a5, a5, 16 + or a5, a5, a6 + add a6, a0, a1 + #APP + sw a5, 0(a6) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a4, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a3, a1 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_store_align2::write_volatile_release_fence: sw ra, 44(sp) diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align4 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align4 index 554459b..c6260a7 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align4 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align4 @@ -1,54 +1,43 @@ asm_test::atomic_memcpy_store_align4::release: - lw a2, 28(a1) - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - sw a2, 28(sp) - sw a3, 24(sp) - sw a4, 20(sp) - sw a5, 16(sp) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) - lw a1, 0(a1) - sw a2, 12(sp) - sw a3, 8(sp) - sw a4, 4(sp) - sw a1, 0(sp) + lw a3, 4(a1) + lw a4, 8(a1) + lw a5, 12(a1) + lw a6, 16(a1) + lw a7, 20(a1) + lw t0, 28(a1) + lw a1, 24(a1) fence rw, w - lw a1, 28(sp) - lw a2, 24(sp) - lw a3, 20(sp) - lw a4, 16(sp) - sw a1, 60(sp) - sw a2, 56(sp) - sw a3, 52(sp) - sw a4, 48(sp) - lw a1, 12(sp) - lw a2, 8(sp) - lw a3, 4(sp) - lw a4, 0(sp) - sw a1, 44(sp) - sw a2, 40(sp) - sw a3, 36(sp) - sw a4, 32(sp) - lw a1, 60(sp) - sw a1, 28(a0) - lw a1, 56(sp) - sw a1, 24(a0) - lw a1, 52(sp) - sw a1, 20(a0) - lw a1, 48(sp) - sw a1, 16(a0) - lw a1, 44(sp) - sw a1, 12(a0) - lw a1, 40(sp) - sw a1, 8(a0) - lw a1, 36(sp) - sw a1, 4(a0) - lw a1, 32(sp) - sw a1, 0(a0) - addi sp, sp, 64 + addi t1, a0, 28 + #APP + sw t0, 0(t1) + #NO_APP + addi t0, a0, 24 + #APP + sw a1, 0(t0) + #NO_APP + addi a1, a0, 20 + #APP + sw a7, 0(a1) + #NO_APP + addi a1, a0, 16 + #APP + sw a6, 0(a1) + #NO_APP + addi a1, a0, 12 + #APP + sw a5, 0(a1) + #NO_APP + addi a1, a0, 8 + #APP + sw a4, 0(a1) + #NO_APP + addi a1, a0, 4 + #APP + sw a3, 0(a1) + #NO_APP + #APP + sw a2, 0(a0) + #NO_APP ret asm_test::atomic_memcpy_store_align4::write_volatile_release_fence: fence rw, w diff --git a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align8 b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align8 index 9ca7b32..0fe0144 100644 --- a/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align8 +++ b/tests/asm-test/asm/riscv32i-unknown-none-elf/atomic_memcpy_store_align8 @@ -1,54 +1,43 @@ asm_test::atomic_memcpy_store_align8::release: - lw a2, 28(a1) - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - sw a2, 28(sp) - sw a3, 24(sp) - sw a4, 20(sp) - sw a5, 16(sp) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) - lw a1, 0(a1) - sw a2, 12(sp) - sw a3, 8(sp) - sw a4, 4(sp) - sw a1, 0(sp) + lw a3, 4(a1) + lw a4, 8(a1) + lw a5, 12(a1) + lw a6, 16(a1) + lw a7, 20(a1) + lw t0, 28(a1) + lw a1, 24(a1) fence rw, w - lw a1, 8(sp) - lw a2, 24(sp) - lw a3, 16(sp) - lw a4, 0(sp) - sw a1, 40(sp) - sw a2, 56(sp) - sw a3, 48(sp) - sw a4, 32(sp) - lw a1, 4(sp) - lw a2, 28(sp) - lw a3, 20(sp) - lw a4, 12(sp) - sw a1, 36(sp) - sw a2, 60(sp) - sw a3, 52(sp) - sw a4, 44(sp) - lw a1, 40(sp) - sw a1, 8(a0) - lw a1, 48(sp) - sw a1, 16(a0) - lw a1, 36(sp) - sw a1, 4(a0) - lw a1, 44(sp) - sw a1, 12(a0) - lw a1, 52(sp) - sw a1, 20(a0) - lw a1, 60(sp) - sw a1, 28(a0) - lw a1, 56(sp) - sw a1, 24(a0) - lw a1, 32(sp) - sw a1, 0(a0) - addi sp, sp, 64 + addi t1, a0, 28 + #APP + sw t0, 0(t1) + #NO_APP + addi t0, a0, 24 + #APP + sw a1, 0(t0) + #NO_APP + addi a1, a0, 20 + #APP + sw a7, 0(a1) + #NO_APP + addi a1, a0, 16 + #APP + sw a6, 0(a1) + #NO_APP + addi a1, a0, 12 + #APP + sw a5, 0(a1) + #NO_APP + addi a1, a0, 8 + #APP + sw a4, 0(a1) + #NO_APP + addi a1, a0, 4 + #APP + sw a3, 0(a1) + #NO_APP + #APP + sw a2, 0(a0) + #NO_APP ret asm_test::atomic_memcpy_store_align8::write_volatile_release_fence: fence rw, w diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align1 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align1 index f309938..f64b985 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align1 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align1 @@ -1,106 +1,416 @@ asm_test::atomic_memcpy_load_align1::acquire: - sw ra, 76(sp) - sw s0, 72(sp) - sw s1, 68(sp) - sw s2, 64(sp) - sw s3, 60(sp) - sw s4, 56(sp) - sw s5, 52(sp) - sw s6, 48(sp) - sw s7, 44(sp) - sw s8, 40(sp) - sw s9, 36(sp) - sw s10, 32(sp) - sw s11, 28(sp) - lb a2, 31(a1) - sw a2, 24(sp) - lb a2, 30(a1) - sw a2, 20(sp) - lb a2, 29(a1) - sw a2, 16(sp) - lb a2, 28(a1) - sw a2, 12(sp) - lb a2, 27(a1) - sw a2, 8(sp) - lb t3, 26(a1) - lb t4, 25(a1) - lb t5, 24(a1) - lb t6, 23(a1) - lb s2, 22(a1) - lb s3, 21(a1) - lb s4, 20(a1) - lb s5, 19(a1) - lb s6, 18(a1) - lb s7, 17(a1) - lb s8, 16(a1) - lb s9, 15(a1) - lb s10, 14(a1) - lb s11, 13(a1) - lb ra, 12(a1) - lb s1, 11(a1) - lb t2, 10(a1) - lb t1, 9(a1) - lb t0, 8(a1) - lb a7, 7(a1) - lb s0, 6(a1) - lb a6, 5(a1) - lb a5, 4(a1) - lb a4, 3(a1) - lb a3, 2(a1) - lb a2, 1(a1) + sw ra, 44(sp) + addi a3, a1, 3 + andi a6, a3, -4 + sub t0, a6, a1 + li a4, 33 + bltu t0, a4, .LBB0_2 + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 8(sp) + addi a2, a1, 1 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 9(sp) + addi a2, a1, 2 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 10(sp) + #APP + lb a2, 0(a3) + #NO_APP + sb a2, 11(sp) + addi a2, a1, 4 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 12(sp) + addi a2, a1, 5 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 13(sp) + addi a2, a1, 6 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 14(sp) + addi a2, a1, 7 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 15(sp) + addi a2, a1, 8 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 16(sp) + addi a2, a1, 9 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 17(sp) + addi a2, a1, 10 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 18(sp) + addi a2, a1, 11 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 19(sp) + addi a2, a1, 12 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 20(sp) + addi a2, a1, 13 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 21(sp) + addi a2, a1, 14 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 22(sp) + addi a2, a1, 15 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 23(sp) + addi a2, a1, 16 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 24(sp) + addi a2, a1, 17 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 25(sp) + addi a2, a1, 18 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 26(sp) + addi a2, a1, 19 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 27(sp) + addi a2, a1, 20 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 28(sp) + addi a2, a1, 21 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 29(sp) + addi a2, a1, 22 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 30(sp) + addi a2, a1, 23 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 31(sp) + addi a2, a1, 24 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 32(sp) + addi a2, a1, 25 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 33(sp) + addi a2, a1, 26 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 34(sp) + addi a2, a1, 27 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 35(sp) + addi a2, a1, 28 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 36(sp) + addi a2, a1, 29 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 37(sp) + addi a2, a1, 30 + #APP + lb a2, 0(a2) + #NO_APP + sb a2, 38(sp) + addi a1, a1, 31 + #APP lb a1, 0(a1) - sb a1, 0(a0) - sb a2, 1(a0) - sb a3, 2(a0) - sb a4, 3(a0) - sb a5, 4(a0) - sb a6, 5(a0) - sb s0, 6(a0) - sb a7, 7(a0) - sb t0, 8(a0) - sb t1, 9(a0) - sb t2, 10(a0) - sb s1, 11(a0) - sb ra, 12(a0) - sb s11, 13(a0) - sb s10, 14(a0) - sb s9, 15(a0) - sb s8, 16(a0) - sb s7, 17(a0) - sb s6, 18(a0) - sb s5, 19(a0) - sb s4, 20(a0) - sb s3, 21(a0) - sb s2, 22(a0) - sb t6, 23(a0) - sb t5, 24(a0) - sb t4, 25(a0) - sb t3, 26(a0) - lw a1, 8(sp) - sb a1, 27(a0) - lw a1, 12(sp) - sb a1, 28(a0) - lw a1, 16(sp) - sb a1, 29(a0) - lw a1, 20(sp) - sb a1, 30(a0) - lw a1, 24(sp) - sb a1, 31(a0) + #NO_APP + sb a1, 39(sp) + j .LBB0_12 +.LBB0_2: + beqz t0, .LBB0_6 + sub a3, a1, a6 + addi a4, sp, 8 + mv a5, a1 +.LBB0_4: + #APP + lb a7, 0(a5) + #NO_APP + mv a2, a3 + sb a7, 0(a4) + addi a4, a4, 1 + addi a3, a3, 1 + addi a5, a5, 1 + bgeu a3, a2, .LBB0_4 + sub a2, a1, a6 + addi a3, a2, 32 + li a2, 4 + bgeu a3, a2, .LBB0_7 + j .LBB0_9 +.LBB0_6: + li a3, 32 +.LBB0_7: + addi a6, sp, 8 + li a7, 3 +.LBB0_8: + add a2, a1, t0 + #APP + lw a2, 0(a2) + #NO_APP + add a4, a6, t0 + sb a2, 0(a4) + srli a5, a2, 24 + sb a5, 3(a4) + srli a5, a2, 16 + sb a5, 2(a4) + srli a2, a2, 8 + sb a2, 1(a4) + addi a3, a3, -4 + addi t0, t0, 4 + bltu a7, a3, .LBB0_8 +.LBB0_9: + beqz a3, .LBB0_12 + addi a2, sp, 8 + add a4, a2, t0 + add a1, a1, t0 +.LBB0_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB0_11 +.LBB0_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt fence r, rw - lw ra, 76(sp) - lw s0, 72(sp) - lw s1, 68(sp) - lw s2, 64(sp) - lw s3, 60(sp) - lw s4, 56(sp) - lw s5, 52(sp) - lw s6, 48(sp) - lw s7, 44(sp) - lw s8, 40(sp) - lw s9, 36(sp) - lw s10, 32(sp) - lw s11, 28(sp) - addi sp, sp, 80 + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB2_2: + beqz a1, .LBB2_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB2_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB2_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB2_7 + j .LBB2_9 +.LBB2_6: + li a2, 32 +.LBB2_7: + addi a6, sp, 32 + li a7, 3 +.LBB2_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB2_8 +.LBB2_9: + beqz a2, .LBB2_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB2_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB2_11 +.LBB2_12: + addi sp, sp, 64 + ret +.LBB4_2: + beqz t0, .LBB4_6 + sub a3, a1, a6 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv a2, a3 + sb a7, 0(a4) + addi a4, a4, 1 + addi a3, a3, 1 + addi a5, a5, 1 + bgeu a3, a2, .LBB4_4 + sub a2, a1, a6 + addi a3, a2, 32 + li a2, 4 + bgeu a3, a2, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a6, sp, 8 + li a7, 3 +.LBB4_8: + add a2, a1, t0 + #APP + lw a2, 0(a2) + #NO_APP + add a4, a6, t0 + sb a2, 0(a4) + srli a5, a2, 24 + sb a5, 3(a4) + srli a5, a2, 16 + sb a5, 2(a4) + srli a2, a2, 8 + sb a2, 1(a4) + addi a3, a3, -4 + addi t0, t0, 4 + bltu a7, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a2, sp, 8 + add a4, a2, t0 + add a1, a1, t0 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_load_align1::read_volatile_acquire_fence: sw ra, 76(sp) @@ -206,3 +516,188 @@ asm_test::atomic_memcpy_load_align1::read_volatile_acquire_fence: lw s11, 28(sp) addi sp, sp, 80 ret +.LBB2_2: + beqz a1, .LBB2_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB2_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB2_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB2_7 + j .LBB2_9 +.LBB2_6: + li a2, 32 +.LBB2_7: + addi a6, sp, 32 + li a7, 3 +.LBB2_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB2_8 +.LBB2_9: + beqz a2, .LBB2_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB2_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB2_11 +.LBB2_12: + addi sp, sp, 64 + ret +.LBB4_2: + beqz t0, .LBB4_6 + sub a3, a1, a6 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv a2, a3 + sb a7, 0(a4) + addi a4, a4, 1 + addi a3, a3, 1 + addi a5, a5, 1 + bgeu a3, a2, .LBB4_4 + sub a2, a1, a6 + addi a3, a2, 32 + li a2, 4 + bgeu a3, a2, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a6, sp, 8 + li a7, 3 +.LBB4_8: + add a2, a1, t0 + #APP + lw a2, 0(a2) + #NO_APP + add a4, a6, t0 + sb a2, 0(a4) + srli a5, a2, 24 + sb a5, 3(a4) + srli a5, a2, 16 + sb a5, 2(a4) + srli a2, a2, 8 + sb a2, 1(a4) + addi a3, a3, -4 + addi t0, t0, 4 + bltu a7, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a2, sp, 8 + add a4, a2, t0 + add a1, a1, t0 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 + ret diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align16 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align16 index 875034b..902a286 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align16 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align16 @@ -1,11 +1,34 @@ asm_test::atomic_memcpy_load_align16::acquire: - lw a7, 24(a1) - lw t0, 20(a1) - lw a5, 16(a1) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) + #APP + lw a6, 0(a2) + #NO_APP + addi a3, a1, 24 + #APP + lw a7, 0(a3) + #NO_APP + addi a4, a1, 20 + #APP + lw t0, 0(a4) + #NO_APP + addi a5, a1, 16 + #APP + lw a5, 0(a5) + #NO_APP + addi a2, a1, 12 + #APP + lw a2, 0(a2) + #NO_APP + addi a3, a1, 8 + #APP + lw a3, 0(a3) + #NO_APP + addi a4, a1, 4 + #APP + lw a4, 0(a4) + #NO_APP + #APP lw a1, 0(a1) + #NO_APP sw a1, 0(a0) sw a4, 4(a0) sw a3, 8(a0) diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align2 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align2 index 9895709..9d70d24 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align2 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align2 @@ -1,42 +1,213 @@ asm_test::atomic_memcpy_load_align2::acquire: - sw s0, 12(sp) - sw s1, 8(sp) - lh a6, 30(a1) - lh a7, 28(a1) - lh t0, 26(a1) - lh t1, 24(a1) - lh t2, 22(a1) - lh t3, 20(a1) - lh t4, 18(a1) - lh t5, 16(a1) - lh t6, 14(a1) - lh a3, 12(a1) - lh a4, 10(a1) - lh a5, 8(a1) - lh a2, 6(a1) - lh s0, 4(a1) - lh s1, 2(a1) + sw ra, 44(sp) + addi a2, a1, 3 + andi a6, a2, -4 + sub t0, a6, a1 + li a3, 33 + bltu t0, a3, .LBB4_2 + addi a2, a1, 30 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 38(sp) + addi a2, a1, 28 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 36(sp) + addi a2, a1, 26 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 34(sp) + addi a2, a1, 24 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 32(sp) + addi a2, a1, 22 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 30(sp) + addi a2, a1, 20 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 28(sp) + addi a2, a1, 18 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 26(sp) + addi a2, a1, 16 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 24(sp) + addi a2, a1, 14 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 22(sp) + addi a2, a1, 12 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 20(sp) + addi a2, a1, 10 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 18(sp) + addi a2, a1, 8 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 16(sp) + addi a2, a1, 6 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 14(sp) + addi a2, a1, 4 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 12(sp) + addi a2, a1, 2 + #APP + lh a2, 0(a2) + #NO_APP + sh a2, 10(sp) + #APP lh a1, 0(a1) - sh a1, 0(a0) - sh s1, 2(a0) - sh s0, 4(a0) - sh a2, 6(a0) - sh a5, 8(a0) - sh a4, 10(a0) - sh a3, 12(a0) - sh t6, 14(a0) - sh t5, 16(a0) - sh t4, 18(a0) - sh t3, 20(a0) - sh t2, 22(a0) - sh t1, 24(a0) - sh t0, 26(a0) - sh a7, 28(a0) - sh a6, 30(a0) + #NO_APP + sh a1, 8(sp) + j .LBB4_12 +.LBB4_2: + beqz t0, .LBB4_6 + sub a3, a1, a6 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv a2, a3 + sb a7, 0(a4) + addi a4, a4, 1 + addi a3, a3, 1 + addi a5, a5, 1 + bgeu a3, a2, .LBB4_4 + sub a2, a1, a6 + addi a3, a2, 32 + li a2, 4 + bgeu a3, a2, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a6, sp, 8 + li a7, 3 +.LBB4_8: + add a2, a1, t0 + #APP + lw a2, 0(a2) + #NO_APP + add a4, a6, t0 + sb a2, 0(a4) + srli a5, a2, 24 + sb a5, 3(a4) + srli a5, a2, 16 + sb a5, 2(a4) + srli a2, a2, 8 + sb a2, 1(a4) + addi a3, a3, -4 + addi t0, t0, 4 + bltu a7, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a2, sp, 8 + add a4, a2, t0 + add a1, a1, t0 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt fence r, rw - lw s0, 12(sp) - lw s1, 8(sp) - addi sp, sp, 16 + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_load_align2::read_volatile_acquire_fence: sw s0, 12(sp) @@ -78,3 +249,64 @@ asm_test::atomic_memcpy_load_align2::read_volatile_acquire_fence: lw s1, 8(sp) addi sp, sp, 16 ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 + ret diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align4 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align4 index 5fdb6b1..766cf43 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align4 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align4 @@ -1,11 +1,34 @@ asm_test::atomic_memcpy_load_align4::acquire: - lw a7, 24(a1) - lw t0, 20(a1) - lw a5, 16(a1) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) + #APP + lw a6, 0(a2) + #NO_APP + addi a3, a1, 24 + #APP + lw a7, 0(a3) + #NO_APP + addi a4, a1, 20 + #APP + lw t0, 0(a4) + #NO_APP + addi a5, a1, 16 + #APP + lw a5, 0(a5) + #NO_APP + addi a2, a1, 12 + #APP + lw a2, 0(a2) + #NO_APP + addi a3, a1, 8 + #APP + lw a3, 0(a3) + #NO_APP + addi a4, a1, 4 + #APP + lw a4, 0(a4) + #NO_APP + #APP lw a1, 0(a1) + #NO_APP sw a1, 0(a0) sw a4, 4(a0) sw a3, 8(a0) diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align8 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align8 index f5525e0..4171c51 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align8 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_load_align8 @@ -1,11 +1,34 @@ asm_test::atomic_memcpy_load_align8::acquire: - lw a7, 24(a1) - lw t0, 20(a1) - lw a5, 16(a1) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) + #APP + lw a6, 0(a2) + #NO_APP + addi a3, a1, 24 + #APP + lw a7, 0(a3) + #NO_APP + addi a4, a1, 20 + #APP + lw t0, 0(a4) + #NO_APP + addi a5, a1, 16 + #APP + lw a5, 0(a5) + #NO_APP + addi a2, a1, 12 + #APP + lw a2, 0(a2) + #NO_APP + addi a3, a1, 8 + #APP + lw a3, 0(a3) + #NO_APP + addi a4, a1, 4 + #APP + lw a4, 0(a4) + #NO_APP + #APP lw a1, 0(a1) + #NO_APP sw a1, 0(a0) sw a4, 4(a0) sw a3, 8(a0) diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align1 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align1 index 9a023dd..6efeec5 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align1 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align1 @@ -1,5 +1,4 @@ asm_test::atomic_memcpy_store_align1::release: - sw ra, 76(sp) lbu a2, 29(a1) lbu a3, 28(a1) lbu a4, 31(a1) @@ -10,7 +9,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 40(sp) + sw a2, 28(sp) lbu a2, 25(a1) lbu a3, 24(a1) lbu a4, 27(a1) @@ -21,7 +20,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 36(sp) + sw a2, 24(sp) lbu a2, 21(a1) lbu a3, 20(a1) lbu a4, 23(a1) @@ -32,7 +31,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 32(sp) + sw a2, 20(sp) lbu a2, 17(a1) lbu a3, 16(a1) lbu a4, 19(a1) @@ -43,7 +42,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 28(sp) + sw a2, 16(sp) lbu a2, 13(a1) lbu a3, 12(a1) lbu a4, 15(a1) @@ -54,7 +53,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 24(sp) + sw a2, 12(sp) lbu a2, 9(a1) lbu a3, 8(a1) lbu a4, 11(a1) @@ -65,7 +64,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 20(sp) + sw a2, 8(sp) lbu a2, 5(a1) lbu a3, 4(a1) lbu a4, 7(a1) @@ -76,7 +75,7 @@ asm_test::atomic_memcpy_store_align1::release: or a3, a3, a5 slli a3, a3, 16 or a2, a2, a3 - sw a2, 16(sp) + sw a2, 4(sp) lbu a2, 1(a1) lbu a3, 0(a1) lbu a4, 3(a1) @@ -87,29 +86,373 @@ asm_test::atomic_memcpy_store_align1::release: or a1, a1, a3 slli a1, a1, 16 or a1, a1, a2 - sw a1, 12(sp) + sw a1, 0(sp) fence rw, w - lw a1, 40(sp) - lw a2, 36(sp) - lw a3, 32(sp) - lw a4, 28(sp) - sw a1, 72(sp) - sw a2, 68(sp) - sw a3, 64(sp) - sw a4, 60(sp) - lw a1, 24(sp) - lw a2, 20(sp) - lw a3, 16(sp) - lw a4, 12(sp) - sw a1, 56(sp) - sw a2, 52(sp) - sw a3, 48(sp) - sw a4, 44(sp) - addi a1, sp, 44 + lw a1, 28(sp) + lw a2, 24(sp) + lw a3, 20(sp) + sw a1, 60(sp) + sw a2, 56(sp) + sw a3, 52(sp) + lw a1, 16(sp) + lw a2, 12(sp) + lw a3, 8(sp) + lw a4, 4(sp) + sw a1, 48(sp) + sw a2, 44(sp) + sw a3, 40(sp) + sw a4, 36(sp) + lw a4, 0(sp) + addi a3, a0, 3 + andi a6, a3, -4 + sub a1, a6, a0 + li a5, 33 + sw a4, 32(sp) + bltu a1, a5, .LBB2_2 + lbu a1, 32(sp) + #APP + sb a1, 0(a0) + #NO_APP + lbu a1, 33(sp) + addi a2, a0, 1 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 34(sp) + addi a2, a0, 2 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 35(sp) + #APP + sb a1, 0(a3) + #NO_APP + lbu a1, 36(sp) + addi a2, a0, 4 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 37(sp) + addi a2, a0, 5 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 38(sp) + addi a2, a0, 6 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 39(sp) + addi a2, a0, 7 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 40(sp) + addi a2, a0, 8 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 41(sp) + addi a2, a0, 9 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 42(sp) + addi a2, a0, 10 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 43(sp) + addi a2, a0, 11 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 44(sp) + addi a2, a0, 12 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 45(sp) + addi a2, a0, 13 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 46(sp) + addi a2, a0, 14 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 47(sp) + addi a2, a0, 15 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 48(sp) + addi a2, a0, 16 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 49(sp) + addi a2, a0, 17 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 50(sp) + addi a2, a0, 18 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 51(sp) + addi a2, a0, 19 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 52(sp) + addi a2, a0, 20 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 53(sp) + addi a2, a0, 21 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 54(sp) + addi a2, a0, 22 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 55(sp) + addi a2, a0, 23 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 56(sp) + addi a2, a0, 24 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 57(sp) + addi a2, a0, 25 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 58(sp) + addi a2, a0, 26 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 59(sp) + addi a2, a0, 27 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 60(sp) + addi a2, a0, 28 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 61(sp) + addi a2, a0, 29 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 62(sp) + addi a2, a0, 30 + #APP + sb a1, 0(a2) + #NO_APP + lbu a1, 63(sp) + addi a0, a0, 31 + #APP + sb a1, 0(a0) + #NO_APP + addi sp, sp, 64 + ret +.LBB2_2: + beqz a1, .LBB2_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB2_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB2_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB2_7 + j .LBB2_9 +.LBB2_6: + li a2, 32 +.LBB2_7: + addi a6, sp, 32 + li a7, 3 +.LBB2_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB2_8 +.LBB2_9: + beqz a2, .LBB2_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB2_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB2_11 +.LBB2_12: + addi sp, sp, 64 + ret +.LBB4_2: + beqz t0, .LBB4_6 + sub a3, a1, a6 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv a2, a3 + sb a7, 0(a4) + addi a4, a4, 1 + addi a3, a3, 1 + addi a5, a5, 1 + bgeu a3, a2, .LBB4_4 + sub a2, a1, a6 + addi a3, a2, 32 + li a2, 4 + bgeu a3, a2, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a6, sp, 8 + li a7, 3 +.LBB4_8: + add a2, a1, t0 + #APP + lw a2, 0(a2) + #NO_APP + add a4, a6, t0 + sb a2, 0(a4) + srli a5, a2, 24 + sb a5, 3(a4) + srli a5, a2, 16 + sb a5, 2(a4) + srli a2, a2, 8 + sb a2, 1(a4) + addi a3, a3, -4 + addi t0, t0, 4 + bltu a7, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a2, sp, 8 + add a4, a2, t0 + add a1, a1, t0 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 li a2, 32 call memcpy@plt - lw ra, 76(sp) - addi sp, sp, 80 + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_store_align1::write_volatile_release_fence: sw ra, 44(sp) @@ -208,3 +551,127 @@ asm_test::atomic_memcpy_store_align1::write_volatile_release_fence: lw ra, 44(sp) addi sp, sp, 48 ret +.LBB4_2: + beqz t0, .LBB4_6 + sub a3, a1, a6 + addi a4, sp, 8 + mv a5, a1 +.LBB4_4: + #APP + lb a7, 0(a5) + #NO_APP + mv a2, a3 + sb a7, 0(a4) + addi a4, a4, 1 + addi a3, a3, 1 + addi a5, a5, 1 + bgeu a3, a2, .LBB4_4 + sub a2, a1, a6 + addi a3, a2, 32 + li a2, 4 + bgeu a3, a2, .LBB4_7 + j .LBB4_9 +.LBB4_6: + li a3, 32 +.LBB4_7: + addi a6, sp, 8 + li a7, 3 +.LBB4_8: + add a2, a1, t0 + #APP + lw a2, 0(a2) + #NO_APP + add a4, a6, t0 + sb a2, 0(a4) + srli a5, a2, 24 + sb a5, 3(a4) + srli a5, a2, 16 + sb a5, 2(a4) + srli a2, a2, 8 + sb a2, 1(a4) + addi a3, a3, -4 + addi t0, t0, 4 + bltu a7, a3, .LBB4_8 +.LBB4_9: + beqz a3, .LBB4_12 + addi a2, sp, 8 + add a4, a2, t0 + add a1, a1, t0 +.LBB4_11: + #APP + lb a2, 0(a1) + #NO_APP + sb a2, 0(a4) + addi a4, a4, 1 + addi a3, a3, -1 + addi a1, a1, 1 + bnez a3, .LBB4_11 +.LBB4_12: + addi a1, sp, 8 + li a2, 32 + call memcpy@plt + fence r, rw + lw ra, 44(sp) + addi sp, sp, 48 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: + li a2, 32 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 + ret diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align16 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align16 index 6f3fc16..09106dc 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align16 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align16 @@ -1,54 +1,43 @@ asm_test::atomic_memcpy_store_align16::release: - lw a2, 28(a1) - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - sw a2, 28(sp) - sw a3, 24(sp) - sw a4, 20(sp) - sw a5, 16(sp) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) - lw a1, 0(a1) - sw a2, 12(sp) - sw a3, 8(sp) - sw a4, 4(sp) - sw a1, 0(sp) + lw a7, 4(a1) + lw t0, 8(a1) + lw t1, 12(a1) + lw a2, 16(a1) + lw a3, 20(a1) + lw a4, 28(a1) + lw a1, 24(a1) fence rw, w - lw a1, 4(sp) - lw a2, 20(sp) - lw a3, 8(sp) - lw a4, 24(sp) - sw a1, 36(sp) - sw a2, 52(sp) - sw a3, 40(sp) - sw a4, 56(sp) - lw a1, 12(sp) - lw a2, 28(sp) - lw a3, 16(sp) - lw a4, 0(sp) - sw a1, 44(sp) - sw a2, 60(sp) - sw a3, 48(sp) - sw a4, 32(sp) - lw a1, 36(sp) - sw a1, 4(a0) - lw a1, 40(sp) - sw a1, 8(a0) - lw a1, 44(sp) - sw a1, 12(a0) - lw a1, 52(sp) - sw a1, 20(a0) - lw a1, 56(sp) - sw a1, 24(a0) - lw a1, 60(sp) - sw a1, 28(a0) - lw a1, 48(sp) - sw a1, 16(a0) - lw a1, 32(sp) - sw a1, 0(a0) - addi sp, sp, 64 + addi a5, a0, 28 + #APP + sw a4, 0(a5) + #NO_APP + addi a4, a0, 24 + #APP + sw a1, 0(a4) + #NO_APP + addi a1, a0, 20 + #APP + sw a3, 0(a1) + #NO_APP + addi a1, a0, 16 + #APP + sw a2, 0(a1) + #NO_APP + addi a1, a0, 12 + #APP + sw t1, 0(a1) + #NO_APP + addi a1, a0, 8 + #APP + sw t0, 0(a1) + #NO_APP + addi a1, a0, 4 + #APP + sw a7, 0(a1) + #NO_APP + #APP + sw a6, 0(a0) + #NO_APP ret asm_test::atomic_memcpy_store_align16::write_volatile_release_fence: fence rw, w diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align2 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align2 index c634ebc..369dfe7 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align2 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align2 @@ -1,67 +1,207 @@ asm_test::atomic_memcpy_store_align2::release: - sw ra, 76(sp) lhu a2, 30(a1) lhu a3, 28(a1) slli a2, a2, 16 lhu a4, 26(a1) or a2, a2, a3 lhu a3, 24(a1) - sw a2, 40(sp) + sw a2, 28(sp) slli a2, a4, 16 lhu a4, 22(a1) or a2, a2, a3 lhu a3, 20(a1) - sw a2, 36(sp) + sw a2, 24(sp) slli a2, a4, 16 lhu a4, 18(a1) or a2, a2, a3 lhu a3, 16(a1) - sw a2, 32(sp) + sw a2, 20(sp) slli a2, a4, 16 lhu a4, 14(a1) or a2, a2, a3 lhu a3, 12(a1) - sw a2, 28(sp) + sw a2, 16(sp) slli a2, a4, 16 lhu a4, 10(a1) or a2, a2, a3 lhu a3, 8(a1) - sw a2, 24(sp) + sw a2, 12(sp) slli a2, a4, 16 lhu a4, 6(a1) or a2, a2, a3 - sw a2, 20(sp) + sw a2, 8(sp) lhu a2, 4(a1) slli a3, a4, 16 lhu a4, 2(a1) lhu a1, 0(a1) or a2, a2, a3 - sw a2, 16(sp) + sw a2, 4(sp) slli a2, a4, 16 or a1, a1, a2 - sw a1, 12(sp) + sw a1, 0(sp) fence rw, w - lw a1, 40(sp) - lw a2, 36(sp) - lw a3, 32(sp) - lw a4, 28(sp) - sw a1, 72(sp) - sw a2, 68(sp) - sw a3, 64(sp) - sw a4, 60(sp) - lw a1, 24(sp) - lw a2, 20(sp) - lw a3, 16(sp) - lw a4, 12(sp) - sw a1, 56(sp) - sw a2, 52(sp) - sw a3, 48(sp) - sw a4, 44(sp) - addi a1, sp, 44 + lw a1, 28(sp) + lw a2, 24(sp) + lw a3, 20(sp) + sw a1, 60(sp) + sw a2, 56(sp) + sw a3, 52(sp) + lw a1, 16(sp) + lw a2, 12(sp) + lw a3, 8(sp) + lw a4, 4(sp) + sw a1, 48(sp) + sw a2, 44(sp) + sw a3, 40(sp) + sw a4, 36(sp) + lw a3, 0(sp) + addi a1, a0, 3 + andi a6, a1, -4 + sub a1, a6, a0 + li a4, 33 + sw a3, 32(sp) + bltu a1, a4, .LBB6_2 + lhu a1, 62(sp) + addi a2, a0, 30 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 60(sp) + addi a2, a0, 28 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 58(sp) + addi a2, a0, 26 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 56(sp) + addi a2, a0, 24 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 54(sp) + addi a2, a0, 22 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 52(sp) + addi a2, a0, 20 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 50(sp) + addi a2, a0, 18 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 48(sp) + addi a2, a0, 16 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 46(sp) + addi a2, a0, 14 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 44(sp) + addi a2, a0, 12 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 42(sp) + addi a2, a0, 10 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 40(sp) + addi a2, a0, 8 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 38(sp) + addi a2, a0, 6 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 36(sp) + addi a2, a0, 4 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 34(sp) + addi a2, a0, 2 + #APP + sh a1, 0(a2) + #NO_APP + lhu a1, 32(sp) + #APP + sh a1, 0(a0) + #NO_APP + addi sp, sp, 64 + ret +.LBB6_2: + beqz a1, .LBB6_6 + sub a5, a0, a6 + addi a3, sp, 32 + mv a4, a0 +.LBB6_4: + lbu a7, 0(a3) + mv a2, a5 + #APP + sb a7, 0(a4) + #NO_APP + addi a4, a4, 1 + addi a5, a5, 1 + addi a3, a3, 1 + bgeu a5, a2, .LBB6_4 + sub a2, a0, a6 + addi a2, a2, 32 + li a3, 4 + bgeu a2, a3, .LBB6_7 + j .LBB6_9 +.LBB6_6: li a2, 32 - call memcpy@plt - lw ra, 76(sp) - addi sp, sp, 80 +.LBB6_7: + addi a6, sp, 32 + li a7, 3 +.LBB6_8: + add a5, a6, a1 + lbu t0, 1(a5) + lbu t1, 0(a5) + lbu a3, 3(a5) + lbu a5, 2(a5) + slli a4, t0, 8 + or a4, a4, t1 + slli a3, a3, 8 + or a3, a3, a5 + slli a3, a3, 16 + or a3, a3, a4 + add a4, a0, a1 + #APP + sw a3, 0(a4) + #NO_APP + addi a2, a2, -4 + addi a1, a1, 4 + bltu a7, a2, .LBB6_8 +.LBB6_9: + beqz a2, .LBB6_12 + add a0, a0, a1 + addi a3, sp, 32 + add a1, a1, a3 +.LBB6_11: + lbu a3, 0(a1) + #APP + sb a3, 0(a0) + #NO_APP + addi a0, a0, 1 + addi a2, a2, -1 + addi a1, a1, 1 + bnez a2, .LBB6_11 +.LBB6_12: + addi sp, sp, 64 ret asm_test::atomic_memcpy_store_align2::write_volatile_release_fence: sw ra, 44(sp) diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align4 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align4 index 554459b..60a831e 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align4 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align4 @@ -1,54 +1,43 @@ asm_test::atomic_memcpy_store_align4::release: - lw a2, 28(a1) - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - sw a2, 28(sp) - sw a3, 24(sp) - sw a4, 20(sp) - sw a5, 16(sp) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) - lw a1, 0(a1) - sw a2, 12(sp) - sw a3, 8(sp) - sw a4, 4(sp) - sw a1, 0(sp) + lw a7, 4(a1) + lw t0, 8(a1) + lw t1, 12(a1) + lw a2, 16(a1) + lw a3, 20(a1) + lw a4, 28(a1) + lw a1, 24(a1) fence rw, w - lw a1, 28(sp) - lw a2, 24(sp) - lw a3, 20(sp) - lw a4, 16(sp) - sw a1, 60(sp) - sw a2, 56(sp) - sw a3, 52(sp) - sw a4, 48(sp) - lw a1, 12(sp) - lw a2, 8(sp) - lw a3, 4(sp) - lw a4, 0(sp) - sw a1, 44(sp) - sw a2, 40(sp) - sw a3, 36(sp) - sw a4, 32(sp) - lw a1, 60(sp) - sw a1, 28(a0) - lw a1, 56(sp) - sw a1, 24(a0) - lw a1, 52(sp) - sw a1, 20(a0) - lw a1, 48(sp) - sw a1, 16(a0) - lw a1, 44(sp) - sw a1, 12(a0) - lw a1, 40(sp) - sw a1, 8(a0) - lw a1, 36(sp) - sw a1, 4(a0) - lw a1, 32(sp) - sw a1, 0(a0) - addi sp, sp, 64 + addi a5, a0, 28 + #APP + sw a4, 0(a5) + #NO_APP + addi a4, a0, 24 + #APP + sw a1, 0(a4) + #NO_APP + addi a1, a0, 20 + #APP + sw a3, 0(a1) + #NO_APP + addi a1, a0, 16 + #APP + sw a2, 0(a1) + #NO_APP + addi a1, a0, 12 + #APP + sw t1, 0(a1) + #NO_APP + addi a1, a0, 8 + #APP + sw t0, 0(a1) + #NO_APP + addi a1, a0, 4 + #APP + sw a7, 0(a1) + #NO_APP + #APP + sw a6, 0(a0) + #NO_APP ret asm_test::atomic_memcpy_store_align4::write_volatile_release_fence: fence rw, w diff --git a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align8 b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align8 index 9ca7b32..c267b20 100644 --- a/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align8 +++ b/tests/asm-test/asm/riscv32imc-unknown-none-elf/atomic_memcpy_store_align8 @@ -1,54 +1,43 @@ asm_test::atomic_memcpy_store_align8::release: - lw a2, 28(a1) - lw a3, 24(a1) - lw a4, 20(a1) - lw a5, 16(a1) - sw a2, 28(sp) - sw a3, 24(sp) - sw a4, 20(sp) - sw a5, 16(sp) - lw a2, 12(a1) - lw a3, 8(a1) - lw a4, 4(a1) - lw a1, 0(a1) - sw a2, 12(sp) - sw a3, 8(sp) - sw a4, 4(sp) - sw a1, 0(sp) + lw a7, 4(a1) + lw t0, 8(a1) + lw t1, 12(a1) + lw a2, 16(a1) + lw a3, 20(a1) + lw a4, 28(a1) + lw a1, 24(a1) fence rw, w - lw a1, 8(sp) - lw a2, 24(sp) - lw a3, 16(sp) - lw a4, 0(sp) - sw a1, 40(sp) - sw a2, 56(sp) - sw a3, 48(sp) - sw a4, 32(sp) - lw a1, 4(sp) - lw a2, 28(sp) - lw a3, 20(sp) - lw a4, 12(sp) - sw a1, 36(sp) - sw a2, 60(sp) - sw a3, 52(sp) - sw a4, 44(sp) - lw a1, 40(sp) - sw a1, 8(a0) - lw a1, 48(sp) - sw a1, 16(a0) - lw a1, 36(sp) - sw a1, 4(a0) - lw a1, 44(sp) - sw a1, 12(a0) - lw a1, 52(sp) - sw a1, 20(a0) - lw a1, 60(sp) - sw a1, 28(a0) - lw a1, 56(sp) - sw a1, 24(a0) - lw a1, 32(sp) - sw a1, 0(a0) - addi sp, sp, 64 + addi a5, a0, 28 + #APP + sw a4, 0(a5) + #NO_APP + addi a4, a0, 24 + #APP + sw a1, 0(a4) + #NO_APP + addi a1, a0, 20 + #APP + sw a3, 0(a1) + #NO_APP + addi a1, a0, 16 + #APP + sw a2, 0(a1) + #NO_APP + addi a1, a0, 12 + #APP + sw t1, 0(a1) + #NO_APP + addi a1, a0, 8 + #APP + sw t0, 0(a1) + #NO_APP + addi a1, a0, 4 + #APP + sw a7, 0(a1) + #NO_APP + #APP + sw a6, 0(a0) + #NO_APP ret asm_test::atomic_memcpy_store_align8::write_volatile_release_fence: fence rw, w