rotate.py revision 5081:2ccce8600a9d
12292SN/A# Copyright (c) 2007 The Hewlett-Packard Development Company
28733Sgeoffrey.blake@arm.com# All rights reserved.
37597Sminkyu.jeong@arm.com#
47597Sminkyu.jeong@arm.com# Redistribution and use of this software in source and binary forms,
57597Sminkyu.jeong@arm.com# with or without modification, are permitted provided that the
67597Sminkyu.jeong@arm.com# following conditions are met:
77597Sminkyu.jeong@arm.com#
87597Sminkyu.jeong@arm.com# The software must be used only for Non-Commercial Use which means any
97597Sminkyu.jeong@arm.com# use which is NOT directed to receiving any direct monetary
107597Sminkyu.jeong@arm.com# compensation for, or commercial advantage from such use.  Illustrative
117597Sminkyu.jeong@arm.com# examples of non-commercial use are academic research, personal study,
127597Sminkyu.jeong@arm.com# teaching, education and corporate research & development.
137597Sminkyu.jeong@arm.com# Illustrative examples of commercial use are distributing products for
142292SN/A# commercial advantage and providing services using the software for
152292SN/A# commercial advantage.
162292SN/A#
172292SN/A# If you wish to use this software or functionality therein that may be
182292SN/A# covered by patents for commercial use, please contact:
192292SN/A#     Director of Intellectual Property Licensing
202292SN/A#     Office of Strategy and Technology
212292SN/A#     Hewlett-Packard Company
222292SN/A#     1501 Page Mill Road
232292SN/A#     Palo Alto, California  94304
242292SN/A#
252292SN/A# Redistributions of source code must retain the above copyright notice,
262292SN/A# this list of conditions and the following disclaimer.  Redistributions
272292SN/A# in binary form must reproduce the above copyright notice, this list of
282292SN/A# conditions and the following disclaimer in the documentation and/or
292292SN/A# other materials provided with the distribution.  Neither the name of
302292SN/A# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
312292SN/A# contributors may be used to endorse or promote products derived from
322292SN/A# this software without specific prior written permission.  No right of
332292SN/A# sublicense is granted herewith.  Derivatives of the software and
342292SN/A# output created using the software may be prepared, but only for
352292SN/A# Non-Commercial Uses.  Derivatives of the software may be shared with
362292SN/A# others provided: (i) the others agree to abide by the list of
372292SN/A# conditions herein which includes the Non-Commercial Use restrictions;
382292SN/A# and (ii) such Derivatives of the software include the above copyright
392689Sktlim@umich.edu# notice to acknowledge the contribution from this software where
402689Sktlim@umich.edu# applicable, this list of conditions and the disclaimer below.
412689Sktlim@umich.edu#
422292SN/A# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
432292SN/A# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
448591Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
453326Sktlim@umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
468229Snate@binkert.org# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
476658Snate@binkert.org# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
488887Sgeoffrey.blake@arm.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
492907Sktlim@umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
502292SN/A# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
518232Snate@binkert.org# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
528232Snate@binkert.org# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
538232Snate@binkert.org#
542722Sktlim@umich.edu# Authors: Gabe Black
552669Sktlim@umich.edu
562292SN/Amicrocode = '''
572669Sktlim@umich.edudef macroop ROL_R_I
582678Sktlim@umich.edu{
592678Sktlim@umich.edu    roli reg, reg, imm
608581Ssteve.reinhardt@amd.com};
618581Ssteve.reinhardt@amd.com
622292SN/Adef macroop ROL_M_I
632292SN/A{
642292SN/A    ld t1, seg, sib, disp
652669Sktlim@umich.edu    roli t1, t1, imm
662292SN/A    st t1, seg, sib, disp
672678Sktlim@umich.edu};
682292SN/A
692678Sktlim@umich.edudef macroop ROL_P_I
702678Sktlim@umich.edu{
712678Sktlim@umich.edu    rdip t7
724319Sktlim@umich.edu    ld t1, seg, riprel, disp
734319Sktlim@umich.edu    roli t1, t1, imm
744319Sktlim@umich.edu    st t1, seg, riprel, disp
754319Sktlim@umich.edu};
764319Sktlim@umich.edu
772678Sktlim@umich.edudef macroop ROL_1_R
782678Sktlim@umich.edu{
792292SN/A    roli reg, reg, 1
802678Sktlim@umich.edu};
812678Sktlim@umich.edu
825336Shines@cs.fsu.edudef macroop ROL_1_M
832678Sktlim@umich.edu{
844873Sstever@eecs.umich.edu    ld t1, seg, sib, disp
852678Sktlim@umich.edu    roli t1, t1, 1
862292SN/A    st t1, seg, sib, disp
872678Sktlim@umich.edu};
882678Sktlim@umich.edu
892678Sktlim@umich.edudef macroop ROL_1_P
902678Sktlim@umich.edu{
912678Sktlim@umich.edu    rdip t7
922678Sktlim@umich.edu    ld t1, seg, riprel, disp
937852SMatt.Horsnell@arm.com    roli t1, t1, 1
947852SMatt.Horsnell@arm.com    st t1, seg, riprel, disp
952344SN/A};
962678Sktlim@umich.edu
972678Sktlim@umich.edudef macroop ROL_R_R
984986Ssaidi@eecs.umich.edu{
994986Ssaidi@eecs.umich.edu    rol reg, reg, regm
1006974Stjones1@inf.ed.ac.uk};
1016974Stjones1@inf.ed.ac.uk
1026974Stjones1@inf.ed.ac.ukdef macroop ROL_M_R
1036974Stjones1@inf.ed.ac.uk{
1046974Stjones1@inf.ed.ac.uk    ld t1, seg, sib, disp
1056974Stjones1@inf.ed.ac.uk    rol t1, t1, reg
1066974Stjones1@inf.ed.ac.uk    st t1, seg, sib, disp
1072678Sktlim@umich.edu};
1082820Sktlim@umich.edu
1092678Sktlim@umich.edudef macroop ROL_P_R
1102678Sktlim@umich.edu{
1116974Stjones1@inf.ed.ac.uk    rdip t7
1126974Stjones1@inf.ed.ac.uk    ld t1, seg, riprel, disp
1136974Stjones1@inf.ed.ac.uk    rol t1, t1, reg
1146974Stjones1@inf.ed.ac.uk    st t1, seg, riprel, disp
1156974Stjones1@inf.ed.ac.uk};
1166974Stjones1@inf.ed.ac.uk
1172678Sktlim@umich.edudef macroop ROR_R_I
1182678Sktlim@umich.edu{
1192678Sktlim@umich.edu    rori reg, reg, imm
1202678Sktlim@umich.edu};
1212678Sktlim@umich.edu
1222344SN/Adef macroop ROR_M_I
1232307SN/A{
1246974Stjones1@inf.ed.ac.uk    ld t1, seg, sib, disp
1256974Stjones1@inf.ed.ac.uk    rori t1, t1, imm
1266974Stjones1@inf.ed.ac.uk    st t1, seg, sib, disp
1276974Stjones1@inf.ed.ac.uk};
1282678Sktlim@umich.edu
1294032Sktlim@umich.edudef macroop ROR_P_I
1302678Sktlim@umich.edu{
1312292SN/A    rdip t7
1322292SN/A    ld t1, seg, riprel, disp
1332292SN/A    rori t1, t1, imm
1342292SN/A    st t1, seg, riprel, disp
1358545Ssaidi@eecs.umich.edu};
1362678Sktlim@umich.edu
1378727Snilay@cs.wisc.edudef macroop ROR_1_R
1382292SN/A{
1392292SN/A    rori reg, reg, 1
1402292SN/A};
1412292SN/A
1422292SN/Adef macroop ROR_1_M
1435529Snate@binkert.org{
1445529Snate@binkert.org    ld t1, seg, sib, disp
1455529Snate@binkert.org    rori t1, t1, 1
1462292SN/A    st t1, seg, sib, disp
1474329Sktlim@umich.edu};
1484329Sktlim@umich.edu
1494329Sktlim@umich.edudef macroop ROR_1_P
1504329Sktlim@umich.edu{
1512292SN/A    rdip t7
1522307SN/A    ld t1, seg, riprel, disp
1532307SN/A    rori t1, t1, 1
1548545Ssaidi@eecs.umich.edu    st t1, seg, riprel, disp
1558545Ssaidi@eecs.umich.edu};
1562907Sktlim@umich.edu
1572907Sktlim@umich.edudef macroop ROR_R_R
1582292SN/A{
1592292SN/A    ror reg, reg, regm
1602329SN/A};
1612329SN/A
1622329SN/Adef macroop ROR_M_R
1632292SN/A{
1642292SN/A    ld t1, seg, sib, disp
1652292SN/A    ror t1, t1, reg
1662292SN/A    st t1, seg, sib, disp
1678199SAli.Saidi@ARM.com};
1688199SAli.Saidi@ARM.com
1698199SAli.Saidi@ARM.comdef macroop ROR_P_R
1702292SN/A{
1712292SN/A    rdip t7
1722292SN/A    ld t1, seg, riprel, disp
1732292SN/A    ror t1, t1, reg
1742292SN/A    st t1, seg, riprel, disp
1752292SN/A};
1762292SN/A
1773492Sktlim@umich.edudef macroop RCL_R_I
1782329SN/A{
1792292SN/A    rcli reg, reg, imm
1802292SN/A};
1818727Snilay@cs.wisc.edu
1822292SN/Adef macroop RCL_M_I
1832292SN/A{
1842292SN/A    ld t1, seg, sib, disp
1852292SN/A    rcli t1, t1, imm
1862292SN/A    st t1, seg, sib, disp
1872292SN/A};
1882292SN/A
1892292SN/Adef macroop RCL_P_I
1902292SN/A{
1918247Snate@binkert.org    rdip t7
1922292SN/A    ld t1, seg, riprel, disp
1932292SN/A    rcli t1, t1, imm
1942292SN/A    st t1, seg, riprel, disp
1952292SN/A};
1962292SN/A
1972727Sktlim@umich.edudef macroop RCL_1_R
1982727Sktlim@umich.edu{
1992727Sktlim@umich.edu    rcli reg, reg, 1
2002727Sktlim@umich.edu};
2012727Sktlim@umich.edu
2022727Sktlim@umich.edudef macroop RCL_1_M
2032727Sktlim@umich.edu{
2042727Sktlim@umich.edu    ld t1, seg, sib, disp
2052727Sktlim@umich.edu    rcli t1, t1, 1
2062727Sktlim@umich.edu    st t1, seg, sib, disp
2072727Sktlim@umich.edu};
2082727Sktlim@umich.edu
2092727Sktlim@umich.edudef macroop RCL_1_P
2102727Sktlim@umich.edu{
2112727Sktlim@umich.edu    rdip t7
2122727Sktlim@umich.edu    ld t1, seg, riprel, disp
2132727Sktlim@umich.edu    rcli t1, t1, 1
2142727Sktlim@umich.edu    st t1, seg, riprel, disp
2152361SN/A};
2162361SN/A
2172361SN/Adef macroop RCL_R_R
2182361SN/A{
2192727Sktlim@umich.edu    rcl reg, reg, regm
2202727Sktlim@umich.edu};
2212727Sktlim@umich.edu
2222727Sktlim@umich.edudef macroop RCL_M_R
2232727Sktlim@umich.edu{
2242727Sktlim@umich.edu    ld t1, seg, sib, disp
2252727Sktlim@umich.edu    rcl t1, t1, reg
2262727Sktlim@umich.edu    st t1, seg, sib, disp
2272727Sktlim@umich.edu};
2282727Sktlim@umich.edu
2292727Sktlim@umich.edudef macroop RCL_P_R
2302727Sktlim@umich.edu{
2312727Sktlim@umich.edu    rdip t7
2322727Sktlim@umich.edu    ld t1, seg, riprel, disp
2332727Sktlim@umich.edu    rcl t1, t1, reg
2342727Sktlim@umich.edu    st t1, seg, riprel, disp
2352727Sktlim@umich.edu};
2362727Sktlim@umich.edu
2372727Sktlim@umich.edudef macroop RCR_R_I
2382727Sktlim@umich.edu{
2392727Sktlim@umich.edu    rcri reg, reg, imm
2402727Sktlim@umich.edu};
2412727Sktlim@umich.edu
2428922Swilliam.wang@arm.comdef macroop RCR_M_I
2434329Sktlim@umich.edu{
2444329Sktlim@umich.edu    ld t1, seg, sib, disp
2454329Sktlim@umich.edu    rcri t1, t1, imm
2464329Sktlim@umich.edu    st t1, seg, sib, disp
2474329Sktlim@umich.edu};
2484329Sktlim@umich.edu
2492292SN/Adef macroop RCR_P_I
2502292SN/A{
2512292SN/A    rdip t7
2522292SN/A    ld t1, seg, riprel, disp
2532292SN/A    rcri t1, t1, imm
2542292SN/A    st t1, seg, riprel, disp
2552292SN/A};
2562292SN/A
2572292SN/Adef macroop RCR_1_R
2582292SN/A{
2592292SN/A    rcri reg, reg, 1
2602292SN/A};
2612292SN/A
2622292SN/Adef macroop RCR_1_M
2632307SN/A{
2642307SN/A    ld t1, seg, sib, disp
2652307SN/A    rcri t1, t1, 1
2662367SN/A    st t1, seg, sib, disp
2672367SN/A};
2682307SN/A
2692367SN/Adef macroop RCR_1_P
2702307SN/A{
2712329SN/A    rdip t7
2722307SN/A    ld t1, seg, riprel, disp
2732307SN/A    rcri t1, t1, 1
2742307SN/A    st t1, seg, riprel, disp
2752307SN/A};
2762307SN/A
2772307SN/Adef macroop RCR_R_R
2782307SN/A{
2792307SN/A    rcr reg, reg, regm
2802307SN/A};
2812307SN/A
2822307SN/Adef macroop RCR_M_R
2832307SN/A{
2842307SN/A    ld t1, seg, sib, disp
2852307SN/A    rcr t1, t1, reg
2862307SN/A    st t1, seg, sib, disp
2872329SN/A};
2882307SN/A
2892307SN/Adef macroop RCR_P_R
2902307SN/A{
2912307SN/A    rdip t7
2922307SN/A    ld t1, seg, riprel, disp
2932307SN/A    rcr t1, t1, reg
2948545Ssaidi@eecs.umich.edu    st t1, seg, riprel, disp
2958545Ssaidi@eecs.umich.edu};
2968545Ssaidi@eecs.umich.edu'''
2972307SN/A