Predicates with 'let PredicateCodeUsesOperands = 1' want to examine
matched operands. When we encounter predicate code that uses operands,
analyze its named operand arguments and create a map between argument
index and name. Later, when leaf node with name is encountered,
emit GIM_RecordNamedOperand that will store that operand at its
argument index in a operand list. This operand list will be argument
to c++ code of the predicate.
Details
Diff Detail
Event Timeline
| llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h | ||
|---|---|---|
| 257 | Can you be clearer on what "uses operands" means here? | |
| 457 | Is this the recorded use or def operand? Can you add a comment here? | |
| llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp | ||
| 33 ↗ | (On Diff #290469) | Why arbitrarily resize this here? |
| llvm/lib/Target/AMDGPU/VOP3Instructions.td | ||
| 607–609 | Should update this comment | |
| 611–612 | As a follow up, we need to do something about inline constants which will end up blocking this. I was thinking we need to start producing constants with VGPR bank with VALU uses prior to selection | |
| llvm/test/CodeGen/AMDGPU/GlobalISel/add_shl.ll | ||
| 3–5 | Can you move the < %s to the end | |
| llvm/utils/TableGen/GlobalISelEmitter.cpp | ||
| 4206 | Can you move the decrement out of the if? | |
| llvm/include/llvm/CodeGen/GlobalISel/InstructionSelector.h | ||
|---|---|---|
| 457 | As far as I know operands in this list are taken from instruction where they were use operands. Was that the question? | |
| llvm/lib/CodeGen/GlobalISel/InstructionSelector.cpp | ||
| 33 ↗ | (On Diff #290469) | Operands are inserted directly into specific index in RecordedOperands, see GIM_RecordNamedOperand. |
| llvm/utils/TableGen/GlobalISelEmitter.cpp | ||
|---|---|---|
| 3919 | Can we put this string generation in a function somewhere? I think this is repeated 2 or 3 times | |
Can you be clearer on what "uses operands" means here?