Author: Richard Plangger <[email protected]>
Branch: vecopt
Changeset: r77545:118fa7ba7526
Date: 2015-05-25 18:00 +0200
http://bitbucket.org/pypy/pypy/changeset/118fa7ba7526/
Log: removed rpython problems
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py
b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -746,7 +746,7 @@
def __init__(self, arg_ptypes, result_ptype, has_descr=False,
arg_clone_ptype=0,
needs_count_in_params=False):
- self.arg_ptypes = list(arg_ptypes) # do not use a tuple. rpython
cannot union
+ self.arg_ptypes = [a for a in arg_ptypes] # do not use a tuple.
rpython cannot union
self.result_ptype = result_ptype
self.has_descr = has_descr
self.arg_clone_ptype = arg_clone_ptype
@@ -780,6 +780,7 @@
off = 0
stride = self.split_pack(pack)
+ assert stride > 0
while off < len(pack.operations):
ops = pack.operations[off:off+stride]
self.transform_pack(ops, off, stride)
@@ -953,7 +954,7 @@
expand_op = ResOperation(expand_opnum, [arg], vbox)
self.preamble_ops.append(expand_op)
else:
- resop = ResOperation(rop.VEC_BOX, [ConstInt(self.pack_ops)], vbox)
+ resop = ResOperation(rop.VEC_BOX, [ConstInt(len(ops))], vbox)
self.preamble_ops.append(resop)
opnum = rop.VEC_FLOAT_PACK
if arg.type == INT:
@@ -967,9 +968,9 @@
class OpToVectorOpConv(OpToVectorOp):
def __init__(self, intype, outtype):
- OpToVectorOp.__init__(self, (intype,), outtype)
self.from_size = intype.getsize()
self.to_size = outtype.getsize()
+ OpToVectorOp.__init__(self, (intype, ), outtype)
def split_pack(self, pack):
if self.from_size > self.to_size:
@@ -992,7 +993,7 @@
class SignExtToVectorOp(OpToVectorOp):
def __init__(self, intype, outtype):
- OpToVectorOp.__init__(self, (intype,), outtype)
+ OpToVectorOp.__init__(self, intype, outtype)
self.size = -1
def split_pack(self, pack):
@@ -1006,7 +1007,7 @@
_, vbox = self.sched_data.getvector_of_box(op0.getarg(0))
vec_reg_size = self.sched_data.vec_reg_size
if vbox.getcount() * self.size > vec_reg_size:
- return vec_reg_size // self.to_size
+ return vec_reg_size // self.size
return vbox.getcount()
def new_result_vector_box(self):
@@ -1029,19 +1030,22 @@
FLOAT_RES = PT_FLOAT_GENERIC
LOAD_RES = PT_GENERIC
+INT_OP_TO_VOP = OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC), INT_RES)
+FLOAT_OP_TO_VOP = OpToVectorOp((PT_FLOAT_GENERIC, PT_FLOAT_GENERIC), FLOAT_RES)
+
ROP_ARG_RES_VECTOR = {
- rop.VEC_INT_ADD: OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC),
INT_RES),
- rop.VEC_INT_SUB: OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC),
INT_RES),
- rop.VEC_INT_MUL: OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC),
INT_RES),
- rop.VEC_INT_AND: OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC),
INT_RES),
- rop.VEC_INT_OR: OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC),
INT_RES),
- rop.VEC_INT_XOR: OpToVectorOp((PT_INT_GENERIC, PT_INT_GENERIC),
INT_RES),
+ rop.VEC_INT_ADD: INT_OP_TO_VOP,
+ rop.VEC_INT_SUB: INT_OP_TO_VOP,
+ rop.VEC_INT_MUL: INT_OP_TO_VOP,
+ rop.VEC_INT_AND: INT_OP_TO_VOP,
+ rop.VEC_INT_OR: INT_OP_TO_VOP,
+ rop.VEC_INT_XOR: INT_OP_TO_VOP,
rop.VEC_INT_SIGNEXT: SignExtToVectorOp((PT_INT_GENERIC,), INT_RES),
- rop.VEC_FLOAT_ADD: OpToVectorOp((PT_FLOAT_GENERIC,PT_FLOAT_GENERIC),
FLOAT_RES),
- rop.VEC_FLOAT_SUB: OpToVectorOp((PT_FLOAT_GENERIC,PT_FLOAT_GENERIC),
FLOAT_RES),
- rop.VEC_FLOAT_MUL: OpToVectorOp((PT_FLOAT_GENERIC,PT_FLOAT_GENERIC),
FLOAT_RES),
+ rop.VEC_FLOAT_ADD: FLOAT_OP_TO_VOP,
+ rop.VEC_FLOAT_SUB: FLOAT_OP_TO_VOP,
+ rop.VEC_FLOAT_MUL: FLOAT_OP_TO_VOP,
rop.VEC_FLOAT_EQ: OpToVectorOp((PT_FLOAT_GENERIC,PT_FLOAT_GENERIC),
INT_RES),
rop.VEC_RAW_LOAD: OpToVectorOp((), LOAD_RES, has_descr=True,
@@ -1069,8 +1073,6 @@
self.preamble_ops = None
self.expansion_byte_count = -1
self.vec_reg_size = vec_reg_size
- self.pack_ops = -1
- self.pack_off = -1
def unpack_rename(self, arg):
return self.unpack_rename_map.get(arg, arg)
@@ -1100,7 +1102,6 @@
def setvector_of_box(self, box, off, vector):
self.box_to_vbox[box] = (off, vector)
-
def isomorphic(l_op, r_op):
""" Same instructions have the same operation name.
TODO what about parameters?
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit