subtraction.py revision 6580:a1c40860fe09
110298Salexandru.dutu@amd.com# Copyright (c) 2007 The Hewlett-Packard Development Company 210298Salexandru.dutu@amd.com# All rights reserved. 310298Salexandru.dutu@amd.com# 410298Salexandru.dutu@amd.com# Redistribution and use of this software in source and binary forms, 510298Salexandru.dutu@amd.com# with or without modification, are permitted provided that the 610298Salexandru.dutu@amd.com# following conditions are met: 710298Salexandru.dutu@amd.com# 810298Salexandru.dutu@amd.com# The software must be used only for Non-Commercial Use which means any 910298Salexandru.dutu@amd.com# use which is NOT directed to receiving any direct monetary 1010298Salexandru.dutu@amd.com# compensation for, or commercial advantage from such use. Illustrative 1110298Salexandru.dutu@amd.com# examples of non-commercial use are academic research, personal study, 1210298Salexandru.dutu@amd.com# teaching, education and corporate research & development. 1310298Salexandru.dutu@amd.com# Illustrative examples of commercial use are distributing products for 1410298Salexandru.dutu@amd.com# commercial advantage and providing services using the software for 1510298Salexandru.dutu@amd.com# commercial advantage. 1610298Salexandru.dutu@amd.com# 1710298Salexandru.dutu@amd.com# If you wish to use this software or functionality therein that may be 1810298Salexandru.dutu@amd.com# covered by patents for commercial use, please contact: 1910298Salexandru.dutu@amd.com# Director of Intellectual Property Licensing 2010298Salexandru.dutu@amd.com# Office of Strategy and Technology 2110298Salexandru.dutu@amd.com# Hewlett-Packard Company 2210298Salexandru.dutu@amd.com# 1501 Page Mill Road 2310298Salexandru.dutu@amd.com# Palo Alto, California 94304 2410298Salexandru.dutu@amd.com# 2510298Salexandru.dutu@amd.com# Redistributions of source code must retain the above copyright notice, 2610298Salexandru.dutu@amd.com# this list of conditions and the following disclaimer. Redistributions 2710298Salexandru.dutu@amd.com# in binary form must reproduce the above copyright notice, this list of 2810298Salexandru.dutu@amd.com# conditions and the following disclaimer in the documentation and/or 2910298Salexandru.dutu@amd.com# other materials provided with the distribution. Neither the name of 3010298Salexandru.dutu@amd.com# the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its 3110298Salexandru.dutu@amd.com# contributors may be used to endorse or promote products derived from 3210298Salexandru.dutu@amd.com# this software without specific prior written permission. No right of 3310298Salexandru.dutu@amd.com# sublicense is granted herewith. Derivatives of the software and 3410298Salexandru.dutu@amd.com# output created using the software may be prepared, but only for 3510298Salexandru.dutu@amd.com# Non-Commercial Uses. Derivatives of the software may be shared with 3610298Salexandru.dutu@amd.com# others provided: (i) the others agree to abide by the list of 3710298Salexandru.dutu@amd.com# conditions herein which includes the Non-Commercial Use restrictions; 3810298Salexandru.dutu@amd.com# and (ii) such Derivatives of the software include the above copyright 3910298Salexandru.dutu@amd.com# notice to acknowledge the contribution from this software where 4010298Salexandru.dutu@amd.com# applicable, this list of conditions and the disclaimer below. 4110298Salexandru.dutu@amd.com# 4210298Salexandru.dutu@amd.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 4310298Salexandru.dutu@amd.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 4411800Sbrandon.potter@amd.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 4511800Sbrandon.potter@amd.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 4610298Salexandru.dutu@amd.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 4710298Salexandru.dutu@amd.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 4810298Salexandru.dutu@amd.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 4910298Salexandru.dutu@amd.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 5010298Salexandru.dutu@amd.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 5110298Salexandru.dutu@amd.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 5210298Salexandru.dutu@amd.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 5310298Salexandru.dutu@amd.com# 5410298Salexandru.dutu@amd.com# Authors: Gabe Black 5510298Salexandru.dutu@amd.com 5610298Salexandru.dutu@amd.commicrocode = ''' 5710298Salexandru.dutu@amd.comdef macroop PSUBB_XMM_XMM { 5810298Salexandru.dutu@amd.com msubi xmml, xmml, xmmlm, size=1, ext=0 5910298Salexandru.dutu@amd.com msubi xmmh, xmmh, xmmhm, size=1, ext=0 6010298Salexandru.dutu@amd.com}; 6110298Salexandru.dutu@amd.com 6210298Salexandru.dutu@amd.comdef macroop PSUBB_XMM_M { 6310298Salexandru.dutu@amd.com ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 6410298Salexandru.dutu@amd.com ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 6510298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=1, ext=0 6610298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=1, ext=0 6710298Salexandru.dutu@amd.com}; 6810298Salexandru.dutu@amd.com 6910298Salexandru.dutu@amd.comdef macroop PSUBB_XMM_P { 7010298Salexandru.dutu@amd.com rdip t7 7110298Salexandru.dutu@amd.com ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 7210298Salexandru.dutu@amd.com ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 7310298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=1, ext=0 7410298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=1, ext=0 7510298Salexandru.dutu@amd.com}; 7610298Salexandru.dutu@amd.com 7710298Salexandru.dutu@amd.comdef macroop PSUBW_XMM_XMM { 7810298Salexandru.dutu@amd.com msubi xmml, xmml, xmmlm, size=2, ext=0 7910298Salexandru.dutu@amd.com msubi xmmh, xmmh, xmmhm, size=2, ext=0 8010298Salexandru.dutu@amd.com}; 8110298Salexandru.dutu@amd.com 8210298Salexandru.dutu@amd.comdef macroop PSUBW_XMM_M { 8310298Salexandru.dutu@amd.com ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 8410298Salexandru.dutu@amd.com ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 8510298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=2, ext=0 8610298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=2, ext=0 8710298Salexandru.dutu@amd.com}; 8810298Salexandru.dutu@amd.com 8910298Salexandru.dutu@amd.comdef macroop PSUBW_XMM_P { 9010298Salexandru.dutu@amd.com rdip t7 9110298Salexandru.dutu@amd.com ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 9210298Salexandru.dutu@amd.com ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 9310298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=2, ext=0 9410298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=2, ext=0 9510298Salexandru.dutu@amd.com}; 9610298Salexandru.dutu@amd.com 9710298Salexandru.dutu@amd.comdef macroop PSUBD_XMM_XMM { 9810298Salexandru.dutu@amd.com msubi xmml, xmml, xmmlm, size=4, ext=0 9910298Salexandru.dutu@amd.com msubi xmmh, xmmh, xmmhm, size=4, ext=0 10010298Salexandru.dutu@amd.com}; 10110298Salexandru.dutu@amd.com 10210298Salexandru.dutu@amd.comdef macroop PSUBD_XMM_M { 10312446Sgabeblack@google.com ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 10410298Salexandru.dutu@amd.com ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 10510298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=4, ext=0 10610298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=4, ext=0 10710298Salexandru.dutu@amd.com}; 10810298Salexandru.dutu@amd.com 10910298Salexandru.dutu@amd.comdef macroop PSUBD_XMM_P { 11010298Salexandru.dutu@amd.com rdip t7 11110298Salexandru.dutu@amd.com ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 11210298Salexandru.dutu@amd.com ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 11310298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=4, ext=0 11410298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=4, ext=0 11510298Salexandru.dutu@amd.com}; 11610298Salexandru.dutu@amd.com 11710298Salexandru.dutu@amd.comdef macroop PSUBQ_XMM_XMM { 11810298Salexandru.dutu@amd.com msubi xmml, xmml, xmmlm, size=8, ext=0 11910298Salexandru.dutu@amd.com msubi xmmh, xmmh, xmmhm, size=8, ext=0 12010298Salexandru.dutu@amd.com}; 12110298Salexandru.dutu@amd.com 12210298Salexandru.dutu@amd.comdef macroop PSUBQ_XMM_M { 12310298Salexandru.dutu@amd.com ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 12410298Salexandru.dutu@amd.com ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 12510298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=8, ext=0 12610298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=8, ext=0 12710298Salexandru.dutu@amd.com}; 12810298Salexandru.dutu@amd.com 12910298Salexandru.dutu@amd.comdef macroop PSUBQ_XMM_P { 13010298Salexandru.dutu@amd.com rdip t7 13110298Salexandru.dutu@amd.com ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 13210298Salexandru.dutu@amd.com ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 13310298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=8, ext=0 13410298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=8, ext=0 13510298Salexandru.dutu@amd.com}; 13610298Salexandru.dutu@amd.com 13710298Salexandru.dutu@amd.comdef macroop PSUBSB_XMM_XMM { 13812446Sgabeblack@google.com msubi xmml, xmml, xmmlm, size=1, ext=4 13910298Salexandru.dutu@amd.com msubi xmmh, xmmh, xmmhm, size=1, ext=4 14010298Salexandru.dutu@amd.com}; 14110556Salexandru.dutu@amd.com 14212432Sgabeblack@google.comdef macroop PSUBSB_XMM_M { 14310298Salexandru.dutu@amd.com ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 14410298Salexandru.dutu@amd.com ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 14511175Sandreas.hansson@arm.com msubi xmml, xmml, ufp1, size=1, ext=4 14610298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=1, ext=4 14710558Salexandru.dutu@amd.com}; 14811175Sandreas.hansson@arm.com 14911175Sandreas.hansson@arm.comdef macroop PSUBSB_XMM_P { 15011175Sandreas.hansson@arm.com rdip t7 15111168Sandreas.hansson@arm.com ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 15211168Sandreas.hansson@arm.com ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 15310298Salexandru.dutu@amd.com msubi xmml, xmml, ufp1, size=1, ext=4 15410298Salexandru.dutu@amd.com msubi xmmh, xmmh, ufp2, size=1, ext=4 155}; 156 157def macroop PSUBSW_XMM_XMM { 158 msubi xmml, xmml, xmmlm, size=2, ext=4 159 msubi xmmh, xmmh, xmmhm, size=2, ext=4 160}; 161 162def macroop PSUBSW_XMM_M { 163 ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 164 ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 165 msubi xmml, xmml, ufp1, size=2, ext=4 166 msubi xmmh, xmmh, ufp2, size=2, ext=4 167}; 168 169def macroop PSUBSW_XMM_P { 170 rdip t7 171 ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 172 ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 173 msubi xmml, xmml, ufp1, size=2, ext=4 174 msubi xmmh, xmmh, ufp2, size=2, ext=4 175}; 176 177def macroop PSUBUSB_XMM_XMM { 178 msubi xmml, xmml, xmmlm, size=1, ext=2 179 msubi xmmh, xmmh, xmmhm, size=1, ext=2 180}; 181 182def macroop PSUBUSB_XMM_M { 183 ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 184 ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 185 msubi xmml, xmml, ufp1, size=1, ext=2 186 msubi xmmh, xmmh, ufp2, size=1, ext=2 187}; 188 189def macroop PSUBUSB_XMM_P { 190 rdip t7 191 ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 192 ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 193 msubi xmml, xmml, ufp1, size=1, ext=2 194 msubi xmmh, xmmh, ufp2, size=1, ext=2 195}; 196 197def macroop PSUBUSW_XMM_XMM { 198 msubi xmml, xmml, xmmlm, size=2, ext=2 199 msubi xmmh, xmmh, xmmhm, size=2, ext=2 200}; 201 202def macroop PSUBUSW_XMM_M { 203 ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8 204 ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8 205 msubi xmml, xmml, ufp1, size=2, ext=2 206 msubi xmmh, xmmh, ufp2, size=2, ext=2 207}; 208 209def macroop PSUBUSW_XMM_P { 210 rdip t7 211 ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8 212 ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8 213 msubi xmml, xmml, ufp1, size=2, ext=2 214 msubi xmmh, xmmh, ufp2, size=2, ext=2 215}; 216''' 217