1.0.24.34: IR2: additional representation for predicates, conditional moves
commit5cf3c4259d529e180d75d4d140f344e600d2b06b
authorPaul Khuong <pvk@pvk.ca>
Sun, 11 Jan 2009 18:33:31 +0000 (11 18:33 +0000)
committerPaul Khuong <pvk@pvk.ca>
Sun, 11 Jan 2009 18:33:31 +0000 (11 18:33 +0000)
tree2d6487690a0ed465465dc4fb4bd5b9273203c7cd
parent06a3d298cb7b8220ef04a50805c01ac1be34d845
1.0.24.34: IR2: additional representation for predicates, conditional moves

 * :CONDITIONAL VOPs can now specify how to interpret the test
   they compute without performing the branch directly. How the
   test is specified is completely platform-dependent and only
   affects new-style :CONDITIONAL VOPs and a new BRANCH-IF VOP
   (src/compiler/$ARCH/pred.lisp).

 * Candidates for conversion to conditional moves are found
   and may be converted, depending on CONVERT-CONDITIONAL-MOVE-P,
   a new VM support routine. C-C-M-P returns NIL to punt on the
   conversion, or 5 values:
    1. name of the VOP to use
    2. TN for the first argument (NIL if none)
    3. TN for the second argument (NIL if none)
    4. TN for the result
    5. A list of info data, which will be appended to the flags

   The correct values will be MOVEd in the argument TNs if needed
   before computing the condition, and the result MOVEd to the right
   TN after the conditional move VOP.
19 files changed:
build-order.lisp-expr
package-data-list.lisp-expr
src/compiler/alpha/pred.lisp
src/compiler/backend.lisp
src/compiler/debug.lisp
src/compiler/hppa/pred.lisp
src/compiler/ir1-translators.lisp
src/compiler/ir2opt.lisp [new file with mode: 0644]
src/compiler/ir2tran.lisp
src/compiler/ltn.lisp
src/compiler/main.lisp
src/compiler/meta-vmdef.lisp
src/compiler/mips/pred.lisp
src/compiler/ppc/pred.lisp
src/compiler/sparc/pred.lisp
src/compiler/vmdef.lisp
src/compiler/vop.lisp
src/compiler/x86-64/pred.lisp
src/compiler/x86/pred.lisp