diff --git a/loopy/fusion.py b/loopy/fusion.py index 434297b1b430ec27f013be9e6838ba321d22f8b7..3061388606cb512f6767902d512eea5d49f31970 100644 --- a/loopy/fusion.py +++ b/loopy/fusion.py @@ -101,9 +101,23 @@ def _fuse_two_kernels(knla, knlb): from pytools import UniqueNameGenerator insn_id_gen = UniqueNameGenerator( set([insna.id for insna in new_instructions])) + + knl_b_instructions = [] + old_b_id_to_new_b_id = {} for insnb in knlb.instructions: + old_id = insnb.id + new_id = insn_id_gen(old_id) + old_b_id_to_new_b_id[old_id] = new_id + + knl_b_instructions.append( + insnb.copy(id=new_id)) + + for insnb in knl_b_instructions: new_instructions.append( - insnb.copy(id=insn_id_gen(insnb.id))) + insnb.copy( + insn_deps=frozenset( + old_b_id_to_new_b_id[dep_id] + for dep_id in insnb.insn_deps))) # }}}