diff --git a/python/dune/perftool/blockstructured/vectorization.py b/python/dune/perftool/blockstructured/vectorization.py index 18f8fb021b94d513f73cfea82445ce0954a3bf8c..f1c0f3559debb8dc212b7469d5a98d8c27dd181d 100644 --- a/python/dune/perftool/blockstructured/vectorization.py +++ b/python/dune/perftool/blockstructured/vectorization.py @@ -170,13 +170,10 @@ def add_vcl_vector(knl, iname_inner, iname_outer): index = prim.Sum(tuple(prim.Product(z) for z in zip(substitute(expr, {iname_inner:0}).index_tuple, strides))) # add load instruction - code = "{}.load({} + {});".format(vec, alias, index) - # load_id = knl.make_unique_instruction_id(insns=knl.instructions+load_insns, based_on='insn_'+vec+'_load') load_id = idg('insn_'+vec+'_load') - load_insns.append(lp.CInstruction(iname_exprs=[], code=code, read_variables=frozenset({alias}), - within_inames=insn.within_inames|insn.reduction_inames(), - #assignees=(lp.TaggedVariable(vec, 'coeff_vec'), ), #sonst denkt looy das müsste ein array von Vec4d sein... - id=load_id)) + call_load = prim.Call(prim.Variable(vec+'.load'), (prim.Sum((prim.Variable(alias), index)),)) + load_insns.append(lp.CallInstruction(assignees=(),expression=call_load, + id=load_id,within_inames=insn.within_inames|insn.reduction_inames(),)) read_dependencies.setdefault(insn.id, set()) read_dependencies[insn.id].add(load_id) @@ -191,15 +188,14 @@ def add_vcl_vector(knl, iname_inner, iname_outer): index = prim.Sum(tuple(prim.Product(z) for z in zip(substitute(expr, {iname_inner: 0, iname_ix: 0}).index_tuple, strides))) # add store instruction - code = "{}.store({} + {});".format(vec, alias, index) - #store_id = knl.make_unique_instruction_id(insns=knl.instructions+load_insns, based_on='insn_'+vec+'_store') store_id = idg('insn_'+vec+'_store') - store_insns.append(lp.CInstruction(iname_exprs=[], code=code,read_variables=frozenset({alias}), - within_inames=insn.within_inames, - depends_on=insn.depends_on - | frozenset({insn.id}) - | read_dependencies[insn.id], - id=store_id)) + call_store = prim.Call(prim.Variable(vec+'.store'), (prim.Sum((prim.Variable(alias), index)),)) + store_insns.append(lp.CallInstruction(assignees=(),expression=call_store, + id=store_id,within_inames=insn.within_inames, + depends_on=insn.depends_on + | frozenset({insn.id}) + | read_dependencies[insn.id], + )) # exchange alias for vector new_insns = []