[pypy-commit] pypy ppc-jit-backend: (bivab, hager): Implemented GUARD_FALSE.

hager noreply at buildbot.pypy.org
Fri Oct 21 15:04:12 CEST 2011


Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend
Changeset: r48307:28ec327820ce
Date: 2011-10-21 11:52 +0200
http://bitbucket.org/pypy/pypy/changeset/28ec327820ce/

Log:	(bivab, hager): Implemented GUARD_FALSE.

diff --git a/pypy/jit/backend/ppc/ppcgen/opassembler.py b/pypy/jit/backend/ppc/ppcgen/opassembler.py
--- a/pypy/jit/backend/ppc/ppcgen/opassembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/opassembler.py
@@ -174,6 +174,12 @@
         #                        #      ^^^^ If this condition is met,
         #                        #           then the guard fails.
 
+    def emit_guard_false(self, op, arglocs, regalloc):
+            l0 = arglocs[0]
+            failargs = arglocs[1:]
+            self.mc.cmpi(l0.value, 0)
+            self._emit_guard(op, failargs, c.NE)
+
     # TODO - Evaluate whether this can be done with 
     #        SO bit instead of OV bit => usage of CR
     #        instead of XER could be more efficient
diff --git a/pypy/jit/backend/ppc/ppcgen/regalloc.py b/pypy/jit/backend/ppc/ppcgen/regalloc.py
--- a/pypy/jit/backend/ppc/ppcgen/regalloc.py
+++ b/pypy/jit/backend/ppc/ppcgen/regalloc.py
@@ -269,6 +269,8 @@
         self.possibly_free_vars(op.getfailargs())
         return args
 
+    prepare_guard_false = prepare_guard_true
+
     def prepare_guard_no_overflow(self, op):
         locs = self._prepare_guard(op)
         self.possibly_free_vars(op.getfailargs())


More information about the pypy-commit mailing list