bit_test.py revision 6095
15326Sgblack@eecs.umich.edu# Copyright (c) 2008 The Regents of The University of Michigan 25326Sgblack@eecs.umich.edu# All rights reserved. 35326Sgblack@eecs.umich.edu# 45326Sgblack@eecs.umich.edu# Redistribution and use in source and binary forms, with or without 55326Sgblack@eecs.umich.edu# modification, are permitted provided that the following conditions are 65326Sgblack@eecs.umich.edu# met: redistributions of source code must retain the above copyright 75326Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer; 85326Sgblack@eecs.umich.edu# redistributions in binary form must reproduce the above copyright 95326Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer in the 105326Sgblack@eecs.umich.edu# documentation and/or other materials provided with the distribution; 115326Sgblack@eecs.umich.edu# neither the name of the copyright holders nor the names of its 125326Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from 135326Sgblack@eecs.umich.edu# this software without specific prior written permission. 145326Sgblack@eecs.umich.edu# 155326Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 165326Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 175326Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 185326Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 195326Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 205326Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 215326Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 225326Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 235326Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 245326Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 255326Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 265326Sgblack@eecs.umich.edu# 275326Sgblack@eecs.umich.edu# Authors: Gabe Black 285326Sgblack@eecs.umich.edu 295326Sgblack@eecs.umich.edu# Copyright (c) 2007-2008 The Hewlett-Packard Development Company 305081Sgblack@eecs.umich.edu# All rights reserved. 315081Sgblack@eecs.umich.edu# 325081Sgblack@eecs.umich.edu# Redistribution and use of this software in source and binary forms, 335081Sgblack@eecs.umich.edu# with or without modification, are permitted provided that the 345081Sgblack@eecs.umich.edu# following conditions are met: 355081Sgblack@eecs.umich.edu# 365081Sgblack@eecs.umich.edu# The software must be used only for Non-Commercial Use which means any 375081Sgblack@eecs.umich.edu# use which is NOT directed to receiving any direct monetary 385081Sgblack@eecs.umich.edu# compensation for, or commercial advantage from such use. Illustrative 395081Sgblack@eecs.umich.edu# examples of non-commercial use are academic research, personal study, 405081Sgblack@eecs.umich.edu# teaching, education and corporate research & development. 415081Sgblack@eecs.umich.edu# Illustrative examples of commercial use are distributing products for 425081Sgblack@eecs.umich.edu# commercial advantage and providing services using the software for 435081Sgblack@eecs.umich.edu# commercial advantage. 445081Sgblack@eecs.umich.edu# 455081Sgblack@eecs.umich.edu# If you wish to use this software or functionality therein that may be 465081Sgblack@eecs.umich.edu# covered by patents for commercial use, please contact: 475081Sgblack@eecs.umich.edu# Director of Intellectual Property Licensing 485081Sgblack@eecs.umich.edu# Office of Strategy and Technology 495081Sgblack@eecs.umich.edu# Hewlett-Packard Company 505081Sgblack@eecs.umich.edu# 1501 Page Mill Road 515081Sgblack@eecs.umich.edu# Palo Alto, California 94304 525081Sgblack@eecs.umich.edu# 535081Sgblack@eecs.umich.edu# Redistributions of source code must retain the above copyright notice, 545081Sgblack@eecs.umich.edu# this list of conditions and the following disclaimer. Redistributions 555081Sgblack@eecs.umich.edu# in binary form must reproduce the above copyright notice, this list of 565081Sgblack@eecs.umich.edu# conditions and the following disclaimer in the documentation and/or 575081Sgblack@eecs.umich.edu# other materials provided with the distribution. Neither the name of 585081Sgblack@eecs.umich.edu# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 595081Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from 605081Sgblack@eecs.umich.edu# this software without specific prior written permission. No right of 615081Sgblack@eecs.umich.edu# sublicense is granted herewith. Derivatives of the software and 625081Sgblack@eecs.umich.edu# output created using the software may be prepared, but only for 635081Sgblack@eecs.umich.edu# Non-Commercial Uses. Derivatives of the software may be shared with 645081Sgblack@eecs.umich.edu# others provided: (i) the others agree to abide by the list of 655081Sgblack@eecs.umich.edu# conditions herein which includes the Non-Commercial Use restrictions; 665081Sgblack@eecs.umich.edu# and (ii) such Derivatives of the software include the above copyright 675081Sgblack@eecs.umich.edu# notice to acknowledge the contribution from this software where 685081Sgblack@eecs.umich.edu# applicable, this list of conditions and the disclaimer below. 695081Sgblack@eecs.umich.edu# 705081Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 715081Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 725081Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 735081Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 745081Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 755081Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 765081Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 775081Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 785081Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 795081Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 805081Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 815081Sgblack@eecs.umich.edu# 825081Sgblack@eecs.umich.edu# Authors: Gabe Black 835081Sgblack@eecs.umich.edu 845240Sgblack@eecs.umich.edumicrocode = ''' 855240Sgblack@eecs.umich.edudef macroop BT_R_I { 865240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 875240Sgblack@eecs.umich.edu}; 885240Sgblack@eecs.umich.edu 895240Sgblack@eecs.umich.edudef macroop BT_M_I { 905306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 915240Sgblack@eecs.umich.edu # This fudges just a tiny bit, but it's reasonable to expect the 925240Sgblack@eecs.umich.edu # microcode generation logic to have the log of the various sizes 935240Sgblack@eecs.umich.edu # floating around as well. 945326Sgblack@eecs.umich.edu ld t1, seg, sib, disp 955240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 965240Sgblack@eecs.umich.edu}; 975240Sgblack@eecs.umich.edu 985240Sgblack@eecs.umich.edudef macroop BT_P_I { 995240Sgblack@eecs.umich.edu rdip t7 1005306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1015326Sgblack@eecs.umich.edu ld t1, seg, riprel, disp, dataSize=asz 1025240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1035240Sgblack@eecs.umich.edu}; 1045240Sgblack@eecs.umich.edu 1055240Sgblack@eecs.umich.edudef macroop BT_R_R { 1065240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 1075240Sgblack@eecs.umich.edu}; 1085240Sgblack@eecs.umich.edu 1095240Sgblack@eecs.umich.edudef macroop BT_M_R { 1105326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1115326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1125326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 1135326Sgblack@eecs.umich.edu ld t1, seg, [scale, index, t3], disp 1145240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1155240Sgblack@eecs.umich.edu}; 1165240Sgblack@eecs.umich.edu 1175240Sgblack@eecs.umich.edudef macroop BT_P_R { 1185240Sgblack@eecs.umich.edu rdip t7 1195326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1205326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1215326Sgblack@eecs.umich.edu lea t3, flatseg, [ldsz, t3, base], dataSize=asz 1225326Sgblack@eecs.umich.edu ld t1, seg, [1, t3, t7], disp 1235240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1245240Sgblack@eecs.umich.edu}; 1255240Sgblack@eecs.umich.edu 1265240Sgblack@eecs.umich.edudef macroop BTC_R_I { 1275240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 1285240Sgblack@eecs.umich.edu limm t1, 1 1295240Sgblack@eecs.umich.edu roli t1, t1, imm 1305240Sgblack@eecs.umich.edu xor reg, reg, t1 1315240Sgblack@eecs.umich.edu}; 1325240Sgblack@eecs.umich.edu 1335240Sgblack@eecs.umich.edudef macroop BTC_M_I { 1345306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1355240Sgblack@eecs.umich.edu # This fudges just a tiny bit, but it's reasonable to expect the 1365240Sgblack@eecs.umich.edu # microcode generation logic to have the log of the various sizes 1375240Sgblack@eecs.umich.edu # floating around as well. 1385326Sgblack@eecs.umich.edu limm t4, 1 1395326Sgblack@eecs.umich.edu roli t4, t4, imm 1405326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 1415240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1425326Sgblack@eecs.umich.edu xor t1, t1, t4 1435326Sgblack@eecs.umich.edu st t1, seg, sib, disp 1445240Sgblack@eecs.umich.edu}; 1455240Sgblack@eecs.umich.edu 1465240Sgblack@eecs.umich.edudef macroop BTC_P_I { 1475306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1485306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1495326Sgblack@eecs.umich.edu limm t4, 1 1505326Sgblack@eecs.umich.edu roli t4, t4, imm 1515326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 1525240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1535326Sgblack@eecs.umich.edu xor t1, t1, t4 1545326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 1555240Sgblack@eecs.umich.edu}; 1565240Sgblack@eecs.umich.edu 1575240Sgblack@eecs.umich.edudef macroop BTC_R_R { 1585240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 1595240Sgblack@eecs.umich.edu limm t1, 1 1605240Sgblack@eecs.umich.edu rol t1, t1, regm 1615240Sgblack@eecs.umich.edu xor reg, reg, t1 1625240Sgblack@eecs.umich.edu}; 1635240Sgblack@eecs.umich.edu 1645240Sgblack@eecs.umich.edudef macroop BTC_M_R { 1655326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1665326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1675326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 1685326Sgblack@eecs.umich.edu limm t4, 1 1695326Sgblack@eecs.umich.edu rol t4, t4, reg 1705326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 1715240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1725326Sgblack@eecs.umich.edu xor t1, t1, t4 1735326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 1745240Sgblack@eecs.umich.edu}; 1755240Sgblack@eecs.umich.edu 1765240Sgblack@eecs.umich.edudef macroop BTC_P_R { 1775306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1785326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1795326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1805326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 1815326Sgblack@eecs.umich.edu limm t4, 1 1825326Sgblack@eecs.umich.edu rol t4, t4, reg 1835326Sgblack@eecs.umich.edu ldst t1, seg, [1, t2, t7], disp 1845240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1855326Sgblack@eecs.umich.edu xor t1, t1, t4 1865297Sgblack@eecs.umich.edu st t1, seg, [1, t2, t7], disp 1875240Sgblack@eecs.umich.edu}; 1885240Sgblack@eecs.umich.edu 1895240Sgblack@eecs.umich.edudef macroop BTR_R_I { 1905240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 1915240Sgblack@eecs.umich.edu limm t1, "(uint64_t(-(2ULL)))" 1925240Sgblack@eecs.umich.edu roli t1, t1, imm 1935240Sgblack@eecs.umich.edu and reg, reg, t1 1945240Sgblack@eecs.umich.edu}; 1955240Sgblack@eecs.umich.edu 1965240Sgblack@eecs.umich.edudef macroop BTR_M_I { 1975306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1985326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 1995326Sgblack@eecs.umich.edu roli t4, t4, imm 2005326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2015240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2025326Sgblack@eecs.umich.edu and t1, t1, t4 2035326Sgblack@eecs.umich.edu st t1, seg, sib, disp 2045240Sgblack@eecs.umich.edu}; 2055240Sgblack@eecs.umich.edu 2065240Sgblack@eecs.umich.edudef macroop BTR_P_I { 2075306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2085306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2095326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2105326Sgblack@eecs.umich.edu roli t4, t4, imm 2115326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2125240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2135326Sgblack@eecs.umich.edu and t1, t1, t4 2145326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2155240Sgblack@eecs.umich.edu}; 2165240Sgblack@eecs.umich.edu 2176095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_M_I { 2186095Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2196095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2206095Sgblack@eecs.umich.edu roli t4, t4, imm 2216095Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 2226095Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2236095Sgblack@eecs.umich.edu and t1, t1, t4 2246095Sgblack@eecs.umich.edu stul t1, seg, sib, disp 2256095Sgblack@eecs.umich.edu}; 2266095Sgblack@eecs.umich.edu 2276095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_P_I { 2286095Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2296095Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2306095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2316095Sgblack@eecs.umich.edu roli t4, t4, imm 2326095Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 2336095Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2346095Sgblack@eecs.umich.edu and t1, t1, t4 2356095Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 2366095Sgblack@eecs.umich.edu}; 2376095Sgblack@eecs.umich.edu 2385240Sgblack@eecs.umich.edudef macroop BTR_R_R { 2395240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 2405240Sgblack@eecs.umich.edu limm t1, "(uint64_t(-(2ULL)))" 2415240Sgblack@eecs.umich.edu rol t1, t1, regm 2425240Sgblack@eecs.umich.edu and reg, reg, t1 2435240Sgblack@eecs.umich.edu}; 2445240Sgblack@eecs.umich.edu 2455240Sgblack@eecs.umich.edudef macroop BTR_M_R { 2465326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2475326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2485326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2495326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2505326Sgblack@eecs.umich.edu rol t4, t4, reg 2515326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 2525240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2535326Sgblack@eecs.umich.edu and t1, t1, t4 2545326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 2555240Sgblack@eecs.umich.edu}; 2565240Sgblack@eecs.umich.edu 2575240Sgblack@eecs.umich.edudef macroop BTR_P_R { 2585306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2595326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2605326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2615326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2625326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2635326Sgblack@eecs.umich.edu rol t4, t4, reg 2645326Sgblack@eecs.umich.edu ldst t1, seg, [1, t3, t7], disp 2655240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2665326Sgblack@eecs.umich.edu and t1, t1, t4 2675326Sgblack@eecs.umich.edu st t1, seg, [1, t3, t7], disp 2685240Sgblack@eecs.umich.edu}; 2695240Sgblack@eecs.umich.edu 2706095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_M_R { 2716095Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2726095Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2736095Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2746095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2756095Sgblack@eecs.umich.edu rol t4, t4, reg 2766095Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 2776095Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2786095Sgblack@eecs.umich.edu and t1, t1, t4 2796095Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 2806095Sgblack@eecs.umich.edu}; 2816095Sgblack@eecs.umich.edu 2826095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_P_R { 2836095Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2846095Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2856095Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2866095Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2876095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2886095Sgblack@eecs.umich.edu rol t4, t4, reg 2896095Sgblack@eecs.umich.edu ldstl t1, seg, [1, t3, t7], disp 2906095Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2916095Sgblack@eecs.umich.edu and t1, t1, t4 2926095Sgblack@eecs.umich.edu stul t1, seg, [1, t3, t7], disp 2936095Sgblack@eecs.umich.edu}; 2946095Sgblack@eecs.umich.edu 2955240Sgblack@eecs.umich.edudef macroop BTS_R_I { 2965240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 2975240Sgblack@eecs.umich.edu limm t1, 1 2985240Sgblack@eecs.umich.edu roli t1, t1, imm 2995240Sgblack@eecs.umich.edu or reg, reg, t1 3005240Sgblack@eecs.umich.edu}; 3015240Sgblack@eecs.umich.edu 3025240Sgblack@eecs.umich.edudef macroop BTS_M_I { 3035306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3045326Sgblack@eecs.umich.edu limm t4, 1 3055326Sgblack@eecs.umich.edu roli t4, t4, imm 3065326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 3075240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3085326Sgblack@eecs.umich.edu or t1, t1, t4 3095326Sgblack@eecs.umich.edu st t1, seg, sib, disp 3105240Sgblack@eecs.umich.edu}; 3115240Sgblack@eecs.umich.edu 3125240Sgblack@eecs.umich.edudef macroop BTS_P_I { 3135306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3145306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3155326Sgblack@eecs.umich.edu limm t4, 1 3165326Sgblack@eecs.umich.edu roli t4, t4, imm 3175326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 3185240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3195326Sgblack@eecs.umich.edu or t1, t1, t4 3205326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 3215240Sgblack@eecs.umich.edu}; 3225240Sgblack@eecs.umich.edu 3236093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_M_I { 3246093Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3256093Sgblack@eecs.umich.edu limm t4, 1 3266093Sgblack@eecs.umich.edu roli t4, t4, imm 3276093Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 3286093Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3296093Sgblack@eecs.umich.edu or t1, t1, t4 3306093Sgblack@eecs.umich.edu stul t1, seg, sib, disp 3316093Sgblack@eecs.umich.edu}; 3326093Sgblack@eecs.umich.edu 3336093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_P_I { 3346093Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3356093Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3366093Sgblack@eecs.umich.edu limm t4, 1 3376093Sgblack@eecs.umich.edu roli t4, t4, imm 3386093Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 3396093Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3406093Sgblack@eecs.umich.edu or t1, t1, t4 3416093Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 3426093Sgblack@eecs.umich.edu}; 3436093Sgblack@eecs.umich.edu 3445240Sgblack@eecs.umich.edudef macroop BTS_R_R { 3455240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 3465240Sgblack@eecs.umich.edu limm t1, 1 3475240Sgblack@eecs.umich.edu rol t1, t1, regm 3485240Sgblack@eecs.umich.edu or reg, reg, t1 3495240Sgblack@eecs.umich.edu}; 3505240Sgblack@eecs.umich.edu 3515240Sgblack@eecs.umich.edudef macroop BTS_M_R { 3525326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3535326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3545326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3555326Sgblack@eecs.umich.edu limm t4, 1 3565326Sgblack@eecs.umich.edu rol t4, t4, reg 3575326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 3585240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3595326Sgblack@eecs.umich.edu or t1, t1, t4 3605326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 3615240Sgblack@eecs.umich.edu}; 3625240Sgblack@eecs.umich.edu 3635240Sgblack@eecs.umich.edudef macroop BTS_P_R { 3645306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3655326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3665326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3675326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3685326Sgblack@eecs.umich.edu limm t4, 1 3695326Sgblack@eecs.umich.edu rol t4, t4, reg 3705326Sgblack@eecs.umich.edu ldst t1, seg, [1, t3, t7], disp 3715240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3725326Sgblack@eecs.umich.edu or t1, t1, t4 3735326Sgblack@eecs.umich.edu st t1, seg, [1, t3, t7], disp 3745240Sgblack@eecs.umich.edu}; 3756093Sgblack@eecs.umich.edu 3766093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_M_R { 3776093Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3786093Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3796093Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3806093Sgblack@eecs.umich.edu limm t4, 1 3816093Sgblack@eecs.umich.edu rol t4, t4, reg 3826093Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 3836093Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3846093Sgblack@eecs.umich.edu or t1, t1, t4 3856093Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 3866093Sgblack@eecs.umich.edu}; 3876093Sgblack@eecs.umich.edu 3886093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_P_R { 3896093Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3906093Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3916093Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3926093Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3936093Sgblack@eecs.umich.edu limm t4, 1 3946093Sgblack@eecs.umich.edu rol t4, t4, reg 3956093Sgblack@eecs.umich.edu ldstl t1, seg, [1, t3, t7], disp 3966093Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3976093Sgblack@eecs.umich.edu or t1, t1, t4 3986093Sgblack@eecs.umich.edu stul t1, seg, [1, t3, t7], disp 3996093Sgblack@eecs.umich.edu}; 4005240Sgblack@eecs.umich.edu''' 401