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);
|