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 * 23 */ 24 25 #ifndef SHARE_VM_OPTO_OPTOREG_HPP 26 #define SHARE_VM_OPTO_OPTOREG_HPP 27 28 // AdGlobals contains c2 specific register handling code as specified 29 // in the .ad files. 30 #ifdef TARGET_ARCH_MODEL_x86_32 31 # include "adfiles/adGlobals_x86_32.hpp" 32 #endif 33 #ifdef TARGET_ARCH_MODEL_x86_64 34 # include "adfiles/adGlobals_x86_64.hpp" 35 #endif 36 #ifdef TARGET_ARCH_MODEL_sparc 37 # include "adfiles/adGlobals_sparc.hpp" 38 #endif 39 #ifdef TARGET_ARCH_MODEL_zero 40 # include "adfiles/adGlobals_zero.hpp" 41 #endif 42 #ifdef TARGET_ARCH_MODEL_arm 43 # include "adfiles/adGlobals_arm.hpp" 44 #endif 45 #ifdef TARGET_ARCH_MODEL_ppc_32 46 # include "adfiles/adGlobals_ppc_32.hpp" 47 #endif 48 #ifdef TARGET_ARCH_MODEL_ppc_64 49 # include "adfiles/adGlobals_ppc_64.hpp" 50 #endif 51 #ifdef TARGET_ARCH_MODEL_aarch64 52 # include "adfiles/adGlobals_aarch64.hpp" 53 #endif 54 55 //------------------------------OptoReg---------------------------------------- 56 // We eventually need Registers for the Real World. Registers are essentially 57 // non-SSA names. A Register is represented as a number. Non-regular values 58 // (e.g., Control, Memory, I/O) use the Special register. The actual machine 59 // registers (as described in the ADL file for a machine) start at zero. 60 // Stack-slots (spill locations) start at the nest Chunk past the last machine 61 // register. 62 // 63 // Note that stack spill-slots are treated as a very large register set. 64 // They have all the correct properties for a Register: not aliased (unique 65 // named). There is some simple mapping from a stack-slot register number 66 // to the actual location on the stack; this mapping depends on the calling 67 // conventions and is described in the ADL. 68 // 69 // Note that Name is not enum. C++ standard defines that the range of enum 70 // is the range of smallest bit-field that can represent all enumerators 71 // declared in the enum. The result of assigning a value to enum is undefined | 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 * 23 */ 24 25 #ifndef SHARE_VM_OPTO_OPTOREG_HPP 26 #define SHARE_VM_OPTO_OPTOREG_HPP 27 28 // AdGlobals contains c2 specific register handling code as specified 29 // in the .ad files. 30 #if defined ADGLOBALS_MD_HPP 31 # include ADGLOBALS_MD_HPP 32 #elif defined TARGET_ARCH_MODEL_x86_32 33 # include "adfiles/adGlobals_x86_32.hpp" 34 #elif defined TARGET_ARCH_MODEL_x86_64 35 # include "adfiles/adGlobals_x86_64.hpp" 36 #elif defined TARGET_ARCH_MODEL_sparc 37 # include "adfiles/adGlobals_sparc.hpp" 38 #elif defined TARGET_ARCH_MODEL_zero 39 # include "adfiles/adGlobals_zero.hpp" 40 #elif defined TARGET_ARCH_MODEL_ppc_64 41 # include "adfiles/adGlobals_ppc_64.hpp" 42 #elif defined TARGET_ARCH_MODEL_aarch64 43 # include "adfiles/adGlobals_aarch64.hpp" 44 #endif 45 46 //------------------------------OptoReg---------------------------------------- 47 // We eventually need Registers for the Real World. Registers are essentially 48 // non-SSA names. A Register is represented as a number. Non-regular values 49 // (e.g., Control, Memory, I/O) use the Special register. The actual machine 50 // registers (as described in the ADL file for a machine) start at zero. 51 // Stack-slots (spill locations) start at the nest Chunk past the last machine 52 // register. 53 // 54 // Note that stack spill-slots are treated as a very large register set. 55 // They have all the correct properties for a Register: not aliased (unique 56 // named). There is some simple mapping from a stack-slot register number 57 // to the actual location on the stack; this mapping depends on the calling 58 // conventions and is described in the ADL. 59 // 60 // Note that Name is not enum. C++ standard defines that the range of enum 61 // is the range of smallest bit-field that can represent all enumerators 62 // declared in the enum. The result of assigning a value to enum is undefined |