-
Notifications
You must be signed in to change notification settings - Fork 16
Commit 62835c2
committed
Check in patterns for memory operand properties.
- Determine memory operands by there membership of patterns.
Operands can be defined via patterns. The pattern has a type itself.
Patterns are commonly used to define memory operands
(as a collection of multiple other operands).
Here we check, if the operand is part of a pattern with type iPTR.
Type iPTR indicates a memory operand.
- Search for unspecified instruction patterns and extract memory op info from them.
AArch64 has the case of patterns which are not set in the CGI class.
Instead those patterns are free floating in the record keeper.
With this commit we first collect all such unassigned patterns and save them in a map
(indexed by instruction name they belong to).
When instruction operand details are generated, the operand type is searched in the pattern of the instruction.
If there is an operand with the same type in the pattern, which is also of a iPTR pattern, we treat it as memory operand.
Note that we can not compare the operands of the instruction and the pattern operands by name.
Because they simply are not named the same way.
This is a short coming in the td files and should be addressed in LLVM.
Because it is enormiously hard to get a 1 to 1 mapping from a pattern to an instruction
and its operands.1 parent ee2e109 commit 62835c2Copy full SHA for 62835c2
File tree
Expand file treeCollapse file tree
1 file changed
+392
-59
lines changedFilter options
- llvm/utils/TableGen
Expand file treeCollapse file tree
1 file changed
+392
-59
lines changed
0 commit comments