xchg.py revision 7501
14104Ssaidi@eecs.umich.edu# Copyright (c) 2007 The Hewlett-Packard Development Company 24104Ssaidi@eecs.umich.edu# All rights reserved. 34104Ssaidi@eecs.umich.edu# 44104Ssaidi@eecs.umich.edu# The license below extends only to copyright in the software and shall 54104Ssaidi@eecs.umich.edu# not be construed as granting a license to any other intellectual 64104Ssaidi@eecs.umich.edu# property including but not limited to intellectual property relating 74104Ssaidi@eecs.umich.edu# to a hardware implementation of the functionality of the software 84104Ssaidi@eecs.umich.edu# licensed hereunder. You may use the software subject to the license 94104Ssaidi@eecs.umich.edu# terms below provided that you ensure that this notice is replicated 104104Ssaidi@eecs.umich.edu# unmodified and in its entirety in all distributions of the software, 114104Ssaidi@eecs.umich.edu# modified or unmodified, in source code or in binary form. 124104Ssaidi@eecs.umich.edu# 134104Ssaidi@eecs.umich.edu# Redistribution and use in source and binary forms, with or without 144104Ssaidi@eecs.umich.edu# modification, are permitted provided that the following conditions are 154104Ssaidi@eecs.umich.edu# met: redistributions of source code must retain the above copyright 164104Ssaidi@eecs.umich.edu# notice, this list of conditions and the following disclaimer; 174104Ssaidi@eecs.umich.edu# redistributions in binary form must reproduce the above copyright 184104Ssaidi@eecs.umich.edu# notice, this list of conditions and the following disclaimer in the 194104Ssaidi@eecs.umich.edu# documentation and/or other materials provided with the distribution; 204104Ssaidi@eecs.umich.edu# neither the name of the copyright holders nor the names of its 214104Ssaidi@eecs.umich.edu# contributors may be used to endorse or promote products derived from 224104Ssaidi@eecs.umich.edu# this software without specific prior written permission. 234104Ssaidi@eecs.umich.edu# 244104Ssaidi@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 254104Ssaidi@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 264104Ssaidi@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 274104Ssaidi@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 284104Ssaidi@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 294104Ssaidi@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 304104Ssaidi@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 314104Ssaidi@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 324104Ssaidi@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 334104Ssaidi@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 344104Ssaidi@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 354104Ssaidi@eecs.umich.edu# 364104Ssaidi@eecs.umich.edu# Authors: Gabe Black 374104Ssaidi@eecs.umich.edu 384104Ssaidi@eecs.umich.edumicrocode = ''' 394104Ssaidi@eecs.umich.edu 404104Ssaidi@eecs.umich.edu# All the memory versions need to use LOCK, regardless of if it was set 414194Ssaidi@eecs.umich.edu 424104Ssaidi@eecs.umich.edudef macroop XCHG_R_R 434104Ssaidi@eecs.umich.edu{ 444104Ssaidi@eecs.umich.edu # Use the xor trick instead of moves to reduce register pressure. 454104Ssaidi@eecs.umich.edu # This probably doesn't make much of a difference, but it's easy. 464104Ssaidi@eecs.umich.edu xor reg, reg, regm 474104Ssaidi@eecs.umich.edu xor regm, regm, reg 484104Ssaidi@eecs.umich.edu xor reg, reg, regm 494194Ssaidi@eecs.umich.edu}; 504104Ssaidi@eecs.umich.edu 514104Ssaidi@eecs.umich.edudef macroop XCHG_R_M 524104Ssaidi@eecs.umich.edu{ 534104Ssaidi@eecs.umich.edu ldstl t1, seg, sib, disp 544104Ssaidi@eecs.umich.edu stul reg, seg, sib, disp 554104Ssaidi@eecs.umich.edu mov reg, reg, t1 564104Ssaidi@eecs.umich.edu}; 574104Ssaidi@eecs.umich.edu 584104Ssaidi@eecs.umich.edudef macroop XCHG_R_P 594104Ssaidi@eecs.umich.edu{ 604104Ssaidi@eecs.umich.edu rdip t7 614104Ssaidi@eecs.umich.edu ldstl t1, seg, riprel, disp 624104Ssaidi@eecs.umich.edu stul reg, seg, riprel, disp 634104Ssaidi@eecs.umich.edu mov reg, reg, t1 644104Ssaidi@eecs.umich.edu}; 654104Ssaidi@eecs.umich.edu 664104Ssaidi@eecs.umich.edudef macroop XCHG_M_R 674104Ssaidi@eecs.umich.edu{ 684104Ssaidi@eecs.umich.edu ldstl t1, seg, sib, disp 694104Ssaidi@eecs.umich.edu stul reg, seg, sib, disp 704104Ssaidi@eecs.umich.edu mov reg, reg, t1 714104Ssaidi@eecs.umich.edu}; 724104Ssaidi@eecs.umich.edu 734104Ssaidi@eecs.umich.edudef macroop XCHG_P_R 744104Ssaidi@eecs.umich.edu{ 754104Ssaidi@eecs.umich.edu rdip t7 764104Ssaidi@eecs.umich.edu ldstl t1, seg, riprel, disp 774104Ssaidi@eecs.umich.edu stul reg, seg, riprel, disp 784104Ssaidi@eecs.umich.edu mov reg, reg, t1 794104Ssaidi@eecs.umich.edu}; 804104Ssaidi@eecs.umich.edu 814104Ssaidi@eecs.umich.edudef macroop XCHG_LOCKED_M_R 824104Ssaidi@eecs.umich.edu{ 834870Sstever@eecs.umich.edu ldstl t1, seg, sib, disp 844104Ssaidi@eecs.umich.edu stul reg, seg, sib, disp 854104Ssaidi@eecs.umich.edu mov reg, reg, t1 864104Ssaidi@eecs.umich.edu}; 874104Ssaidi@eecs.umich.edu 884104Ssaidi@eecs.umich.edudef macroop XCHG_LOCKED_P_R 894104Ssaidi@eecs.umich.edu{ 904104Ssaidi@eecs.umich.edu rdip t7 914104Ssaidi@eecs.umich.edu ldstl t1, seg, riprel, disp 924104Ssaidi@eecs.umich.edu stul reg, seg, riprel, disp 934104Ssaidi@eecs.umich.edu mov reg, reg, t1 944104Ssaidi@eecs.umich.edu}; 954104Ssaidi@eecs.umich.edu''' 964104Ssaidi@eecs.umich.edu