Author: Richard Plangger <r...@pasra.at> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit