< prev index next >

src/hotspot/share/adlc/formssel.hpp

Print this page


   1 /*
   2  * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   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
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 174   // Should antidep checks be disabled for this Instruct
 175   // See definition of MatchRule::skip_antidep_check
 176   bool skip_antidep_check() const;
 177   virtual Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
 178           bool        is_ideal_mem() const { return is_ideal_load() != Form::none || is_ideal_store() != Form::none; }
 179   virtual uint        two_address(FormDict &globals); // output reg must match input reg
 180   // when chaining a constant to an instruction, return 'true' and set opType
 181   virtual Form::DataType is_chain_of_constant(FormDict &globals);
 182   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType);
 183   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType, const char * &result_type);
 184 
 185   // Check if a simple chain rule
 186   virtual bool        is_simple_chain_rule(FormDict &globals) const;
 187 
 188   // check for structural rematerialization
 189   virtual bool        rematerialize(FormDict &globals, RegisterForm *registers);
 190 
 191   // loads from memory, so must check for anti-dependence
 192   virtual bool        needs_anti_dependence_check(FormDict &globals) const;
 193   virtual int         memory_operand(FormDict &globals) const;
 194           bool        is_wide_memory_kill(FormDict &globals) const;
 195 
 196   enum memory_operand_type {
 197     NO_MEMORY_OPERAND = -1,
 198     MANY_MEMORY_OPERANDS = 999999
 199   };
 200 
 201 
 202   // This instruction captures the machine-independent bottom_type
 203   // Expected use is for pointer vs oop determination for LoadP
 204   virtual bool        captures_bottom_type(FormDict& globals) const;
 205 
 206   virtual const char *cost();      // Access ins_cost attribute
 207   virtual uint        num_opnds(); // Count of num_opnds for MachNode class
 208                                    // Counts USE_DEF opnds twice.  See also num_unique_opnds().
 209   virtual uint        num_post_match_opnds();
 210   virtual uint        num_consts(FormDict &globals) const;// Constants in match rule
 211   // Constants in match rule with specified type
 212   virtual uint        num_consts(FormDict &globals, Form::DataType type) const;
 213 
 214   // Return the register class associated with 'leaf'.


   1 /*
   2  * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   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
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 174   // Should antidep checks be disabled for this Instruct
 175   // See definition of MatchRule::skip_antidep_check
 176   bool skip_antidep_check() const;
 177   virtual Form::DataType is_ideal_store() const;// node matches ideal 'StoreXNode'
 178           bool        is_ideal_mem() const { return is_ideal_load() != Form::none || is_ideal_store() != Form::none; }
 179   virtual uint        two_address(FormDict &globals); // output reg must match input reg
 180   // when chaining a constant to an instruction, return 'true' and set opType
 181   virtual Form::DataType is_chain_of_constant(FormDict &globals);
 182   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType);
 183   virtual Form::DataType is_chain_of_constant(FormDict &globals, const char * &opType, const char * &result_type);
 184 
 185   // Check if a simple chain rule
 186   virtual bool        is_simple_chain_rule(FormDict &globals) const;
 187 
 188   // check for structural rematerialization
 189   virtual bool        rematerialize(FormDict &globals, RegisterForm *registers);
 190 
 191   // loads from memory, so must check for anti-dependence
 192   virtual bool        needs_anti_dependence_check(FormDict &globals) const;
 193   virtual int         memory_operand(FormDict &globals) const;

 194 
 195   enum memory_operand_type {
 196     NO_MEMORY_OPERAND = -1,
 197     MANY_MEMORY_OPERANDS = 999999
 198   };
 199 
 200 
 201   // This instruction captures the machine-independent bottom_type
 202   // Expected use is for pointer vs oop determination for LoadP
 203   virtual bool        captures_bottom_type(FormDict& globals) const;
 204 
 205   virtual const char *cost();      // Access ins_cost attribute
 206   virtual uint        num_opnds(); // Count of num_opnds for MachNode class
 207                                    // Counts USE_DEF opnds twice.  See also num_unique_opnds().
 208   virtual uint        num_post_match_opnds();
 209   virtual uint        num_consts(FormDict &globals) const;// Constants in match rule
 210   // Constants in match rule with specified type
 211   virtual uint        num_consts(FormDict &globals, Form::DataType type) const;
 212 
 213   // Return the register class associated with 'leaf'.


< prev index next >