Implement floored / and divisor-sign % operators (#745)

Fixes #703
This commit is contained in:
Rangi
2021-02-21 13:14:44 -08:00
committed by GitHub
parent a6d844a9a5
commit 5fd636ac4b
8 changed files with 85 additions and 9 deletions

36
test/asm/div-mod.asm Normal file
View File

@@ -0,0 +1,36 @@
_ASM equ 0
test: MACRO
; Test RGBASM
V equs "_ASM +"
static_assert \#
PURGE V
; Test RGBLINK
V equs "_LINK +"
assert \#
PURGE V
ENDM
for x, -300, 301
for y, -x - 1, x + 2
if y != 0
q = x / y
r = x % y
test (V (q * y + r)) == (V x)
test (V (x + y) % y) == (V r)
test (V (x - y) % y) == (V r)
endc
endr
endr
for x, -300, 301
for p, 31
y = 2 ** p
r = x % y
m = x & (y - 1)
test (V r) == (V m)
endr
endr
SECTION "LINK", ROM0
_LINK::

0
test/asm/div-mod.err Normal file
View File

0
test/asm/div-mod.out Normal file
View File

0
test/asm/div-mod.out.bin Normal file
View File

0
test/asm/math.out.bin Normal file
View File