aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRhys Perry <[email protected]>2020-04-10 15:11:03 +0100
committerMarge Bot <[email protected]>2020-04-14 10:49:12 +0000
commite18711cda3bf173e03d9773001f641fd85ffd18d (patch)
treeee6cba3ac7a838710b5c040622989150d92ad10f
parent41ac44e1b3ad19b9a889fc3d1052611ae309ffb0 (diff)
aco: fix p_extract_vector validation
Signed-off-by: Rhys Perry <[email protected]> Reviewed-by: Daniel Schürmann <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4507>
-rw-r--r--src/amd/compiler/aco_validate.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp
index 39174971b04..3e0f4584cd3 100644
--- a/src/amd/compiler/aco_validate.cpp
+++ b/src/amd/compiler/aco_validate.cpp
@@ -261,7 +261,7 @@ void validate(Program* program, FILE * output)
}
} else if (instr->opcode == aco_opcode::p_extract_vector) {
check((instr->operands[0].isTemp()) && instr->operands[1].isConstant(), "Wrong Operand types", instr.get());
- check(instr->operands[1].constantValue() < instr->operands[0].size(), "Index out of range", instr.get());
+ check((instr->operands[1].constantValue() + 1) * instr->definitions[0].bytes() <= instr->operands[0].bytes(), "Index out of range", instr.get());
check(instr->definitions[0].getTemp().type() == RegType::vgpr || instr->operands[0].regClass().type() == RegType::sgpr,
"Cannot extract SGPR value from VGPR vector", instr.get());
} else if (instr->opcode == aco_opcode::p_parallelcopy) {