Author: Richard Plangger <r...@pasra.at> Branch: vecopt Changeset: r77559:39f5a5e73321 Date: 2015-05-26 08:37 +0200 http://bitbucket.org/pypy/pypy/changeset/39f5a5e73321/
Log: added test case for float_truediv (was not included in transformation), float_neg, float_abs added float_abs, float_neg to resop as vector operations diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py --- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py +++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py @@ -1190,6 +1190,26 @@ except NotAVectorizeableLoop: pass + def test_truediv_abs_neg_float(self): + ops = """ + [f9,p10,i11,p4,i12,p2,p5,p13,i14,p7,i15,p8,i16,f17,i18,i19] + guard_early_exit() [p8, p7, p5, p4, p2, f9, i12, i11, p10, i15, i14, p13] + f20 = raw_load(i16, i12, descr=floatarraydescr) + guard_not_invalidated() [p8, p7, p5, p4, p2, f20, None, i12, i11, p10, i15, i14, p13] + i23 = int_add(i12, 8) + f24 = float_truediv(f20, f17) + f25 = float_abs(f20) + f26 = float_neg(f20) + raw_store(i18, i15, f24, descr=floatarraydescr) + i26 = int_add(i14, 1) + i28 = int_add(i15, 8) + i29 = int_ge(i26, i19) + guard_false(i29) [p8, p7, p5, p4, p2, f20, i23, i28, None, p13] + jump(f20, p10, i11, p4, i23, p2, p5, p13, i26, p7, i28, p8, i16, f17, i18, i19) + """ + opt = self.vectorize(self.parse_loop(ops)) + self.debug_print_operations(opt.loop) + def test_reduction_basic(self): trace = """ [p0, p1, p2, p3, p4] 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 @@ -1032,6 +1032,7 @@ 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) +FLOAT_SINGLE_ARG_OP_TO_VOP = OpToVectorOp((PT_FLOAT_GENERIC,), FLOAT_RES) ROP_ARG_RES_VECTOR = { rop.VEC_INT_ADD: INT_OP_TO_VOP, @@ -1046,6 +1047,9 @@ 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_TRUEDIV: FLOAT_OP_TO_VOP, + rop.VEC_FLOAT_ABS: FLOAT_SINGLE_ARG_OP_TO_VOP, + rop.VEC_FLOAT_NEG: FLOAT_SINGLE_ARG_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, @@ -1091,7 +1095,7 @@ op0 = pack.operations[0].getoperation() tovector = ROP_ARG_RES_VECTOR.get(op0.vector, None) if tovector is None: - raise NotImplementedError("vecop map entry missing. trans: pack -> vop") + raise NotImplementedError("missing vecop for '" + op0.getopname() + "'") oplist = [] tovector.as_vector_operation(pack, self, oplist) return oplist diff --git a/rpython/jit/metainterp/resoperation.py b/rpython/jit/metainterp/resoperation.py --- a/rpython/jit/metainterp/resoperation.py +++ b/rpython/jit/metainterp/resoperation.py @@ -462,7 +462,9 @@ 'VEC_FLOAT_ADD/2', 'VEC_FLOAT_SUB/2', 'VEC_FLOAT_MUL/2', - 'VEC_FLOAT_DIV/2', + 'VEC_FLOAT_TRUEDIV/2', + 'VEC_FLOAT_NEG/1', + 'VEC_FLOAT_ABS/1', '_VEC_ARITHMETIC_LAST', 'VEC_FLOAT_EQ/2', @@ -744,7 +746,9 @@ rop.FLOAT_ADD: rop.VEC_FLOAT_ADD, rop.FLOAT_SUB: rop.VEC_FLOAT_SUB, rop.FLOAT_MUL: rop.VEC_FLOAT_MUL, - rop.FLOAT_TRUEDIV: rop.VEC_FLOAT_DIV, + rop.FLOAT_TRUEDIV: rop.VEC_FLOAT_TRUEDIV, + rop.FLOAT_ABS: rop.VEC_FLOAT_ABS, + rop.FLOAT_NEG: rop.VEC_FLOAT_NEG, rop.FLOAT_EQ: rop.VEC_FLOAT_EQ, rop.INT_SIGNEXT: rop.VEC_INT_SIGNEXT, _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit