[pypy-commit] pypy ppc-jit-backend-rpythonization: (bivab, hager): Further work on rpythonization, stil more to do
hager
noreply at buildbot.pypy.org
Tue Feb 7 12:24:11 CET 2012
Author: hager <sven.hager at uni-duesseldorf.de>
Branch: ppc-jit-backend-rpythonization
Changeset: r52165:e3a7cc20600f
Date: 2012-02-07 12:23 +0100
http://bitbucket.org/pypy/pypy/changeset/e3a7cc20600f/
Log: (bivab, hager): Further work on rpythonization, stil more to do
diff --git a/pypy/jit/backend/ppc/ppcgen/assembler.py b/pypy/jit/backend/ppc/ppcgen/assembler.py
--- a/pypy/jit/backend/ppc/ppcgen/assembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/assembler.py
@@ -66,7 +66,7 @@
c = asmfunc.AsmCode(len(self.insts)*4)
for i in self.insts:
c.emit(i)#.assemble())
- return c.get_function()
+ #return c.get_function()
def get_idescs(cls):
r = []
diff --git a/pypy/jit/backend/ppc/ppcgen/codebuilder.py b/pypy/jit/backend/ppc/ppcgen/codebuilder.py
--- a/pypy/jit/backend/ppc/ppcgen/codebuilder.py
+++ b/pypy/jit/backend/ppc/ppcgen/codebuilder.py
@@ -22,7 +22,6 @@
from pypy.jit.metainterp.resoperation import rop
from pypy.jit.metainterp.history import (BoxInt, ConstInt, ConstPtr,
ConstFloat, Box, INT, REF, FLOAT)
-from pypy.jit.backend.x86.support import values_array
from pypy.tool.udir import udir
from pypy.rlib.objectmodel import we_are_translated
@@ -962,7 +961,6 @@
def __init__(self, failargs_limit=1000, r0_in_use=False):
PPCAssembler.__init__(self)
self.init_block_builder()
- self.fail_boxes_int = values_array(lltype.Signed, failargs_limit)
self.r0_in_use = r0_in_use
def check(self, desc, v, *args):
@@ -996,7 +994,8 @@
self.ldx(rD.value, 0, rD.value)
def store_reg(self, source_reg, addr):
- self.alloc_scratch_reg(addr)
+ self.alloc_scratch_reg()
+ self.load_imm(r.SCRATCH, addr)
if IS_PPC_32:
self.stwx(source_reg.value, 0, r.SCRATCH.value)
else:
@@ -1021,13 +1020,15 @@
BI = condition[0]
BO = condition[1]
- self.alloc_scratch_reg(addr)
+ self.alloc_scratch_reg()
+ self.load_imm(r.SCRATCH, addr)
self.mtctr(r.SCRATCH.value)
self.free_scratch_reg()
self.bcctr(BO, BI)
def b_abs(self, address, trap=False):
- self.alloc_scratch_reg(address)
+ self.alloc_scratch_reg()
+ self.load_imm(r.SCRATCH, address)
self.mtctr(r.SCRATCH.value)
self.free_scratch_reg()
if trap:
@@ -1154,11 +1155,9 @@
# 64 bit unsigned
self.cmpld(block, a, b)
- def alloc_scratch_reg(self, value=None):
+ def alloc_scratch_reg(self):
assert not self.r0_in_use
self.r0_in_use = True
- if value is not None:
- self.load_imm(r.r0, value)
def free_scratch_reg(self):
assert self.r0_in_use
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
@@ -288,7 +288,8 @@
adr = self.fail_boxes_int.get_addr_for_num(i)
else:
assert 0
- self.mc.alloc_scratch_reg(adr)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, adr)
self.mc.storex(loc.value, 0, r.SCRATCH.value)
self.mc.free_scratch_reg()
elif loc.is_vfp_reg():
@@ -372,7 +373,8 @@
if resloc:
self.mc.load(resloc.value, loc.value, 0)
- self.mc.alloc_scratch_reg(0)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, 0)
self.mc.store(r.SCRATCH.value, loc.value, 0)
self.mc.store(r.SCRATCH.value, loc1.value, 0)
self.mc.free_scratch_reg()
@@ -748,7 +750,8 @@
bytes_loc = regalloc.force_allocate_reg(bytes_box, forbidden_vars)
scale = self._get_unicode_item_scale()
assert length_loc.is_reg()
- self.mc.alloc_scratch_reg(1 << scale)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, 1 << scale)
if IS_PPC_32:
self.mc.mullw(bytes_loc.value, r.SCRATCH.value, length_loc.value)
else:
@@ -857,7 +860,8 @@
def set_vtable(self, box, vtable):
if self.cpu.vtable_offset is not None:
adr = rffi.cast(lltype.Signed, vtable)
- self.mc.alloc_scratch_reg(adr)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, adr)
self.mc.store(r.SCRATCH.value, r.RES.value, self.cpu.vtable_offset)
self.mc.free_scratch_reg()
@@ -986,7 +990,8 @@
# check value
resloc = regalloc.try_allocate_reg(resbox)
assert resloc is r.RES
- self.mc.alloc_scratch_reg(value)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, value)
self.mc.cmp_op(0, resloc.value, r.SCRATCH.value)
self.mc.free_scratch_reg()
regalloc.possibly_free_var(resbox)
@@ -1051,7 +1056,8 @@
raise AssertionError(kind)
resloc = regalloc.force_allocate_reg(op.result)
regalloc.possibly_free_var(resbox)
- self.mc.alloc_scratch_reg(adr)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, adr)
if op.result.type == FLOAT:
assert 0, "not implemented yet"
else:
diff --git a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
--- a/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
+++ b/pypy/jit/backend/ppc/ppcgen/ppc_assembler.py
@@ -682,7 +682,8 @@
memaddr = self.gen_descr_encoding(descr, args, arglocs)
# store addr in force index field
- self.mc.alloc_scratch_reg(memaddr)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, memaddr)
self.mc.store(r.SCRATCH.value, r.SPP.value, self.ENCODING_AREA)
self.mc.free_scratch_reg()
@@ -886,7 +887,8 @@
return 0
def _write_fail_index(self, fail_index):
- self.mc.alloc_scratch_reg(fail_index)
+ self.mc.alloc_scratch_reg()
+ self.mc.load_imm(r.SCRATCH, fail_index)
self.mc.store(r.SCRATCH.value, r.SPP.value, self.ENCODING_AREA)
self.mc.free_scratch_reg()
diff --git a/pypy/jit/backend/ppc/runner.py b/pypy/jit/backend/ppc/runner.py
--- a/pypy/jit/backend/ppc/runner.py
+++ b/pypy/jit/backend/ppc/runner.py
@@ -44,7 +44,7 @@
def setup_once(self):
self.asm.setup_once()
- def compile_loop(self, inputargs, operations, looptoken, log=False):
+ def compile_loop(self, inputargs, operations, looptoken, log=False, name=""):
self.asm.assemble_loop(inputargs, operations, looptoken, log)
def compile_bridge(self, faildescr, inputargs, operations,
More information about the pypy-commit
mailing list