bit_test.py revision 6096
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 1576096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_M_I { 1586096Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1596096Sgblack@eecs.umich.edu limm t4, 1 1606096Sgblack@eecs.umich.edu roli t4, t4, imm 1616096Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 1626096Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1636096Sgblack@eecs.umich.edu xor t1, t1, t4 1646096Sgblack@eecs.umich.edu stul t1, seg, sib, disp 1656096Sgblack@eecs.umich.edu}; 1666096Sgblack@eecs.umich.edu 1676096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_P_I { 1686096Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1696096Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 1706096Sgblack@eecs.umich.edu limm t4, 1 1716096Sgblack@eecs.umich.edu roli t4, t4, imm 1726096Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 1736096Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 1746096Sgblack@eecs.umich.edu xor t1, t1, t4 1756096Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 1766096Sgblack@eecs.umich.edu}; 1776096Sgblack@eecs.umich.edu 1785240Sgblack@eecs.umich.edudef macroop BTC_R_R { 1795240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 1805240Sgblack@eecs.umich.edu limm t1, 1 1815240Sgblack@eecs.umich.edu rol t1, t1, regm 1825240Sgblack@eecs.umich.edu xor reg, reg, t1 1835240Sgblack@eecs.umich.edu}; 1845240Sgblack@eecs.umich.edu 1855240Sgblack@eecs.umich.edudef macroop BTC_M_R { 1865326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 1875326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 1885326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 1895326Sgblack@eecs.umich.edu limm t4, 1 1905326Sgblack@eecs.umich.edu rol t4, t4, reg 1915326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 1925240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 1935326Sgblack@eecs.umich.edu xor t1, t1, t4 1945326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 1955240Sgblack@eecs.umich.edu}; 1965240Sgblack@eecs.umich.edu 1975240Sgblack@eecs.umich.edudef macroop BTC_P_R { 1985306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 1995326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2005326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2015326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2025326Sgblack@eecs.umich.edu limm t4, 1 2035326Sgblack@eecs.umich.edu rol t4, t4, reg 2045326Sgblack@eecs.umich.edu ldst t1, seg, [1, t2, t7], disp 2055240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2065326Sgblack@eecs.umich.edu xor t1, t1, t4 2075297Sgblack@eecs.umich.edu st t1, seg, [1, t2, t7], disp 2085240Sgblack@eecs.umich.edu}; 2095240Sgblack@eecs.umich.edu 2106096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_M_R { 2116096Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2126096Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2136096Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2146096Sgblack@eecs.umich.edu limm t4, 1 2156096Sgblack@eecs.umich.edu rol t4, t4, reg 2166096Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 2176096Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2186096Sgblack@eecs.umich.edu xor t1, t1, t4 2196096Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 2206096Sgblack@eecs.umich.edu}; 2216096Sgblack@eecs.umich.edu 2226096Sgblack@eecs.umich.edudef macroop BTC_LOCKED_P_R { 2236096Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2246096Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2256096Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2266096Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2276096Sgblack@eecs.umich.edu limm t4, 1 2286096Sgblack@eecs.umich.edu rol t4, t4, reg 2296096Sgblack@eecs.umich.edu ldstl t1, seg, [1, t2, t7], disp 2306096Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2316096Sgblack@eecs.umich.edu xor t1, t1, t4 2326096Sgblack@eecs.umich.edu stul t1, seg, [1, t2, t7], disp 2336096Sgblack@eecs.umich.edu}; 2346096Sgblack@eecs.umich.edu 2355240Sgblack@eecs.umich.edudef macroop BTR_R_I { 2365240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 2375240Sgblack@eecs.umich.edu limm t1, "(uint64_t(-(2ULL)))" 2385240Sgblack@eecs.umich.edu roli t1, t1, imm 2395240Sgblack@eecs.umich.edu and reg, reg, t1 2405240Sgblack@eecs.umich.edu}; 2415240Sgblack@eecs.umich.edu 2425240Sgblack@eecs.umich.edudef macroop BTR_M_I { 2435306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2445326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2455326Sgblack@eecs.umich.edu roli t4, t4, imm 2465326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 2475240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2485326Sgblack@eecs.umich.edu and t1, t1, t4 2495326Sgblack@eecs.umich.edu st t1, seg, sib, disp 2505240Sgblack@eecs.umich.edu}; 2515240Sgblack@eecs.umich.edu 2525240Sgblack@eecs.umich.edudef macroop BTR_P_I { 2535306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2545306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2555326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2565326Sgblack@eecs.umich.edu roli t4, t4, imm 2575326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 2585240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2595326Sgblack@eecs.umich.edu and t1, t1, t4 2605326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 2615240Sgblack@eecs.umich.edu}; 2625240Sgblack@eecs.umich.edu 2636095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_M_I { 2646095Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2656095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2666095Sgblack@eecs.umich.edu roli t4, t4, imm 2676095Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 2686095Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2696095Sgblack@eecs.umich.edu and t1, t1, t4 2706095Sgblack@eecs.umich.edu stul t1, seg, sib, disp 2716095Sgblack@eecs.umich.edu}; 2726095Sgblack@eecs.umich.edu 2736095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_P_I { 2746095Sgblack@eecs.umich.edu rdip t7, dataSize=asz 2756095Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 2766095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2776095Sgblack@eecs.umich.edu roli t4, t4, imm 2786095Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 2796095Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 2806095Sgblack@eecs.umich.edu and t1, t1, t4 2816095Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 2826095Sgblack@eecs.umich.edu}; 2836095Sgblack@eecs.umich.edu 2845240Sgblack@eecs.umich.edudef macroop BTR_R_R { 2855240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 2865240Sgblack@eecs.umich.edu limm t1, "(uint64_t(-(2ULL)))" 2875240Sgblack@eecs.umich.edu rol t1, t1, regm 2885240Sgblack@eecs.umich.edu and reg, reg, t1 2895240Sgblack@eecs.umich.edu}; 2905240Sgblack@eecs.umich.edu 2915240Sgblack@eecs.umich.edudef macroop BTR_M_R { 2925326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 2935326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 2945326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 2955326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 2965326Sgblack@eecs.umich.edu rol t4, t4, reg 2975326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 2985240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 2995326Sgblack@eecs.umich.edu and t1, t1, t4 3005326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 3015240Sgblack@eecs.umich.edu}; 3025240Sgblack@eecs.umich.edu 3035240Sgblack@eecs.umich.edudef macroop BTR_P_R { 3045306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3055326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3065326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3075326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3085326Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 3095326Sgblack@eecs.umich.edu rol t4, t4, reg 3105326Sgblack@eecs.umich.edu ldst t1, seg, [1, t3, t7], disp 3115240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3125326Sgblack@eecs.umich.edu and t1, t1, t4 3135326Sgblack@eecs.umich.edu st t1, seg, [1, t3, t7], disp 3145240Sgblack@eecs.umich.edu}; 3155240Sgblack@eecs.umich.edu 3166095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_M_R { 3176095Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3186095Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3196095Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3206095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 3216095Sgblack@eecs.umich.edu rol t4, t4, reg 3226095Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 3236095Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3246095Sgblack@eecs.umich.edu and t1, t1, t4 3256095Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 3266095Sgblack@eecs.umich.edu}; 3276095Sgblack@eecs.umich.edu 3286095Sgblack@eecs.umich.edudef macroop BTR_LOCKED_P_R { 3296095Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3306095Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3316095Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 3326095Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 3336095Sgblack@eecs.umich.edu limm t4, "(uint64_t(-(2ULL)))" 3346095Sgblack@eecs.umich.edu rol t4, t4, reg 3356095Sgblack@eecs.umich.edu ldstl t1, seg, [1, t3, t7], disp 3366095Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 3376095Sgblack@eecs.umich.edu and t1, t1, t4 3386095Sgblack@eecs.umich.edu stul t1, seg, [1, t3, t7], disp 3396095Sgblack@eecs.umich.edu}; 3406095Sgblack@eecs.umich.edu 3415240Sgblack@eecs.umich.edudef macroop BTS_R_I { 3425240Sgblack@eecs.umich.edu sexti t0, reg, imm, flags=(CF,) 3435240Sgblack@eecs.umich.edu limm t1, 1 3445240Sgblack@eecs.umich.edu roli t1, t1, imm 3455240Sgblack@eecs.umich.edu or reg, reg, t1 3465240Sgblack@eecs.umich.edu}; 3475240Sgblack@eecs.umich.edu 3485240Sgblack@eecs.umich.edudef macroop BTS_M_I { 3495306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3505326Sgblack@eecs.umich.edu limm t4, 1 3515326Sgblack@eecs.umich.edu roli t4, t4, imm 3525326Sgblack@eecs.umich.edu ldst t1, seg, sib, disp 3535240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3545326Sgblack@eecs.umich.edu or t1, t1, t4 3555326Sgblack@eecs.umich.edu st t1, seg, sib, disp 3565240Sgblack@eecs.umich.edu}; 3575240Sgblack@eecs.umich.edu 3585240Sgblack@eecs.umich.edudef macroop BTS_P_I { 3595306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3605306Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3615326Sgblack@eecs.umich.edu limm t4, 1 3625326Sgblack@eecs.umich.edu roli t4, t4, imm 3635326Sgblack@eecs.umich.edu ldst t1, seg, riprel, disp 3645240Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3655326Sgblack@eecs.umich.edu or t1, t1, t4 3665326Sgblack@eecs.umich.edu st t1, seg, riprel, disp 3675240Sgblack@eecs.umich.edu}; 3685240Sgblack@eecs.umich.edu 3696093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_M_I { 3706093Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3716093Sgblack@eecs.umich.edu limm t4, 1 3726093Sgblack@eecs.umich.edu roli t4, t4, imm 3736093Sgblack@eecs.umich.edu ldstl t1, seg, sib, disp 3746093Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3756093Sgblack@eecs.umich.edu or t1, t1, t4 3766093Sgblack@eecs.umich.edu stul t1, seg, sib, disp 3776093Sgblack@eecs.umich.edu}; 3786093Sgblack@eecs.umich.edu 3796093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_P_I { 3806093Sgblack@eecs.umich.edu rdip t7, dataSize=asz 3816093Sgblack@eecs.umich.edu limm t1, imm, dataSize=asz 3826093Sgblack@eecs.umich.edu limm t4, 1 3836093Sgblack@eecs.umich.edu roli t4, t4, imm 3846093Sgblack@eecs.umich.edu ldstl t1, seg, riprel, disp 3856093Sgblack@eecs.umich.edu sexti t0, t1, imm, flags=(CF,) 3866093Sgblack@eecs.umich.edu or t1, t1, t4 3876093Sgblack@eecs.umich.edu stul t1, seg, riprel, disp 3886093Sgblack@eecs.umich.edu}; 3896093Sgblack@eecs.umich.edu 3905240Sgblack@eecs.umich.edudef macroop BTS_R_R { 3915240Sgblack@eecs.umich.edu sext t0, reg, regm, flags=(CF,) 3925240Sgblack@eecs.umich.edu limm t1, 1 3935240Sgblack@eecs.umich.edu rol t1, t1, regm 3945240Sgblack@eecs.umich.edu or reg, reg, t1 3955240Sgblack@eecs.umich.edu}; 3965240Sgblack@eecs.umich.edu 3975240Sgblack@eecs.umich.edudef macroop BTS_M_R { 3985326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 3995326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 4005326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 4015326Sgblack@eecs.umich.edu limm t4, 1 4025326Sgblack@eecs.umich.edu rol t4, t4, reg 4035326Sgblack@eecs.umich.edu ldst t1, seg, [scale, index, t3], disp 4045240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 4055326Sgblack@eecs.umich.edu or t1, t1, t4 4065326Sgblack@eecs.umich.edu st t1, seg, [scale, index, t3], disp 4075240Sgblack@eecs.umich.edu}; 4085240Sgblack@eecs.umich.edu 4095240Sgblack@eecs.umich.edudef macroop BTS_P_R { 4105306Sgblack@eecs.umich.edu rdip t7, dataSize=asz 4115326Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 4125326Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 4135326Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 4145326Sgblack@eecs.umich.edu limm t4, 1 4155326Sgblack@eecs.umich.edu rol t4, t4, reg 4165326Sgblack@eecs.umich.edu ldst t1, seg, [1, t3, t7], disp 4175240Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 4185326Sgblack@eecs.umich.edu or t1, t1, t4 4195326Sgblack@eecs.umich.edu st t1, seg, [1, t3, t7], disp 4205240Sgblack@eecs.umich.edu}; 4216093Sgblack@eecs.umich.edu 4226093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_M_R { 4236093Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 4246093Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 4256093Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 4266093Sgblack@eecs.umich.edu limm t4, 1 4276093Sgblack@eecs.umich.edu rol t4, t4, reg 4286093Sgblack@eecs.umich.edu ldstl t1, seg, [scale, index, t3], disp 4296093Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 4306093Sgblack@eecs.umich.edu or t1, t1, t4 4316093Sgblack@eecs.umich.edu stul t1, seg, [scale, index, t3], disp 4326093Sgblack@eecs.umich.edu}; 4336093Sgblack@eecs.umich.edu 4346093Sgblack@eecs.umich.edudef macroop BTS_LOCKED_P_R { 4356093Sgblack@eecs.umich.edu rdip t7, dataSize=asz 4366093Sgblack@eecs.umich.edu srai t2, reg, 3, dataSize=asz 4376093Sgblack@eecs.umich.edu srai t3, t2, ldsz, dataSize=asz 4386093Sgblack@eecs.umich.edu lea t3, flatseg, [dsz, t3, base], dataSize=asz 4396093Sgblack@eecs.umich.edu limm t4, 1 4406093Sgblack@eecs.umich.edu rol t4, t4, reg 4416093Sgblack@eecs.umich.edu ldstl t1, seg, [1, t3, t7], disp 4426093Sgblack@eecs.umich.edu sext t0, t1, reg, flags=(CF,) 4436093Sgblack@eecs.umich.edu or t1, t1, t4 4446093Sgblack@eecs.umich.edu stul t1, seg, [1, t3, t7], disp 4456093Sgblack@eecs.umich.edu}; 4465240Sgblack@eecs.umich.edu''' 447