Module: Mesa
Branch: master
Commit: f820dde201f82763b5165dfe6516f20e9c80795b
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f820dde201f82763b5165dfe6516f20e9c80795b

Author: Timur Kristóf <[email protected]>
Date:   Sat Aug 22 20:45:54 2020 +0200

aco: Fix convert_to_SDWA when instruction has 3 operands.

Previously, when the instruction had 3 operands, this would cause
possible corruption because of writing to sdwa->sel[2].
This was noticed thanks to GCC 10's -Wstringop-overflow warning.

Signed-off-by: Timur Kristóf <[email protected]>
Reviewed-by: Daniel Schürmann <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6436>

---

 src/amd/compiler/aco_ir.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/amd/compiler/aco_ir.cpp b/src/amd/compiler/aco_ir.cpp
index 801fbc68616..b594b2824e9 100644
--- a/src/amd/compiler/aco_ir.cpp
+++ b/src/amd/compiler/aco_ir.cpp
@@ -238,6 +238,10 @@ aco_ptr<Instruction> convert_to_SDWA(chip_class chip, 
aco_ptr<Instruction>& inst
    }
 
    for (unsigned i = 0; i < instr->operands.size(); i++) {
+      /* SDWA only uses operands 0 and 1. */
+      if (i >= 2)
+         break;
+
       switch (instr->operands[i].bytes()) {
       case 1:
          sdwa->sel[i] = sdwa_ubyte;

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to