See https://discourse.llvm.org/t/rfc-overhauled-mir-patterns-for-globalisel-combiners/72264
This is a complete overrhaul of the recently-added GlobalISel Match Table backend which adds
support for MIR patterns for both match and apply patterns.
Paths
| Differential D156315
[RFC][GlobalISel] Overhauled MIR Patterns Support for Combiners ClosedPublic Authored by Pierre-vh on Jul 26 2023, 4:49 AM.
Details Summary See https://discourse.llvm.org/t/rfc-overhauled-mir-patterns-for-globalisel-combiners/72264 This is a complete overrhaul of the recently-added GlobalISel Match Table backend which adds
Diff Detail
Event TimelineComment Actions This is much clearer than what was documented before
Pierre-vh marked 6 inline comments as done. Comment ActionsAddress comments
Pierre-vh marked an inline comment as done. Comment ActionsAdd typed machine operands I opted for the syntax type:$name which is more consistent I believe.
Comment Actions Minor changes + fix the name of anonymous patterns. Before it was very cryptic, now it's more structured.
Pierre-vh marked an inline comment as done. Comment Actions
Something I also want to point out is that some of the things here haven't been tested
Comment Actions Split up OperandTable + add named_operands() accessor for InstructionPatterns.
Comment Actions Use a singular, simple OperandTable datastructure for both PatFrags & Rules.
Pierre-vh marked 6 inline comments as done. Comment ActionsComments
Comment Actions At this point I think it's easier to just start using it and file bugs for issues I run into This revision is now accepted and ready to land.Aug 9 2023, 3:04 PM Comment Actions @aemerson are you also fine with landing it? Comment Actions
I’m fine with landing it. Closed by commit rG63afb70503bf: [RFC][GlobalISel] Overhauled MIR Patterns Support for Combiners (authored by Pierre-vh). · Explain WhyAug 10 2023, 11:55 PM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 549261 llvm/docs/GlobalISel/MIRPatterns.rst
llvm/docs/GlobalISel/index.rst
llvm/docs/UserGuides.rst
llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutor.h
llvm/include/llvm/CodeGen/GlobalISel/GIMatchTableExecutorImpl.h
llvm/include/llvm/Target/GlobalISel/Combine.td
llvm/lib/CodeGen/GlobalISel/GIMatchTableExecutor.cpp
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/match-table-imms.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/match-table-operand-types.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/match-table-patfrag-root.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/match-table-permutations.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/match-table-variadics.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/match-table.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/operand-types.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/patfrag-errors.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/pattern-errors.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/pattern-parsing-errors.td
llvm/test/TableGen/GlobalISelCombinerMatchTableEmitter/pattern-parsing.td
llvm/test/TableGen/GlobalISelEmitter.td
llvm/utils/TableGen/CodeGenTarget.h
llvm/utils/TableGen/CodeGenTarget.cpp
llvm/utils/TableGen/GlobalISel/CodeExpansions.h
llvm/utils/TableGen/GlobalISel/CombinerUtils.h
llvm/utils/TableGen/GlobalISelCombinerMatchTableEmitter.cpp
llvm/utils/TableGen/GlobalISelEmitter.cpp
llvm/utils/TableGen/GlobalISelMatchTable.h
llvm/utils/TableGen/GlobalISelMatchTableExecutorEmitter.h
llvm/utils/TableGen/GlobalISelMatchTableExecutorEmitter.cpp
|
Do these support vectors. i.e. can you use a constant and implicitly get a constant splat? vector constants are a recurring pain point