mirror of
https://github.com/micropython/micropython.git
synced 2026-01-26 05:40:23 +01:00
tests/micropython: Remove big ints dependence for viper boundary tests.
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
Some checks failed
JavaScript code lint and formatting with Biome / eslint (push) Has been cancelled
Check code formatting / code-formatting (push) Has been cancelled
Check spelling with codespell / codespell (push) Has been cancelled
Build docs / build (push) Has been cancelled
Check examples / embedding (push) Has been cancelled
Package mpremote / build (push) Has been cancelled
.mpy file format and tools / test (push) Has been cancelled
Build ports metadata / build (push) Has been cancelled
alif port / build_alif (alif_ae3_build) (push) Has been cancelled
cc3200 port / build (push) Has been cancelled
esp32 port / build_idf (esp32_build_c2_c6) (push) Has been cancelled
esp32 port / build_idf (esp32_build_cmod_spiram_s2) (push) Has been cancelled
esp32 port / build_idf (esp32_build_s3_c3) (push) Has been cancelled
esp8266 port / build (push) Has been cancelled
mimxrt port / build (push) Has been cancelled
nrf port / build (push) Has been cancelled
powerpc port / build (push) Has been cancelled
qemu port / build_and_test_arm (bigendian) (push) Has been cancelled
qemu port / build_and_test_arm (sabrelite) (push) Has been cancelled
qemu port / build_and_test_arm (thumb) (push) Has been cancelled
qemu port / build_and_test_rv32 (push) Has been cancelled
renesas-ra port / build_renesas_ra_board (push) Has been cancelled
rp2 port / build (push) Has been cancelled
samd port / build (push) Has been cancelled
stm32 port / build_stm32 (stm32_misc_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_nucleo_build) (push) Has been cancelled
stm32 port / build_stm32 (stm32_pyb_build) (push) Has been cancelled
unix port / minimal (push) Has been cancelled
unix port / reproducible (push) Has been cancelled
unix port / standard (push) Has been cancelled
unix port / standard_v2 (push) Has been cancelled
unix port / coverage (push) Has been cancelled
unix port / coverage_32bit (push) Has been cancelled
unix port / nanbox (push) Has been cancelled
unix port / longlong (push) Has been cancelled
unix port / float (push) Has been cancelled
unix port / gil_enabled (push) Has been cancelled
unix port / stackless_clang (push) Has been cancelled
unix port / float_clang (push) Has been cancelled
unix port / settrace_stackless (push) Has been cancelled
unix port / macos (push) Has been cancelled
unix port / qemu_mips (push) Has been cancelled
unix port / qemu_arm (push) Has been cancelled
unix port / qemu_riscv64 (push) Has been cancelled
unix port / sanitize_address (push) Has been cancelled
unix port / sanitize_undefined (push) Has been cancelled
webassembly port / build (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Debug, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x64, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, dev, 2022, [17, 18)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2017, [15, 16)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2019, [16, 17)) (push) Has been cancelled
windows port / build-vs (Release, x86, standard, 2022, [17, 18)) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, dev) (push) Has been cancelled
windows port / build-mingw (i686, mingw32, standard) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, dev) (push) Has been cancelled
windows port / build-mingw (x86_64, mingw64, standard) (push) Has been cancelled
windows port / cross-build-on-linux (push) Has been cancelled
zephyr port / build (push) Has been cancelled
Python code lint and formatting with ruff / ruff (push) Has been cancelled
This commit provides an implementation for viper boundary tests that can work even without big int support. Since it uses a fixed-size buffer to hold values to work with, this should work on any platform as long as its integers are at least 32 bits wide, regardless its configuration on how big integers can get. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
This commit is contained in:
committed by
Damien George
parent
f10707febb
commit
b1d5c656de
@@ -15,6 +15,23 @@ SIZE = 2
|
||||
MASK = (1 << (8 * SIZE)) - 1
|
||||
|
||||
|
||||
next_int = 1
|
||||
test_buffer = bytearray(SIZE)
|
||||
|
||||
|
||||
def next_value() -> uint:
|
||||
global next_int
|
||||
global test_buffer
|
||||
for index in range(1, SIZE):
|
||||
test_buffer[index - 1] = test_buffer[index]
|
||||
test_buffer[SIZE - 1] = next_int
|
||||
next_int += 1
|
||||
output = 0
|
||||
for byte in test_buffer:
|
||||
output = (output << 8) | byte
|
||||
return output & MASK
|
||||
|
||||
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr16, i: int, val: uint):
|
||||
saved = dest
|
||||
@@ -27,8 +44,6 @@ def get_index(src, i):
|
||||
|
||||
|
||||
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
|
||||
next = 1
|
||||
val = 0
|
||||
for bit in BIT_THRESHOLDS:
|
||||
print("---", bit)
|
||||
pre, idx, post = (
|
||||
@@ -36,22 +51,10 @@ for bit in BIT_THRESHOLDS:
|
||||
(((1 << bit) - (1 * SIZE)) // SIZE),
|
||||
((1 << bit) // SIZE),
|
||||
)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, pre, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, idx, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, post, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, pre, next_value())
|
||||
set_index(buffer, idx, next_value())
|
||||
set_index(buffer, post, next_value())
|
||||
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=val & MASK))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
exec(SET_TEMPLATE.format(off=idx, val=val & MASK))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
exec(SET_TEMPLATE.format(off=post, val=val & MASK))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=idx, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=post, val=next_value()))
|
||||
@@ -14,6 +14,22 @@ BIT_THRESHOLDS = (5, 8, 11, 12)
|
||||
SIZE = 4
|
||||
MASK = (1 << (8 * SIZE)) - 1
|
||||
|
||||
next_int = 1
|
||||
test_buffer = bytearray(SIZE)
|
||||
|
||||
|
||||
def next_value() -> uint:
|
||||
global next_int
|
||||
global test_buffer
|
||||
for index in range(1, SIZE):
|
||||
test_buffer[index - 1] = test_buffer[index]
|
||||
test_buffer[SIZE - 1] = next_int
|
||||
next_int += 1
|
||||
output = 0
|
||||
for byte in test_buffer:
|
||||
output = (output << 8) | byte
|
||||
return output & MASK
|
||||
|
||||
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr32, i: int, val: uint):
|
||||
@@ -32,8 +48,6 @@ def get_index(src, i):
|
||||
|
||||
|
||||
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
|
||||
next = 1
|
||||
val = 0
|
||||
for bit in BIT_THRESHOLDS:
|
||||
print("---", bit)
|
||||
pre, idx, post = (
|
||||
@@ -41,22 +55,10 @@ for bit in BIT_THRESHOLDS:
|
||||
(((1 << bit) - (1 * SIZE)) // SIZE),
|
||||
((1 << bit) // SIZE),
|
||||
)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, pre, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, idx, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, post, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, pre, next_value())
|
||||
set_index(buffer, idx, next_value())
|
||||
set_index(buffer, post, next_value())
|
||||
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=val & MASK))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
exec(SET_TEMPLATE.format(off=idx, val=val & MASK))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
exec(SET_TEMPLATE.format(off=post, val=val & MASK))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=idx, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=post, val=next_value()))
|
||||
@@ -14,6 +14,22 @@ BIT_THRESHOLDS = (5, 8, 11, 12)
|
||||
SIZE = 1
|
||||
MASK = (1 << (8 * SIZE)) - 1
|
||||
|
||||
next_int = 1
|
||||
test_buffer = bytearray(SIZE)
|
||||
|
||||
|
||||
def next_value() -> uint:
|
||||
global next_int
|
||||
global test_buffer
|
||||
for index in range(1, SIZE):
|
||||
test_buffer[index - 1] = test_buffer[index]
|
||||
test_buffer[SIZE - 1] = next_int
|
||||
next_int += 1
|
||||
output = 0
|
||||
for byte in test_buffer:
|
||||
output = (output << 8) | byte
|
||||
return output & MASK
|
||||
|
||||
|
||||
@micropython.viper
|
||||
def set_index(dest: ptr8, i: int, val: uint):
|
||||
@@ -27,27 +43,13 @@ def get_index(src: ptr8, i: int):
|
||||
|
||||
|
||||
buffer = bytearray(((1 << max(BIT_THRESHOLDS) + 1) // 1024) * 1024)
|
||||
next = 1
|
||||
val = 0
|
||||
for bit in BIT_THRESHOLDS:
|
||||
print("---", bit)
|
||||
pre, idx, post = (((1 << bit) - (2 * SIZE)), ((1 << bit) - (1 * SIZE)), (1 << bit))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, pre, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, idx, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, post, val & MASK)
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
set_index(buffer, pre, next_value())
|
||||
set_index(buffer, idx, next_value())
|
||||
set_index(buffer, post, next_value())
|
||||
print(hex(get_index(buffer, pre)), hex(get_index(buffer, idx)), hex(get_index(buffer, post)))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=val & MASK))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
exec(SET_TEMPLATE.format(off=idx, val=val & MASK))
|
||||
val = (val << 8) + next
|
||||
next += 1
|
||||
exec(SET_TEMPLATE.format(off=post, val=val & MASK))
|
||||
exec(SET_TEMPLATE.format(off=pre, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=idx, val=next_value()))
|
||||
exec(SET_TEMPLATE.format(off=post, val=next_value()))
|
||||
Reference in New Issue
Block a user