registers.hh (9046:a1104cc13db2) | registers.hh (9917:7274310be1bb) |
---|---|
1/* 2 * Copyright (c) 2007 The Hewlett-Packard Development Company | 1/* 2 * Copyright (c) 2007 The Hewlett-Packard Development Company |
3 * Copyright (c) 2013 Advanced Micro Devices, Inc. |
|
3 * All rights reserved. 4 * 5 * The license below extends only to copyright in the software and shall 6 * not be construed as granting a license to any other intellectual 7 * property including but not limited to intellectual property relating 8 * to a hardware implementation of the functionality of the software 9 * licensed hereunder. You may use the software subject to the license 10 * terms below provided that you ensure that this notice is replicated --- 34 unchanged lines hidden (view full) --- 45#include "arch/x86/regs/misc.hh" 46#include "arch/x86/x86_traits.hh" 47 48namespace X86ISA 49{ 50using X86ISAInst::MaxInstSrcRegs; 51using X86ISAInst::MaxInstDestRegs; 52using X86ISAInst::MaxMiscDestRegs; | 4 * All rights reserved. 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating 9 * to a hardware implementation of the functionality of the software 10 * licensed hereunder. You may use the software subject to the license 11 * terms below provided that you ensure that this notice is replicated --- 34 unchanged lines hidden (view full) --- 46#include "arch/x86/regs/misc.hh" 47#include "arch/x86/x86_traits.hh" 48 49namespace X86ISA 50{ 51using X86ISAInst::MaxInstSrcRegs; 52using X86ISAInst::MaxInstDestRegs; 53using X86ISAInst::MaxMiscDestRegs; |
53const int NumMiscArchRegs = NUM_MISCREGS; | |
54const int NumMiscRegs = NUM_MISCREGS; 55 56const int NumIntArchRegs = NUM_INTREGS; 57const int NumIntRegs = 58 NumIntArchRegs + NumMicroIntRegs + 59 NumPseudoIntRegs + NumImplicitIntRegs; 60 | 54const int NumMiscRegs = NUM_MISCREGS; 55 56const int NumIntArchRegs = NUM_INTREGS; 57const int NumIntRegs = 58 NumIntArchRegs + NumMicroIntRegs + 59 NumPseudoIntRegs + NumImplicitIntRegs; 60 |
61//Each 128 bit xmm register is broken into two effective 64 bit registers. | 61// Each 128 bit xmm register is broken into two effective 64 bit registers. 62// Add 8 for the indices that are mapped over the fp stack |
62const int NumFloatRegs = | 63const int NumFloatRegs = |
63 NumMMXRegs + 2 * NumXMMRegs + NumMicroFpRegs; 64const int NumFloatArchRegs = NumFloatRegs + 8; | 64 NumMMXRegs + 2 * NumXMMRegs + NumMicroFpRegs + 8; |
65 66// These enumerate all the registers for dependence tracking. 67enum DependenceTags { | 65 66// These enumerate all the registers for dependence tracking. 67enum DependenceTags { |
68 //There are 16 microcode registers at the moment. This is an 69 //unusually large constant to make sure there isn't overflow. | 68 // FP_Base_DepTag must be large enough to be bigger than any integer 69 // register index which has the IntFoldBit (1 << 6) set. To be safe 70 // we just start at (1 << 7) == 128. |
70 FP_Base_DepTag = 128, | 71 FP_Base_DepTag = 128, |
71 Ctrl_Base_DepTag = 72 FP_Base_DepTag + 73 //mmx/x87 registers 74 8 + 75 //xmm registers 76 16 * 2 + 77 //The microcode fp registers 78 8 + 79 //The indices that are mapped over the fp stack 80 8, | 72 Ctrl_Base_DepTag = FP_Base_DepTag + NumFloatRegs, |
81 Max_DepTag = Ctrl_Base_DepTag + NumMiscRegs 82}; 83 84// semantically meaningful register indices 85//There is no such register in X86 86const int ZeroReg = NUM_INTREGS; 87const int StackPointerReg = INTREG_RSP; 88//X86 doesn't seem to have a link register --- 29 unchanged lines hidden --- | 73 Max_DepTag = Ctrl_Base_DepTag + NumMiscRegs 74}; 75 76// semantically meaningful register indices 77//There is no such register in X86 78const int ZeroReg = NUM_INTREGS; 79const int StackPointerReg = INTREG_RSP; 80//X86 doesn't seem to have a link register --- 29 unchanged lines hidden --- |