mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 02:33:06 +01:00
[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.
This commit is contained in:
parent
b82ca2a3f3
commit
d27dd156eb
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user