mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
8003854: PPC64 (part 115): Introduce PostallocExpand that expands nodes after register allocation
Added ability in C2 to expand mach nodes to several mach nodes after register allocation Reviewed-by: kvn
This commit is contained in:
parent
d8b9e9f681
commit
12b298218d
20 changed files with 689 additions and 92 deletions
|
@ -36,27 +36,28 @@ InstructForm::InstructForm(const char *id, bool ideal_only)
|
|||
{
|
||||
_ftype = Form::INS;
|
||||
|
||||
_matrule = NULL;
|
||||
_insencode = NULL;
|
||||
_constant = NULL;
|
||||
_opcode = NULL;
|
||||
_size = NULL;
|
||||
_attribs = NULL;
|
||||
_predicate = NULL;
|
||||
_exprule = NULL;
|
||||
_rewrule = NULL;
|
||||
_format = NULL;
|
||||
_peephole = NULL;
|
||||
_ins_pipe = NULL;
|
||||
_uniq_idx = NULL;
|
||||
_num_uniq = 0;
|
||||
_cisc_spill_operand = Not_cisc_spillable;// Which operand may cisc-spill
|
||||
_matrule = NULL;
|
||||
_insencode = NULL;
|
||||
_constant = NULL;
|
||||
_is_postalloc_expand = false;
|
||||
_opcode = NULL;
|
||||
_size = NULL;
|
||||
_attribs = NULL;
|
||||
_predicate = NULL;
|
||||
_exprule = NULL;
|
||||
_rewrule = NULL;
|
||||
_format = NULL;
|
||||
_peephole = NULL;
|
||||
_ins_pipe = NULL;
|
||||
_uniq_idx = NULL;
|
||||
_num_uniq = 0;
|
||||
_cisc_spill_operand = Not_cisc_spillable;// Which operand may cisc-spill
|
||||
_cisc_spill_alternate = NULL; // possible cisc replacement
|
||||
_cisc_reg_mask_name = NULL;
|
||||
_is_cisc_alternate = false;
|
||||
_is_short_branch = false;
|
||||
_short_branch_form = NULL;
|
||||
_alignment = 1;
|
||||
_cisc_reg_mask_name = NULL;
|
||||
_is_cisc_alternate = false;
|
||||
_is_short_branch = false;
|
||||
_short_branch_form = NULL;
|
||||
_alignment = 1;
|
||||
}
|
||||
|
||||
InstructForm::InstructForm(const char *id, InstructForm *instr, MatchRule *rule)
|
||||
|
@ -68,27 +69,28 @@ InstructForm::InstructForm(const char *id, InstructForm *instr, MatchRule *rule)
|
|||
{
|
||||
_ftype = Form::INS;
|
||||
|
||||
_matrule = rule;
|
||||
_insencode = instr->_insencode;
|
||||
_constant = instr->_constant;
|
||||
_opcode = instr->_opcode;
|
||||
_size = instr->_size;
|
||||
_attribs = instr->_attribs;
|
||||
_predicate = instr->_predicate;
|
||||
_exprule = instr->_exprule;
|
||||
_rewrule = instr->_rewrule;
|
||||
_format = instr->_format;
|
||||
_peephole = instr->_peephole;
|
||||
_ins_pipe = instr->_ins_pipe;
|
||||
_uniq_idx = instr->_uniq_idx;
|
||||
_num_uniq = instr->_num_uniq;
|
||||
_cisc_spill_operand = Not_cisc_spillable;// Which operand may cisc-spill
|
||||
_cisc_spill_alternate = NULL; // possible cisc replacement
|
||||
_cisc_reg_mask_name = NULL;
|
||||
_is_cisc_alternate = false;
|
||||
_is_short_branch = false;
|
||||
_short_branch_form = NULL;
|
||||
_alignment = 1;
|
||||
_matrule = rule;
|
||||
_insencode = instr->_insencode;
|
||||
_constant = instr->_constant;
|
||||
_is_postalloc_expand = instr->_is_postalloc_expand;
|
||||
_opcode = instr->_opcode;
|
||||
_size = instr->_size;
|
||||
_attribs = instr->_attribs;
|
||||
_predicate = instr->_predicate;
|
||||
_exprule = instr->_exprule;
|
||||
_rewrule = instr->_rewrule;
|
||||
_format = instr->_format;
|
||||
_peephole = instr->_peephole;
|
||||
_ins_pipe = instr->_ins_pipe;
|
||||
_uniq_idx = instr->_uniq_idx;
|
||||
_num_uniq = instr->_num_uniq;
|
||||
_cisc_spill_operand = Not_cisc_spillable; // Which operand may cisc-spill
|
||||
_cisc_spill_alternate = NULL; // possible cisc replacement
|
||||
_cisc_reg_mask_name = NULL;
|
||||
_is_cisc_alternate = false;
|
||||
_is_short_branch = false;
|
||||
_short_branch_form = NULL;
|
||||
_alignment = 1;
|
||||
// Copy parameters
|
||||
const char *name;
|
||||
instr->_parameters.reset();
|
||||
|
@ -157,6 +159,11 @@ bool InstructForm::expands() const {
|
|||
return ( _exprule != NULL );
|
||||
}
|
||||
|
||||
// This instruction has a late expand rule?
|
||||
bool InstructForm::postalloc_expands() const {
|
||||
return _is_postalloc_expand;
|
||||
}
|
||||
|
||||
// This instruction has a peephole rule?
|
||||
Peephole *InstructForm::peepholes() const {
|
||||
return _peephole;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue