bit_test.py revision 8610
17087Snate@binkert.org# Copyright (c) 2007-2008 The Hewlett-Packard Development Company 27087Snate@binkert.org# All rights reserved. 37087Snate@binkert.org# 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. 127087Snate@binkert.org# 135326Sgblack@eecs.umich.edu# Copyright (c) 2008 The Regents of The University of Michigan 145326Sgblack@eecs.umich.edu# All rights reserved. 155326Sgblack@eecs.umich.edu# 165326Sgblack@eecs.umich.edu# Redistribution and use in source and binary forms, with or without 175326Sgblack@eecs.umich.edu# modification, are permitted provided that the following conditions are 185326Sgblack@eecs.umich.edu# met: redistributions of source code must retain the above copyright 195326Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer; 205326Sgblack@eecs.umich.edu# redistributions in binary form must reproduce the above copyright 215326Sgblack@eecs.umich.edu# notice, this list of conditions and the following disclaimer in the 225326Sgblack@eecs.umich.edu# documentation and/or other materials provided with the distribution; 235326Sgblack@eecs.umich.edu# neither the name of the copyright holders nor the names of its 245326Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from 255326Sgblack@eecs.umich.edu# this software without specific prior written permission. 265326Sgblack@eecs.umich.edu# 275326Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 285326Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 295326Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 305326Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 315326Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 325326Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 335326Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 345326Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 355326Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 365326Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 375326Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 385326Sgblack@eecs.umich.edu# 395326Sgblack@eecs.umich.edu# Authors: Gabe Black 405326Sgblack@eecs.umich.edu 415240Sgblack@eecs.umich.edumicrocode = ''' 425240Sgblack@eecs.umich.edudef macroop BT_R_I { 435240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 445240Sgblack@eecs.umich.edu}; 455240Sgblack@eecs.umich.edu 465240Sgblack@eecs.umich.edudef macroop BT_M_I { 475306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 485240Sgblack@eecs.umich.edu # This fudges just a tiny bit, but it's reasonable to expect the 495240Sgblack@eecs.umich.edu # microcode generation logic to have the log of the various sizes 505240Sgblack@eecs.umich.edu # floating around as well. 515326Sgblack@eecs.umich.edu ld t1, seg, sib, disp 525240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 535240Sgblack@eecs.umich.edu}; 545240Sgblack@eecs.umich.edu 555240Sgblack@eecs.umich.edudef macroop BT_P_I { 565240Sgblack@eecs.umich.edu rdip t7 575306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 585326Sgblack@eecs.umich.edu ld t1, seg, riprel, disp, dataSize=asz 595240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 605240Sgblack@eecs.umich.edu}; 615240Sgblack@eecs.umich.edu 625240Sgblack@eecs.umich.edudef macroop BT_R_R { 635240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 645240Sgblack@eecs.umich.edu}; 655240Sgblack@eecs.umich.edu 665240Sgblack@eecs.umich.edudef macroop BT_M_R { 675326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 685326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 695326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 705326Sgblack@eecs.umich.edu ld t1, seg, [scale, index, t3], disp 715240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 725240Sgblack@eecs.umich.edu}; 735240Sgblack@eecs.umich.edu 745240Sgblack@eecs.umich.edudef macroop BT_P_R { 755240Sgblack@eecs.umich.edu rdip t7 765326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 775326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 787690Sgblack@eecs.umich.edu ld t1, seg, [dsz, t3, t7], disp 795240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 805240Sgblack@eecs.umich.edu}; 815240Sgblack@eecs.umich.edu 825240Sgblack@eecs.umich.edudef macroop BTC_R_I { 835240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 845240Sgblack@eecs.umich.edu limm t1, 1 855240Sgblack@eecs.umich.edu roli t1, t1, imm 865240Sgblack@eecs.umich.edu xor reg, reg, t1 875240Sgblack@eecs.umich.edu}; 885240Sgblack@eecs.umich.edu 895240Sgblack@eecs.umich.edudef macroop BTC_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 limm t4, 1 955326Sgblack@eecs.umich.edu roli t4, t4, imm 965326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 975240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 985326Sgblack@eecs.umich.edu xor t1, t1, t4 995326Sgblack@eecs.umich.edu st t1, seg, sib, disp 1005240Sgblack@eecs.umich.edu}; 1015240Sgblack@eecs.umich.edu 1025240Sgblack@eecs.umich.edudef macroop BTC_P_I { 1035306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1045306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1055326Sgblack@eecs.umich.edu limm t4, 1 1065326Sgblack@eecs.umich.edu roli t4, t4, imm 1075326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 1085240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1095326Sgblack@eecs.umich.edu xor t1, t1, t4 1105326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 1115240Sgblack@eecs.umich.edu}; 1125240Sgblack@eecs.umich.edu 1136096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_M_I { 1146096Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1156096Sgblack@eecs.umich.edu limm t4, 1 1166096Sgblack@eecs.umich.edu roli t4, t4, imm 1178610Snilay@cs.wisc.edu mfence 1186096Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 1196096Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1206096Sgblack@eecs.umich.edu xor t1, t1, t4 1216096Sgblack@eecs.umich.edu stul t1, seg, sib, disp 1228610Snilay@cs.wisc.edu mfence 1236096Sgblack@eecs.umich.edu}; 1246096Sgblack@eecs.umich.edu 1256096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_P_I { 1266096Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1276096Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1286096Sgblack@eecs.umich.edu limm t4, 1 1296096Sgblack@eecs.umich.edu roli t4, t4, imm 1308610Snilay@cs.wisc.edu mfence 1316096Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 1326096Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1336096Sgblack@eecs.umich.edu xor t1, t1, t4 1346096Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 1358610Snilay@cs.wisc.edu mfence 1366096Sgblack@eecs.umich.edu}; 1376096Sgblack@eecs.umich.edu 1385240Sgblack@eecs.umich.edudef macroop BTC_R_R { 1395240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 1405240Sgblack@eecs.umich.edu limm t1, 1 1415240Sgblack@eecs.umich.edu rol t1, t1, regm 1425240Sgblack@eecs.umich.edu xor reg, reg, t1 1435240Sgblack@eecs.umich.edu}; 1445240Sgblack@eecs.umich.edu 1455240Sgblack@eecs.umich.edudef macroop BTC_M_R { 1465326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1475326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1485326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 1495326Sgblack@eecs.umich.edu limm t4, 1 1505326Sgblack@eecs.umich.edu rol t4, t4, reg 1515326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 1525240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1535326Sgblack@eecs.umich.edu xor t1, t1, t4 1545326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 1555240Sgblack@eecs.umich.edu}; 1565240Sgblack@eecs.umich.edu 1575240Sgblack@eecs.umich.edudef macroop BTC_P_R { 1585306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1595326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1605326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1615326Sgblack@eecs.umich.edu limm t4, 1 1625326Sgblack@eecs.umich.edu rol t4, t4, reg 1637690Sgblack@eecs.umich.edu ldst t1, seg, [dsz, t3, t7], disp 1645240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1655326Sgblack@eecs.umich.edu xor t1, t1, t4 1667690Sgblack@eecs.umich.edu st t1, seg, [dsz, t3, t7], disp 1675240Sgblack@eecs.umich.edu}; 1685240Sgblack@eecs.umich.edu 1696096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_M_R { 1706096Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1716096Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1726096Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 1736096Sgblack@eecs.umich.edu limm t4, 1 1746096Sgblack@eecs.umich.edu rol t4, t4, reg 1758610Snilay@cs.wisc.edu mfence 1766096Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 1776096Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1786096Sgblack@eecs.umich.edu xor t1, t1, t4 1796096Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 1808610Snilay@cs.wisc.edu mfence 1816096Sgblack@eecs.umich.edu}; 1826096Sgblack@eecs.umich.edu 1836096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_P_R { 1846096Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1856096Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1866096Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1876096Sgblack@eecs.umich.edu limm t4, 1 1886096Sgblack@eecs.umich.edu rol t4, t4, reg 1898610Snilay@cs.wisc.edu mfence 1907690Sgblack@eecs.umich.edu ldstl t1, seg, [dsz, t3, t7], disp 1916096Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1926096Sgblack@eecs.umich.edu xor t1, t1, t4 1937690Sgblack@eecs.umich.edu stul t1, seg, [dsz, t3, t7], disp 1948610Snilay@cs.wisc.edu mfence 1956096Sgblack@eecs.umich.edu}; 1966096Sgblack@eecs.umich.edu 1975240Sgblack@eecs.umich.edudef macroop BTR_R_I { 1985240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 1995240Sgblack@eecs.umich.edu limm t1, "(uint64_t(-(2ULL)))" 2005240Sgblack@eecs.umich.edu roli t1, t1, imm 2015240Sgblack@eecs.umich.edu and reg, reg, t1 2025240Sgblack@eecs.umich.edu}; 2035240Sgblack@eecs.umich.edu 2045240Sgblack@eecs.umich.edudef macroop BTR_M_I { 2055306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2065326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2075326Sgblack@eecs.umich.edu roli t4, t4, imm 2085326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2095240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2105326Sgblack@eecs.umich.edu and t1, t1, t4 2115326Sgblack@eecs.umich.edu st t1, seg, sib, disp 2125240Sgblack@eecs.umich.edu}; 2135240Sgblack@eecs.umich.edu 2145240Sgblack@eecs.umich.edudef macroop BTR_P_I { 2155306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2165306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2175326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2185326Sgblack@eecs.umich.edu roli t4, t4, imm 2195326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2205240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2215326Sgblack@eecs.umich.edu and t1, t1, t4 2225326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2235240Sgblack@eecs.umich.edu}; 2245240Sgblack@eecs.umich.edu 2256095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_M_I { 2266095Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2276095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2286095Sgblack@eecs.umich.edu roli t4, t4, imm 2298610Snilay@cs.wisc.edu mfence 2306095Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 2316095Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2326095Sgblack@eecs.umich.edu and t1, t1, t4 2336095Sgblack@eecs.umich.edu stul t1, seg, sib, disp 2348610Snilay@cs.wisc.edu mfence 2356095Sgblack@eecs.umich.edu}; 2366095Sgblack@eecs.umich.edu 2376095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_P_I { 2386095Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2396095Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2406095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2416095Sgblack@eecs.umich.edu roli t4, t4, imm 2428610Snilay@cs.wisc.edu mfence 2436095Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 2446095Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2456095Sgblack@eecs.umich.edu and t1, t1, t4 2466095Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 2478610Snilay@cs.wisc.edu mfence 2486095Sgblack@eecs.umich.edu}; 2496095Sgblack@eecs.umich.edu 2505240Sgblack@eecs.umich.edudef macroop BTR_R_R { 2515240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 2525240Sgblack@eecs.umich.edu limm t1, "(uint64_t(-(2ULL)))" 2535240Sgblack@eecs.umich.edu rol t1, t1, regm 2545240Sgblack@eecs.umich.edu and reg, reg, t1 2555240Sgblack@eecs.umich.edu}; 2565240Sgblack@eecs.umich.edu 2575240Sgblack@eecs.umich.edudef macroop BTR_M_R { 2585326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2595326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2605326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2615326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2625326Sgblack@eecs.umich.edu rol t4, t4, reg 2635326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 2645240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2655326Sgblack@eecs.umich.edu and t1, t1, t4 2665326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 2675240Sgblack@eecs.umich.edu}; 2685240Sgblack@eecs.umich.edu 2695240Sgblack@eecs.umich.edudef macroop BTR_P_R { 2705306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2715326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2725326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2735326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2745326Sgblack@eecs.umich.edu rol t4, t4, reg 2757690Sgblack@eecs.umich.edu ldst t1, seg, [dsz, t3, t7], disp 2765240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2775326Sgblack@eecs.umich.edu and t1, t1, t4 2787690Sgblack@eecs.umich.edu st t1, seg, [dsz, t3, t7], disp 2795240Sgblack@eecs.umich.edu}; 2805240Sgblack@eecs.umich.edu 2816095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_M_R { 2826095Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2836095Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2846095Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2856095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2866095Sgblack@eecs.umich.edu rol t4, t4, reg 2878610Snilay@cs.wisc.edu mfence 2886095Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 2896095Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2906095Sgblack@eecs.umich.edu and t1, t1, t4 2916095Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 2928610Snilay@cs.wisc.edu mfence 2936095Sgblack@eecs.umich.edu}; 2946095Sgblack@eecs.umich.edu 2956095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_P_R { 2966095Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2976095Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2986095Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2996095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 3006095Sgblack@eecs.umich.edu rol t4, t4, reg 3018610Snilay@cs.wisc.edu mfence 3027690Sgblack@eecs.umich.edu ldstl t1, seg, [dsz, t3, t7], disp 3036095Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3046095Sgblack@eecs.umich.edu and t1, t1, t4 3057690Sgblack@eecs.umich.edu stul t1, seg, [dsz, t3, t7], disp 3068610Snilay@cs.wisc.edu mfence 3076095Sgblack@eecs.umich.edu}; 3086095Sgblack@eecs.umich.edu 3095240Sgblack@eecs.umich.edudef macroop BTS_R_I { 3105240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 3115240Sgblack@eecs.umich.edu limm t1, 1 3125240Sgblack@eecs.umich.edu roli t1, t1, imm 3135240Sgblack@eecs.umich.edu or reg, reg, t1 3145240Sgblack@eecs.umich.edu}; 3155240Sgblack@eecs.umich.edu 3165240Sgblack@eecs.umich.edudef macroop BTS_M_I { 3175306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3185326Sgblack@eecs.umich.edu limm t4, 1 3195326Sgblack@eecs.umich.edu roli t4, t4, imm 3205326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 3215240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3225326Sgblack@eecs.umich.edu or t1, t1, t4 3235326Sgblack@eecs.umich.edu st t1, seg, sib, disp 3245240Sgblack@eecs.umich.edu}; 3255240Sgblack@eecs.umich.edu 3265240Sgblack@eecs.umich.edudef macroop BTS_P_I { 3275306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3285306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3295326Sgblack@eecs.umich.edu limm t4, 1 3305326Sgblack@eecs.umich.edu roli t4, t4, imm 3315326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 3325240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3335326Sgblack@eecs.umich.edu or t1, t1, t4 3345326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 3355240Sgblack@eecs.umich.edu}; 3365240Sgblack@eecs.umich.edu 3376093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_M_I { 3386093Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3396093Sgblack@eecs.umich.edu limm t4, 1 3406093Sgblack@eecs.umich.edu roli t4, t4, imm 3418610Snilay@cs.wisc.edu mfence 3426093Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 3436093Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3446093Sgblack@eecs.umich.edu or t1, t1, t4 3456093Sgblack@eecs.umich.edu stul t1, seg, sib, disp 3468610Snilay@cs.wisc.edu mfence 3476093Sgblack@eecs.umich.edu}; 3486093Sgblack@eecs.umich.edu 3496093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_P_I { 3506093Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3516093Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3526093Sgblack@eecs.umich.edu limm t4, 1 3536093Sgblack@eecs.umich.edu roli t4, t4, imm 3548610Snilay@cs.wisc.edu mfence 3556093Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 3566093Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3576093Sgblack@eecs.umich.edu or t1, t1, t4 3586093Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 3598610Snilay@cs.wisc.edu mfence 3606093Sgblack@eecs.umich.edu}; 3616093Sgblack@eecs.umich.edu 3625240Sgblack@eecs.umich.edudef macroop BTS_R_R { 3635240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 3645240Sgblack@eecs.umich.edu limm t1, 1 3655240Sgblack@eecs.umich.edu rol t1, t1, regm 3665240Sgblack@eecs.umich.edu or reg, reg, t1 3675240Sgblack@eecs.umich.edu}; 3685240Sgblack@eecs.umich.edu 3695240Sgblack@eecs.umich.edudef macroop BTS_M_R { 3705326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3715326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3725326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3735326Sgblack@eecs.umich.edu limm t4, 1 3745326Sgblack@eecs.umich.edu rol t4, t4, reg 3755326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 3765240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3775326Sgblack@eecs.umich.edu or t1, t1, t4 3785326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 3795240Sgblack@eecs.umich.edu}; 3805240Sgblack@eecs.umich.edu 3815240Sgblack@eecs.umich.edudef macroop BTS_P_R { 3825306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3835326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3845326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3855326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3865326Sgblack@eecs.umich.edu limm t4, 1 3875326Sgblack@eecs.umich.edu rol t4, t4, reg 3885326Sgblack@eecs.umich.edu ldst t1, seg, [1, t3, t7], disp 3895240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3905326Sgblack@eecs.umich.edu or t1, t1, t4 3915326Sgblack@eecs.umich.edu st t1, seg, [1, t3, t7], disp 3925240Sgblack@eecs.umich.edu}; 3936093Sgblack@eecs.umich.edu 3946093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_M_R { 3956093Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3966093Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3976093Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3986093Sgblack@eecs.umich.edu limm t4, 1 3996093Sgblack@eecs.umich.edu rol t4, t4, reg 4008610Snilay@cs.wisc.edu mfence 4016093Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 4026093Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 4036093Sgblack@eecs.umich.edu or t1, t1, t4 4046093Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 4058610Snilay@cs.wisc.edu mfence 4066093Sgblack@eecs.umich.edu}; 4076093Sgblack@eecs.umich.edu 4086093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_P_R { 4096093Sgblack@eecs.umich.edu rdip t7, dataSize=asz 4106093Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 4116093Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 4126093Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 4136093Sgblack@eecs.umich.edu limm t4, 1 4146093Sgblack@eecs.umich.edu rol t4, t4, reg 4158610Snilay@cs.wisc.edu mfence 4166093Sgblack@eecs.umich.edu ldstl t1, seg, [1, t3, t7], disp 4176093Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 4186093Sgblack@eecs.umich.edu or t1, t1, t4 4196093Sgblack@eecs.umich.edu stul t1, seg, [1, t3, t7], disp 4208610Snilay@cs.wisc.edu mfence 4216093Sgblack@eecs.umich.edu}; 4225240Sgblack@eecs.umich.edu''' 423