aco: validate v_permlane opsel correctly

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27118>
This commit is contained in:
Georg Lehmann
2024-01-17 14:08:43 +01:00
committed by Marge Bot
parent bc57f14c2d
commit c67d4a75ba

View File

@@ -322,7 +322,10 @@ validate_ir(Program* program)
}
/* check opsel */
if (instr->isVOP3() || instr->isVOP1() || instr->isVOP2() || instr->isVOPC()) {
if (instr->opcode == aco_opcode::v_permlane16_b32 ||
instr->opcode == aco_opcode::v_permlanex16_b32) {
check(instr->valu().opsel <= 0x3, "Unexpected opsel for permlane", instr.get());
} else if (instr->isVOP3() || instr->isVOP1() || instr->isVOP2() || instr->isVOPC()) {
VALU_instruction& valu = instr->valu();
check(valu.opsel == 0 || program->gfx_level >= GFX9, "Opsel is only supported on GFX9+",
instr.get());