From cebac156c482a9310ed7e2cef0a439efbad3fc12 Mon Sep 17 00:00:00 2001 From: Caio Oliveira Date: Sat, 9 Aug 2025 22:13:48 -0700 Subject: [PATCH] brw: Only access valid sources in lower_btd_logical_send() Only the SHADER_OPCODE_BTD_SPAWN_LOGICAL has sources, so only reach for them when handling that instruction. Reviewed-by: Kenneth Graunke Part-of: --- src/intel/compiler/brw_lower_logical_sends.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/intel/compiler/brw_lower_logical_sends.cpp b/src/intel/compiler/brw_lower_logical_sends.cpp index 1429ef83a7f..16a5f0311c0 100644 --- a/src/intel/compiler/brw_lower_logical_sends.cpp +++ b/src/intel/compiler/brw_lower_logical_sends.cpp @@ -2308,9 +2308,6 @@ static void lower_btd_logical_send(const brw_builder &bld, brw_inst *inst) { const intel_device_info *devinfo = bld.shader->devinfo; - brw_reg global_addr = inst->src[0]; - const brw_reg btd_record = inst->src[1]; - const unsigned unit = reg_unit(devinfo); const unsigned mlen = 2 * unit; const brw_builder ubld = bld.exec_all(); @@ -2318,7 +2315,8 @@ lower_btd_logical_send(const brw_builder &bld, brw_inst *inst) ubld.MOV(header, brw_imm_ud(0)); switch (inst->opcode) { - case SHADER_OPCODE_BTD_SPAWN_LOGICAL: + case SHADER_OPCODE_BTD_SPAWN_LOGICAL: { + brw_reg global_addr = inst->src[0]; assert(brw_type_size_bytes(global_addr.type) == 8 && global_addr.stride == 0); global_addr.type = BRW_TYPE_UD; @@ -2333,6 +2331,7 @@ lower_btd_logical_send(const brw_builder &bld, brw_inst *inst) * structure of the callee. */ break; + } case SHADER_OPCODE_BTD_RETIRE_LOGICAL: /* The bottom bit is the Stack ID release bit */ @@ -2353,6 +2352,7 @@ lower_btd_logical_send(const brw_builder &bld, brw_inst *inst) unsigned ex_mlen = 0; brw_reg payload; if (inst->opcode == SHADER_OPCODE_BTD_SPAWN_LOGICAL) { + const brw_reg btd_record = inst->src[1]; ex_mlen = 2 * (inst->exec_size / 8); payload = bld.move_to_vgrf(btd_record, 1); } else {