From 6335d08d530364edb382c5aecd040d8343d3d6f4 Mon Sep 17 00:00:00 2001 From: Jose Rodriguez Date: Tue, 10 Mar 2026 00:11:33 +0100 Subject: [PATCH] fix: bxor16 with 0xFFFF was wrongly optimized. --- src/arch/z80/backend/_16bit.py | 5 ----- tests/functional/arch/zx48k/bxor16.asm | 25 +++++-------------------- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/src/arch/z80/backend/_16bit.py b/src/arch/z80/backend/_16bit.py index f1086ffe3..7df6dc1d9 100644 --- a/src/arch/z80/backend/_16bit.py +++ b/src/arch/z80/backend/_16bit.py @@ -752,11 +752,6 @@ def bxor16(cls, ins: Quad) -> list[str]: output.append("push hl") return output - if op2 == 0xFFFF: # X ^ 0xFFFF = bNOT X - output.append(runtime_call(RuntimeLabel.NEGHL)) - output.append("push hl") - return output - output = cls.get_oper(op1, op2) output.append(runtime_call(RuntimeLabel.BXOR16)) output.append("push hl") diff --git a/tests/functional/arch/zx48k/bxor16.asm b/tests/functional/arch/zx48k/bxor16.asm index b92400d85..e3a12b068 100644 --- a/tests/functional/arch/zx48k/bxor16.asm +++ b/tests/functional/arch/zx48k/bxor16.asm @@ -30,8 +30,9 @@ _b: call .core.__BXOR16 ld a, l ld (_b), a + ld de, 65535 ld hl, (_a) - call .core.__NEGHL + call .core.__BXOR16 ld a, l ld (_b), a ld hl, (_a) @@ -42,8 +43,9 @@ _b: call .core.__BXOR16 ld a, l ld (_b), a + ld de, 65535 ld hl, (_a) - call .core.__NEGHL + call .core.__BXOR16 ld a, l ld (_b), a ld de, (_a) @@ -84,22 +86,5 @@ __BXOR16: ld l, a ret pop namespace -#line 46 "arch/zx48k/bxor16.bas" -#line 1 "/zxbasic/src/lib/arch/zx48k/runtime/neg16.asm" - ; Negates HL value (16 bit) - push namespace core -__ABS16: - bit 7, h - ret z -__NEGHL: - ld a, l ; HL = -HL - cpl - ld l, a - ld a, h - cpl - ld h, a - inc hl - ret - pop namespace -#line 47 "arch/zx48k/bxor16.bas" +#line 48 "arch/zx48k/bxor16.bas" END