float.hh revision 5041
12SN/A/* 21762SN/A * Copyright (c) 2007 The Hewlett-Packard Development Company 32SN/A * All rights reserved. 42SN/A * 52SN/A * Redistribution and use of this software in source and binary forms, 62SN/A * with or without modification, are permitted provided that the 72SN/A * following conditions are met: 82SN/A * 92SN/A * The software must be used only for Non-Commercial Use which means any 102SN/A * use which is NOT directed to receiving any direct monetary 112SN/A * compensation for, or commercial advantage from such use. Illustrative 122SN/A * examples of non-commercial use are academic research, personal study, 132SN/A * teaching, education and corporate research & development. 142SN/A * Illustrative examples of commercial use are distributing products for 152SN/A * commercial advantage and providing services using the software for 162SN/A * commercial advantage. 172SN/A * 182SN/A * If you wish to use this software or functionality therein that may be 192SN/A * covered by patents for commercial use, please contact: 202SN/A * Director of Intellectual Property Licensing 212SN/A * Office of Strategy and Technology 222SN/A * Hewlett-Packard Company 232SN/A * 1501 Page Mill Road 242SN/A * Palo Alto, California 94304 252SN/A * 262SN/A * Redistributions of source code must retain the above copyright notice, 272665Ssaidi@eecs.umich.edu * this list of conditions and the following disclaimer. Redistributions 282665Ssaidi@eecs.umich.edu * in binary form must reproduce the above copyright notice, this list of 292665Ssaidi@eecs.umich.edu * conditions and the following disclaimer in the documentation and/or 302665Ssaidi@eecs.umich.edu * other materials provided with the distribution. Neither the name of 312SN/A * the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 322SN/A * contributors may be used to endorse or promote products derived from 332623SN/A * this software without specific prior written permission. No right of 342623SN/A * sublicense is granted herewith. Derivatives of the software and 352SN/A * output created using the software may be prepared, but only for 364182Sgblack@eecs.umich.edu * Non-Commercial Uses. Derivatives of the software may be shared with 371354SN/A * others provided: (i) the others agree to abide by the list of 381858SN/A * conditions herein which includes the Non-Commercial Use restrictions; 396658Snate@binkert.org * and (ii) such Derivatives of the software include the above copyright 401717SN/A * notice to acknowledge the contribution from this software where 412683Sktlim@umich.edu * applicable, this list of conditions and the disclaimer below. 421354SN/A * 431354SN/A * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 442387SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 452387SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 462387SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 4756SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 485348Ssaidi@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 492SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 502SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 511858SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 522SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 533453Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 543453Sgblack@eecs.umich.edu * 553453Sgblack@eecs.umich.edu * Authors: Gabe Black 563453Sgblack@eecs.umich.edu */ 573453Sgblack@eecs.umich.edu 582462SN/A#ifndef __ARCH_X86_FLOATREGS_HH__ 592SN/A#define __ARCH_X86_FLOATREGS_HH__ 60715SN/A 61715SN/A#include "arch/x86/x86_traits.hh" 62715SN/A#include "base/bitunion.hh" 63715SN/A 642SN/Anamespace X86ISA 652SN/A{ 664182Sgblack@eecs.umich.edu enum FloatRegIndex 674182Sgblack@eecs.umich.edu { 684182Sgblack@eecs.umich.edu // MMX/X87 registers 694182Sgblack@eecs.umich.edu FLOATREG_MMX_BASE, 702680Sktlim@umich.edu FLOATREG_FPR_BASE = FLOATREG_MMX_BASE, 71237SN/A FLOATREG_MMX0 = FLOATREG_MMX_BASE, 722SN/A FLOATREG_MMX1, 732SN/A FLOATREG_MMX2, 742SN/A FLOATREG_MMX3, 752SN/A FLOATREG_MMX4, 762SN/A FLOATREG_MMX5, 775529Snate@binkert.org FLOATREG_MMX6, 785529Snate@binkert.org FLOATREG_MMX7, 792420SN/A 802623SN/A FLOATREG_FPR0 = FLOATREG_FPR_BASE, 812SN/A FLOATREG_FPR1, 822107SN/A FLOATREG_FPR2, 832159SN/A FLOATREG_FPR3, 842455SN/A FLOATREG_FPR4, 852455SN/A FLOATREG_FPR5, 862386SN/A FLOATREG_FPR6, 872623SN/A FLOATREG_FPR7, 882SN/A 891371SN/A FLOATREG_XMM_BASE = FLOATREG_MMX_BASE + NumMMXRegs, 905348Ssaidi@eecs.umich.edu FLOATREG_XMM0_LOW = FLOATREG_XMM_BASE, 915348Ssaidi@eecs.umich.edu FLOATREG_XMM0_HIGH, 925348Ssaidi@eecs.umich.edu FLOATREG_XMM1_LOW, 935348Ssaidi@eecs.umich.edu FLOATREG_XMM1_HIGH, 945348Ssaidi@eecs.umich.edu FLOATREG_XMM2_LOW, 955348Ssaidi@eecs.umich.edu FLOATREG_XMM2_HIGH, 965348Ssaidi@eecs.umich.edu FLOATREG_XMM3_LOW, 975348Ssaidi@eecs.umich.edu FLOATREG_XMM3_HIGH, 982SN/A FLOATREG_XMM4_LOW, 995807Snate@binkert.org FLOATREG_XMM4_HIGH, 1002SN/A FLOATREG_XMM5_LOW, 1012SN/A FLOATREG_XMM5_HIGH, 1022SN/A FLOATREG_XMM6_LOW, 1032SN/A FLOATREG_XMM6_HIGH, 1042SN/A FLOATREG_XMM7_LOW, 1052SN/A FLOATREG_XMM7_HIGH, 1062SN/A FLOATREG_XMM8_LOW, 1072SN/A FLOATREG_XMM8_HIGH, 1082SN/A FLOATREG_XMM9_LOW, 1091400SN/A FLOATREG_XMM9_HIGH, 1105529Snate@binkert.org FLOATREG_XMM10_LOW, 1112623SN/A FLOATREG_XMM10_HIGH, 1122SN/A FLOATREG_XMM11_LOW, 1131400SN/A FLOATREG_XMM11_HIGH, 1142683Sktlim@umich.edu FLOATREG_XMM12_LOW, 1152683Sktlim@umich.edu FLOATREG_XMM12_HIGH, 1162190SN/A FLOATREG_XMM13_LOW, 1172683Sktlim@umich.edu FLOATREG_XMM13_HIGH, 1182683Sktlim@umich.edu FLOATREG_XMM14_LOW, 1192683Sktlim@umich.edu FLOATREG_XMM14_HIGH, 1202680Sktlim@umich.edu FLOATREG_XMM15_LOW, 1215169Ssaidi@eecs.umich.edu FLOATREG_XMM15_HIGH, 1225169Ssaidi@eecs.umich.edu 1235496Ssaidi@eecs.umich.edu NUM_FLOATREGS = FLOATREG_XMM_BASE + 2 * NumXMMRegs 1245496Ssaidi@eecs.umich.edu }; 1255496Ssaidi@eecs.umich.edu 1265894Sgblack@eecs.umich.edu static inline FloatRegIndex 1275496Ssaidi@eecs.umich.edu FLOATREG_MMX(int index) 1285496Ssaidi@eecs.umich.edu { 1295496Ssaidi@eecs.umich.edu return (FloatRegIndex)(FLOATREG_MMX_BASE + index); 1305894Sgblack@eecs.umich.edu } 1315496Ssaidi@eecs.umich.edu 1325496Ssaidi@eecs.umich.edu static inline FloatRegIndex 1335496Ssaidi@eecs.umich.edu FLOATREG_FPR(int index) 1345496Ssaidi@eecs.umich.edu { 1355496Ssaidi@eecs.umich.edu return (FloatRegIndex)(FLOATREG_FPR_BASE + index); 1365496Ssaidi@eecs.umich.edu } 1375496Ssaidi@eecs.umich.edu 1385496Ssaidi@eecs.umich.edu static inline FloatRegIndex 1395169Ssaidi@eecs.umich.edu FLOATREG_XMM_LOW(int index) 1402SN/A { 1411858SN/A return (FloatRegIndex)(FLOATREG_XMM_BASE + 2 * index); 1422SN/A } 1432SN/A 1442SN/A static inline FloatRegIndex 1452SN/A FLOATREG_XMM_HIGH(int index) 1462SN/A { 1472SN/A return (FloatRegIndex)(FLOATREG_XMM_BASE + 2 * index + 1); 1484181Sgblack@eecs.umich.edu } 1494181Sgblack@eecs.umich.edu}; 1504182Sgblack@eecs.umich.edu 1514182Sgblack@eecs.umich.edu#endif // __ARCH_X86_FLOATREGS_HH__ 1522SN/A