Author: edelsohn
Branch: ppc-backend-2
Changeset: r54707:b08e53fa2e91
Date: 2012-04-23 21:13 -0400
http://bitbucket.org/pypy/pypy/changeset/b08e53fa2e91/

Log:    Add more float regalloc support.

diff --git a/pypy/jit/backend/ppc/regalloc.py b/pypy/jit/backend/ppc/regalloc.py
--- a/pypy/jit/backend/ppc/regalloc.py
+++ b/pypy/jit/backend/ppc/regalloc.py
@@ -280,7 +280,10 @@
         self.possibly_free_vars(list(inputargs))
 
     def possibly_free_var(self, var):
-        self.rm.possibly_free_var(var)
+        if var.type == FLOAT:
+            self.fprm.possibly_free_var(var)
+        else:
+            self.rm.possibly_free_var(var)
 
     def possibly_free_vars(self, vars):
         for var in vars:
@@ -293,12 +296,19 @@
                 self.possibly_free_var(var)
 
     def try_allocate_reg(self, v, selected_reg=None, need_lower_byte=False):
-        return self.rm.try_allocate_reg(v, selected_reg, need_lower_byte)
+        if v.type == FLOAT:
+            return self.fprm.try_allocate_reg(v, selected_reg, need_lower_byte)
+        else:
+            return self.rm.try_allocate_reg(v, selected_reg, need_lower_byte)
 
     def force_allocate_reg(self, var, forbidden_vars=[], selected_reg=None, 
             need_lower_byte=False):
-        return self.rm.force_allocate_reg(var, forbidden_vars, selected_reg,
-                need_lower_byte)
+        if var.type == FLOAT:
+            return self.fprm.force_allocate_reg(var, forbidden_vars,
+                                                selected_reg, need_lower_byte)
+        else:
+            return self.rm.force_allocate_reg(var, forbidden_vars,
+                                              selected_reg, need_lower_byte)
 
     def allocate_scratch_reg(self, type=INT, forbidden_vars=[], 
selected_reg=None):
         assert type == INT # XXX extend this once floats are supported
@@ -331,6 +341,7 @@
 
     def before_call(self, force_store=[], save_all_regs=False):
         self.rm.before_call(force_store, save_all_regs)
+        self.fprm.before_call(force_store, save_all_regs)
 
     def after_call(self, v):
         if v.type == FLOAT:
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to