From: Paul K. <pk...@us...> - 2009-01-11 18:33:39
|
Update of /cvsroot/sbcl/sbcl/src/compiler/ppc In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv426/src/compiler/ppc Modified Files: pred.lisp Log Message: 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. Index: pred.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/ppc/pred.lisp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- pred.lisp 14 Jul 2005 18:48:33 -0000 1.2 +++ pred.lisp 11 Jan 2009 18:33:32 -0000 1.3 @@ -16,6 +16,23 @@ (inst b dest))) +;;;; Generic conditional VOPs + +;;; The generic conditional branch, emitted immediately after test +;;; VOPs that only set flags. + +(define-vop (branch-if) + (:info dest flags not-p) + (:ignore dest flags not-p) + (:generator 0 + (error "BRANCH-IF not yet implemented"))) + +(!def-vm-support-routine + convert-conditional-move-p (node dst-tn x-tn y-tn) + (declare (ignore node dst-tn x-tn y-tn)) + nil) + + ;;;; Conditional VOPs: (define-vop (if-eq) |