add_and_subtract.py revision 6083:c669a6f8fa9e
11689SN/A# Copyright (c) 2007 The Hewlett-Packard Development Company 214025Sgiacomo.gabrielli@arm.com# All rights reserved. 39913Ssteve.reinhardt@amd.com# 47854SAli.Saidi@ARM.com# Redistribution and use of this software in source and binary forms, 57854SAli.Saidi@ARM.com# with or without modification, are permitted provided that the 67854SAli.Saidi@ARM.com# following conditions are met: 77854SAli.Saidi@ARM.com# 87854SAli.Saidi@ARM.com# The software must be used only for Non-Commercial Use which means any 97854SAli.Saidi@ARM.com# use which is NOT directed to receiving any direct monetary 107854SAli.Saidi@ARM.com# compensation for, or commercial advantage from such use. Illustrative 117854SAli.Saidi@ARM.com# examples of non-commercial use are academic research, personal study, 127854SAli.Saidi@ARM.com# teaching, education and corporate research & development. 137854SAli.Saidi@ARM.com# Illustrative examples of commercial use are distributing products for 147854SAli.Saidi@ARM.com# commercial advantage and providing services using the software for 152329SN/A# commercial advantage. 161689SN/A# 171689SN/A# If you wish to use this software or functionality therein that may be 181689SN/A# covered by patents for commercial use, please contact: 191689SN/A# Director of Intellectual Property Licensing 201689SN/A# Office of Strategy and Technology 211689SN/A# Hewlett-Packard Company 221689SN/A# 1501 Page Mill Road 231689SN/A# Palo Alto, California 94304 241689SN/A# 251689SN/A# Redistributions of source code must retain the above copyright notice, 261689SN/A# this list of conditions and the following disclaimer. Redistributions 271689SN/A# in binary form must reproduce the above copyright notice, this list of 281689SN/A# conditions and the following disclaimer in the documentation and/or 291689SN/A# other materials provided with the distribution. Neither the name of 301689SN/A# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 311689SN/A# contributors may be used to endorse or promote products derived from 321689SN/A# this software without specific prior written permission. No right of 331689SN/A# sublicense is granted herewith. Derivatives of the software and 341689SN/A# output created using the software may be prepared, but only for 351689SN/A# Non-Commercial Uses. Derivatives of the software may be shared with 361689SN/A# others provided: (i) the others agree to abide by the list of 371689SN/A# conditions herein which includes the Non-Commercial Use restrictions; 381689SN/A# and (ii) such Derivatives of the software include the above copyright 391689SN/A# notice to acknowledge the contribution from this software where 402665Ssaidi@eecs.umich.edu# applicable, this list of conditions and the disclaimer below. 412665Ssaidi@eecs.umich.edu# 422935Sksewell@umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 431689SN/A# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 441689SN/A# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 459944Smatt.horsnell@ARM.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 469944Smatt.horsnell@ARM.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 479944Smatt.horsnell@ARM.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 481060SN/A# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 491060SN/A# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 503773Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 516329Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 526658Snate@binkert.org# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 531717SN/A# 549913Ssteve.reinhardt@amd.com# Authors: Gabe Black 558232Snate@binkert.org 568232Snate@binkert.orgmicrocode = ''' 579527SMatt.Horsnell@arm.comdef macroop ADD_R_R 585529Snate@binkert.org{ 591060SN/A add reg, reg, regm, flags=(OF,SF,ZF,AF,PF,CF) 606221Snate@binkert.org}; 616221Snate@binkert.org 621061SN/Adef macroop ADD_R_I 635529Snate@binkert.org{ 644329Sktlim@umich.edu limm t1, imm 654329Sktlim@umich.edu add reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 662292SN/A}; 672292SN/A 682292SN/Adef macroop ADD_M_I 692292SN/A{ 7012109SRekai.GonzalezAlberquilla@arm.com limm t2, imm 711060SN/A ldst t1, seg, sib, disp 7210172Sdam.sunwoo@arm.com add t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 7310172Sdam.sunwoo@arm.com st t1, seg, sib, disp 7410172Sdam.sunwoo@arm.com}; 7510172Sdam.sunwoo@arm.com 7610172Sdam.sunwoo@arm.comdef macroop ADD_P_I 772292SN/A{ 7810328Smitch.hayenga@arm.com rdip t7 7913453Srekai.gonzalezalberquilla@arm.com limm t2, imm 8013453Srekai.gonzalezalberquilla@arm.com ldst t1, seg, riprel, disp 8113453Srekai.gonzalezalberquilla@arm.com add t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 8213453Srekai.gonzalezalberquilla@arm.com st t1, seg, riprel, disp 8313453Srekai.gonzalezalberquilla@arm.com}; 8413453Srekai.gonzalezalberquilla@arm.com 8513453Srekai.gonzalezalberquilla@arm.comdef macroop ADD_LOCKED_M_I 8613453Srekai.gonzalezalberquilla@arm.com{ 8713453Srekai.gonzalezalberquilla@arm.com limm t2, imm 8813453Srekai.gonzalezalberquilla@arm.com ldstl t1, seg, sib, disp 8913453Srekai.gonzalezalberquilla@arm.com add t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 9013453Srekai.gonzalezalberquilla@arm.com stul t1, seg, sib, disp 912292SN/A}; 922292SN/A 932292SN/Adef macroop ADD_LOCKED_P_I 942292SN/A{ 952292SN/A rdip t7 962292SN/A limm t2, imm 972292SN/A ldstl t1, seg, riprel, disp 981060SN/A add t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 991060SN/A stul t1, seg, riprel, disp 1001061SN/A}; 1011060SN/A 1022292SN/Adef macroop ADD_M_R 1031062SN/A{ 1041062SN/A ldst t1, seg, sib, disp 1058240Snate@binkert.org add t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 1061062SN/A st t1, seg, sib, disp 1071062SN/A}; 1081062SN/A 1098240Snate@binkert.orgdef macroop ADD_P_R 1101062SN/A{ 1111062SN/A rdip t7 1121062SN/A ldst t1, seg, riprel, disp 1138240Snate@binkert.org add t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 1141062SN/A st t1, seg, riprel, disp 1151062SN/A}; 1162301SN/A 1178240Snate@binkert.orgdef macroop ADD_LOCKED_M_R 1182301SN/A{ 1192301SN/A ldstl t1, seg, sib, disp 1202292SN/A add t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 1218240Snate@binkert.org stul t1, seg, sib, disp 1222292SN/A}; 1232292SN/A 1241062SN/Adef macroop ADD_LOCKED_P_R 1258240Snate@binkert.org{ 1261062SN/A rdip t7 1271062SN/A ldstl t1, seg, riprel, disp 1281062SN/A add t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 1298240Snate@binkert.org stul t1, seg, riprel, disp 1301062SN/A}; 1311062SN/A 1321062SN/Adef macroop ADD_R_M 1338240Snate@binkert.org{ 1341062SN/A ld t1, seg, sib, disp 1351062SN/A add reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 1361062SN/A}; 1378240Snate@binkert.org 1382292SN/Adef macroop ADD_R_P 1391062SN/A{ 1401062SN/A rdip t7 1418240Snate@binkert.org ld t1, seg, riprel, disp 1422292SN/A add reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 1431062SN/A}; 14410239Sbinhpham@cs.rutgers.edu 14510239Sbinhpham@cs.rutgers.edudef macroop SUB_R_R 14610239Sbinhpham@cs.rutgers.edu{ 14710239Sbinhpham@cs.rutgers.edu sub reg, reg, regm, flags=(OF,SF,ZF,AF,PF,CF) 14810239Sbinhpham@cs.rutgers.edu}; 14910239Sbinhpham@cs.rutgers.edu 15010239Sbinhpham@cs.rutgers.edudef macroop SUB_R_I 15110239Sbinhpham@cs.rutgers.edu{ 1521062SN/A limm t1, imm 1538240Snate@binkert.org sub reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 1541062SN/A}; 1551062SN/A 1561062SN/Adef macroop SUB_R_M 1578240Snate@binkert.org{ 1581062SN/A ld t1, seg, sib, disp 1591062SN/A sub reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 1601062SN/A}; 1618240Snate@binkert.org 1621062SN/Adef macroop SUB_R_P 1631062SN/A{ 1641062SN/A rdip t7 1658240Snate@binkert.org ld t1, seg, riprel, disp 1661062SN/A sub reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 1671062SN/A}; 1681062SN/A 1698240Snate@binkert.orgdef macroop SUB_M_I 1701062SN/A{ 1711062SN/A limm t2, imm 1722301SN/A ldst t1, seg, sib, disp 1738240Snate@binkert.org sub t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 1742301SN/A st t1, seg, sib, disp 1752301SN/A}; 1762301SN/A 1772301SN/Adef macroop SUB_P_I 1788240Snate@binkert.org{ 1792301SN/A rdip t7 1802301SN/A limm t2, imm 1812301SN/A ldst t1, seg, riprel, disp 1822307SN/A sub t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 1838240Snate@binkert.org st t1, seg, riprel, disp 1842307SN/A}; 1852307SN/A 1862307SN/Adef macroop SUB_M_R 1877897Shestness@cs.utexas.edu{ 1888240Snate@binkert.org ldst t1, seg, sib, disp 1897897Shestness@cs.utexas.edu sub t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 1907897Shestness@cs.utexas.edu st t1, seg, sib, disp 1917897Shestness@cs.utexas.edu}; 1928240Snate@binkert.org 1937897Shestness@cs.utexas.edudef macroop SUB_P_R 1947897Shestness@cs.utexas.edu{ 19512109SRekai.GonzalezAlberquilla@arm.com rdip t7 19612109SRekai.GonzalezAlberquilla@arm.com ldst t1, seg, riprel, disp 19712109SRekai.GonzalezAlberquilla@arm.com sub t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 19812109SRekai.GonzalezAlberquilla@arm.com st t1, seg, riprel, disp 19913610Sgiacomo.gabrielli@arm.com}; 20013610Sgiacomo.gabrielli@arm.com 20113610Sgiacomo.gabrielli@arm.comdef macroop ADC_R_R 20213610Sgiacomo.gabrielli@arm.com{ 2031062SN/A adc reg, reg, regm, flags=(OF,SF,ZF,AF,PF,CF) 2041062SN/A}; 2051062SN/A 2061062SN/Adef macroop ADC_R_I 20711246Sradhika.jagtap@ARM.com{ 20811246Sradhika.jagtap@ARM.com limm t1, imm 20911246Sradhika.jagtap@ARM.com adc reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 21011246Sradhika.jagtap@ARM.com}; 21111246Sradhika.jagtap@ARM.com 21211246Sradhika.jagtap@ARM.comdef macroop ADC_M_I 21311246Sradhika.jagtap@ARM.com{ 21411246Sradhika.jagtap@ARM.com limm t2, imm 21511246Sradhika.jagtap@ARM.com ldst t1, seg, sib, disp 2162292SN/A adc t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 2171060SN/A st t1, seg, sib, disp 2181060SN/A}; 2191060SN/A 2201060SN/Adef macroop ADC_P_I 2211060SN/A{ 2221060SN/A rdip t7 2231060SN/A limm t2, imm 2241060SN/A ldst t1, seg, riprel, disp 2251060SN/A adc t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 2261060SN/A st t1, seg, riprel, disp 2271060SN/A}; 2281060SN/A 2291060SN/Adef macroop ADC_LOCKED_M_I 2301061SN/A{ 2311060SN/A limm t2, imm 2322292SN/A ldstl t1, seg, sib, disp 2331060SN/A adc t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 2341060SN/A stul t1, seg, sib, disp 2351060SN/A}; 2361060SN/A 2371060SN/Adef macroop ADC_LOCKED_P_I 2381060SN/A{ 2391060SN/A rdip t7 2401061SN/A limm t2, imm 2411060SN/A ldstl t1, seg, riprel, disp 2422292SN/A adc t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 2431060SN/A stul t1, seg, riprel, disp 2441060SN/A}; 2451060SN/A 2461060SN/Adef macroop ADC_M_R 2471060SN/A{ 2481060SN/A ldst t1, seg, sib, disp 2491060SN/A adc t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 2501061SN/A st t1, seg, sib, disp 2511060SN/A}; 2529427SAndreas.Sandberg@ARM.com 2531060SN/Adef macroop ADC_P_R 2549444SAndreas.Sandberg@ARM.com{ 2559444SAndreas.Sandberg@ARM.com rdip t7 2569444SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 2579444SAndreas.Sandberg@ARM.com adc t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 2589444SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 25913641Sqtt2@cornell.edu}; 26013641Sqtt2@cornell.edu 26113641Sqtt2@cornell.edudef macroop ADC_LOCKED_M_R 26213641Sqtt2@cornell.edu{ 26313641Sqtt2@cornell.edu ldstl t1, seg, sib, disp 26413641Sqtt2@cornell.edu adc t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 26513641Sqtt2@cornell.edu stul t1, seg, sib, disp 26613641Sqtt2@cornell.edu}; 26713641Sqtt2@cornell.edu 26813641Sqtt2@cornell.edudef macroop ADC_LOCKED_P_R 26913641Sqtt2@cornell.edu{ 27013641Sqtt2@cornell.edu rdip t7 27113641Sqtt2@cornell.edu ldstl t1, seg, riprel, disp 27213641Sqtt2@cornell.edu adc t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 27313641Sqtt2@cornell.edu stul t1, seg, riprel, disp 27413641Sqtt2@cornell.edu}; 27513641Sqtt2@cornell.edu 27613641Sqtt2@cornell.edudef macroop ADC_R_M 27713641Sqtt2@cornell.edu{ 27813641Sqtt2@cornell.edu ld t1, seg, sib, disp 27913641Sqtt2@cornell.edu adc reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 28013641Sqtt2@cornell.edu}; 2819444SAndreas.Sandberg@ARM.com 2829444SAndreas.Sandberg@ARM.comdef macroop ADC_R_P 2839444SAndreas.Sandberg@ARM.com{ 2849444SAndreas.Sandberg@ARM.com rdip t7 2859444SAndreas.Sandberg@ARM.com ld t1, seg, riprel, disp 2869444SAndreas.Sandberg@ARM.com adc reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 2879444SAndreas.Sandberg@ARM.com}; 2882329SN/A 2896221Snate@binkert.orgdef macroop SBB_R_R 2909444SAndreas.Sandberg@ARM.com{ 2919444SAndreas.Sandberg@ARM.com sbb reg, reg, regm, flags=(OF,SF,ZF,AF,PF,CF) 2922292SN/A}; 29310239Sbinhpham@cs.rutgers.edu 29410239Sbinhpham@cs.rutgers.edudef macroop SBB_R_I 2952292SN/A{ 2962292SN/A limm t1, imm 2979444SAndreas.Sandberg@ARM.com sbb reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 2989444SAndreas.Sandberg@ARM.com}; 2999444SAndreas.Sandberg@ARM.com 3009444SAndreas.Sandberg@ARM.comdef macroop SBB_R_M 3019444SAndreas.Sandberg@ARM.com{ 30210239Sbinhpham@cs.rutgers.edu ld t1, seg, sib, disp 30310239Sbinhpham@cs.rutgers.edu sbb reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 3049444SAndreas.Sandberg@ARM.com}; 3059444SAndreas.Sandberg@ARM.com 3062292SN/Adef macroop SBB_R_P 3071060SN/A{ 3081060SN/A rdip t7 3092292SN/A ld t1, seg, riprel, disp 3102292SN/A sbb reg, reg, t1, flags=(OF,SF,ZF,AF,PF,CF) 3116221Snate@binkert.org}; 3122292SN/A 3132292SN/Adef macroop SBB_M_I 3142292SN/A{ 3152292SN/A limm t2, imm 3162292SN/A ldst t1, seg, sib, disp 3171061SN/A sbb t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 3181060SN/A st t1, seg, sib, disp 3192292SN/A}; 3201060SN/A 3216221Snate@binkert.orgdef macroop SBB_P_I 3226221Snate@binkert.org{ 3231060SN/A rdip t7 3241060SN/A limm t2, imm 3251061SN/A ldst t1, seg, riprel, disp 3261060SN/A sbb t1, t1, t2, flags=(OF,SF,ZF,AF,PF,CF) 3272292SN/A st t1, seg, riprel, disp 3281060SN/A}; 3292292SN/A 3302292SN/Adef macroop SBB_M_R 3311060SN/A{ 3322292SN/A ldst t1, seg, sib, disp 3332292SN/A sbb t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 3342292SN/A st t1, seg, sib, disp 3352292SN/A}; 3362292SN/A 3371060SN/Adef macroop SBB_P_R 3381060SN/A{ 3391061SN/A rdip t7 3402863Sktlim@umich.edu ldst t1, seg, riprel, disp 3419444SAndreas.Sandberg@ARM.com sbb t1, t1, reg, flags=(OF,SF,ZF,AF,PF,CF) 3421060SN/A st t1, seg, riprel, disp 3439444SAndreas.Sandberg@ARM.com}; 3449444SAndreas.Sandberg@ARM.com 3459444SAndreas.Sandberg@ARM.comdef macroop NEG_R 3469444SAndreas.Sandberg@ARM.com{ 34711650Srekai.gonzalezalberquilla@arm.com sub reg, t0, reg, flags=(CF,OF,SF,ZF,AF,PF) 34811650Srekai.gonzalezalberquilla@arm.com}; 3499444SAndreas.Sandberg@ARM.com 3509444SAndreas.Sandberg@ARM.comdef macroop NEG_M 3512863Sktlim@umich.edu{ 3522316SN/A ldst t1, seg, sib, disp 3531060SN/A sub t1, t0, t1, flags=(CF,OF,SF,ZF,AF,PF) 3542316SN/A st t1, seg, sib, disp 3552316SN/A}; 3562307SN/A 3571060SN/Adef macroop NEG_P 3589444SAndreas.Sandberg@ARM.com{ 3599444SAndreas.Sandberg@ARM.com rdip t7 3601060SN/A ldst t1, seg, riprel, disp 3619444SAndreas.Sandberg@ARM.com sub t1, t0, t1, flags=(CF,OF,SF,ZF,AF,PF) 3629444SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 3639444SAndreas.Sandberg@ARM.com}; 3649444SAndreas.Sandberg@ARM.com''' 3656221Snate@binkert.org