diff --git a/src/amd/compiler/aco_insert_exec_mask.cpp b/src/amd/compiler/aco_insert_exec_mask.cpp index 5638b4e8ce0..04928c3c722 100644 --- a/src/amd/compiler/aco_insert_exec_mask.cpp +++ b/src/amd/compiler/aco_insert_exec_mask.cpp @@ -613,12 +613,11 @@ process_instructions(exec_ctx& ctx, Block* block, std::vector= 0; i--) { if (ctx.info[block->index].exec[i].second & mask_type_exact) { - Instruction* andn2 = bld.sop2(Builder::s_andn2, bld.def(bld.lm), bld.def(s1, scc), - ctx.info[block->index].exec[i].first, cond); - if (i == (int)ctx.info[block->index].exec.size() - 1) { - andn2->operands[0] = Operand(exec, bld.lm); + Instruction* andn2 = + bld.sop2(Builder::s_andn2, bld.def(bld.lm), bld.def(s1, scc), + get_exec_op(ctx.info[block->index].exec[i].first), cond); + if (i == (int)ctx.info[block->index].exec.size() - 1) andn2->definitions[0] = Definition(exec, bld.lm); - } ctx.info[block->index].exec[i].first = Operand(andn2->definitions[0].getTemp()); exit_cond = andn2->definitions[1].getTemp();