diff options
| author | Chris Webb <chris@arachsys.com> | 2025-07-27 22:35:02 +0100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2025-08-01 14:17:49 +1000 |
| commit | 953da2080eb9115536101627c7406727c5d44f8b (patch) | |
| tree | d1832ac9002757b7dc68fb955c7b8bed31dd4f26 | |
| parent | f39434e9fb17405754277dd62dfea788a42d5afb (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.py | 4 | ||||
| -rw-r--r-- | tests/micropython/viper_ptr32_store_boundary_intbig.py | 4 | ||||
| -rw-r--r-- | tests/micropython/viper_ptr8_store_boundary_intbig.py | 4 |
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): |
