mirror of
https://github.com/Noratrieb/rustv32i.git
synced 2026-01-16 14:25:02 +01:00
atomic tests
This commit is contained in:
parent
023d1645cd
commit
9ad5785106
3 changed files with 133 additions and 7 deletions
59
tests/check/zalrsc.S
Normal file
59
tests/check/zalrsc.S
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# Load-Reserved/Store-Conditional Instructions
|
||||
|
||||
#include "../helper.S"
|
||||
|
||||
.macro RESET_MEM
|
||||
li t0, 0
|
||||
sc.w zero, t0, (t0) # reset reservation set
|
||||
li t1, -1
|
||||
sw t1, 0(t0)
|
||||
li t1, -2
|
||||
sw t1, 4(t0)
|
||||
.endm
|
||||
|
||||
START_TEST
|
||||
RESET_MEM
|
||||
|
||||
lr.w t1, (t0)
|
||||
ASSERT_EQ t1, -1
|
||||
lr.w.aq t1, (t0)
|
||||
ASSERT_EQ t1, -1
|
||||
lr.w.rl t1, (t0)
|
||||
ASSERT_EQ t1, -1
|
||||
lr.w.aqrl t1, (t0)
|
||||
ASSERT_EQ t1, -1
|
||||
|
||||
RESET_MEM
|
||||
|
||||
# invalid SC
|
||||
li t2, 10
|
||||
sc.w t1, t2, (t0)
|
||||
ASSERT_EQ t1, 1
|
||||
li t2, 10
|
||||
sc.w.aq t1, t2, (t0)
|
||||
ASSERT_EQ t1, 1
|
||||
li t2, 10
|
||||
sc.w.rl t1, t2, (t0)
|
||||
ASSERT_EQ t1, 1
|
||||
li t2, 10
|
||||
sc.w.aqrl t1, t2, (t0)
|
||||
ASSERT_EQ t1, 1
|
||||
|
||||
RESET_MEM
|
||||
|
||||
li t1, 10
|
||||
lr.w zero, (t0)
|
||||
sc.w t1, t1, (t0)
|
||||
ASSERT_EQ t1, 0
|
||||
|
||||
li t1, 10
|
||||
lr.w.aq zero, (t0)
|
||||
sc.w.rl t1, t1, (t0)
|
||||
ASSERT_EQ t1, 0
|
||||
|
||||
li t1, 10
|
||||
lr.w.aqrl zero, (t0)
|
||||
sc.w.aqrl t1, t1, (t0)
|
||||
ASSERT_EQ t1, 0
|
||||
|
||||
PASS
|
||||
Loading…
Add table
Add a link
Reference in a new issue