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 | ||
4208 | 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 | ||
---|---|---|
3923 | 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?