Mercurial > hg > truffle
comparison src/share/vm/adlc/formssel.hpp @ 14428:044b28168e20
8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
Summary: added ability in C2 to expand mach nodes to several mach nodes after register allocation
Reviewed-by: kvn
author | goetz |
---|---|
date | Thu, 14 Nov 2013 19:24:59 -0800 |
parents | c9ccd7b85f20 |
children | 318d0622a6d7 |
comparison
equal
deleted
inserted
replaced
14427:eb178e97560c | 14428:044b28168e20 |
---|---|
86 bool _is_mach_constant; // true if Node is a MachConstantNode | 86 bool _is_mach_constant; // true if Node is a MachConstantNode |
87 uint _alignment; | 87 uint _alignment; |
88 | 88 |
89 public: | 89 public: |
90 // Public Data | 90 // Public Data |
91 const char *_ident; // Name of this instruction | 91 const char *_ident; // Name of this instruction |
92 NameList _parameters; // Locally defined names | 92 NameList _parameters; // Locally defined names |
93 FormDict _localNames; // Table of operands & their types | 93 FormDict _localNames; // Table of operands & their types |
94 MatchRule *_matrule; // Matching rule for this instruction | 94 MatchRule *_matrule; // Matching rule for this instruction |
95 Opcode *_opcode; // Encoding of the opcode for instruction | 95 Opcode *_opcode; // Encoding of the opcode for instruction |
96 char *_size; // Size of instruction | 96 char *_size; // Size of instruction |
97 InsEncode *_insencode; // Encoding class instruction belongs to | 97 InsEncode *_insencode; // Encoding class instruction belongs to |
98 InsEncode *_constant; // Encoding class constant value belongs to | 98 InsEncode *_constant; // Encoding class constant value belongs to |
99 Attribute *_attribs; // List of Attribute rules | 99 bool _is_postalloc_expand; // Indicates that encoding just does a lateExpand. |
100 Predicate *_predicate; // Predicate test for this instruction | 100 Attribute *_attribs; // List of Attribute rules |
101 FormDict _effects; // Dictionary of effect rules | 101 Predicate *_predicate; // Predicate test for this instruction |
102 ExpandRule *_exprule; // Expand rule for this instruction | 102 FormDict _effects; // Dictionary of effect rules |
103 RewriteRule *_rewrule; // Rewrite rule for this instruction | 103 ExpandRule *_exprule; // Expand rule for this instruction |
104 FormatRule *_format; // Format for assembly generation | 104 RewriteRule *_rewrule; // Rewrite rule for this instruction |
105 Peephole *_peephole; // List of peephole rules for instruction | 105 FormatRule *_format; // Format for assembly generation |
106 const char *_ins_pipe; // Instruction Scheduling description class | 106 Peephole *_peephole; // List of peephole rules for instruction |
107 | 107 const char *_ins_pipe; // Instruction Scheduling description class |
108 uint *_uniq_idx; // Indexes of unique operands | 108 |
109 uint _uniq_idx_length; // Length of _uniq_idx array | 109 uint *_uniq_idx; // Indexes of unique operands |
110 uint _num_uniq; // Number of unique operands | 110 uint _uniq_idx_length; // Length of _uniq_idx array |
111 ComponentList _components; // List of Components matches MachNode's | 111 uint _num_uniq; // Number of unique operands |
112 // operand structure | 112 ComponentList _components; // List of Components matches MachNode's |
113 | 113 // operand structure |
114 bool _has_call; // contain a call and caller save registers should be saved? | 114 |
115 bool _has_call; // contain a call and caller save registers should be saved? | |
115 | 116 |
116 // Public Methods | 117 // Public Methods |
117 InstructForm(const char *id, bool ideal_only = false); | 118 InstructForm(const char *id, bool ideal_only = false); |
118 InstructForm(const char *id, InstructForm *instr, MatchRule *rule); | 119 InstructForm(const char *id, InstructForm *instr, MatchRule *rule); |
119 ~InstructForm(); | 120 ~InstructForm(); |
131 virtual bool has_temps(); | 132 virtual bool has_temps(); |
132 // This instruction defines or kills more than one object | 133 // This instruction defines or kills more than one object |
133 virtual uint num_defs_or_kills(); | 134 virtual uint num_defs_or_kills(); |
134 // This instruction has an expand rule? | 135 // This instruction has an expand rule? |
135 virtual bool expands() const ; | 136 virtual bool expands() const ; |
137 // This instruction has a late expand rule? | |
138 virtual bool postalloc_expands() const; | |
136 // Return this instruction's first peephole rule, or NULL | 139 // Return this instruction's first peephole rule, or NULL |
137 virtual Peephole *peepholes() const; | 140 virtual Peephole *peepholes() const; |
138 // Add a peephole rule to this instruction | 141 // Add a peephole rule to this instruction |
139 virtual void append_peephole(Peephole *peep); | 142 virtual void append_peephole(Peephole *peep); |
140 | 143 |