Mercurial > hg > truffle
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 } |