convert ##compare with immediates to ##compare-imm
parent
2c3b2a0b71
commit
cae8fed16c
|
@ -70,21 +70,25 @@ M: ##compare-imm-branch rewrite
|
||||||
dup rewrite-tagged-comparison? [ rewrite-tagged-comparison ] when
|
dup rewrite-tagged-comparison? [ rewrite-tagged-comparison ] when
|
||||||
] when ;
|
] when ;
|
||||||
|
|
||||||
: flip-comparison? ( insn -- ? )
|
: >compare-imm ( insn swap? -- insn' )
|
||||||
dup cc>> cc= eq? [ src1>> vreg>expr constant-expr? ] [ drop f ] if ;
|
[
|
||||||
|
{
|
||||||
: flip-comparison ( insn -- insn' )
|
[ dst>> ]
|
||||||
[ dst>> ]
|
[ src1>> ]
|
||||||
[ src2>> ]
|
[ src2>> ]
|
||||||
[ src1>> vreg>constant ] tri
|
[ cc>> ]
|
||||||
cc= i \ ##compare-imm new-insn ;
|
} cleave
|
||||||
|
] dip [ [ swap ] [ ] bi* ] when
|
||||||
|
[ vreg>constant ] dip
|
||||||
|
i \ ##compare-imm new-insn ; inline
|
||||||
|
|
||||||
M: ##compare rewrite
|
M: ##compare rewrite
|
||||||
dup flip-comparison? [
|
dup [ src1>> ] [ src2>> ] bi
|
||||||
flip-comparison
|
[ vreg>expr constant-expr? ] bi@ 2array {
|
||||||
dup number-values
|
{ { f t } [ f >compare-imm ] }
|
||||||
rewrite
|
{ { t f } [ t >compare-imm ] }
|
||||||
] when ;
|
[ drop ]
|
||||||
|
} case ;
|
||||||
|
|
||||||
: rewrite-redundant-comparison? ( insn -- ? )
|
: rewrite-redundant-comparison? ( insn -- ? )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue