15081Sgblack@eecs.umich.edu# Copyright (c) 2007 The Hewlett-Packard Development Company
25081Sgblack@eecs.umich.edu# All rights reserved.
35081Sgblack@eecs.umich.edu#
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.
125081Sgblack@eecs.umich.edu#
137087Snate@binkert.org# Redistribution and use in source and binary forms, with or without
147087Snate@binkert.org# modification, are permitted provided that the following conditions are
157087Snate@binkert.org# met: redistributions of source code must retain the above copyright
167087Snate@binkert.org# notice, this list of conditions and the following disclaimer;
177087Snate@binkert.org# redistributions in binary form must reproduce the above copyright
187087Snate@binkert.org# notice, this list of conditions and the following disclaimer in the
197087Snate@binkert.org# documentation and/or other materials provided with the distribution;
207087Snate@binkert.org# neither the name of the copyright holders nor the names of its
215081Sgblack@eecs.umich.edu# contributors may be used to endorse or promote products derived from
227087Snate@binkert.org# this software without specific prior written permission.
235081Sgblack@eecs.umich.edu#
245081Sgblack@eecs.umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
255081Sgblack@eecs.umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
265081Sgblack@eecs.umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
275081Sgblack@eecs.umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
285081Sgblack@eecs.umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
295081Sgblack@eecs.umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
305081Sgblack@eecs.umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
315081Sgblack@eecs.umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
325081Sgblack@eecs.umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
335081Sgblack@eecs.umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
345081Sgblack@eecs.umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
355081Sgblack@eecs.umich.edu#
365081Sgblack@eecs.umich.edu# Authors: Gabe Black
375081Sgblack@eecs.umich.edu
385081Sgblack@eecs.umich.edumicrocode = '''
395081Sgblack@eecs.umich.edudef macroop JZ_I
405081Sgblack@eecs.umich.edu{
415081Sgblack@eecs.umich.edu    # Make the defualt data size of jumps 64 bits in 64 bit mode
425081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
435081Sgblack@eecs.umich.edu
445081Sgblack@eecs.umich.edu    rdip t1
455081Sgblack@eecs.umich.edu    limm t2, imm
465081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CZF,)
475081Sgblack@eecs.umich.edu};
485081Sgblack@eecs.umich.edu
495081Sgblack@eecs.umich.edudef macroop JNZ_I
505081Sgblack@eecs.umich.edu{
515081Sgblack@eecs.umich.edu    # Make the defualt data size of jumps 64 bits in 64 bit mode
525081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
535081Sgblack@eecs.umich.edu
545081Sgblack@eecs.umich.edu    rdip t1
555081Sgblack@eecs.umich.edu    limm t2, imm
565081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCZF,)
575081Sgblack@eecs.umich.edu};
585081Sgblack@eecs.umich.edu
595081Sgblack@eecs.umich.edudef macroop JB_I
605081Sgblack@eecs.umich.edu{
615081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
625081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
635081Sgblack@eecs.umich.edu
645081Sgblack@eecs.umich.edu    rdip t1
655081Sgblack@eecs.umich.edu    limm t2, imm
665081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CCF,)
675081Sgblack@eecs.umich.edu};
685081Sgblack@eecs.umich.edu
695081Sgblack@eecs.umich.edudef macroop JNB_I
705081Sgblack@eecs.umich.edu{
715081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
725081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
735081Sgblack@eecs.umich.edu
745081Sgblack@eecs.umich.edu    rdip t1
755081Sgblack@eecs.umich.edu    limm t2, imm
765081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCCF,)
775081Sgblack@eecs.umich.edu};
785081Sgblack@eecs.umich.edu
795081Sgblack@eecs.umich.edudef macroop JBE_I
805081Sgblack@eecs.umich.edu{
815081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
825081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
835081Sgblack@eecs.umich.edu
845081Sgblack@eecs.umich.edu    rdip t1
855081Sgblack@eecs.umich.edu    limm t2, imm
865081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CCvZF,)
875081Sgblack@eecs.umich.edu};
885081Sgblack@eecs.umich.edu
895081Sgblack@eecs.umich.edudef macroop JNBE_I
905081Sgblack@eecs.umich.edu{
915081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
925081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
935081Sgblack@eecs.umich.edu
945081Sgblack@eecs.umich.edu    rdip t1
955081Sgblack@eecs.umich.edu    limm t2, imm
965081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCCvZF,)
975081Sgblack@eecs.umich.edu};
985081Sgblack@eecs.umich.edu
995081Sgblack@eecs.umich.edudef macroop JS_I
1005081Sgblack@eecs.umich.edu{
1015081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1025081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1035081Sgblack@eecs.umich.edu
1045081Sgblack@eecs.umich.edu    rdip t1
1055081Sgblack@eecs.umich.edu    limm t2, imm
1065081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CSF,)
1075081Sgblack@eecs.umich.edu};
1085081Sgblack@eecs.umich.edu
1095081Sgblack@eecs.umich.edudef macroop JNS_I
1105081Sgblack@eecs.umich.edu{
1115081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1125081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1135081Sgblack@eecs.umich.edu
1145081Sgblack@eecs.umich.edu    rdip t1
1155081Sgblack@eecs.umich.edu    limm t2, imm
1165081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCSF,)
1175081Sgblack@eecs.umich.edu};
1185081Sgblack@eecs.umich.edu
1195081Sgblack@eecs.umich.edudef macroop JP_I
1205081Sgblack@eecs.umich.edu{
1215081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1225081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1235081Sgblack@eecs.umich.edu
1245081Sgblack@eecs.umich.edu    rdip t1
1255081Sgblack@eecs.umich.edu    limm t2, imm
1265081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CPF,)
1275081Sgblack@eecs.umich.edu};
1285081Sgblack@eecs.umich.edu
1295081Sgblack@eecs.umich.edudef macroop JNP_I
1305081Sgblack@eecs.umich.edu{
1315081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1325081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1335081Sgblack@eecs.umich.edu
1345081Sgblack@eecs.umich.edu    rdip t1
1355081Sgblack@eecs.umich.edu    limm t2, imm
1365081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCPF,)
1375081Sgblack@eecs.umich.edu};
1385081Sgblack@eecs.umich.edu
1395081Sgblack@eecs.umich.edudef macroop JL_I
1405081Sgblack@eecs.umich.edu{
1415081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1425081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1435081Sgblack@eecs.umich.edu
1445081Sgblack@eecs.umich.edu    rdip t1
1455081Sgblack@eecs.umich.edu    limm t2, imm
1465081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CSxOF,)
1475081Sgblack@eecs.umich.edu};
1485081Sgblack@eecs.umich.edu
1495081Sgblack@eecs.umich.edudef macroop JNL_I
1505081Sgblack@eecs.umich.edu{
1515081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1525081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1535081Sgblack@eecs.umich.edu
1545081Sgblack@eecs.umich.edu    rdip t1
1555081Sgblack@eecs.umich.edu    limm t2, imm
1565081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCSxOF,)
1575081Sgblack@eecs.umich.edu};
1585081Sgblack@eecs.umich.edu
1595081Sgblack@eecs.umich.edudef macroop JLE_I
1605081Sgblack@eecs.umich.edu{
1615081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1625081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1635081Sgblack@eecs.umich.edu
1645081Sgblack@eecs.umich.edu    rdip t1
1655081Sgblack@eecs.umich.edu    limm t2, imm
1665081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(CSxOvZF,)
1675081Sgblack@eecs.umich.edu};
1685081Sgblack@eecs.umich.edu
1695081Sgblack@eecs.umich.edudef macroop JNLE_I
1705081Sgblack@eecs.umich.edu{
1715081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1725081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1735081Sgblack@eecs.umich.edu
1745081Sgblack@eecs.umich.edu    rdip t1
1755081Sgblack@eecs.umich.edu    limm t2, imm
1765081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCSxOvZF,)
1775081Sgblack@eecs.umich.edu};
1785081Sgblack@eecs.umich.edu
1795081Sgblack@eecs.umich.edudef macroop JO_I
1805081Sgblack@eecs.umich.edu{
1815081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1825081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1835081Sgblack@eecs.umich.edu
1845081Sgblack@eecs.umich.edu    rdip t1
1855081Sgblack@eecs.umich.edu    limm t2, imm
1865081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(COF,)
1875081Sgblack@eecs.umich.edu};
1885081Sgblack@eecs.umich.edu
1895081Sgblack@eecs.umich.edudef macroop JNO_I
1905081Sgblack@eecs.umich.edu{
1915081Sgblack@eecs.umich.edu    # Make the default data size of jumps 64 bits in 64 bit mode
1925081Sgblack@eecs.umich.edu    .adjust_env oszIn64Override
1935081Sgblack@eecs.umich.edu
1945081Sgblack@eecs.umich.edu    rdip t1
1955081Sgblack@eecs.umich.edu    limm t2, imm
1965081Sgblack@eecs.umich.edu    wrip t1, t2, flags=(nCOF,)
1975081Sgblack@eecs.umich.edu};
1985158Sgblack@eecs.umich.edu
1995158Sgblack@eecs.umich.edudef macroop JRCX_I
2005158Sgblack@eecs.umich.edu{
2015158Sgblack@eecs.umich.edu    rdip t1
2025158Sgblack@eecs.umich.edu    add t0, t0, rcx, flags=(EZF,), dataSize=asz
2035158Sgblack@eecs.umich.edu    wripi t1, imm, flags=(CEZF,)
2045158Sgblack@eecs.umich.edu};
2055081Sgblack@eecs.umich.edu'''
206