15081Sgblack@eecs.umich.edu# Copyright (c) 2007 The Hewlett-Packard Development Company 25081Sgblack@eecs.umich.edu# All rights reserved. 35081Sgblack@eecs.umich.edu# 47087Snate@binkert.org# The license below extends only to copyright in the software and shall 57087Snate@binkert.org# not be construed as granting a license to any other intellectual 67087Snate@binkert.org# property including but not limited to intellectual property relating 77087Snate@binkert.org# to a hardware implementation of the functionality of the software 87087Snate@binkert.org# licensed hereunder. You may use the software subject to the license 97087Snate@binkert.org# terms below provided that you ensure that this notice is replicated 107087Snate@binkert.org# unmodified and in its entirety in all distributions of the software, 117087Snate@binkert.org# modified or unmodified, in source code or in binary form. 125081Sgblack@eecs.umich.edu# 137087Snate@binkert.org# Redistribution and use in source and binary forms, with or without 147087Snate@binkert.org# modification, are permitted provided that the following conditions are 157087Snate@binkert.org# met: redistributions of source code must retain the above copyright 167087Snate@binkert.org# notice, this list of conditions and the following disclaimer; 177087Snate@binkert.org# redistributions in binary form must reproduce the above copyright 187087Snate@binkert.org# notice, this list of conditions and the following disclaimer in the 197087Snate@binkert.org# documentation and/or other materials provided with the distribution; 207087Snate@binkert.org# neither the name of the copyright holders nor the names of its 215081Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from 227087Snate@binkert.org# this software without specific prior written permission. 235081Sgblack@eecs.umich.edu# 245081Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 255081Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 265081Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 275081Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 285081Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 295081Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 305081Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 315081Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 325081Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 335081Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 345081Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 355081Sgblack@eecs.umich.edu# 365081Sgblack@eecs.umich.edu# Authors: Gabe Black 375081Sgblack@eecs.umich.edu 385081Sgblack@eecs.umich.edumicrocode = ''' 395081Sgblack@eecs.umich.edudef macroop SAL_R_I 405081Sgblack@eecs.umich.edu{ 415961Sgblack@eecs.umich.edu slli reg, reg, imm, flags=(CF,OF,SF,ZF,PF) 425081Sgblack@eecs.umich.edu}; 435081Sgblack@eecs.umich.edu 445081Sgblack@eecs.umich.edudef macroop SAL_M_I 455081Sgblack@eecs.umich.edu{ 465119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 475961Sgblack@eecs.umich.edu slli t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 485081Sgblack@eecs.umich.edu st t1, seg, sib, disp 495081Sgblack@eecs.umich.edu}; 505081Sgblack@eecs.umich.edu 515081Sgblack@eecs.umich.edudef macroop SAL_P_I 525081Sgblack@eecs.umich.edu{ 535081Sgblack@eecs.umich.edu rdip t7 545119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 555961Sgblack@eecs.umich.edu slli t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 565081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 575081Sgblack@eecs.umich.edu}; 585081Sgblack@eecs.umich.edu 595081Sgblack@eecs.umich.edudef macroop SAL_1_R 605081Sgblack@eecs.umich.edu{ 615961Sgblack@eecs.umich.edu slli reg, reg, 1, flags=(CF,OF,SF,ZF,PF) 625081Sgblack@eecs.umich.edu}; 635081Sgblack@eecs.umich.edu 645081Sgblack@eecs.umich.edudef macroop SAL_1_M 655081Sgblack@eecs.umich.edu{ 665119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 675961Sgblack@eecs.umich.edu slli t1, t1, 1, flags=(CF,OF,SF,ZF,PF) 685081Sgblack@eecs.umich.edu st t1, seg, sib, disp 695081Sgblack@eecs.umich.edu}; 705081Sgblack@eecs.umich.edu 715081Sgblack@eecs.umich.edudef macroop SAL_1_P 725081Sgblack@eecs.umich.edu{ 735081Sgblack@eecs.umich.edu rdip t7 745119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 755961Sgblack@eecs.umich.edu slli t1, t1, 1, flags=(CF,OF,SF,ZF,PF) 765081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 775081Sgblack@eecs.umich.edu}; 785081Sgblack@eecs.umich.edu 795081Sgblack@eecs.umich.edudef macroop SAL_R_R 805081Sgblack@eecs.umich.edu{ 815961Sgblack@eecs.umich.edu sll reg, reg, regm, flags=(CF,OF,SF,ZF,PF) 825081Sgblack@eecs.umich.edu}; 835081Sgblack@eecs.umich.edu 845081Sgblack@eecs.umich.edudef macroop SAL_M_R 855081Sgblack@eecs.umich.edu{ 865119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 875961Sgblack@eecs.umich.edu sll t1, t1, reg, flags=(CF,OF,SF,ZF,PF) 885081Sgblack@eecs.umich.edu st t1, seg, sib, disp 895081Sgblack@eecs.umich.edu}; 905081Sgblack@eecs.umich.edu 915081Sgblack@eecs.umich.edudef macroop SAL_P_R 925081Sgblack@eecs.umich.edu{ 935081Sgblack@eecs.umich.edu rdip t7 945119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 955961Sgblack@eecs.umich.edu sll t1, t1, reg, flags=(CF,OF,SF,ZF,PF) 965081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 975081Sgblack@eecs.umich.edu}; 985081Sgblack@eecs.umich.edu 996480Sgblack@eecs.umich.edudef macroop SHLD_R_R 1006480Sgblack@eecs.umich.edu{ 1016480Sgblack@eecs.umich.edu mdbi regm, 0 1026480Sgblack@eecs.umich.edu sld reg, reg, rcx, flags=(CF,OF,SF,ZF,PF) 1036480Sgblack@eecs.umich.edu}; 1046480Sgblack@eecs.umich.edu 1056480Sgblack@eecs.umich.edudef macroop SHLD_M_R 1066480Sgblack@eecs.umich.edu{ 1076480Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 1086480Sgblack@eecs.umich.edu mdbi reg, 0 1096480Sgblack@eecs.umich.edu sld t1, t1, rcx, flags=(CF,OF,SF,ZF,PF) 1106480Sgblack@eecs.umich.edu st t1, seg, sib, disp 1116480Sgblack@eecs.umich.edu}; 1126480Sgblack@eecs.umich.edu 1136480Sgblack@eecs.umich.edudef macroop SHLD_P_R 1146480Sgblack@eecs.umich.edu{ 1156480Sgblack@eecs.umich.edu rdip t7 1166480Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 1176480Sgblack@eecs.umich.edu mdbi reg, 0 1186480Sgblack@eecs.umich.edu sld t1, t1, rcx, flags=(CF,OF,SF,ZF,PF) 1196480Sgblack@eecs.umich.edu st t1, seg, riprel, disp 1206480Sgblack@eecs.umich.edu}; 1216480Sgblack@eecs.umich.edu 1226480Sgblack@eecs.umich.edudef macroop SHLD_R_R_I 1236480Sgblack@eecs.umich.edu{ 1246480Sgblack@eecs.umich.edu mdbi regm, 0 1256480Sgblack@eecs.umich.edu sldi reg, reg, imm, flags=(CF,OF,SF,ZF,PF) 1266480Sgblack@eecs.umich.edu}; 1276480Sgblack@eecs.umich.edu 1286480Sgblack@eecs.umich.edudef macroop SHLD_M_R_I 1296480Sgblack@eecs.umich.edu{ 1306480Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 1316480Sgblack@eecs.umich.edu mdbi reg, 0 1326480Sgblack@eecs.umich.edu sldi t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 1336480Sgblack@eecs.umich.edu st t1, seg, sib, disp 1346480Sgblack@eecs.umich.edu}; 1356480Sgblack@eecs.umich.edu 1366480Sgblack@eecs.umich.edudef macroop SHLD_P_R_I 1376480Sgblack@eecs.umich.edu{ 1386480Sgblack@eecs.umich.edu rdip t7 1396480Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 1406480Sgblack@eecs.umich.edu mdbi reg, 0 1416480Sgblack@eecs.umich.edu sldi t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 1426480Sgblack@eecs.umich.edu st t1, seg, riprel, disp 1436480Sgblack@eecs.umich.edu}; 1446480Sgblack@eecs.umich.edu 1455081Sgblack@eecs.umich.edudef macroop SHR_R_I 1465081Sgblack@eecs.umich.edu{ 1475961Sgblack@eecs.umich.edu srli reg, reg, imm, flags=(CF,OF,SF,ZF,PF) 1485081Sgblack@eecs.umich.edu}; 1495081Sgblack@eecs.umich.edu 1505081Sgblack@eecs.umich.edudef macroop SHR_M_I 1515081Sgblack@eecs.umich.edu{ 1525119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 1535961Sgblack@eecs.umich.edu srli t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 1545081Sgblack@eecs.umich.edu st t1, seg, sib, disp 1555081Sgblack@eecs.umich.edu}; 1565081Sgblack@eecs.umich.edu 1575081Sgblack@eecs.umich.edudef macroop SHR_P_I 1585081Sgblack@eecs.umich.edu{ 1595081Sgblack@eecs.umich.edu rdip t7 1605119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 1615961Sgblack@eecs.umich.edu srli t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 1625081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 1635081Sgblack@eecs.umich.edu}; 1645081Sgblack@eecs.umich.edu 1655081Sgblack@eecs.umich.edudef macroop SHR_1_R 1665081Sgblack@eecs.umich.edu{ 1675961Sgblack@eecs.umich.edu srli reg, reg, 1, flags=(CF,OF,SF,ZF,PF) 1685081Sgblack@eecs.umich.edu}; 1695081Sgblack@eecs.umich.edu 1705081Sgblack@eecs.umich.edudef macroop SHR_1_M 1715081Sgblack@eecs.umich.edu{ 1725119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 1735961Sgblack@eecs.umich.edu srli t1, t1, 1, flags=(CF,OF,SF,ZF,PF) 1745081Sgblack@eecs.umich.edu st t1, seg, sib, disp 1755081Sgblack@eecs.umich.edu}; 1765081Sgblack@eecs.umich.edu 1775081Sgblack@eecs.umich.edudef macroop SHR_1_P 1785081Sgblack@eecs.umich.edu{ 1795081Sgblack@eecs.umich.edu rdip t7 1805119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 1815961Sgblack@eecs.umich.edu srli t1, t1, 1, flags=(CF,OF,SF,ZF,PF) 1825081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 1835081Sgblack@eecs.umich.edu}; 1845081Sgblack@eecs.umich.edu 1855081Sgblack@eecs.umich.edudef macroop SHR_R_R 1865081Sgblack@eecs.umich.edu{ 1875961Sgblack@eecs.umich.edu srl reg, reg, regm, flags=(CF,OF,SF,ZF,PF) 1885081Sgblack@eecs.umich.edu}; 1895081Sgblack@eecs.umich.edu 1905081Sgblack@eecs.umich.edudef macroop SHR_M_R 1915081Sgblack@eecs.umich.edu{ 1925119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 1935961Sgblack@eecs.umich.edu srl t1, t1, reg, flags=(CF,OF,SF,ZF,PF) 1945081Sgblack@eecs.umich.edu st t1, seg, sib, disp 1955081Sgblack@eecs.umich.edu}; 1965081Sgblack@eecs.umich.edu 1975081Sgblack@eecs.umich.edudef macroop SHR_P_R 1985081Sgblack@eecs.umich.edu{ 1995081Sgblack@eecs.umich.edu rdip t7 2005119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2015961Sgblack@eecs.umich.edu srl t1, t1, reg, flags=(CF,OF,SF,ZF,PF) 2025081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2035081Sgblack@eecs.umich.edu}; 2045081Sgblack@eecs.umich.edu 2056481Sgblack@eecs.umich.edudef macroop SHRD_R_R 2066481Sgblack@eecs.umich.edu{ 2076481Sgblack@eecs.umich.edu mdbi regm, 0 2086481Sgblack@eecs.umich.edu srd reg, reg, rcx, flags=(CF,OF,SF,ZF,PF) 2096481Sgblack@eecs.umich.edu}; 2106481Sgblack@eecs.umich.edu 2116481Sgblack@eecs.umich.edudef macroop SHRD_M_R 2126481Sgblack@eecs.umich.edu{ 2136481Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2146481Sgblack@eecs.umich.edu mdbi reg, 0 2156481Sgblack@eecs.umich.edu srd t1, t1, rcx, flags=(CF,OF,SF,ZF,PF) 2166481Sgblack@eecs.umich.edu st t1, seg, sib, disp 2176481Sgblack@eecs.umich.edu}; 2186481Sgblack@eecs.umich.edu 2196481Sgblack@eecs.umich.edudef macroop SHRD_P_R 2206481Sgblack@eecs.umich.edu{ 2216481Sgblack@eecs.umich.edu rdip t7 2226481Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2236481Sgblack@eecs.umich.edu mdbi reg, 0 2246481Sgblack@eecs.umich.edu srd t1, t1, rcx, flags=(CF,OF,SF,ZF,PF) 2256481Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2266481Sgblack@eecs.umich.edu}; 2276481Sgblack@eecs.umich.edu 2285977Sgblack@eecs.umich.edudef macroop SHRD_R_R_I 2295977Sgblack@eecs.umich.edu{ 2306481Sgblack@eecs.umich.edu mdbi regm, 0 2316481Sgblack@eecs.umich.edu srdi reg, reg, imm, flags=(CF,OF,SF,ZF,PF) 2325977Sgblack@eecs.umich.edu}; 2335977Sgblack@eecs.umich.edu 2345977Sgblack@eecs.umich.edudef macroop SHRD_M_R_I 2355977Sgblack@eecs.umich.edu{ 2365977Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2376481Sgblack@eecs.umich.edu mdbi reg, 0 2386481Sgblack@eecs.umich.edu srdi t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 2395977Sgblack@eecs.umich.edu st t1, seg, sib, disp 2405977Sgblack@eecs.umich.edu}; 2415977Sgblack@eecs.umich.edu 2425977Sgblack@eecs.umich.edudef macroop SHRD_P_R_I 2435977Sgblack@eecs.umich.edu{ 2445977Sgblack@eecs.umich.edu rdip t7 2455977Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2466481Sgblack@eecs.umich.edu mdbi reg, 0 2476481Sgblack@eecs.umich.edu srdi t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 2485977Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2495977Sgblack@eecs.umich.edu}; 2505977Sgblack@eecs.umich.edu 2515081Sgblack@eecs.umich.edudef macroop SAR_R_I 2525081Sgblack@eecs.umich.edu{ 2535961Sgblack@eecs.umich.edu srai reg, reg, imm, flags=(CF,OF,SF,ZF,PF) 2545081Sgblack@eecs.umich.edu}; 2555081Sgblack@eecs.umich.edu 2565081Sgblack@eecs.umich.edudef macroop SAR_M_I 2575081Sgblack@eecs.umich.edu{ 2585119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2595961Sgblack@eecs.umich.edu srai t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 2605081Sgblack@eecs.umich.edu st t1, seg, sib, disp 2615081Sgblack@eecs.umich.edu}; 2625081Sgblack@eecs.umich.edu 2635081Sgblack@eecs.umich.edudef macroop SAR_P_I 2645081Sgblack@eecs.umich.edu{ 2655081Sgblack@eecs.umich.edu rdip t7 2665119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2675961Sgblack@eecs.umich.edu srai t1, t1, imm, flags=(CF,OF,SF,ZF,PF) 2685081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2695081Sgblack@eecs.umich.edu}; 2705081Sgblack@eecs.umich.edu 2715081Sgblack@eecs.umich.edudef macroop SAR_1_R 2725081Sgblack@eecs.umich.edu{ 2735961Sgblack@eecs.umich.edu srai reg, reg, 1, flags=(CF,OF,SF,ZF,PF) 2745081Sgblack@eecs.umich.edu}; 2755081Sgblack@eecs.umich.edu 2765081Sgblack@eecs.umich.edudef macroop SAR_1_M 2775081Sgblack@eecs.umich.edu{ 2785119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2795961Sgblack@eecs.umich.edu srai t1, t1, 1, flags=(CF,OF,SF,ZF,PF) 2805081Sgblack@eecs.umich.edu st t1, seg, sib, disp 2815081Sgblack@eecs.umich.edu}; 2825081Sgblack@eecs.umich.edu 2835081Sgblack@eecs.umich.edudef macroop SAR_1_P 2845081Sgblack@eecs.umich.edu{ 2855081Sgblack@eecs.umich.edu rdip t7 2865119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2875961Sgblack@eecs.umich.edu srai t1, t1, 1, flags=(CF,OF,SF,ZF,PF) 2885081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2895081Sgblack@eecs.umich.edu}; 2905081Sgblack@eecs.umich.edu 2915081Sgblack@eecs.umich.edudef macroop SAR_R_R 2925081Sgblack@eecs.umich.edu{ 2935961Sgblack@eecs.umich.edu sra reg, reg, regm, flags=(CF,OF,SF,ZF,PF) 2945081Sgblack@eecs.umich.edu}; 2955081Sgblack@eecs.umich.edu 2965081Sgblack@eecs.umich.edudef macroop SAR_M_R 2975081Sgblack@eecs.umich.edu{ 2985119Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2995961Sgblack@eecs.umich.edu sra t1, t1, reg, flags=(CF,OF,SF,ZF,PF) 3005081Sgblack@eecs.umich.edu st t1, seg, sib, disp 3015081Sgblack@eecs.umich.edu}; 3025081Sgblack@eecs.umich.edu 3035081Sgblack@eecs.umich.edudef macroop SAR_P_R 3045081Sgblack@eecs.umich.edu{ 3055081Sgblack@eecs.umich.edu rdip t7 3065119Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 3075961Sgblack@eecs.umich.edu sra t1, t1, reg, flags=(CF,OF,SF,ZF,PF) 3085081Sgblack@eecs.umich.edu st t1, seg, riprel, disp 3095081Sgblack@eecs.umich.edu}; 3105081Sgblack@eecs.umich.edu''' 311