convert ##compare with immediates to ##compare-imm

db4
Doug Coleman 2009-07-03 19:19:33 -05:00
parent 2c3b2a0b71
commit cae8fed16c
1 changed files with 17 additions and 13 deletions

View File

@ -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 -- ? )
{ {