aboutsummaryrefslogtreecommitdiff
path: root/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@sifive.com>2021-04-16 14:59:40 -0700
committerCraig Topper <craig.topper@sifive.com>2021-04-16 15:05:33 -0700
commitbe0ffbb21f6631a73679d371da5315db3eb3537c (patch)
treebbc3adcb2e88cda701c02cdbdcc840614ae9c6dc /llvm/utils/TableGen/CodeGenDAGPatterns.cpp
parent48cc5b0d35fe5d5bd7a9427dd6af2c0d59bd5ce2 (diff)
downloadllvm-be0ffbb21f6631a73679d371da5315db3eb3537c.zip
llvm-be0ffbb21f6631a73679d371da5315db3eb3537c.tar.gz
llvm-be0ffbb21f6631a73679d371da5315db3eb3537c.tar.bz2
[TableGen] Run GenerateVariants before ExpandHwModeBasedTypes.
A large portion of the patterns are duplicated for HwMode on RISCV. If we expand HwMode first, we need to check nearly twice as many patterns for variants. HwModes shouldn't affect whether a variant is valid so we should be able to expand after. This also reduces the RISCV isel table by 539 bytes due to factoring working better on this pattern order. Unfortunately it increases Hexagon table size by ~50 bytes. But I think this is a reasonable trade.
Diffstat (limited to 'llvm/utils/TableGen/CodeGenDAGPatterns.cpp')
-rw-r--r--llvm/utils/TableGen/CodeGenDAGPatterns.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
index dff3464..4348688 100644
--- a/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
+++ b/llvm/utils/TableGen/CodeGenDAGPatterns.cpp
@@ -3086,15 +3086,15 @@ CodeGenDAGPatterns::CodeGenDAGPatterns(RecordKeeper &R,
ParsePatternFragments(/*OutFrags*/true);
ParsePatterns();
+ // Generate variants. For example, commutative patterns can match
+ // multiple ways. Add them to PatternsToMatch as well.
+ GenerateVariants();
+
// Break patterns with parameterized types into a series of patterns,
// where each one has a fixed type and is predicated on the conditions
// of the associated HW mode.
ExpandHwModeBasedTypes();
- // Generate variants. For example, commutative patterns can match
- // multiple ways. Add them to PatternsToMatch as well.
- GenerateVariants();
-
// Infer instruction flags. For example, we can detect loads,
// stores, and side effects in many cases by examining an
// instruction's pattern.