src/share/vm/adlc/formssel.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6857159 Sdiff src/share/vm/adlc

src/share/vm/adlc/formssel.hpp

Print this page




 141   virtual int         is_tls_instruction() const; // tlsLoadP rule or ideal ThreadLocal
 142   virtual int         is_ideal_copy() const;    // node matches ideal 'Copy*'
 143   virtual bool        is_ideal_unlock() const;  // node matches ideal 'Unlock'
 144   virtual bool        is_ideal_call_leaf() const; // node matches ideal 'CallLeaf'
 145   virtual bool        is_ideal_if()   const;    // node matches ideal 'If'
 146   virtual bool        is_ideal_fastlock() const; // node matches 'FastLock'
 147   virtual bool        is_ideal_membar() const;  // node matches ideal 'MemBarXXX'
 148   virtual bool        is_ideal_loadPC() const;  // node matches ideal 'LoadPC'
 149   virtual bool        is_ideal_box() const;     // node matches ideal 'Box'
 150   virtual bool        is_ideal_goto() const;    // node matches ideal 'Goto'
 151   virtual bool        is_ideal_branch() const;  // "" 'If' | 'Goto' | 'LoopEnd' | 'Jump'
 152   virtual bool        is_ideal_jump() const;    // node matches ideal 'Jump'
 153   virtual bool        is_ideal_return() const;  // node matches ideal 'Return'
 154   virtual bool        is_ideal_halt() const;    // node matches ideal 'Halt'
 155   virtual bool        is_ideal_safepoint() const; // node matches 'SafePoint'
 156   virtual bool        is_ideal_nop() const;     // node matches 'Nop'
 157   virtual bool        is_ideal_control() const; // control node
 158 
 159   virtual Form::CallType is_ideal_call() const; // matches ideal 'Call'
 160   virtual Form::DataType is_ideal_load() const; // node matches ideal 'LoadXNode'



 161   virtual Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
 162           bool        is_ideal_mem() const { return is_ideal_load() != Form::none || is_ideal_store() != Form::none; }
 163   virtual uint        two_address(FormDict &globals); // output reg must match input reg
 164   // when chaining a constant to an instruction, return 'true' and set opType
 165   virtual Form::DataType is_chain_of_constant(FormDict &globals);
 166   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType);
 167   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType, const char * &result_type);
 168 
 169   // Check if a simple chain rule
 170   virtual bool        is_simple_chain_rule(FormDict &globals) const;
 171 
 172   // check for structural rematerialization
 173   virtual bool        rematerialize(FormDict &globals, RegisterForm *registers);
 174 
 175   // loads from memory, so must check for anti-dependence
 176   virtual bool        needs_anti_dependence_check(FormDict &globals) const;
 177   virtual int         memory_operand(FormDict &globals) const;
 178           bool        is_wide_memory_kill(FormDict &globals) const;
 179 
 180   enum memory_operand_type {


 986                          const char * &opType) const;
 987 
 988 
 989   bool       is_base_register(FormDict &globals) const;
 990   Form::DataType is_base_constant(FormDict &globals) const;
 991   bool       is_chain_rule(FormDict &globals) const;
 992   int        is_ideal_copy() const;
 993   int        is_expensive() const;     // node matches ideal 'CosD'
 994   bool       is_ideal_unlock() const;
 995   bool       is_ideal_call_leaf() const;
 996   bool       is_ideal_if()   const;    // node matches ideal 'If'
 997   bool       is_ideal_fastlock() const; // node matches ideal 'FastLock'
 998   bool       is_ideal_jump()   const;  // node matches ideal 'Jump'
 999   bool       is_ideal_membar() const;  // node matches ideal 'MemBarXXX'
1000   bool       is_ideal_loadPC() const;  // node matches ideal 'LoadPC'
1001   bool       is_ideal_box() const;     // node matches ideal 'Box'
1002   bool       is_ideal_goto() const;    // node matches ideal 'Goto'
1003   bool       is_ideal_loopEnd() const; // node matches ideal 'LoopEnd'
1004   bool       is_ideal_bool() const;    // node matches ideal 'Bool'
1005   Form::DataType is_ideal_load() const;// node matches ideal 'LoadXNode'



1006   Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
1007 
1008   // Check if 'mRule2' is a cisc-spill variant of this MatchRule
1009   int        matchrule_cisc_spill_match(FormDict &globals, RegisterForm* registers,
1010                                         MatchRule* mRule2, const char* &operand,
1011                                         const char* &reg_type);
1012 
1013   // Check if 'mRule2' is equivalent to this MatchRule
1014   virtual bool equivalent(FormDict& globals, MatchNode* mRule2);
1015 
1016   void       matchrule_swap_commutative_op(const char* instr_ident, int count, int& match_rules_cnt);
1017 
1018   void dump();
1019   void output(FILE *fp);
1020 };
1021 
1022 //------------------------------Attribute--------------------------------------
1023 class Attribute : public Form {
1024 private:
1025 




 141   virtual int         is_tls_instruction() const; // tlsLoadP rule or ideal ThreadLocal
 142   virtual int         is_ideal_copy() const;    // node matches ideal 'Copy*'
 143   virtual bool        is_ideal_unlock() const;  // node matches ideal 'Unlock'
 144   virtual bool        is_ideal_call_leaf() const; // node matches ideal 'CallLeaf'
 145   virtual bool        is_ideal_if()   const;    // node matches ideal 'If'
 146   virtual bool        is_ideal_fastlock() const; // node matches 'FastLock'
 147   virtual bool        is_ideal_membar() const;  // node matches ideal 'MemBarXXX'
 148   virtual bool        is_ideal_loadPC() const;  // node matches ideal 'LoadPC'
 149   virtual bool        is_ideal_box() const;     // node matches ideal 'Box'
 150   virtual bool        is_ideal_goto() const;    // node matches ideal 'Goto'
 151   virtual bool        is_ideal_branch() const;  // "" 'If' | 'Goto' | 'LoopEnd' | 'Jump'
 152   virtual bool        is_ideal_jump() const;    // node matches ideal 'Jump'
 153   virtual bool        is_ideal_return() const;  // node matches ideal 'Return'
 154   virtual bool        is_ideal_halt() const;    // node matches ideal 'Halt'
 155   virtual bool        is_ideal_safepoint() const; // node matches 'SafePoint'
 156   virtual bool        is_ideal_nop() const;     // node matches 'Nop'
 157   virtual bool        is_ideal_control() const; // control node
 158 
 159   virtual Form::CallType is_ideal_call() const; // matches ideal 'Call'
 160   virtual Form::DataType is_ideal_load() const; // node matches ideal 'LoadXNode'
 161   // Should antidep checks be disabled for this Instruct
 162   // See definition of MatchRule::skip_antidep_check
 163   bool skip_antidep_check() const;
 164   virtual Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
 165           bool        is_ideal_mem() const { return is_ideal_load() != Form::none || is_ideal_store() != Form::none; }
 166   virtual uint        two_address(FormDict &globals); // output reg must match input reg
 167   // when chaining a constant to an instruction, return 'true' and set opType
 168   virtual Form::DataType is_chain_of_constant(FormDict &globals);
 169   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType);
 170   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType, const char * &result_type);
 171 
 172   // Check if a simple chain rule
 173   virtual bool        is_simple_chain_rule(FormDict &globals) const;
 174 
 175   // check for structural rematerialization
 176   virtual bool        rematerialize(FormDict &globals, RegisterForm *registers);
 177 
 178   // loads from memory, so must check for anti-dependence
 179   virtual bool        needs_anti_dependence_check(FormDict &globals) const;
 180   virtual int         memory_operand(FormDict &globals) const;
 181           bool        is_wide_memory_kill(FormDict &globals) const;
 182 
 183   enum memory_operand_type {


 989                          const char * &opType) const;
 990 
 991 
 992   bool       is_base_register(FormDict &globals) const;
 993   Form::DataType is_base_constant(FormDict &globals) const;
 994   bool       is_chain_rule(FormDict &globals) const;
 995   int        is_ideal_copy() const;
 996   int        is_expensive() const;     // node matches ideal 'CosD'
 997   bool       is_ideal_unlock() const;
 998   bool       is_ideal_call_leaf() const;
 999   bool       is_ideal_if()   const;    // node matches ideal 'If'
1000   bool       is_ideal_fastlock() const; // node matches ideal 'FastLock'
1001   bool       is_ideal_jump()   const;  // node matches ideal 'Jump'
1002   bool       is_ideal_membar() const;  // node matches ideal 'MemBarXXX'
1003   bool       is_ideal_loadPC() const;  // node matches ideal 'LoadPC'
1004   bool       is_ideal_box() const;     // node matches ideal 'Box'
1005   bool       is_ideal_goto() const;    // node matches ideal 'Goto'
1006   bool       is_ideal_loopEnd() const; // node matches ideal 'LoopEnd'
1007   bool       is_ideal_bool() const;    // node matches ideal 'Bool'
1008   Form::DataType is_ideal_load() const;// node matches ideal 'LoadXNode'
1009   // Should antidep checks be disabled for this rule
1010   // See definition of MatchRule::skip_antidep_check
1011   bool skip_antidep_check() const;
1012   Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
1013 
1014   // Check if 'mRule2' is a cisc-spill variant of this MatchRule
1015   int        matchrule_cisc_spill_match(FormDict &globals, RegisterForm* registers,
1016                                         MatchRule* mRule2, const char* &operand,
1017                                         const char* &reg_type);
1018 
1019   // Check if 'mRule2' is equivalent to this MatchRule
1020   virtual bool equivalent(FormDict& globals, MatchNode* mRule2);
1021 
1022   void       matchrule_swap_commutative_op(const char* instr_ident, int count, int& match_rules_cnt);
1023 
1024   void dump();
1025   void output(FILE *fp);
1026 };
1027 
1028 //------------------------------Attribute--------------------------------------
1029 class Attribute : public Form {
1030 private:
1031 


src/share/vm/adlc/formssel.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File