tests/micropython: Test that viper offset stores don't clobber base reg.

When running the viper boundary tests, assert that the offset stores don't
clobber the base register, which is saved and temporarily modified on some
architectures.

Signed-off-by: Chris Webb <chris@arachsys.com>
This commit is contained in:
Chris Webb 2025-07-27 22:35:02 +01:00 committed by Damien George
parent f39434e9fb
commit 953da2080e
3 changed files with 12 additions and 0 deletions

View file

@ -3,7 +3,9 @@
SET_TEMPLATE = """
@micropython.viper
def set{off}(dest: ptr16):
saved = dest
dest[{off}] = {val}
assert int(saved) == int(dest)
set{off}(buffer)
print(hex(get_index(buffer, {off})))
"""
@ -15,7 +17,9 @@ MASK = (1 << (8 * SIZE)) - 1
@micropython.viper
def set_index(dest: ptr16, i: int, val: uint):
saved = dest
dest[i] = val
assert int(saved) == int(dest)
def get_index(src, i):

View file

@ -3,7 +3,9 @@
SET_TEMPLATE = """
@micropython.viper
def set{off}(dest: ptr32):
saved = dest
dest[{off}] = {val}
assert int(saved) == int(dest)
set{off}(buffer)
print(hex(get_index(buffer, {off})))
"""
@ -15,7 +17,9 @@ MASK = (1 << (8 * SIZE)) - 1
@micropython.viper
def set_index(dest: ptr32, i: int, val: uint):
saved = dest
dest[i] = val
assert int(saved) == int(dest)
def get_index(src, i):

View file

@ -3,7 +3,9 @@
SET_TEMPLATE = """
@micropython.viper
def set{off}(dest: ptr8):
saved = dest
dest[{off}] = {val}
assert int(saved) == int(dest)
set{off}(buffer)
print(hex(get_index(buffer, {off})))
"""
@ -15,7 +17,9 @@ MASK = (1 << (8 * SIZE)) - 1
@micropython.viper
def set_index(dest: ptr8, i: int, val: uint):
saved = dest
dest[i] = val
assert int(dest) == int(saved)
def get_index(src: ptr8, i: int):