src/share/vm/opto/matcher.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7119644 Sdiff src/share/vm/opto

src/share/vm/opto/matcher.hpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2011, 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  *


 233   OptoReg::Name _out_arg_limit;
 234 
 235   OptoRegPair *_parm_regs;        // Array of machine registers per argument
 236   RegMask *_calling_convention_mask; // Array of RegMasks per argument
 237 
 238   // Does matcher have a match rule for this ideal node?
 239   static const bool has_match_rule(int opcode);
 240   static const bool _hasMatchRule[_last_opcode];
 241 
 242   // Does matcher have a match rule for this ideal node and is the
 243   // predicate (if there is one) true?
 244   // NOTE: If this function is used more commonly in the future, ADLC
 245   // should generate this one.
 246   static const bool match_rule_supported(int opcode);
 247 
 248   // Used to determine if we have fast l2f conversion
 249   // USII has it, USIII doesn't
 250   static const bool convL2FSupported(void);
 251 
 252   // Vector width in bytes
 253   static const uint vector_width_in_bytes(void);
 254 








 255   // Vector ideal reg
 256   static const uint vector_ideal_reg(void);
 257 



 258   // Used to determine a "low complexity" 64-bit constant.  (Zero is simple.)
 259   // The standard of comparison is one (StoreL ConL) vs. two (StoreI ConI).
 260   // Depends on the details of 64-bit constant generation on the CPU.
 261   static const bool isSimpleConstant64(jlong con);
 262 
 263   // These calls are all generated by the ADLC
 264 
 265   // TRUE - grows up, FALSE - grows down (Intel)
 266   virtual bool stack_direction() const;
 267 
 268   // Java-Java calling convention
 269   // (what you use when Java calls Java)
 270 
 271   // Alignment of stack in bytes, standard Intel word alignment is 4.
 272   // Sparc probably wants at least double-word (8).
 273   static uint stack_alignment_in_bytes();
 274   // Alignment of stack, measured in stack slots.
 275   // The size of stack slots is defined by VMRegImpl::stack_slot_size.
 276   static uint stack_alignment_in_slots() {
 277     return stack_alignment_in_bytes() / (VMRegImpl::stack_slot_size);


   1 /*
   2  * Copyright (c) 1997, 2012, 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  *


 233   OptoReg::Name _out_arg_limit;
 234 
 235   OptoRegPair *_parm_regs;        // Array of machine registers per argument
 236   RegMask *_calling_convention_mask; // Array of RegMasks per argument
 237 
 238   // Does matcher have a match rule for this ideal node?
 239   static const bool has_match_rule(int opcode);
 240   static const bool _hasMatchRule[_last_opcode];
 241 
 242   // Does matcher have a match rule for this ideal node and is the
 243   // predicate (if there is one) true?
 244   // NOTE: If this function is used more commonly in the future, ADLC
 245   // should generate this one.
 246   static const bool match_rule_supported(int opcode);
 247 
 248   // Used to determine if we have fast l2f conversion
 249   // USII has it, USIII doesn't
 250   static const bool convL2FSupported(void);
 251 
 252   // Vector width in bytes
 253   static const int vector_width_in_bytes(BasicType bt);
 254 
 255   // Limits on vector size (number of elements).
 256   static const int max_vector_size(const BasicType bt);
 257   static const int min_vector_size(const BasicType bt);
 258   static const bool vector_size_supported(const BasicType bt, int size) {
 259     return (Matcher::max_vector_size(bt) >= size &&
 260             Matcher::min_vector_size(bt) <= size);
 261   }
 262 
 263   // Vector ideal reg
 264   static const int vector_ideal_reg(int len);
 265 
 266   // CPU supports misaligned vectors store/load.
 267   static const bool misaligned_vectors_ok();
 268 
 269   // Used to determine a "low complexity" 64-bit constant.  (Zero is simple.)
 270   // The standard of comparison is one (StoreL ConL) vs. two (StoreI ConI).
 271   // Depends on the details of 64-bit constant generation on the CPU.
 272   static const bool isSimpleConstant64(jlong con);
 273 
 274   // These calls are all generated by the ADLC
 275 
 276   // TRUE - grows up, FALSE - grows down (Intel)
 277   virtual bool stack_direction() const;
 278 
 279   // Java-Java calling convention
 280   // (what you use when Java calls Java)
 281 
 282   // Alignment of stack in bytes, standard Intel word alignment is 4.
 283   // Sparc probably wants at least double-word (8).
 284   static uint stack_alignment_in_bytes();
 285   // Alignment of stack, measured in stack slots.
 286   // The size of stack slots is defined by VMRegImpl::stack_slot_size.
 287   static uint stack_alignment_in_slots() {
 288     return stack_alignment_in_bytes() / (VMRegImpl::stack_slot_size);


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