improve gen-condition comparisons codegen for simple 32-bit cases
This commit is contained in:
parent
6eec75d5f2
commit
7caf47ae37
|
@ -172,12 +172,13 @@
|
||||||
(let [[lhs rhs] args
|
(let [[lhs rhs] args
|
||||||
ropgen (self:push-opgen rhs)
|
ropgen (self:push-opgen rhs)
|
||||||
pre (when ropgen.setup (ropgen.setup))
|
pre (when ropgen.setup (ropgen.setup))
|
||||||
(left etype) (self:expr-poly lhs)
|
lopgen (self:expr-opgen lhs)
|
||||||
|
left (when lopgen.setup (lopgen.setup) (if ropgen.hi :long :word))
|
||||||
truebranch (if ropgen.cleanup (.. :-if-true-cleanup- depth) truelabel)
|
truebranch (if ropgen.cleanup (.. :-if-true-cleanup- depth) truelabel)
|
||||||
falsebranch (if ropgen.cleanup (.. :-if-false-cleanup- depth) falselabel)
|
falsebranch (if ropgen.cleanup (.. :-if-false-cleanup- depth) falselabel)
|
||||||
hibranch (when (= etype :long)
|
hibranch (when lopgen.hi
|
||||||
[[:lda self.LONG_HI] (ropgen.hi :cmp) (cmp.hibranch truebranch falsebranch) [:lda self.LONG_LO]])
|
[(lopgen.hi :lda) (ropgen.hi :cmp) (cmp.hibranch truebranch falsebranch)])
|
||||||
lobranch [(ropgen.lo :cmp) (cmp.lobranch falsebranch)]
|
lobranch [(lopgen.lo :lda) (ropgen.lo :cmp) (cmp.lobranch falsebranch)]
|
||||||
cleanup (when ropgen.cleanup (ropgen.cleanup))
|
cleanup (when ropgen.cleanup (ropgen.cleanup))
|
||||||
post (if cleanup [truebranch cleanup [:bra truelabel] falsebranch cleanup [:bra falselabel]]
|
post (if cleanup [truebranch cleanup [:bra truelabel] falsebranch cleanup [:bra falselabel]]
|
||||||
?branch-when-true [[:bra truelabel]])]
|
?branch-when-true [[:bra truelabel]])]
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
full compilation to expr-opgen TODO:
|
full compilation to expr-opgen TODO:
|
||||||
- gen-condition could potentially use it for lhs which is on the stack / in a global
|
|
||||||
- word! and long! are a mess right now
|
- word! and long! are a mess right now
|
||||||
- I don't think word-at and long-at could use it
|
- I don't think word-at and long-at could use it
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue