comparison src/share/vm/adlc/formssel.hpp @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents abec000618bf
children 89152779163c
comparison
equal deleted inserted replaced
14908:8db6e76cb658 14909:4ca6dc0799b6
1 /* 1 /*
2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
81 bool _is_cisc_alternate; 81 bool _is_cisc_alternate;
82 InstructForm *_cisc_spill_alternate;// cisc possible replacement 82 InstructForm *_cisc_spill_alternate;// cisc possible replacement
83 const char *_cisc_reg_mask_name; 83 const char *_cisc_reg_mask_name;
84 InstructForm *_short_branch_form; 84 InstructForm *_short_branch_form;
85 bool _is_short_branch; 85 bool _is_short_branch;
86 bool _is_mach_constant; // True if Node is a MachConstantNode. 86 bool _is_mach_constant; // true if Node is a MachConstantNode
87 bool _needs_constant_base; // True if Node needs the mach_constant_base input.
88 uint _alignment; 87 uint _alignment;
89 88
90 public: 89 public:
91 // Public Data 90 // Public Data
92 const char *_ident; // Name of this instruction 91 const char *_ident; // Name of this instruction
93 NameList _parameters; // Locally defined names 92 NameList _parameters; // Locally defined names
94 FormDict _localNames; // Table of operands & their types 93 FormDict _localNames; // Table of operands & their types
95 MatchRule *_matrule; // Matching rule for this instruction 94 MatchRule *_matrule; // Matching rule for this instruction
96 Opcode *_opcode; // Encoding of the opcode for instruction 95 Opcode *_opcode; // Encoding of the opcode for instruction
97 char *_size; // Size of instruction 96 char *_size; // Size of instruction
98 InsEncode *_insencode; // Encoding class instruction belongs to 97 InsEncode *_insencode; // Encoding class instruction belongs to
99 InsEncode *_constant; // Encoding class constant value belongs to 98 InsEncode *_constant; // Encoding class constant value belongs to
100 bool _is_postalloc_expand; // Indicates that encoding just does a lateExpand. 99 Attribute *_attribs; // List of Attribute rules
101 Attribute *_attribs; // List of Attribute rules 100 Predicate *_predicate; // Predicate test for this instruction
102 Predicate *_predicate; // Predicate test for this instruction 101 FormDict _effects; // Dictionary of effect rules
103 FormDict _effects; // Dictionary of effect rules 102 ExpandRule *_exprule; // Expand rule for this instruction
104 ExpandRule *_exprule; // Expand rule for this instruction 103 RewriteRule *_rewrule; // Rewrite rule for this instruction
105 RewriteRule *_rewrule; // Rewrite rule for this instruction 104 FormatRule *_format; // Format for assembly generation
106 FormatRule *_format; // Format for assembly generation 105 Peephole *_peephole; // List of peephole rules for instruction
107 Peephole *_peephole; // List of peephole rules for instruction 106 const char *_ins_pipe; // Instruction Scheduling description class
108 const char *_ins_pipe; // Instruction Scheduling description class 107
109 108 uint *_uniq_idx; // Indexes of unique operands
110 uint *_uniq_idx; // Indexes of unique operands 109 uint _uniq_idx_length; // Length of _uniq_idx array
111 uint _uniq_idx_length; // Length of _uniq_idx array 110 uint _num_uniq; // Number of unique operands
112 uint _num_uniq; // Number of unique operands 111 ComponentList _components; // List of Components matches MachNode's
113 ComponentList _components; // List of Components matches MachNode's 112 // operand structure
114 // operand structure 113
115 114 bool _has_call; // contain a call and caller save registers should be saved?
116 bool _has_call; // contain a call and caller save registers should be saved?
117 115
118 // Public Methods 116 // Public Methods
119 InstructForm(const char *id, bool ideal_only = false); 117 InstructForm(const char *id, bool ideal_only = false);
120 InstructForm(const char *id, InstructForm *instr, MatchRule *rule); 118 InstructForm(const char *id, InstructForm *instr, MatchRule *rule);
121 ~InstructForm(); 119 ~InstructForm();
133 virtual bool has_temps(); 131 virtual bool has_temps();
134 // This instruction defines or kills more than one object 132 // This instruction defines or kills more than one object
135 virtual uint num_defs_or_kills(); 133 virtual uint num_defs_or_kills();
136 // This instruction has an expand rule? 134 // This instruction has an expand rule?
137 virtual bool expands() const ; 135 virtual bool expands() const ;
138 // This instruction has a late expand rule?
139 virtual bool postalloc_expands() const;
140 // Return this instruction's first peephole rule, or NULL 136 // Return this instruction's first peephole rule, or NULL
141 virtual Peephole *peepholes() const; 137 virtual Peephole *peepholes() const;
142 // Add a peephole rule to this instruction 138 // Add a peephole rule to this instruction
143 virtual void append_peephole(Peephole *peep); 139 virtual void append_peephole(Peephole *peep);
144 140
261 bool is_short_branch() { return _is_short_branch; } 257 bool is_short_branch() { return _is_short_branch; }
262 void set_short_branch(bool val) { _is_short_branch = val; } 258 void set_short_branch(bool val) { _is_short_branch = val; }
263 259
264 bool is_mach_constant() const { return _is_mach_constant; } 260 bool is_mach_constant() const { return _is_mach_constant; }
265 void set_is_mach_constant(bool x) { _is_mach_constant = x; } 261 void set_is_mach_constant(bool x) { _is_mach_constant = x; }
266 bool needs_constant_base() const { return _needs_constant_base; }
267 void set_needs_constant_base(bool x) { _needs_constant_base = x; }
268 262
269 InstructForm *short_branch_form() { return _short_branch_form; } 263 InstructForm *short_branch_form() { return _short_branch_form; }
270 bool has_short_branch_form() { return _short_branch_form != NULL; } 264 bool has_short_branch_form() { return _short_branch_form != NULL; }
271 // Output short branch prototypes and method bodies 265 // Output short branch prototypes and method bodies
272 void declare_short_branch_methods(FILE *fp_cpp); 266 void declare_short_branch_methods(FILE *fp_cpp);