Skip to content

Commit 7ce2707

Browse files
committed
feat: make OR operand bool normalized
1 parent a4ab332 commit 7ce2707

4 files changed

Lines changed: 49 additions & 4 deletions

File tree

src/arch/z80/peephole/opts/020_o1_bool_norm_empty.opt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,5 @@ IF {{
2626
"call .core.__GEF", "call .core.__LEI16", "call .core.__LEI8", "call .core.__LTI8",
2727
"call .core.__ANDF", "call .core.__EQF", "call .core.__GTF", "call .core.__LTI16",
2828
"call .core.__LEF", "call .core.__LEI32", "call .core.__LTF", "call .core.__LTI32",
29-
"call .core.__NEF", "call .core.__NOTF")
29+
"call .core.__NEF", "call .core.__NOTF", "call .core.__ORF")
3030
}}

tests/functional/arch/zx48k/or16.asm

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,23 +27,38 @@ _b:
2727
ld hl, (_a)
2828
ld a, h
2929
or l
30+
sub 1
31+
sbc a, a
32+
inc a
3033
ld (_b), a
3134
ld hl, (_a)
3235
ld a, 0FFh
36+
sub 1
37+
sbc a, a
38+
inc a
3339
ld (_b), a
3440
ld hl, (_a)
3541
ld a, h
3642
or l
43+
sub 1
44+
sbc a, a
45+
inc a
3746
ld (_b), a
3847
ld hl, (_a)
3948
ld a, 0FFh
49+
sub 1
50+
sbc a, a
51+
inc a
4052
ld (_b), a
4153
ld de, (_a)
4254
ld hl, (_a)
4355
ld a, h
4456
or l
4557
or d
4658
or e
59+
sub 1
60+
sbc a, a
61+
inc a
4762
ld (_b), a
4863
ld hl, 0
4964
ld b, h

tests/functional/arch/zx48k/or32.asm

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ _b:
3131
ld de, 0
3232
ld hl, 0
3333
call .core.__OR32
34+
sub 1
35+
sbc a, a
36+
inc a
3437
ld (_b), a
3538
ld hl, (_a + 2)
3639
push hl
@@ -39,6 +42,9 @@ _b:
3942
ld de, 0
4043
ld hl, 1
4144
call .core.__OR32
45+
sub 1
46+
sbc a, a
47+
inc a
4248
ld (_b), a
4349
ld hl, (_a)
4450
ld de, (_a + 2)
@@ -47,6 +53,9 @@ _b:
4753
ld bc, 0
4854
push bc
4955
call .core.__OR32
56+
sub 1
57+
sbc a, a
58+
inc a
5059
ld (_b), a
5160
ld hl, (_a)
5261
ld de, (_a + 2)
@@ -55,6 +64,9 @@ _b:
5564
ld bc, 1
5665
push bc
5766
call .core.__OR32
67+
sub 1
68+
sbc a, a
69+
inc a
5870
ld (_b), a
5971
ld hl, (_a + 2)
6072
push hl
@@ -63,6 +75,9 @@ _b:
6375
ld hl, (_a)
6476
ld de, (_a + 2)
6577
call .core.__OR32
78+
sub 1
79+
sbc a, a
80+
inc a
6681
ld (_b), a
6782
ld hl, 0
6883
ld b, h
@@ -79,7 +94,7 @@ _b:
7994
ei
8095
ret
8196
;; --- end of user code ---
82-
#line 1 "/zxbasic/src/arch/zx48k/library-asm/or32.asm"
97+
#line 1 "/zxbasic/src/lib/arch/zx48k/runtime/bool/or32.asm"
8398
push namespace core
8499
__OR32: ; Performs logical operation A AND B
85100
; between DEHL and TOP of the stack.
@@ -95,8 +110,8 @@ __OR32: ; Performs logical operation A AND B
95110
or e
96111
or h
97112
or l
98-
#line 26 "/zxbasic/src/arch/zx48k/library-asm/or32.asm"
113+
#line 26 "/zxbasic/src/lib/arch/zx48k/runtime/bool/or32.asm"
99114
ret
100115
pop namespace
101-
#line 57 "or32.bas"
116+
#line 72 "arch/zx48k/or32.bas"
102117
END

tests/functional/arch/zx48k/or8.asm

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,33 @@ _b:
2525
.core.ZXBASIC_USER_DATA_END:
2626
.core.__MAIN_PROGRAM__:
2727
ld a, (_a)
28+
sub 1
29+
sbc a, a
30+
inc a
2831
ld (_b), a
2932
ld a, (_a)
3033
ld a, 1
34+
sub 1
35+
sbc a, a
36+
inc a
3137
ld (_b), a
3238
ld a, (_a)
39+
sub 1
40+
sbc a, a
41+
inc a
3342
ld (_b), a
3443
ld a, (_a)
3544
ld a, 1
45+
sub 1
46+
sbc a, a
47+
inc a
3648
ld (_b), a
3749
ld hl, (_a - 1)
3850
ld a, (_a)
3951
or h
52+
sub 1
53+
sbc a, a
54+
inc a
4055
ld (_b), a
4156
ld hl, 0
4257
ld b, h

0 commit comments

Comments
 (0)