intel/elk: List all instructions that have BranchCtrl bit

Previously this bit was not clearly documented in PRMs, but gfx12 PRMs
finally list all the instructions where it is present.

Although it's unclear if it's functional for anything other than "if",
"else", and "goto", we probably still should acknowledge its existence
in other instructions.

Signed-off-by: Sviatoslav Peleshko <sviatoslav.peleshko@globallogic.com>
Reviewed-by: Caio Oliveira <caio.oliveira@intel.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31747>
This commit is contained in:
Sviatoslav Peleshko 2024-10-19 16:36:18 +03:00 committed by Marge Bot
parent 445df8d611
commit cd4c328408

View file

@ -70,9 +70,26 @@ has_branch_ctrl(const struct intel_device_info *devinfo, enum elk_opcode opcode)
if (devinfo->ver < 8)
return false;
return opcode == ELK_OPCODE_IF ||
opcode == ELK_OPCODE_ELSE;
/* opcode == ELK_OPCODE_GOTO; */
switch (opcode) {
case ELK_OPCODE_IF:
case ELK_OPCODE_ELSE:
case ELK_OPCODE_GOTO:
case ELK_OPCODE_BREAK:
case ELK_OPCODE_CALL:
case ELK_OPCODE_CALLA:
case ELK_OPCODE_CONTINUE:
case ELK_OPCODE_ENDIF:
case ELK_OPCODE_HALT:
case ELK_OPCODE_JMPI:
case ELK_OPCODE_RET:
case ELK_OPCODE_WHILE:
case ELK_OPCODE_BRC:
case ELK_OPCODE_BRD:
/* TODO: "join" should also be here if added */
return true;
default:
return false;
}
}
static bool