initial commit
[riscv-tests.git] / isa / rv64uv / amoswap_d.S
1 #*****************************************************************************
2 # amoswap_d.S
3 #-----------------------------------------------------------------------------
4 #
5 # Test amoswap.d instruction in a vf block.
6 #
7
8 #include "riscv_test.h"
9 #include "test_macros.h"
10
11 RVTEST_RV64U
12 RVTEST_CODE_BEGIN
13
14 li a4,2048
15 vvcfgivl a4,a4,4,0
16
17 la a5,amodest
18 vmsv vx2,a5
19 lui a0,%hi(vtcode)
20 vf %lo(vtcode)(a0)
21 la a6,dest
22 vsd vx1,a6
23 fence.v.l
24
25 li a1,0
26 loop:
27 ld a0,0(a6)
28 addi x28,a1,2
29 bne a0,a1,fail
30 addi a6,a6,8
31 addi a1,a1,1
32 bne a1,a4,loop
33 j pass
34
35 vtcode:
36 utidx x3
37 addi x3,x3,1
38 amoswap.d x1,x3,0(x2)
39 stop
40
41 TEST_PASSFAIL
42
43 RVTEST_CODE_END
44
45 .data
46 RVTEST_DATA_BEGIN
47
48 TEST_DATA
49
50 amodest:
51 .dword 0
52 dest:
53 .skip 16384
54
55 RVTEST_DATA_END