two_byte_opcodes.isa revision 4760
14276Sgblack@eecs.umich.edu// Copyright (c) 2007 The Hewlett-Packard Development Company 24276Sgblack@eecs.umich.edu// All rights reserved. 34276Sgblack@eecs.umich.edu// 44276Sgblack@eecs.umich.edu// Redistribution and use of this software in source and binary forms, 54276Sgblack@eecs.umich.edu// with or without modification, are permitted provided that the 64276Sgblack@eecs.umich.edu// following conditions are met: 74276Sgblack@eecs.umich.edu// 84276Sgblack@eecs.umich.edu// The software must be used only for Non-Commercial Use which means any 94276Sgblack@eecs.umich.edu// use which is NOT directed to receiving any direct monetary 104276Sgblack@eecs.umich.edu// compensation for, or commercial advantage from such use. Illustrative 114276Sgblack@eecs.umich.edu// examples of non-commercial use are academic research, personal study, 124276Sgblack@eecs.umich.edu// teaching, education and corporate research & development. 134276Sgblack@eecs.umich.edu// Illustrative examples of commercial use are distributing products for 144276Sgblack@eecs.umich.edu// commercial advantage and providing services using the software for 154276Sgblack@eecs.umich.edu// commercial advantage. 164276Sgblack@eecs.umich.edu// 174276Sgblack@eecs.umich.edu// If you wish to use this software or functionality therein that may be 184276Sgblack@eecs.umich.edu// covered by patents for commercial use, please contact: 194276Sgblack@eecs.umich.edu// Director of Intellectual Property Licensing 204276Sgblack@eecs.umich.edu// Office of Strategy and Technology 214276Sgblack@eecs.umich.edu// Hewlett-Packard Company 224276Sgblack@eecs.umich.edu// 1501 Page Mill Road 234276Sgblack@eecs.umich.edu// Palo Alto, California 94304 244276Sgblack@eecs.umich.edu// 254276Sgblack@eecs.umich.edu// Redistributions of source code must retain the above copyright notice, 264276Sgblack@eecs.umich.edu// this list of conditions and the following disclaimer. Redistributions 274276Sgblack@eecs.umich.edu// in binary form must reproduce the above copyright notice, this list of 284276Sgblack@eecs.umich.edu// conditions and the following disclaimer in the documentation and/or 294276Sgblack@eecs.umich.edu// other materials provided with the distribution. Neither the name of 304276Sgblack@eecs.umich.edu// the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 314276Sgblack@eecs.umich.edu// contributors may be used to endorse or promote products derived from 324276Sgblack@eecs.umich.edu// this software without specific prior written permission. No right of 334276Sgblack@eecs.umich.edu// sublicense is granted herewith. Derivatives of the software and 344276Sgblack@eecs.umich.edu// output created using the software may be prepared, but only for 354276Sgblack@eecs.umich.edu// Non-Commercial Uses. Derivatives of the software may be shared with 364276Sgblack@eecs.umich.edu// others provided: (i) the others agree to abide by the list of 374276Sgblack@eecs.umich.edu// conditions herein which includes the Non-Commercial Use restrictions; 384276Sgblack@eecs.umich.edu// and (ii) such Derivatives of the software include the above copyright 394276Sgblack@eecs.umich.edu// notice to acknowledge the contribution from this software where 404276Sgblack@eecs.umich.edu// applicable, this list of conditions and the disclaimer below. 414276Sgblack@eecs.umich.edu// 424276Sgblack@eecs.umich.edu// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 434276Sgblack@eecs.umich.edu// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 444276Sgblack@eecs.umich.edu// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 454276Sgblack@eecs.umich.edu// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 464276Sgblack@eecs.umich.edu// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 474276Sgblack@eecs.umich.edu// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 484276Sgblack@eecs.umich.edu// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 494276Sgblack@eecs.umich.edu// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 504276Sgblack@eecs.umich.edu// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 514276Sgblack@eecs.umich.edu// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 524276Sgblack@eecs.umich.edu// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 534276Sgblack@eecs.umich.edu// 544276Sgblack@eecs.umich.edu// Authors: Gabe Black 554276Sgblack@eecs.umich.edu 564276Sgblack@eecs.umich.edu//////////////////////////////////////////////////////////////////// 574276Sgblack@eecs.umich.edu// 584276Sgblack@eecs.umich.edu// Decode the two byte opcodes 594276Sgblack@eecs.umich.edu// 604276Sgblack@eecs.umich.edu0x2: decode OPCODE_PREFIXA { 614711Sgblack@eecs.umich.edu 0x0F: decode OPCODE_OP_TOP5 { 624276Sgblack@eecs.umich.edu format WarnUnimpl { 634276Sgblack@eecs.umich.edu 0x00: decode OPCODE_OP_BOTTOM3 { 644276Sgblack@eecs.umich.edu 0x00: group6(); 654276Sgblack@eecs.umich.edu 0x01: group7(); 664276Sgblack@eecs.umich.edu 0x02: lar_Gv_Ew(); 674276Sgblack@eecs.umich.edu 0x03: lsl_Gv_Ew(); 684276Sgblack@eecs.umich.edu //sandpile.org doesn't seem to know what this is... ? 694276Sgblack@eecs.umich.edu 0x04: loadall_or_reset_or_hang(); 704712Sgblack@eecs.umich.edu#if FULL_SYSTEM 714711Sgblack@eecs.umich.edu 0x05: syscall(); 724712Sgblack@eecs.umich.edu#else 734712Sgblack@eecs.umich.edu 0x05: SyscallInst::syscall('xc->syscall(rax)'); 744712Sgblack@eecs.umich.edu#endif 754276Sgblack@eecs.umich.edu 0x06: clts(); 764276Sgblack@eecs.umich.edu //sandpile.org says (AMD) after sysret, so I might want to check 774276Sgblack@eecs.umich.edu //if that means amd64 or AMD machines 784276Sgblack@eecs.umich.edu 0x07: loadall_or_sysret(); 794276Sgblack@eecs.umich.edu } 804276Sgblack@eecs.umich.edu 0x01: decode OPCODE_OP_BOTTOM3 { 814712Sgblack@eecs.umich.edu 0x0: invd(); 824712Sgblack@eecs.umich.edu 0x1: wbinvd(); 834730Sgblack@eecs.umich.edu 0x2: Inst::UD2(); 844760Sgblack@eecs.umich.edu 0x3: Inst::UD2(); 854730Sgblack@eecs.umich.edu 0x4: Inst::UD2(); 864712Sgblack@eecs.umich.edu 0x5: threednow(); 874712Sgblack@eecs.umich.edu 0x6: threednow(); 884712Sgblack@eecs.umich.edu 0x7: threednow(); 894276Sgblack@eecs.umich.edu } 904760Sgblack@eecs.umich.edu 0x02: decode LEGACY_DECODEVAL { 914760Sgblack@eecs.umich.edu // no prefix 924760Sgblack@eecs.umich.edu 0x0: decode OPCODE_OP_BOTTOM3 { 934760Sgblack@eecs.umich.edu 0x0: holder(); 944760Sgblack@eecs.umich.edu 0x1: holder(); 954760Sgblack@eecs.umich.edu 0x2: holder(); 964760Sgblack@eecs.umich.edu 0x3: holder(); 974760Sgblack@eecs.umich.edu 0x4: holder(); 984760Sgblack@eecs.umich.edu 0x5: holder(); 994760Sgblack@eecs.umich.edu 0x6: holder(); 1004760Sgblack@eecs.umich.edu 0x7: holder(); 1014760Sgblack@eecs.umich.edu } 1024760Sgblack@eecs.umich.edu // repe (0xF3) 1034760Sgblack@eecs.umich.edu 0x4: decode OPCODE_OP_BOTTOM3 { 1044760Sgblack@eecs.umich.edu 0x0: holder(); 1054760Sgblack@eecs.umich.edu 0x1: holder(); 1064760Sgblack@eecs.umich.edu 0x2: holder(); 1074760Sgblack@eecs.umich.edu 0x3: holder(); 1084760Sgblack@eecs.umich.edu 0x4: holder(); 1094760Sgblack@eecs.umich.edu 0x5: holder(); 1104760Sgblack@eecs.umich.edu 0x6: holder(); 1114760Sgblack@eecs.umich.edu 0x7: holder(); 1124760Sgblack@eecs.umich.edu } 1134760Sgblack@eecs.umich.edu // operand size (0x66) 1144760Sgblack@eecs.umich.edu 0x1: decode OPCODE_OP_BOTTOM3 { 1154760Sgblack@eecs.umich.edu 0x0: holder(); 1164760Sgblack@eecs.umich.edu 0x1: holder(); 1174760Sgblack@eecs.umich.edu 0x2: holder(); 1184760Sgblack@eecs.umich.edu 0x3: holder(); 1194760Sgblack@eecs.umich.edu 0x4: holder(); 1204760Sgblack@eecs.umich.edu 0x5: holder(); 1214760Sgblack@eecs.umich.edu 0x6: holder(); 1224760Sgblack@eecs.umich.edu 0x7: holder(); 1234760Sgblack@eecs.umich.edu } 1244760Sgblack@eecs.umich.edu // repne (0xF2) 1254760Sgblack@eecs.umich.edu 0x8: decode OPCODE_OP_BOTTOM3 { 1264760Sgblack@eecs.umich.edu 0x0: holder(); 1274760Sgblack@eecs.umich.edu 0x1: holder(); 1284760Sgblack@eecs.umich.edu 0x2: holder(); 1294760Sgblack@eecs.umich.edu 0x3: holder(); 1304760Sgblack@eecs.umich.edu 0x4: holder(); 1314760Sgblack@eecs.umich.edu 0x5: holder(); 1324760Sgblack@eecs.umich.edu 0x6: holder(); 1334760Sgblack@eecs.umich.edu 0x7: holder(); 1344760Sgblack@eecs.umich.edu } 1354760Sgblack@eecs.umich.edu default: Inst::UD2(); 1364276Sgblack@eecs.umich.edu } 1374276Sgblack@eecs.umich.edu 0x03: decode OPCODE_OP_BOTTOM3 { 1384712Sgblack@eecs.umich.edu 0x0: group17(); 1394712Sgblack@eecs.umich.edu 0x1: group17(); 1404712Sgblack@eecs.umich.edu 0x2: group17(); 1414712Sgblack@eecs.umich.edu 0x3: group17(); 1424712Sgblack@eecs.umich.edu 0x4: group17(); 1434712Sgblack@eecs.umich.edu 0x5: group17(); 1444712Sgblack@eecs.umich.edu 0x6: group17(); 1454712Sgblack@eecs.umich.edu 0x7: group17(); 1464276Sgblack@eecs.umich.edu } 1474276Sgblack@eecs.umich.edu 0x04: decode OPCODE_OP_BOTTOM3 { 1484276Sgblack@eecs.umich.edu 0x0: holder(); 1494276Sgblack@eecs.umich.edu 0x1: holder(); 1504276Sgblack@eecs.umich.edu 0x2: holder(); 1514276Sgblack@eecs.umich.edu 0x3: holder(); 1524276Sgblack@eecs.umich.edu 0x4: holder(); 1534276Sgblack@eecs.umich.edu 0x5: holder(); 1544276Sgblack@eecs.umich.edu 0x6: holder(); 1554276Sgblack@eecs.umich.edu 0x7: holder(); 1564276Sgblack@eecs.umich.edu } 1574276Sgblack@eecs.umich.edu 0x05: decode OPCODE_OP_BOTTOM3 { 1584276Sgblack@eecs.umich.edu 0x0: holder(); 1594276Sgblack@eecs.umich.edu 0x1: holder(); 1604276Sgblack@eecs.umich.edu 0x2: holder(); 1614276Sgblack@eecs.umich.edu 0x3: holder(); 1624276Sgblack@eecs.umich.edu 0x4: holder(); 1634276Sgblack@eecs.umich.edu 0x5: holder(); 1644276Sgblack@eecs.umich.edu 0x6: holder(); 1654276Sgblack@eecs.umich.edu 0x7: holder(); 1664276Sgblack@eecs.umich.edu } 1674276Sgblack@eecs.umich.edu 0x06: decode OPCODE_OP_BOTTOM3 { 1684712Sgblack@eecs.umich.edu 0x0: wrmsr(); 1694712Sgblack@eecs.umich.edu 0x1: rdtsc(); 1704712Sgblack@eecs.umich.edu 0x2: rdmsr(); 1714712Sgblack@eecs.umich.edu 0x3: rdpmc(); 1724712Sgblack@eecs.umich.edu 0x4: sysenter(); 1734712Sgblack@eecs.umich.edu 0x5: sysexit(); 1744730Sgblack@eecs.umich.edu 0x6: Inst::UD2(); 1754712Sgblack@eecs.umich.edu 0x7: getsec(); 1764276Sgblack@eecs.umich.edu } 1774276Sgblack@eecs.umich.edu 0x07: decode OPCODE_OP_BOTTOM3 { 1784712Sgblack@eecs.umich.edu 0x0: three_byte_opcode(); 1794712Sgblack@eecs.umich.edu 0x1: three_byte_opcode(); 1804712Sgblack@eecs.umich.edu 0x2: three_byte_opcode(); 1814712Sgblack@eecs.umich.edu 0x3: three_byte_opcode(); 1824712Sgblack@eecs.umich.edu 0x4: three_byte_opcode(); 1834712Sgblack@eecs.umich.edu 0x5: three_byte_opcode(); 1844712Sgblack@eecs.umich.edu 0x6: three_byte_opcode(); 1854712Sgblack@eecs.umich.edu 0x7: three_byte_opcode(); 1864276Sgblack@eecs.umich.edu } 1874760Sgblack@eecs.umich.edu format Inst { 1884760Sgblack@eecs.umich.edu 0x08: decode OPCODE_OP_BOTTOM3 { 1894760Sgblack@eecs.umich.edu 0x0: CMOVO(Gv,Ev); 1904760Sgblack@eecs.umich.edu 0x1: CMOVNO(Gv,Ev); 1914760Sgblack@eecs.umich.edu 0x2: CMOVB(Gv,Ev); 1924760Sgblack@eecs.umich.edu 0x3: CMOVNB(Gv,Ev); 1934760Sgblack@eecs.umich.edu 0x4: CMOVZ(Gv,Ev); 1944760Sgblack@eecs.umich.edu 0x5: CMOVNZ(Gv,Ev); 1954760Sgblack@eecs.umich.edu 0x6: CMOVBE(Gv,Ev); 1964760Sgblack@eecs.umich.edu 0x7: CMOVNBE(Gv,Ev); 1974760Sgblack@eecs.umich.edu } 1984760Sgblack@eecs.umich.edu 0x09: decode OPCODE_OP_BOTTOM3 { 1994760Sgblack@eecs.umich.edu 0x0: CMOVS(Gv,Ev); 2004760Sgblack@eecs.umich.edu 0x1: CMOVNS(Gv,Ev); 2014760Sgblack@eecs.umich.edu 0x2: CMOVP(Gv,Ev); 2024760Sgblack@eecs.umich.edu 0x3: CMOVNP(Gv,Ev); 2034760Sgblack@eecs.umich.edu 0x4: CMOVL(Gv,Ev); 2044760Sgblack@eecs.umich.edu 0x5: CMOVNL(Gv,Ev); 2054760Sgblack@eecs.umich.edu 0x6: CMOVLE(Gv,Ev); 2064760Sgblack@eecs.umich.edu 0x7: CMOVNLE(Gv,Ev); 2074760Sgblack@eecs.umich.edu } 2084276Sgblack@eecs.umich.edu } 2094276Sgblack@eecs.umich.edu 0x0A: decode OPCODE_OP_BOTTOM3 { 2104276Sgblack@eecs.umich.edu 0x0: holder(); 2114276Sgblack@eecs.umich.edu 0x1: holder(); 2124276Sgblack@eecs.umich.edu 0x2: holder(); 2134276Sgblack@eecs.umich.edu 0x3: holder(); 2144276Sgblack@eecs.umich.edu 0x4: holder(); 2154276Sgblack@eecs.umich.edu 0x5: holder(); 2164276Sgblack@eecs.umich.edu 0x6: holder(); 2174276Sgblack@eecs.umich.edu 0x7: holder(); 2184276Sgblack@eecs.umich.edu } 2194276Sgblack@eecs.umich.edu 0x0B: decode OPCODE_OP_BOTTOM3 { 2204276Sgblack@eecs.umich.edu 0x0: holder(); 2214276Sgblack@eecs.umich.edu 0x1: holder(); 2224276Sgblack@eecs.umich.edu 0x2: holder(); 2234276Sgblack@eecs.umich.edu 0x3: holder(); 2244276Sgblack@eecs.umich.edu 0x4: holder(); 2254276Sgblack@eecs.umich.edu 0x5: holder(); 2264276Sgblack@eecs.umich.edu 0x6: holder(); 2274276Sgblack@eecs.umich.edu 0x7: holder(); 2284276Sgblack@eecs.umich.edu } 2294276Sgblack@eecs.umich.edu 0x0C: decode OPCODE_OP_BOTTOM3 { 2304276Sgblack@eecs.umich.edu 0x0: holder(); 2314276Sgblack@eecs.umich.edu 0x1: holder(); 2324276Sgblack@eecs.umich.edu 0x2: holder(); 2334276Sgblack@eecs.umich.edu 0x3: holder(); 2344276Sgblack@eecs.umich.edu 0x4: holder(); 2354276Sgblack@eecs.umich.edu 0x5: holder(); 2364276Sgblack@eecs.umich.edu 0x6: holder(); 2374276Sgblack@eecs.umich.edu 0x7: holder(); 2384276Sgblack@eecs.umich.edu } 2394276Sgblack@eecs.umich.edu 0x0D: decode OPCODE_OP_BOTTOM3 { 2404276Sgblack@eecs.umich.edu 0x0: holder(); 2414276Sgblack@eecs.umich.edu 0x1: holder(); 2424276Sgblack@eecs.umich.edu 0x2: holder(); 2434276Sgblack@eecs.umich.edu 0x3: holder(); 2444276Sgblack@eecs.umich.edu 0x4: holder(); 2454276Sgblack@eecs.umich.edu 0x5: holder(); 2464276Sgblack@eecs.umich.edu 0x6: holder(); 2474276Sgblack@eecs.umich.edu 0x7: holder(); 2484276Sgblack@eecs.umich.edu } 2494276Sgblack@eecs.umich.edu 0x0E: decode OPCODE_OP_BOTTOM3 { 2504276Sgblack@eecs.umich.edu 0x0: holder(); 2514276Sgblack@eecs.umich.edu 0x1: holder(); 2524276Sgblack@eecs.umich.edu 0x2: holder(); 2534276Sgblack@eecs.umich.edu 0x3: holder(); 2544276Sgblack@eecs.umich.edu 0x4: holder(); 2554276Sgblack@eecs.umich.edu 0x5: holder(); 2564276Sgblack@eecs.umich.edu 0x6: holder(); 2574276Sgblack@eecs.umich.edu 0x7: holder(); 2584276Sgblack@eecs.umich.edu } 2594276Sgblack@eecs.umich.edu 0x0F: decode OPCODE_OP_BOTTOM3 { 2604276Sgblack@eecs.umich.edu 0x0: holder(); 2614276Sgblack@eecs.umich.edu 0x1: holder(); 2624276Sgblack@eecs.umich.edu 0x2: holder(); 2634276Sgblack@eecs.umich.edu 0x3: holder(); 2644276Sgblack@eecs.umich.edu 0x4: holder(); 2654276Sgblack@eecs.umich.edu 0x5: holder(); 2664276Sgblack@eecs.umich.edu 0x6: holder(); 2674276Sgblack@eecs.umich.edu 0x7: holder(); 2684276Sgblack@eecs.umich.edu } 2694727Sgblack@eecs.umich.edu format Inst { 2704727Sgblack@eecs.umich.edu 0x10: decode OPCODE_OP_BOTTOM3 { 2714727Sgblack@eecs.umich.edu 0x0: JO(Jz); 2724727Sgblack@eecs.umich.edu 0x1: JNO(Jz); 2734727Sgblack@eecs.umich.edu 0x2: JB(Jz); 2744727Sgblack@eecs.umich.edu 0x3: JNB(Jz); 2754727Sgblack@eecs.umich.edu 0x4: JZ(Jz); 2764727Sgblack@eecs.umich.edu 0x5: JNZ(Jz); 2774727Sgblack@eecs.umich.edu 0x6: JBE(Jz); 2784727Sgblack@eecs.umich.edu 0x7: JNBE(Jz); 2794727Sgblack@eecs.umich.edu } 2804727Sgblack@eecs.umich.edu 0x11: decode OPCODE_OP_BOTTOM3 { 2814727Sgblack@eecs.umich.edu 0x0: JS(Jz); 2824727Sgblack@eecs.umich.edu 0x1: JNS(Jz); 2834727Sgblack@eecs.umich.edu 0x2: JP(Jz); 2844727Sgblack@eecs.umich.edu 0x3: JNP(Jz); 2854727Sgblack@eecs.umich.edu 0x4: JL(Jz); 2864727Sgblack@eecs.umich.edu 0x5: JNL(Jz); 2874727Sgblack@eecs.umich.edu 0x6: JLE(Jz); 2884727Sgblack@eecs.umich.edu 0x7: JNLE(Jz); 2894727Sgblack@eecs.umich.edu } 2904760Sgblack@eecs.umich.edu 0x12: decode OPCODE_OP_BOTTOM3 { 2914760Sgblack@eecs.umich.edu 0x0: SETO(Eb); 2924760Sgblack@eecs.umich.edu 0x1: SETNO(Eb); 2934760Sgblack@eecs.umich.edu 0x2: SETB(Eb); 2944760Sgblack@eecs.umich.edu 0x3: SETNB(Eb); 2954760Sgblack@eecs.umich.edu 0x4: SETZ(Eb); 2964760Sgblack@eecs.umich.edu 0x5: SETNZ(Eb); 2974760Sgblack@eecs.umich.edu 0x6: SETBE(Eb); 2984760Sgblack@eecs.umich.edu 0x7: SETNBE(Eb); 2994760Sgblack@eecs.umich.edu } 3004760Sgblack@eecs.umich.edu 0x13: decode OPCODE_OP_BOTTOM3 { 3014760Sgblack@eecs.umich.edu 0x0: SETS(Eb); 3024760Sgblack@eecs.umich.edu 0x1: SETNS(Eb); 3034760Sgblack@eecs.umich.edu 0x2: SETP(Eb); 3044760Sgblack@eecs.umich.edu 0x3: SETNP(Eb); 3054760Sgblack@eecs.umich.edu 0x4: SETL(Eb); 3064760Sgblack@eecs.umich.edu 0x5: SETNL(Eb); 3074760Sgblack@eecs.umich.edu 0x6: SETLE(Eb); 3084760Sgblack@eecs.umich.edu 0x7: SETNLE(Eb); 3094760Sgblack@eecs.umich.edu } 3104276Sgblack@eecs.umich.edu } 3114276Sgblack@eecs.umich.edu 0x14: decode OPCODE_OP_BOTTOM3 { 3124712Sgblack@eecs.umich.edu 0x0: push_fs(); 3134712Sgblack@eecs.umich.edu 0x1: pop_fs(); 3144712Sgblack@eecs.umich.edu 0x2: cpuid(); 3154712Sgblack@eecs.umich.edu 0x3: bt_Ev_Gv(); 3164712Sgblack@eecs.umich.edu 0x4: shld_Ev_Gv_Ib(); 3174712Sgblack@eecs.umich.edu 0x5: shld_Ev_Gv_rCl(); 3184712Sgblack@eecs.umich.edu 0x6: xbts_and_cmpxchg(); 3194712Sgblack@eecs.umich.edu 0x7: ibts_and_cmpxchg(); 3204276Sgblack@eecs.umich.edu } 3214276Sgblack@eecs.umich.edu 0x15: decode OPCODE_OP_BOTTOM3 { 3224712Sgblack@eecs.umich.edu 0x0: push_gs(); 3234712Sgblack@eecs.umich.edu 0x1: pop_gs(); 3244712Sgblack@eecs.umich.edu 0x2: rsm_smm(); 3254712Sgblack@eecs.umich.edu 0x3: bts_Ev_Gv(); 3264712Sgblack@eecs.umich.edu 0x4: shrd_Ev_Gv_Ib(); 3274712Sgblack@eecs.umich.edu 0x5: shrd_Ev_Gv_rCl(); 3284712Sgblack@eecs.umich.edu 0x6: group16(); 3294724Sgblack@eecs.umich.edu 0x7: Inst::IMUL(Gv,Ev); 3304276Sgblack@eecs.umich.edu } 3314276Sgblack@eecs.umich.edu 0x16: decode OPCODE_OP_BOTTOM3 { 3324712Sgblack@eecs.umich.edu 0x0: cmpxchg_Eb_Gb(); 3334712Sgblack@eecs.umich.edu 0x1: cmpxchg_Ev_Gv(); 3344712Sgblack@eecs.umich.edu 0x2: lss_Gz_Mp(); 3354712Sgblack@eecs.umich.edu 0x3: btr_Ev_Gv(); 3364712Sgblack@eecs.umich.edu 0x4: lfs_Gz_Mp(); 3374712Sgblack@eecs.umich.edu 0x5: lgs_Gz_Mp(); 3384746Sgblack@eecs.umich.edu //The size of the second operand in these instructions should 3394746Sgblack@eecs.umich.edu //really be "b" or "w", but it's set to v in order to have a 3404746Sgblack@eecs.umich.edu //consistent register size. This shouldn't affect behavior. 3414746Sgblack@eecs.umich.edu 0x6: Inst::MOVZX_B(Gv,Ev); 3424746Sgblack@eecs.umich.edu 0x7: Inst::MOVZX_W(Gv,Ev); 3434276Sgblack@eecs.umich.edu } 3444276Sgblack@eecs.umich.edu 0x17: decode OPCODE_OP_BOTTOM3 { 3454712Sgblack@eecs.umich.edu 0x0: jmpe_Jz(); // IA-64? 3464712Sgblack@eecs.umich.edu 0x1: group11_UD2(); 3474712Sgblack@eecs.umich.edu 0x2: group8_Ev_Ib(); 3484712Sgblack@eecs.umich.edu 0x3: btc_Ev_Gv(); 3494712Sgblack@eecs.umich.edu 0x4: bsf_Gv_Ev(); 3504712Sgblack@eecs.umich.edu 0x5: bsr_Gv_Ev(); 3514746Sgblack@eecs.umich.edu //The size of the second operand in these instructions should 3524746Sgblack@eecs.umich.edu //really be "b" or "w", but it's set to v in order to have a 3534746Sgblack@eecs.umich.edu //consistent register size. This shouldn't affect behavior. 3544746Sgblack@eecs.umich.edu 0x6: Inst::MOVSX_B(Gv,Ev); 3554746Sgblack@eecs.umich.edu 0x7: Inst::MOVSX_W(Gv,Ev); 3564276Sgblack@eecs.umich.edu } 3574276Sgblack@eecs.umich.edu 0x18: decode OPCODE_OP_BOTTOM3 { 3584276Sgblack@eecs.umich.edu 0x0: holder(); 3594276Sgblack@eecs.umich.edu 0x1: holder(); 3604276Sgblack@eecs.umich.edu 0x2: holder(); 3614276Sgblack@eecs.umich.edu 0x3: holder(); 3624276Sgblack@eecs.umich.edu 0x4: holder(); 3634276Sgblack@eecs.umich.edu 0x5: holder(); 3644276Sgblack@eecs.umich.edu 0x6: holder(); 3654276Sgblack@eecs.umich.edu 0x7: holder(); 3664276Sgblack@eecs.umich.edu } 3674726Sgblack@eecs.umich.edu 0x19: bswap_B(); 3684276Sgblack@eecs.umich.edu 0x1A: decode OPCODE_OP_BOTTOM3 { 3694276Sgblack@eecs.umich.edu 0x0: holder(); 3704276Sgblack@eecs.umich.edu 0x1: holder(); 3714276Sgblack@eecs.umich.edu 0x2: holder(); 3724276Sgblack@eecs.umich.edu 0x3: holder(); 3734276Sgblack@eecs.umich.edu 0x4: holder(); 3744276Sgblack@eecs.umich.edu 0x5: holder(); 3754276Sgblack@eecs.umich.edu 0x6: holder(); 3764276Sgblack@eecs.umich.edu 0x7: holder(); 3774276Sgblack@eecs.umich.edu } 3784276Sgblack@eecs.umich.edu 0x1B: decode OPCODE_OP_BOTTOM3 { 3794276Sgblack@eecs.umich.edu 0x0: holder(); 3804276Sgblack@eecs.umich.edu 0x1: holder(); 3814276Sgblack@eecs.umich.edu 0x2: holder(); 3824276Sgblack@eecs.umich.edu 0x3: holder(); 3834276Sgblack@eecs.umich.edu 0x4: holder(); 3844276Sgblack@eecs.umich.edu 0x5: holder(); 3854276Sgblack@eecs.umich.edu 0x6: holder(); 3864276Sgblack@eecs.umich.edu 0x7: holder(); 3874276Sgblack@eecs.umich.edu } 3884276Sgblack@eecs.umich.edu 0x1C: decode OPCODE_OP_BOTTOM3 { 3894276Sgblack@eecs.umich.edu 0x0: holder(); 3904276Sgblack@eecs.umich.edu 0x1: holder(); 3914276Sgblack@eecs.umich.edu 0x2: holder(); 3924276Sgblack@eecs.umich.edu 0x3: holder(); 3934276Sgblack@eecs.umich.edu 0x4: holder(); 3944276Sgblack@eecs.umich.edu 0x5: holder(); 3954276Sgblack@eecs.umich.edu 0x6: holder(); 3964276Sgblack@eecs.umich.edu 0x7: holder(); 3974276Sgblack@eecs.umich.edu } 3984276Sgblack@eecs.umich.edu 0x1D: decode OPCODE_OP_BOTTOM3 { 3994276Sgblack@eecs.umich.edu 0x0: holder(); 4004276Sgblack@eecs.umich.edu 0x1: holder(); 4014276Sgblack@eecs.umich.edu 0x2: holder(); 4024276Sgblack@eecs.umich.edu 0x3: holder(); 4034276Sgblack@eecs.umich.edu 0x4: holder(); 4044276Sgblack@eecs.umich.edu 0x5: holder(); 4054276Sgblack@eecs.umich.edu 0x6: holder(); 4064276Sgblack@eecs.umich.edu 0x7: holder(); 4074276Sgblack@eecs.umich.edu } 4084276Sgblack@eecs.umich.edu 0x1E: decode OPCODE_OP_BOTTOM3 { 4094276Sgblack@eecs.umich.edu 0x0: holder(); 4104276Sgblack@eecs.umich.edu 0x1: holder(); 4114276Sgblack@eecs.umich.edu 0x2: holder(); 4124276Sgblack@eecs.umich.edu 0x3: holder(); 4134276Sgblack@eecs.umich.edu 0x4: holder(); 4144276Sgblack@eecs.umich.edu 0x5: holder(); 4154276Sgblack@eecs.umich.edu 0x6: holder(); 4164276Sgblack@eecs.umich.edu 0x7: holder(); 4174276Sgblack@eecs.umich.edu } 4184276Sgblack@eecs.umich.edu 0x1F: decode OPCODE_OP_BOTTOM3 { 4194276Sgblack@eecs.umich.edu 0x0: holder(); 4204276Sgblack@eecs.umich.edu 0x1: holder(); 4214276Sgblack@eecs.umich.edu 0x2: holder(); 4224276Sgblack@eecs.umich.edu 0x3: holder(); 4234276Sgblack@eecs.umich.edu 0x4: holder(); 4244276Sgblack@eecs.umich.edu 0x5: holder(); 4254276Sgblack@eecs.umich.edu 0x6: holder(); 4264276Sgblack@eecs.umich.edu 0x7: holder(); 4274276Sgblack@eecs.umich.edu } 4284276Sgblack@eecs.umich.edu default: FailUnimpl::twoByteOps(); 4294276Sgblack@eecs.umich.edu } 4304276Sgblack@eecs.umich.edu } 4314276Sgblack@eecs.umich.edu default: M5InternalError::error( 4324276Sgblack@eecs.umich.edu {{"Unexpected first opcode byte in two byte opcode!"}}); 4334276Sgblack@eecs.umich.edu} 434