comparison src/share/vm/adlc/formsopt.cpp @ 6179:8c92982cbbc4

7119644: Increase superword's vector size up to 256 bits Summary: Increase vector size up to 256-bits for YMM AVX registers on x86. Reviewed-by: never, twisti, roland
author kvn
date Fri, 15 Jun 2012 01:25:19 -0700
parents db2e64ca2d5a
children
comparison
equal deleted inserted replaced
6146:eba1d5bce9e8 6179:8c92982cbbc4
1 /* 1 /*
2 * Copyright (c) 1998, 2010, 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.
64 64
65 // Called after parsing the Register block. Record the register class 65 // Called after parsing the Register block. Record the register class
66 // for spill-slots/regs. 66 // for spill-slots/regs.
67 void RegisterForm::addSpillRegClass() { 67 void RegisterForm::addSpillRegClass() {
68 // Stack slots start at the next available even register number. 68 // Stack slots start at the next available even register number.
69 _reg_ctr = (_reg_ctr+1) & ~1; 69 _reg_ctr = (_reg_ctr+7) & ~7;
70 const char *rc_name = "stack_slots"; 70 const char *rc_name = "stack_slots";
71 RegClass *reg_class = new RegClass(rc_name); 71 RegClass *reg_class = new RegClass(rc_name);
72 reg_class->_stack_or_reg = true; 72 reg_class->_stack_or_reg = true;
73 _rclasses.addName(rc_name); 73 _rclasses.addName(rc_name);
74 _regClass.Insert(rc_name,reg_class); 74 _regClass.Insert(rc_name,reg_class);
148 148
149 // Compute RegMask size 149 // Compute RegMask size
150 int RegisterForm::RegMask_Size() { 150 int RegisterForm::RegMask_Size() {
151 // Need at least this many words 151 // Need at least this many words
152 int words_for_regs = (_reg_ctr + 31)>>5; 152 int words_for_regs = (_reg_ctr + 31)>>5;
153 // Add a few for incoming & outgoing arguments to calls. 153 // The array of Register Mask bits should be large enough to cover
154 // all the machine registers and all parameters that need to be passed
155 // on the stack (stack registers) up to some interesting limit. Methods
156 // that need more parameters will NOT be compiled. On Intel, the limit
157 // is something like 90+ parameters.
158 // Add a few (3 words == 96 bits) for incoming & outgoing arguments to calls.
154 // Round up to the next doubleword size. 159 // Round up to the next doubleword size.
155 return (words_for_regs + 2 + 1) & ~1; 160 return (words_for_regs + 3 + 1) & ~1;
156 } 161 }
157 162
158 void RegisterForm::dump() { // Debug printer 163 void RegisterForm::dump() { // Debug printer
159 output(stderr); 164 output(stderr);
160 } 165 }