operands.isa revision 5294
14158Sgblack@eecs.umich.edu// Copyright (c) 2007 The Regents of The University of Michigan 24158Sgblack@eecs.umich.edu// All rights reserved. 34158Sgblack@eecs.umich.edu// 44158Sgblack@eecs.umich.edu// Redistribution and use in source and binary forms, with or without 54158Sgblack@eecs.umich.edu// modification, are permitted provided that the following conditions are 64158Sgblack@eecs.umich.edu// met: redistributions of source code must retain the above copyright 74158Sgblack@eecs.umich.edu// notice, this list of conditions and the following disclaimer; 84158Sgblack@eecs.umich.edu// redistributions in binary form must reproduce the above copyright 94158Sgblack@eecs.umich.edu// notice, this list of conditions and the following disclaimer in the 104158Sgblack@eecs.umich.edu// documentation and/or other materials provided with the distribution; 114158Sgblack@eecs.umich.edu// neither the name of the copyright holders nor the names of its 124158Sgblack@eecs.umich.edu// contributors may be used to endorse or promote products derived from 134158Sgblack@eecs.umich.edu// this software without specific prior written permission. 144158Sgblack@eecs.umich.edu// 154158Sgblack@eecs.umich.edu// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 164158Sgblack@eecs.umich.edu// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 174158Sgblack@eecs.umich.edu// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 184158Sgblack@eecs.umich.edu// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 194158Sgblack@eecs.umich.edu// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 204158Sgblack@eecs.umich.edu// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 214158Sgblack@eecs.umich.edu// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 224158Sgblack@eecs.umich.edu// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 234158Sgblack@eecs.umich.edu// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 244158Sgblack@eecs.umich.edu// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 254158Sgblack@eecs.umich.edu// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 264158Sgblack@eecs.umich.edu// 274158Sgblack@eecs.umich.edu// Authors: Gabe Black 284158Sgblack@eecs.umich.edu 294158Sgblack@eecs.umich.edu// Copyright (c) 2007 The Hewlett-Packard Development Company 304158Sgblack@eecs.umich.edu// All rights reserved. 314158Sgblack@eecs.umich.edu// 324158Sgblack@eecs.umich.edu// Redistribution and use of this software in source and binary forms, 334158Sgblack@eecs.umich.edu// with or without modification, are permitted provided that the 344158Sgblack@eecs.umich.edu// following conditions are met: 354158Sgblack@eecs.umich.edu// 364158Sgblack@eecs.umich.edu// The software must be used only for Non-Commercial Use which means any 374158Sgblack@eecs.umich.edu// use which is NOT directed to receiving any direct monetary 384158Sgblack@eecs.umich.edu// compensation for, or commercial advantage from such use. Illustrative 394158Sgblack@eecs.umich.edu// examples of non-commercial use are academic research, personal study, 404158Sgblack@eecs.umich.edu// teaching, education and corporate research & development. 414158Sgblack@eecs.umich.edu// Illustrative examples of commercial use are distributing products for 424158Sgblack@eecs.umich.edu// commercial advantage and providing services using the software for 434158Sgblack@eecs.umich.edu// commercial advantage. 444158Sgblack@eecs.umich.edu// 454158Sgblack@eecs.umich.edu// If you wish to use this software or functionality therein that may be 464158Sgblack@eecs.umich.edu// covered by patents for commercial use, please contact: 474158Sgblack@eecs.umich.edu// Director of Intellectual Property Licensing 484158Sgblack@eecs.umich.edu// Office of Strategy and Technology 494158Sgblack@eecs.umich.edu// Hewlett-Packard Company 504158Sgblack@eecs.umich.edu// 1501 Page Mill Road 514158Sgblack@eecs.umich.edu// Palo Alto, California 94304 524158Sgblack@eecs.umich.edu// 534158Sgblack@eecs.umich.edu// Redistributions of source code must retain the above copyright notice, 544158Sgblack@eecs.umich.edu// this list of conditions and the following disclaimer. Redistributions 554158Sgblack@eecs.umich.edu// in binary form must reproduce the above copyright notice, this list of 564158Sgblack@eecs.umich.edu// conditions and the following disclaimer in the documentation and/or 574158Sgblack@eecs.umich.edu// other materials provided with the distribution. Neither the name of 584158Sgblack@eecs.umich.edu// the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 594158Sgblack@eecs.umich.edu// contributors may be used to endorse or promote products derived from 604158Sgblack@eecs.umich.edu// this software without specific prior written permission. No right of 614158Sgblack@eecs.umich.edu// sublicense is granted herewith. Derivatives of the software and 624158Sgblack@eecs.umich.edu// output created using the software may be prepared, but only for 634158Sgblack@eecs.umich.edu// Non-Commercial Uses. Derivatives of the software may be shared with 644158Sgblack@eecs.umich.edu// others provided: (i) the others agree to abide by the list of 654158Sgblack@eecs.umich.edu// conditions herein which includes the Non-Commercial Use restrictions; 664158Sgblack@eecs.umich.edu// and (ii) such Derivatives of the software include the above copyright 674158Sgblack@eecs.umich.edu// notice to acknowledge the contribution from this software where 684158Sgblack@eecs.umich.edu// applicable, this list of conditions and the disclaimer below. 694158Sgblack@eecs.umich.edu// 704158Sgblack@eecs.umich.edu// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 714158Sgblack@eecs.umich.edu// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 724158Sgblack@eecs.umich.edu// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 734158Sgblack@eecs.umich.edu// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 744158Sgblack@eecs.umich.edu// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 754158Sgblack@eecs.umich.edu// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 764158Sgblack@eecs.umich.edu// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 774158Sgblack@eecs.umich.edu// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 784158Sgblack@eecs.umich.edu// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 794158Sgblack@eecs.umich.edu// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 804158Sgblack@eecs.umich.edu// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 814158Sgblack@eecs.umich.edu// 824158Sgblack@eecs.umich.edu// Authors: Gabe Black 834158Sgblack@eecs.umich.edu 844158Sgblack@eecs.umich.edudef operand_types {{ 854158Sgblack@eecs.umich.edu 'sb' : ('signed int', 8), 864158Sgblack@eecs.umich.edu 'ub' : ('unsigned int', 8), 874158Sgblack@eecs.umich.edu 'sw' : ('signed int', 16), 884158Sgblack@eecs.umich.edu 'uw' : ('unsigned int', 16), 894158Sgblack@eecs.umich.edu 'sdw' : ('signed int', 32), 904158Sgblack@eecs.umich.edu 'udw' : ('unsigned int', 32), 914158Sgblack@eecs.umich.edu 'sqw' : ('signed int', 64), 924158Sgblack@eecs.umich.edu 'uqw' : ('unsigned int', 64), 934158Sgblack@eecs.umich.edu 'sf' : ('float', 32), 944158Sgblack@eecs.umich.edu 'df' : ('float', 64), 954158Sgblack@eecs.umich.edu}}; 964158Sgblack@eecs.umich.edu 974158Sgblack@eecs.umich.edudef operands {{ 985063Sgblack@eecs.umich.edu 'SrcReg1': ('IntReg', 'uqw', 'INTREG_FOLDED(src1, foldOBit)', 'IsInteger', 1), 995083Sgblack@eecs.umich.edu 'SSrcReg1': ('IntReg', 'uqw', 'src1', 'IsInteger', 1), 1005063Sgblack@eecs.umich.edu 'SrcReg2': ('IntReg', 'uqw', 'INTREG_FOLDED(src2, foldOBit)', 'IsInteger', 2), 1015083Sgblack@eecs.umich.edu 'SSrcReg2': ('IntReg', 'uqw', 'src2', 'IsInteger', 1), 1025063Sgblack@eecs.umich.edu 'Index': ('IntReg', 'uqw', 'INTREG_FOLDED(index, foldABit)', 'IsInteger', 3), 1035063Sgblack@eecs.umich.edu 'Base': ('IntReg', 'uqw', 'INTREG_FOLDED(base, foldABit)', 'IsInteger', 4), 1045063Sgblack@eecs.umich.edu 'DestReg': ('IntReg', 'uqw', 'INTREG_FOLDED(dest, foldOBit)', 'IsInteger', 5), 1055083Sgblack@eecs.umich.edu 'SDestReg': ('IntReg', 'uqw', 'dest', 'IsInteger', 5), 1065063Sgblack@eecs.umich.edu 'Data': ('IntReg', 'uqw', 'INTREG_FOLDED(data, foldOBit)', 'IsInteger', 6), 1075063Sgblack@eecs.umich.edu 'ProdLow': ('IntReg', 'uqw', 'INTREG_IMPLICIT(0)', 'IsInteger', 7), 1085063Sgblack@eecs.umich.edu 'ProdHi': ('IntReg', 'uqw', 'INTREG_IMPLICIT(1)', 'IsInteger', 8), 1095063Sgblack@eecs.umich.edu 'Quotient': ('IntReg', 'uqw', 'INTREG_IMPLICIT(2)', 'IsInteger', 9), 1105063Sgblack@eecs.umich.edu 'Remainder': ('IntReg', 'uqw', 'INTREG_IMPLICIT(3)', 'IsInteger', 10), 1115075Sgblack@eecs.umich.edu 'Divisor': ('IntReg', 'uqw', 'INTREG_IMPLICIT(4)', 'IsInteger', 11), 1125075Sgblack@eecs.umich.edu 'rax': ('IntReg', 'uqw', '(INTREG_RAX)', 'IsInteger', 12), 1135026Sgblack@eecs.umich.edu 'FpSrcReg1': ('FloatReg', 'df', 'src1', 'IsFloating', 20), 1145026Sgblack@eecs.umich.edu 'FpSrcReg2': ('FloatReg', 'df', 'src2', 'IsFloating', 21), 1155026Sgblack@eecs.umich.edu 'FpDestReg': ('FloatReg', 'df', 'dest', 'IsFloating', 22), 1165026Sgblack@eecs.umich.edu 'FpData': ('FloatReg', 'df', 'data', 'IsFloating', 23), 1175026Sgblack@eecs.umich.edu 'RIP': ('NPC', 'uqw', None, (None, None, 'IsControl'), 50), 1185026Sgblack@eecs.umich.edu 'uIP': ('UPC', 'uqw', None, (None, None, 'IsControl'), 51), 1195026Sgblack@eecs.umich.edu 'nuIP': ('NUPC', 'uqw', None, (None, None, 'IsControl'), 52), 1205063Sgblack@eecs.umich.edu 'ccFlagBits': ('IntReg', 'uqw', 'INTREG_PSEUDO(0)', None, 60), 1215082Sgblack@eecs.umich.edu # The TOP register should needs to be more protected so that later 1225082Sgblack@eecs.umich.edu # instructions don't map their indexes with an old value. 1235082Sgblack@eecs.umich.edu 'TOP': ('ControlReg', 'ub', 'MISCREG_X87_TOP', None, 61), 1245294Sgblack@eecs.umich.edu # The segment base as used by memory instructions. 1255289Sgblack@eecs.umich.edu 'SegBase': ('ControlReg', 'uqw', 'MISCREG_SEG_EFF_BASE(segment)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 70), 1265290Sgblack@eecs.umich.edu 1275294Sgblack@eecs.umich.edu # Operands to get and set registers indexed by the operands of the 1285294Sgblack@eecs.umich.edu # original instruction. 1295294Sgblack@eecs.umich.edu 'ControlDest': ('ControlReg', 'uqw', 'MISCREG_CR(dest)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 100), 1305294Sgblack@eecs.umich.edu 'ControlSrc1': ('ControlReg', 'uqw', 'MISCREG_CR(src1)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 101), 1315294Sgblack@eecs.umich.edu 'SegBaseDest': ('ControlReg', 'uqw', 'MISCREG_SEG_BASE(dest)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 102), 1325294Sgblack@eecs.umich.edu 'SegBaseSrc1': ('ControlReg', 'uqw', 'MISCREG_SEG_BASE(src1)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 103), 1335294Sgblack@eecs.umich.edu 'SegLimitDest': ('ControlReg', 'uqw', 'MISCREG_SEG_LIMIT(dest)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 104), 1345294Sgblack@eecs.umich.edu 'SegLimitSrc1': ('ControlReg', 'uqw', 'MISCREG_SEG_LIMIT(src1)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 105), 1355294Sgblack@eecs.umich.edu 'SegSelDest': ('ControlReg', 'uqw', 'MISCREG_SEG_SEL(dest)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 106), 1365294Sgblack@eecs.umich.edu 'SegSelSrc1': ('ControlReg', 'uqw', 'MISCREG_SEG_SEL(src1)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 107), 1375294Sgblack@eecs.umich.edu 'SegAttrDest': ('ControlReg', 'uqw', 'MISCREG_SEG_ATTR(dest)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 108), 1385294Sgblack@eecs.umich.edu 'SegAttrSrc1': ('ControlReg', 'uqw', 'MISCREG_SEG_ATTR(src1)', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 109), 1395294Sgblack@eecs.umich.edu 1405294Sgblack@eecs.umich.edu # Operands to access specific control registers directly. 1415294Sgblack@eecs.umich.edu 'EferOp': ('ControlReg', 'uqw', 'MISCREG_EFER', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 200), 1425294Sgblack@eecs.umich.edu 'CR4Op': ('ControlReg', 'uqw', 'MISCREG_CR4', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 201), 1435294Sgblack@eecs.umich.edu 'LDTRBase': ('ControlReg', 'uqw', 'MISCREG_TSL_BASE', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 202), 1445294Sgblack@eecs.umich.edu 'LDTRLimit': ('ControlReg', 'uqw', 'MISCREG_TSL_LIMIT', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 203), 1455294Sgblack@eecs.umich.edu 'LDTRSel': ('ControlReg', 'uqw', 'MISCREG_TSL', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 204), 1465294Sgblack@eecs.umich.edu 'GDTRBase': ('ControlReg', 'uqw', 'MISCREG_TSG_BASE', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 205), 1475294Sgblack@eecs.umich.edu 'GDTRLimit': ('ControlReg', 'uqw', 'MISCREG_TSG_LIMIT', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 206), 1485294Sgblack@eecs.umich.edu 'CSBase': ('ControlReg', 'udw', 'MISCREG_CS_EFF_BASE', (None, None, ['IsSerializeAfter','IsSerializing','IsNonSpeculative']), 207), 1495294Sgblack@eecs.umich.edu 'Mem': ('Mem', 'uqw', None, ('IsMemRef', 'IsLoad', 'IsStore'), 300) 1504158Sgblack@eecs.umich.edu}}; 151