summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Webb <chris@arachsys.com>2025-07-27 22:35:02 +0100
committerDamien George <damien@micropython.org>2025-08-01 14:17:49 +1000
commit953da2080eb9115536101627c7406727c5d44f8b (patch)
treed1832ac9002757b7dc68fb955c7b8bed31dd4f26
parentf39434e9fb17405754277dd62dfea788a42d5afb (diff)
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>
-rw-r--r--tests/micropython/viper_ptr16_store_boundary_intbig.py4
-rw-r--r--tests/micropython/viper_ptr32_store_boundary_intbig.py4
-rw-r--r--tests/micropython/viper_ptr8_store_boundary_intbig.py4
3 files changed, 12 insertions, 0 deletions
diff --git a/tests/micropython/viper_ptr16_store_boundary_intbig.py b/tests/micropython/viper_ptr16_store_boundary_intbig.py
index 1694c61ac..2193eddae 100644
--- a/tests/micropython/viper_ptr16_store_boundary_intbig.py
+++ b/tests/micropython/viper_ptr16_store_boundary_intbig.py
@@ -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):
diff --git a/tests/micropython/viper_ptr32_store_boundary_intbig.py b/tests/micropython/viper_ptr32_store_boundary_intbig.py
index 5109abb9d..b44f31b00 100644
--- a/tests/micropython/viper_ptr32_store_boundary_intbig.py
+++ b/tests/micropython/viper_ptr32_store_boundary_intbig.py
@@ -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):
diff --git a/tests/micropython/viper_ptr8_store_boundary_intbig.py b/tests/micropython/viper_ptr8_store_boundary_intbig.py
index e1fe6dcae..d22a06274 100644
--- a/tests/micropython/viper_ptr8_store_boundary_intbig.py
+++ b/tests/micropython/viper_ptr8_store_boundary_intbig.py
@@ -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):