diff --git a/doc/tutorial.rst b/doc/tutorial.rst index 35fcd64f8..f6c8448f0 100644 --- a/doc/tutorial.rst +++ b/doc/tutorial.rst @@ -1919,7 +1919,7 @@ Now to make things more interesting, we'll create a kernel with barriers: barrier(CLK_LOCAL_MEM_FENCE) /* for c (insn rev-depends on insn_0) */; c[990 * i + 99 * j + lid(0) + 1] = 2 * a[980 * i + 98 * j + lid(0) + 1]; barrier(CLK_LOCAL_MEM_FENCE) /* for c (insn_0 depends on insn) */; - e[980 * i + 98 * j + lid(0) + 1] = c[990 * i + 99 * j + 1 + lid(0) + 1] + c[990 * i + 99 * j + -1 + lid(0) + 1]; + e[980 * i + 98 * j + lid(0) + 1] = c[1 + 990 * i + 99 * j + lid(0) + 1] + c[-1 + 990 * i + 99 * j + lid(0) + 1]; } } diff --git a/loopy/target/c/codegen/expression.py b/loopy/target/c/codegen/expression.py index d1a75ea6e..1d7d5d2fd 100644 --- a/loopy/target/c/codegen/expression.py +++ b/loopy/target/c/codegen/expression.py @@ -52,6 +52,7 @@ LocalHardwareAxisIndex, ResolvedFunction, SubArrayRef, + flatten, ) from loopy.target.c import CExpression from loopy.type_inference import TypeInferenceMapper, TypeReader @@ -336,8 +337,8 @@ def make_var(name): result = self.make_subscript( ary, make_var(access_info.array_name), - simplify_using_aff( - self.kernel, self.rec_arith(subscript, "i"))) + flatten(self.rec_arith( + simplify_using_aff(self.kernel, subscript), "i"))) if access_info.vector_index is not None: return self.codegen_state.ast_builder.add_vector_access(