173 lines
5.0 KiB
C
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
|