rotate.py revision 7087:fb8d5786ff30
110388SAndreas.Sandberg@ARM.com# Copyright (c) 2007 The Hewlett-Packard Development Company 210388SAndreas.Sandberg@ARM.com# All rights reserved. 310388SAndreas.Sandberg@ARM.com# 410388SAndreas.Sandberg@ARM.com# The license below extends only to copyright in the software and shall 510388SAndreas.Sandberg@ARM.com# not be construed as granting a license to any other intellectual 610388SAndreas.Sandberg@ARM.com# property including but not limited to intellectual property relating 710388SAndreas.Sandberg@ARM.com# to a hardware implementation of the functionality of the software 810388SAndreas.Sandberg@ARM.com# licensed hereunder. You may use the software subject to the license 910388SAndreas.Sandberg@ARM.com# terms below provided that you ensure that this notice is replicated 1010388SAndreas.Sandberg@ARM.com# unmodified and in its entirety in all distributions of the software, 1110388SAndreas.Sandberg@ARM.com# modified or unmodified, in source code or in binary form. 1210388SAndreas.Sandberg@ARM.com# 1310388SAndreas.Sandberg@ARM.com# Redistribution and use in source and binary forms, with or without 1410388SAndreas.Sandberg@ARM.com# modification, are permitted provided that the following conditions are 1510388SAndreas.Sandberg@ARM.com# met: redistributions of source code must retain the above copyright 1610388SAndreas.Sandberg@ARM.com# notice, this list of conditions and the following disclaimer; 1710388SAndreas.Sandberg@ARM.com# redistributions in binary form must reproduce the above copyright 1810388SAndreas.Sandberg@ARM.com# notice, this list of conditions and the following disclaimer in the 1910388SAndreas.Sandberg@ARM.com# documentation and/or other materials provided with the distribution; 2010388SAndreas.Sandberg@ARM.com# neither the name of the copyright holders nor the names of its 2110388SAndreas.Sandberg@ARM.com# contributors may be used to endorse or promote products derived from 2210388SAndreas.Sandberg@ARM.com# this software without specific prior written permission. 2310388SAndreas.Sandberg@ARM.com# 2410388SAndreas.Sandberg@ARM.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 2510388SAndreas.Sandberg@ARM.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2610388SAndreas.Sandberg@ARM.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2710388SAndreas.Sandberg@ARM.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2810388SAndreas.Sandberg@ARM.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2910388SAndreas.Sandberg@ARM.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3010388SAndreas.Sandberg@ARM.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3110388SAndreas.Sandberg@ARM.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3210388SAndreas.Sandberg@ARM.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3310388SAndreas.Sandberg@ARM.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 3410388SAndreas.Sandberg@ARM.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 3510388SAndreas.Sandberg@ARM.com# 3610388SAndreas.Sandberg@ARM.com# Authors: Gabe Black 3710388SAndreas.Sandberg@ARM.com 3810388SAndreas.Sandberg@ARM.commicrocode = ''' 3910388SAndreas.Sandberg@ARM.comdef macroop ROL_R_I 4011793Sbrandon.potter@amd.com{ 4111793Sbrandon.potter@amd.com roli reg, reg, imm, flags=(OF,CF) 4210388SAndreas.Sandberg@ARM.com}; 4310388SAndreas.Sandberg@ARM.com 4410388SAndreas.Sandberg@ARM.comdef macroop ROL_M_I 4510388SAndreas.Sandberg@ARM.com{ 4610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 4710559Sandreas.hansson@arm.com roli t1, t1, imm, flags=(OF,CF) 4810559Sandreas.hansson@arm.com st t1, seg, sib, disp 4910388SAndreas.Sandberg@ARM.com}; 5010388SAndreas.Sandberg@ARM.com 5110388SAndreas.Sandberg@ARM.comdef macroop ROL_P_I 5210388SAndreas.Sandberg@ARM.com{ 5310388SAndreas.Sandberg@ARM.com rdip t7 5410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 5510388SAndreas.Sandberg@ARM.com roli t1, t1, imm, flags=(OF,CF) 5610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 5710388SAndreas.Sandberg@ARM.com}; 5810388SAndreas.Sandberg@ARM.com 5910388SAndreas.Sandberg@ARM.comdef macroop ROL_1_R 6010388SAndreas.Sandberg@ARM.com{ 6110388SAndreas.Sandberg@ARM.com roli reg, reg, 1, flags=(OF,CF) 6210388SAndreas.Sandberg@ARM.com}; 6310388SAndreas.Sandberg@ARM.com 6410388SAndreas.Sandberg@ARM.comdef macroop ROL_1_M 6510388SAndreas.Sandberg@ARM.com{ 6610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 6710388SAndreas.Sandberg@ARM.com roli t1, t1, 1, flags=(OF,CF) 6810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 6910388SAndreas.Sandberg@ARM.com}; 7010388SAndreas.Sandberg@ARM.com 7110388SAndreas.Sandberg@ARM.comdef macroop ROL_1_P 7210388SAndreas.Sandberg@ARM.com{ 7310388SAndreas.Sandberg@ARM.com rdip t7 7410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 7510388SAndreas.Sandberg@ARM.com roli t1, t1, 1, flags=(OF,CF) 7610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 7710388SAndreas.Sandberg@ARM.com}; 7810388SAndreas.Sandberg@ARM.com 7910602SAndreas.Sandberg@ARM.comdef macroop ROL_R_R 8010602SAndreas.Sandberg@ARM.com{ 8110388SAndreas.Sandberg@ARM.com rol reg, reg, regm, flags=(OF,CF) 8210388SAndreas.Sandberg@ARM.com}; 8310388SAndreas.Sandberg@ARM.com 8410388SAndreas.Sandberg@ARM.comdef macroop ROL_M_R 8510388SAndreas.Sandberg@ARM.com{ 8610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 8710388SAndreas.Sandberg@ARM.com rol t1, t1, reg, flags=(OF,CF) 8810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 8910388SAndreas.Sandberg@ARM.com}; 9010388SAndreas.Sandberg@ARM.com 9110388SAndreas.Sandberg@ARM.comdef macroop ROL_P_R 9210388SAndreas.Sandberg@ARM.com{ 9310388SAndreas.Sandberg@ARM.com rdip t7 9410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 9510388SAndreas.Sandberg@ARM.com rol t1, t1, reg, flags=(OF,CF) 9610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 9710388SAndreas.Sandberg@ARM.com}; 9810388SAndreas.Sandberg@ARM.com 9910388SAndreas.Sandberg@ARM.comdef macroop ROR_R_I 10010388SAndreas.Sandberg@ARM.com{ 10110388SAndreas.Sandberg@ARM.com rori reg, reg, imm, flags=(OF,CF) 10210388SAndreas.Sandberg@ARM.com}; 10310388SAndreas.Sandberg@ARM.com 10410388SAndreas.Sandberg@ARM.comdef macroop ROR_M_I 10510388SAndreas.Sandberg@ARM.com{ 10610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 10710388SAndreas.Sandberg@ARM.com rori t1, t1, imm, flags=(OF,CF) 10810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 10910388SAndreas.Sandberg@ARM.com}; 11010388SAndreas.Sandberg@ARM.com 11110388SAndreas.Sandberg@ARM.comdef macroop ROR_P_I 11210388SAndreas.Sandberg@ARM.com{ 11310388SAndreas.Sandberg@ARM.com rdip t7 11410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 11510388SAndreas.Sandberg@ARM.com rori t1, t1, imm, flags=(OF,CF) 11610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 11710388SAndreas.Sandberg@ARM.com}; 11810388SAndreas.Sandberg@ARM.com 11910388SAndreas.Sandberg@ARM.comdef macroop ROR_1_R 12010388SAndreas.Sandberg@ARM.com{ 12110388SAndreas.Sandberg@ARM.com rori reg, reg, 1, flags=(OF,CF) 12210388SAndreas.Sandberg@ARM.com}; 12310388SAndreas.Sandberg@ARM.com 12410388SAndreas.Sandberg@ARM.comdef macroop ROR_1_M 12510388SAndreas.Sandberg@ARM.com{ 12610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 12710672SAndreas.Sandberg@ARM.com rori t1, t1, 1, flags=(OF,CF) 12810672SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 12910672SAndreas.Sandberg@ARM.com}; 13010672SAndreas.Sandberg@ARM.com 13110672SAndreas.Sandberg@ARM.comdef macroop ROR_1_P 13210388SAndreas.Sandberg@ARM.com{ 13310388SAndreas.Sandberg@ARM.com rdip t7 13410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 13510388SAndreas.Sandberg@ARM.com rori t1, t1, 1, flags=(OF,CF) 13610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 13710388SAndreas.Sandberg@ARM.com}; 13810388SAndreas.Sandberg@ARM.com 13910388SAndreas.Sandberg@ARM.comdef macroop ROR_R_R 14010388SAndreas.Sandberg@ARM.com{ 14110388SAndreas.Sandberg@ARM.com ror reg, reg, regm, flags=(OF,CF) 14210388SAndreas.Sandberg@ARM.com}; 14310388SAndreas.Sandberg@ARM.com 14410388SAndreas.Sandberg@ARM.comdef macroop ROR_M_R 14510388SAndreas.Sandberg@ARM.com{ 14610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 14710388SAndreas.Sandberg@ARM.com ror t1, t1, reg, flags=(OF,CF) 14810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 14910388SAndreas.Sandberg@ARM.com}; 15010388SAndreas.Sandberg@ARM.com 15110388SAndreas.Sandberg@ARM.comdef macroop ROR_P_R 15210388SAndreas.Sandberg@ARM.com{ 15310388SAndreas.Sandberg@ARM.com rdip t7 15410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 15510388SAndreas.Sandberg@ARM.com ror t1, t1, reg, flags=(OF,CF) 15610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 15710388SAndreas.Sandberg@ARM.com}; 15810388SAndreas.Sandberg@ARM.com 15910388SAndreas.Sandberg@ARM.comdef macroop RCL_R_I 16010602SAndreas.Sandberg@ARM.com{ 16110602SAndreas.Sandberg@ARM.com rcli reg, reg, imm, flags=(OF,CF) 16210388SAndreas.Sandberg@ARM.com}; 16310388SAndreas.Sandberg@ARM.com 16410388SAndreas.Sandberg@ARM.comdef macroop RCL_M_I 16510388SAndreas.Sandberg@ARM.com{ 16610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 16710388SAndreas.Sandberg@ARM.com rcli t1, t1, imm, flags=(OF,CF) 16810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 16910388SAndreas.Sandberg@ARM.com}; 17010388SAndreas.Sandberg@ARM.com 17110388SAndreas.Sandberg@ARM.comdef macroop RCL_P_I 17210388SAndreas.Sandberg@ARM.com{ 17310388SAndreas.Sandberg@ARM.com rdip t7 17410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 17510388SAndreas.Sandberg@ARM.com rcli t1, t1, imm, flags=(OF,CF) 17610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 17710388SAndreas.Sandberg@ARM.com}; 17810388SAndreas.Sandberg@ARM.com 17910388SAndreas.Sandberg@ARM.comdef macroop RCL_1_R 18010388SAndreas.Sandberg@ARM.com{ 18110388SAndreas.Sandberg@ARM.com rcli reg, reg, 1, flags=(OF,CF) 18210388SAndreas.Sandberg@ARM.com}; 18310388SAndreas.Sandberg@ARM.com 18410388SAndreas.Sandberg@ARM.comdef macroop RCL_1_M 18510388SAndreas.Sandberg@ARM.com{ 18610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 18710388SAndreas.Sandberg@ARM.com rcli t1, t1, 1, flags=(OF,CF) 18810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 18910388SAndreas.Sandberg@ARM.com}; 19010388SAndreas.Sandberg@ARM.com 19110388SAndreas.Sandberg@ARM.comdef macroop RCL_1_P 19210388SAndreas.Sandberg@ARM.com{ 19310388SAndreas.Sandberg@ARM.com rdip t7 19410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 19510388SAndreas.Sandberg@ARM.com rcli t1, t1, 1, flags=(OF,CF) 19610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 19710388SAndreas.Sandberg@ARM.com}; 19810388SAndreas.Sandberg@ARM.com 19910388SAndreas.Sandberg@ARM.comdef macroop RCL_R_R 20010388SAndreas.Sandberg@ARM.com{ 20110388SAndreas.Sandberg@ARM.com rcl reg, reg, regm, flags=(OF,CF) 20210388SAndreas.Sandberg@ARM.com}; 20310388SAndreas.Sandberg@ARM.com 20410388SAndreas.Sandberg@ARM.comdef macroop RCL_M_R 20510388SAndreas.Sandberg@ARM.com{ 20610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 20710388SAndreas.Sandberg@ARM.com rcl t1, t1, reg, flags=(OF,CF) 20810388SAndreas.Sandberg@ARM.com st t1, seg, sib, disp 20910388SAndreas.Sandberg@ARM.com}; 21010388SAndreas.Sandberg@ARM.com 21110388SAndreas.Sandberg@ARM.comdef macroop RCL_P_R 21210388SAndreas.Sandberg@ARM.com{ 21310388SAndreas.Sandberg@ARM.com rdip t7 21410388SAndreas.Sandberg@ARM.com ldst t1, seg, riprel, disp 21510388SAndreas.Sandberg@ARM.com rcl t1, t1, reg, flags=(OF,CF) 21610388SAndreas.Sandberg@ARM.com st t1, seg, riprel, disp 21710388SAndreas.Sandberg@ARM.com}; 21810388SAndreas.Sandberg@ARM.com 21910388SAndreas.Sandberg@ARM.comdef macroop RCR_R_I 22010388SAndreas.Sandberg@ARM.com{ 22110388SAndreas.Sandberg@ARM.com rcri reg, reg, imm, flags=(OF,CF) 22210388SAndreas.Sandberg@ARM.com}; 22310388SAndreas.Sandberg@ARM.com 22410388SAndreas.Sandberg@ARM.comdef macroop RCR_M_I 22510388SAndreas.Sandberg@ARM.com{ 22610388SAndreas.Sandberg@ARM.com ldst t1, seg, sib, disp 227 rcri t1, t1, imm, flags=(OF,CF) 228 st t1, seg, sib, disp 229}; 230 231def macroop RCR_P_I 232{ 233 rdip t7 234 ldst t1, seg, riprel, disp 235 rcri t1, t1, imm, flags=(OF,CF) 236 st t1, seg, riprel, disp 237}; 238 239def macroop RCR_1_R 240{ 241 rcri reg, reg, 1, flags=(OF,CF) 242}; 243 244def macroop RCR_1_M 245{ 246 ldst t1, seg, sib, disp 247 rcri t1, t1, 1, flags=(OF,CF) 248 st t1, seg, sib, disp 249}; 250 251def macroop RCR_1_P 252{ 253 rdip t7 254 ldst t1, seg, riprel, disp 255 rcri t1, t1, 1, flags=(OF,CF) 256 st t1, seg, riprel, disp 257}; 258 259def macroop RCR_R_R 260{ 261 rcr reg, reg, regm, flags=(OF,CF) 262}; 263 264def macroop RCR_M_R 265{ 266 ldst t1, seg, sib, disp 267 rcr t1, t1, reg, flags=(OF,CF) 268 st t1, seg, sib, disp 269}; 270 271def macroop RCR_P_R 272{ 273 rdip t7 274 ldst t1, seg, riprel, disp 275 rcr t1, t1, reg, flags=(OF,CF) 276 st t1, seg, riprel, disp 277}; 278''' 279