1# See LICENSE for license details.
2
3#*****************************************************************************
4# amoadd_w.S
5#-----------------------------------------------------------------------------
6#
7# Test amoadd.w instruction.
8#
9
10#include "riscv_test.h"
11#include "test_macros.h"
12
13RVTEST_RV64U
14RVTEST_CODE_BEGIN
15
16  TEST_CASE(2, a4, 0xffffffff80000000, \
17    li a0, 0xffffffff80000000; \
18    li a1, 0xfffffffffffff800; \
19    la a3, amo_operand; \
20    sw a0, 0(a3); \
21    amoadd.w	a4, a1, 0(a3); \
22  )
23
24  TEST_CASE(3, a5, 0x000000007ffff800, lw a5, 0(a3))
25
26  # try again after a cache miss
27  TEST_CASE(4, a4, 0x000000007ffff800, \
28    li  a1, 0xffffffff80000000; \
29    amoadd.w a4, a1, 0(a3); \
30  )
31
32  TEST_CASE(5, a5, 0xfffffffffffff800, lw a5, 0(a3))
33
34  TEST_PASSFAIL
35
36RVTEST_CODE_END
37
38  .data
39RVTEST_DATA_BEGIN
40
41  TEST_DATA
42
43RVTEST_DATA_END
44
45    .bss
46    .align 3
47amo_operand:
48    .dword 0
49