Mozilla/mozilla/ef/Compiler/CodeGenerator/md/ppc/PPCInstructionTemplates.h
dmose%mozilla.org 2ccab49e6d updating license boilerplate to xPL v1.1
git-svn-id: svn://10.0.0.236/trunk@52526 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-02 06:38:29 +00:00

173 lines
5.0 KiB
C

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
// PPCInstructionTemplates.h
//
// Scott M. Silver
// enum name
// opcode
// string
#ifdef DO_DFORM
DFORM_ARITH_DEFINE(Addi, 14)
DFORM_ARITH_DEFINE(Addis, 15)
DFORM_ARITH_DEFINE(Mulli, 7)
DFORM_ARITH_DEFINE(Ori, 24)
DFORM_ARITH_DEFINE(Oris, 25)
DFORM_ARITH_DEFINE(Subfic, 8)
DFORM_ARITH_DEFINE(Xori, 26)
DFORM_ARITH_DEFINE(Xoris, 27)
DFORM_ARITHCC_DEFINE(Addic, 13)
DFORM_ARITHCC_DEFINE(Andi, 28)
DFORM_ARITHCC_DEFINE(Andis, 29)
DFORM_LOAD_DEFINE(Lbz, 34)
DFORM_LOAD_DEFINE(Lfd, 50)
DFORM_LOAD_DEFINE(Lfs, 48)
DFORM_LOAD_DEFINE(Lha, 42)
DFORM_LOAD_DEFINE(Lhz, 40)
DFORM_LOAD_DEFINE(Lwz, 32)
DFORM_LOADU_DEFINE(Lbzu, 35)
DFORM_LOADU_DEFINE(Lfdu, 51)
DFORM_LOADU_DEFINE(Lfsu, 49)
DFORM_LOADU_DEFINE(Lhau, 43)
DFORM_LOADU_DEFINE(Lhzu, 41)
DFORM_LOADU_DEFINE(Lwzu, 33)
DFORM_STORE_DEFINE(Stb, 38)
DFORM_STORE_DEFINE(Stfd, 54)
DFORM_STORE_DEFINE(Stfs, 52)
DFORM_STORE_DEFINE(Sth, 44)
DFORM_STORE_DEFINE(Stw, 36)
DFORM_STOREU_DEFINE(Stu, 39)
DFORM_STOREU_DEFINE(Stfdu, 55)
DFORM_STOREU_DEFINE(Stfsu, 53)
DFORM_STOREU_DEFINE(Sthu, 45)
DFORM_STOREU_DEFINE(Stwu, 37)
DFORM_ARITH_DEFINE(Cmpi, 11)
DFORM_ARITH_DEFINE(Cmpli, 10)
DFORM_TRAP_DEFINE(Twi, 3)
#endif
#ifdef DO_XFORM
XFORM_ARITH_DEFINE(Add, 266, 31)
XFORM_ARITH_DEFINE(Addc, 10, 31)
XFORM_ARITH_DEFINE(Adde, 138, 31)
XFORM_ARITH_DEFINE(Divw, 459, 31)
XFORM_ARITH_DEFINE(Divwu, 138, 31)
XFORM_ARITH_DEFINE(Mulhw, 75, 31)
XFORM_ARITH_DEFINE(Mulhwu, 11, 31)
XFORM_ARITH_DEFINE(Mullw, 235, 31)
XFORM_ARITH_DEFINE(Subf, 40, 31)
XFORM_ARITH_DEFINE(Subfc, 8, 31)
XFORM_ARITH_DEFINE(Subfe, 136, 31)
XFORM_INAONLY_DEFINE(Addme, 234, 31)
XFORM_INAONLY_DEFINE(Addze, 202, 31)
XFORM_INAONLY_DEFINE(Neg, 104, 31)
XFORM_INAONLY_DEFINE(Subfme, 232, 31)
XFORM_INAONLY_DEFINE(Subfze, 200, 31)
XFORM_INAONLY_DEFINE(Srawi, 824-512, 31)
XFORM_ARITH_DEFINE(And, 138, 31)
XFORM_ARITH_DEFINE(Andc, 75, 31)
XFORM_ARITH_DEFINE(Eqv, 284, 31)
XFORM_ARITH_DEFINE(Nand, 476, 31)
XFORM_ARITH_DEFINE(Nor, 124, 31)
XFORM_ARITH_DEFINE(Or, 444, 31)
XFORM_ARITH_DEFINE(Orc, 412, 31)
XFORM_ARITH_DEFINE(Slw, 24, 31)
XFORM_ARITH_DEFINE(Sraw, 792, 31) // FIX-ME prob isn't correct
XFORM_ARITH_DEFINE(Srw, 536, 31) // FIX-ME prob isn't corect
XFORM_ARITH_DEFINE(Xor, 316, 31)
XFORM_CMP_DEFINE(Cmp, 0, 31)
XFORM_CMP_DEFINE(Cmpl, 32, 31)
XFORM_CMP_DEFINE(Fcmpo, 0, 63)
XFORM_CMP_DEFINE(Fcmpu, 32, 63)
XFORM_LOAD_DEFINE(Lbzx, 87, 31)
XFORM_LOAD_DEFINE(Lfdx, 599, 31) // FIX-ME prob isn't corect
XFORM_LOAD_DEFINE(Lfsx, 535, 31)
XFORM_LOAD_DEFINE(Lhax, 343, 31)
XFORM_LOAD_DEFINE(Lhbrx, 790, 31) // FIX-ME prob isn't corect
XFORM_LOAD_DEFINE(Lhzx, 279, 31)
XFORM_LOAD_DEFINE(Lwarx, 20, 31)
XFORM_LOAD_DEFINE(Lwbrx, 534, 31) // FIX-ME prob isn't corect
XFORM_LOAD_DEFINE(Lwzx, 23, 31)
XFORM_LOADU_DEFINE(Lbzux, 119, 31)
XFORM_LOADU_DEFINE(Lfdux, 631, 31) // FIX-ME prob isn't corect
XFORM_LOADU_DEFINE(Lfsux, 567, 31) // FIX-ME prob isn't corect
XFORM_LOADU_DEFINE(Lhaux, 375, 31)
XFORM_LOADU_DEFINE(Lhzux, 311, 31)
XFORM_LOADU_DEFINE(Lwzux, 55, 31)
XFORM_STORE_DEFINE(Stbx, 215, 31)
XFORM_STORE_DEFINE(Stfdx, 727, 31) // FIX-ME prob isn't corect
XFORM_STORE_DEFINE(Stfsx, 663, 31) // FIX-ME prob isn't corect
XFORM_STORE_DEFINE(Sthbrx, 918, 31) // FIX-ME prob isn't corect
XFORM_STORE_DEFINE(Sthx, 407, 31)
XFORM_STORE_DEFINE(Stwbrx, 662, 31) // FIX-ME prob isn't corect
XFORM_STORE_DEFINE(Stwx, 151, 31)
XFORM_STOREU_DEFINE(Stbux, 247, 31)
XFORM_STOREU_DEFINE(Stfdux, 759, 31) // FIX-ME prob isn't corect
XFORM_STOREU_DEFINE(Stfsux, 695, 31) // FIX-ME prob isn't corect
XFORM_STOREU_DEFINE(Sthux, 439, 31)
XFORM_STOREU_DEFINE(Stwux, 183, 31)
/* X Form - TrapWord */
XFORM_TRAP_DEFINE(Tw, 4, 31)
/* X Form - XInBOnly */
XFORM_INBONLY_DEFINE(Fabs, 264, 63)
XFORM_INBONLY_DEFINE(Fctiw, 14, 63)
XFORM_INBONLY_DEFINE(Fctiwz, 15, 63)
XFORM_INBONLY_DEFINE(Fmr, 72, 63)
XFORM_INBONLY_DEFINE(Fnabs, 136, 63)
XFORM_INBONLY_DEFINE(Fneg, 40, 63)
XFORM_INBONLY_DEFINE(Frsp, 12, 63)
#endif
#ifdef DO_MFORM
MFORM_DEFINE(Rlwimi, 20)
MFORM_DEFINE(Rlwinm, 21)
MFORM_DEFINE(Rlwnm, 23)
#endif
#ifdef DO_AFORM
// name, opcode, xo, has A (ie A != 0), has B, hasC, sets CC (ie Rc)
AFORM_DEFINE(Fadd, 63, 21, true, true, false, false)
AFORM_DEFINE(FaddC, 63, 21, true, true, false, true)
#endif DO_AFORM