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