From c4b5ce4755a09a7f643a83fa14ab3d9e10b52302 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Wed, 11 May 2016 23:22:08 -0500 Subject: [PATCH] More multiple-assignment wrinkle ironing --- loopy/transform/arithmetic.py | 2 +- loopy/transform/precompute.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/loopy/transform/arithmetic.py b/loopy/transform/arithmetic.py index d41222c26..2c50b3f11 100644 --- a/loopy/transform/arithmetic.py +++ b/loopy/transform/arithmetic.py @@ -158,7 +158,7 @@ def collect_common_factors_on_increment(kernel, var_name, vary_by_axes=()): continue if not isinstance(insn, Assignment): - raise LoopyError("'%s' modified by non-expression instruction" + raise LoopyError("'%s' modified by non-single-assignment" % var_name) lhs = insn.assignee diff --git a/loopy/transform/precompute.py b/loopy/transform/precompute.py index 5c9a286de..6ea0c06e6 100644 --- a/loopy/transform/precompute.py +++ b/loopy/transform/precompute.py @@ -426,8 +426,9 @@ def precompute(kernel, subst_use, sweep_inames=[], within=None, import loopy as lp for insn in kernel.instructions: - if isinstance(insn, lp.Assignment): - invg(insn.assignee, kernel, insn) + if isinstance(insn, lp.MultiAssignmentBase): + for assignee in insn.assignees: + invg(assignee, kernel, insn) invg(insn.expression, kernel, insn) access_descriptors = invg.access_descriptors -- GitLab