Back to index

cell-binutils  2.17cvs20070401
spu-insns.h
Go to the documentation of this file.
00001 /* SPU ELF support for BFD.
00002 
00003    Copyright 2006, 2007 Free Software Foundation, Inc.
00004 
00005    This file is part of BFD, the Binary File Descriptor library.
00006 
00007    This program is free software; you can redistribute it and/or modify
00008    it under the terms of the GNU General Public License as published by
00009    the Free Software Foundation; either version 2 of the License, or
00010    (at your option) any later version.
00011 
00012    This program is distributed in the hope that it will be useful,
00013    but WITHOUT ANY WARRANTY; without even the implied warranty of
00014    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015    GNU General Public License for more details.
00016 
00017    You should have received a copy of the GNU General Public License
00018    along with this program; if not, write to the Free Software Foundation,
00019    Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
00020 
00021 /* SPU Opcode Table
00022 
00023 -=-=-= FORMAT =-=-=-
00024                                                                                                      
00025        +----+-------+-------+-------+-------+                  +------------+-------+-------+-------+
00026 RRR    | op |  RC   |  RB   |  RA   |  RT   |           RI7    | op         |  I7   |  RA   |  RT   |
00027        +----+-------+-------+-------+-------+                  +------------+-------+-------+-------+
00028         0  3       1       1       2       3                    0          1       1       2       3 
00029                    0       7       4       1                               0       7       4       1 
00030 
00031        +-----------+--------+-------+-------+                  +---------+----------+-------+-------+
00032 RI8    | op        |   I8   |  RA   |  RT   |           RI10   | op      |   I10    |  RA   |  RT   |
00033        +-----------+--------+-------+-------+                  +---------+----------+-------+-------+
00034         0         9        1       2       3                    0       7          1       2       3 
00035                            7       4       1                                       7       4       1 
00036 
00037        +----------+-----------------+-------+                  +--------+-------------------+-------+
00038 RI16   | op       |       I16       |  RT   |           RI18   | op     |       I18         |  RT   |
00039        +----------+-----------------+-------+                  +--------+-------------------+-------+
00040         0        8                 2       3                    0      6                   2       3 
00041                                    4       1                                               4       1 
00042 
00043        +------------+-------+-------+-------+                  +-------+--+-----------------+-------+
00044 RR     | op         |  RB   |  RA   |  RT   |           LBT    | op    |RO|       I16       |  RO   |
00045        +------------+-------+-------+-------+                  +-------+--+-----------------+-------+
00046         0          1       1       2       3                    0     6  8                 2       3 
00047                    0       7       4       1                                               4       1 
00048 
00049                                                         +------------+----+--+-------+-------+
00050                                                  LBTI   | op         | // |RO|  RA   |  RO   |
00051                                                         +------------+----+--+-------+-------+
00052                                                          0          1    1  1       2       3
00053                                                                     0    5  7       4       1
00054 
00055 -=-=-= OPCODE =-=-=-
00056 
00057 OPCODE field specifies the most significant 11bit of the instruction. Some formats don't have 11bits for opcode field, and in this
00058 case, bit field other than op are defined as 0s. For example, opcode of fma instruction which is RRR format is defined as 0x700,
00059 since 0x700 -> 11'b11100000000, this means opcode is 4'b1110, and other 7bits are defined as 7'b0000000.
00060 
00061 -=-=-= ASM_FORMAT =-=-=-
00062 
00063 RRR category                                     RI7 category                               
00064        ASM_RRR              mnemonic RC, RA, RB, RT                    ASM_RI4         mnemonic RT, RA, I4
00065                                                          ASM_RI7         mnemonic RT, RA, I7
00066 
00067 RI8 category                                     RI10 category                               
00068        ASM_RUI8      mnemonic RT, RA, UI8                ASM_AI10        mnemonic RA, I10    
00069                                                          ASM_RI10        mnemonic RT, RA, R10
00070                                                          ASM_RI10IDX     mnemonic RT, I10(RA)
00071 
00072 RI16 category                                    RI18 category                           
00073        ASM_I16W      mnemonic I16W                       ASM_RI18        mnemonic RT, I18
00074        ASM_RI16      mnemonic RT, I16
00075        ASM_RI16W     mnemonic RT, I16W
00076 
00077 RR category                                      LBT category                                    
00078        ASM_MFSPR     mnemonic RT, SA                            ASM_LBT         mnemonic brinst, brtarg 
00079        ASM_MTSPR     mnemonic SA, RT                                                                    
00080        ASM_NOOP      mnemonic                    LBTI category                                   
00081        ASM_RA        mnemonic RA                         ASM_LBTI        mnemonic brinst, RA     
00082        ASM_RAB              mnemonic RA, RB
00083        ASM_RDCH      mnemonic RT, CA
00084        ASM_RR        mnemonic RT, RA, RB
00085        ASM_RT        mnemonic RT
00086        ASM_RTA              mnemonic RT, RA
00087        ASM_WRCH      mnemonic CA, RT
00088 
00089 Note that RRR instructions have the names for RC and RT reversed from
00090 what's in the ISA, in order to put RT in the same position it appears
00091 for other formats.
00092 
00093 -=-=-= DEPENDENCY =-=-=-
00094 
00095 DEPENDENCY filed consists of 5 digits. This represents which register is used as source and which register is used as target.
00096 The first(most significant) digit is always 0. Then it is followd by RC, RB, RA and RT digits.
00097 If the digit is 0, this means the corresponding register is not used in the instruction.
00098 If the digit is 1, this means the corresponding register is used as a source in the instruction.
00099 If the digit is 2, this means the corresponding register is used as a target in the instruction.
00100 If the digit is 3, this means the corresponding register is used as both source and target in the instruction.
00101 For example, fms instruction has 00113 as the DEPENDENCY field. This means RC is not used in this operation, RB and RA are
00102 used as sources and RT is the target.
00103 
00104 -=-=-= PIPE =-=-=-
00105 
00106 This field shows which execution pipe is used for the instruction
00107 
00108 pipe0 execution pipelines:
00109        FP6    SP floating pipeline
00110        FP7    integer operations executed in SP floating pipeline
00111        FPD    DP floating pipeline
00112        FX2    FXU pipeline
00113        FX3    Rotate/Shift pipeline
00114        FXB    Byte pipeline
00115        NOP    No pipeline
00116 
00117 pipe1 execution pipelines:
00118        BR     Branch pipeline
00119        LNOP   No pipeline
00120        LS     Load/Store pipeline
00121        SHUF   Shuffle pipeline
00122        SPR    SPR/CH pipeline
00123 
00124 */
00125 
00126 #define _A0() {0}
00127 #define _A1(a) {1,a}
00128 #define _A2(a,b) {2,a,b}
00129 #define _A3(a,b,c) {3,a,b,c}
00130 #define _A4(a,b,c,d) {4,a,b,c,d}
00131 
00132 /*    TAG            FORMAT OPCODE MNEMONIC      ASM_FORMAT    DEPENDENCY    PIPE   COMMENT                            */
00133 /*                                                             0[RC][RB][RA][RT]                                */
00134 /*                                                             1:src, 2:target                                         */
00135 
00136 APUOP(M_BR,          RI16,  0x190, "br",         _A1(A_R18),   00000, BR)    /* BRel          IP<-IP+I16 */
00137 APUOP(M_BRSL,        RI16,  0x198, "brsl",              _A2(A_T,A_R18),      00002, BR)    /* BRelSetLink   RT,IP<-IP,IP+I16 */
00138 APUOP(M_BRA,         RI16,  0x180, "bra",        _A1(A_S18),   00000, BR)    /* BRAbs         IP<-I16 */
00139 APUOP(M_BRASL,              RI16,  0x188, "brasl",      _A2(A_T,A_S18),      00002, BR)    /* BRAbsSetLink  RT,IP<-IP,I16 */
00140 APUOP(M_FSMBI,              RI16,  0x194, "fsmbi",      _A2(A_T,A_X16),      00002, SHUF)  /* FormSelMask%I RT<-fsm(I16) */
00141 APUOP(M_LQA,         RI16,  0x184, "lqa",        _A2(A_T,A_S18),      00002, LS)    /* LoadQAbs      RT<-M[I16] */
00142 APUOP(M_LQR,         RI16,  0x19C, "lqr",        _A2(A_T,A_R18),      00002, LS)    /* LoadQRel      RT<-M[IP+I16] */
00143 APUOP(M_STOP,        RR,    0x000, "stop",              _A0(),        00000, BR)    /* STOP          stop */
00144 APUOP(M_STOP2,              RR,    0x000, "stop",              _A1(A_U14),   00000, BR)    /* STOP          stop */
00145 APUOP(M_STOPD,              RR,    0x140, "stopd",      _A3(A_T,A_A,A_B),         00111,   BR)    /* STOPD         stop (with register dependencies) */
00146 APUOP(M_LNOP,        RR,    0x001, "lnop",              _A0(),        00000, LNOP)  /* LNOP          no_operation */
00147 APUOP(M_SYNC,        RR,    0x002, "sync",              _A0(),        00000, BR)    /* SYNC          flush_pipe */
00148 APUOP(M_DSYNC,              RR,    0x003, "dsync",      _A0(),        00000, BR)    /* DSYNC         flush_store_queue */
00149 APUOP(M_MFSPR,              RR,    0x00c, "mfspr",      _A2(A_T,A_S), 00002, SPR)   /* MFSPR         RT<-SA */
00150 APUOP(M_RDCH,        RR,    0x00d, "rdch",              _A2(A_T,A_H), 00002, SPR)   /* ReaDCHannel   RT<-CA:data */
00151 APUOP(M_RCHCNT,             RR,    0x00f, "rchcnt",     _A2(A_T,A_H), 00002, SPR)   /* ReaDCHanCouNT RT<-CA:count */
00152 APUOP(M_HBRA,        LBT,   0x080, "hbra",              _A2(A_S11,A_S18),    00000, LS)    /* HBRA          BTB[B9]<-M[I16] */
00153 APUOP(M_HBRR,        LBT,   0x090, "hbrr",              _A2(A_S11,A_R18),    00000, LS)    /* HBRR          BTB[B9]<-M[IP+I16] */
00154 APUOP(M_BRZ,         RI16,  0x100, "brz",        _A2(A_T,A_R18),      00001, BR)    /* BRZ           IP<-IP+I16_if(RT) */
00155 APUOP(M_BRNZ,        RI16,  0x108, "brnz",              _A2(A_T,A_R18),      00001, BR)    /* BRNZ          IP<-IP+I16_if(RT) */
00156 APUOP(M_BRHZ,        RI16,  0x110, "brhz",              _A2(A_T,A_R18),      00001, BR)    /* BRHZ          IP<-IP+I16_if(RT) */
00157 APUOP(M_BRHNZ,              RI16,  0x118, "brhnz",      _A2(A_T,A_R18),      00001, BR)    /* BRHNZ         IP<-IP+I16_if(RT) */
00158 APUOP(M_STQA,        RI16,  0x104, "stqa",              _A2(A_T,A_S18),      00001, LS)    /* SToreQAbs     M[I16]<-RT */
00159 APUOP(M_STQR,        RI16,  0x11C, "stqr",              _A2(A_T,A_R18),      00001, LS)    /* SToreQRel     M[IP+I16]<-RT */
00160 APUOP(M_MTSPR,              RR,    0x10c, "mtspr",      _A2(A_S,A_T), 00001, SPR)   /* MTSPR         SA<-RT */
00161 APUOP(M_WRCH,        RR,    0x10d, "wrch",              _A2(A_H,A_T), 00001, SPR)   /* ChanWRite     CA<-RT */
00162 APUOP(M_LQD,         RI10,  0x1a0, "lqd",        _A4(A_T,A_S14,A_P,A_A),     00012, LS)    /* LoadQDisp     RT<-M[Ra+I10] */
00163 APUOP(M_BI,          RR,    0x1a8, "bi",         _A1(A_A),            00010, BR)    /* BI            IP<-RA */
00164 APUOP(M_BISL,        RR,    0x1a9, "bisl",              _A2(A_T,A_A), 00012, BR)    /* BISL          RT,IP<-IP,RA */
00165 APUOP(M_IRET,               RR,    0x1aa, "iret",               _A1(A_A),    00010, BR)    /* IRET          IP<-SRR0 */
00166 APUOP(M_IRET2,              RR,    0x1aa, "iret",               _A0(),              00010, BR)    /* IRET          IP<-SRR0 */
00167 APUOP(M_BISLED,             RR,    0x1ab, "bisled",     _A2(A_T,A_A), 00012, BR)    /* BISLED        RT,IP<-IP,RA_if(ext) */
00168 APUOP(M_HBR,         LBTI,  0x1ac, "hbr",        _A2(A_S11I,A_A),     00010, LS)    /* HBR           BTB[B9]<-M[Ra] */
00169 APUOP(M_FREST,              RR,    0x1b8, "frest",      _A2(A_T,A_A), 00012, SHUF)  /* FREST         RT<-recip(RA) */
00170 APUOP(M_FRSQEST,     RR,    0x1b9, "frsqest",    _A2(A_T,A_A), 00012, SHUF)  /* FRSQEST       RT<-rsqrt(RA) */
00171 APUOP(M_FSM,         RR,    0x1b4, "fsm",        _A2(A_T,A_A), 00012, SHUF)  /* FormSelMask%  RT<-expand(Ra) */
00172 APUOP(M_FSMH,        RR,    0x1b5, "fsmh",              _A2(A_T,A_A), 00012, SHUF)  /* FormSelMask%  RT<-expand(Ra) */
00173 APUOP(M_FSMB,        RR,    0x1b6, "fsmb",              _A2(A_T,A_A), 00012, SHUF)  /* FormSelMask%  RT<-expand(Ra) */
00174 APUOP(M_GB,          RR,    0x1b0, "gb",         _A2(A_T,A_A), 00012, SHUF)  /* GatherBits%   RT<-gather(RA) */
00175 APUOP(M_GBH,         RR,    0x1b1, "gbh",        _A2(A_T,A_A), 00012, SHUF)  /* GatherBits%   RT<-gather(RA) */
00176 APUOP(M_GBB,         RR,    0x1b2, "gbb",        _A2(A_T,A_A), 00012, SHUF)  /* GatherBits%   RT<-gather(RA) */
00177 APUOP(M_CBD,         RI7,   0x1f4, "cbd",        _A4(A_T,A_U7,A_P,A_A),      00012, SHUF)  /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
00178 APUOP(M_CHD,         RI7,   0x1f5, "chd",        _A4(A_T,A_U7,A_P,A_A),      00012, SHUF)  /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
00179 APUOP(M_CWD,         RI7,   0x1f6, "cwd",        _A4(A_T,A_U7,A_P,A_A),      00012, SHUF)  /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
00180 APUOP(M_CDD,         RI7,   0x1f7, "cdd",        _A4(A_T,A_U7,A_P,A_A),      00012, SHUF)  /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
00181 APUOP(M_ROTQBII,     RI7,   0x1f8, "rotqbii",    _A3(A_T,A_A,A_U3),   00012, SHUF)  /* ROTQBII       RT<-RA<<<I7 */
00182 APUOP(M_ROTQBYI,     RI7,   0x1fc, "rotqbyi",    _A3(A_T,A_A,A_S7N),  00012, SHUF)  /* ROTQBYI       RT<-RA<<<(I7*8) */
00183 APUOP(M_ROTQMBII,    RI7,   0x1f9, "rotqmbii",   _A3(A_T,A_A,A_S3),   00012, SHUF)  /* ROTQMBII      RT<-RA<<I7 */
00184 APUOP(M_ROTQMBYI,    RI7,   0x1fd, "rotqmbyi",   _A3(A_T,A_A,A_S6),   00012, SHUF)  /* ROTQMBYI      RT<-RA<<I7 */
00185 APUOP(M_SHLQBII,     RI7,   0x1fb, "shlqbii",    _A3(A_T,A_A,A_U3),   00012, SHUF)  /* SHLQBII       RT<-RA<<I7 */
00186 APUOP(M_SHLQBYI,     RI7,   0x1ff, "shlqbyi",    _A3(A_T,A_A,A_U5),   00012, SHUF)  /* SHLQBYI       RT<-RA<<I7 */
00187 APUOP(M_STQD,        RI10,  0x120, "stqd",              _A4(A_T,A_S14,A_P,A_A),     00011, LS)    /* SToreQDisp    M[Ra+I10]<-RT */
00188 APUOP(M_BIHNZ,              RR,    0x12b, "bihnz",      _A2(A_T,A_A), 00011, BR)    /* BIHNZ         IP<-RA_if(RT) */
00189 APUOP(M_BIHZ,        RR,    0x12a, "bihz",              _A2(A_T,A_A), 00011, BR)    /* BIHZ          IP<-RA_if(RT) */
00190 APUOP(M_BINZ,        RR,    0x129, "binz",              _A2(A_T,A_A), 00011, BR)    /* BINZ          IP<-RA_if(RT) */
00191 APUOP(M_BIZ,         RR,    0x128, "biz",        _A2(A_T,A_A), 00011, BR)    /* BIZ           IP<-RA_if(RT) */
00192 APUOP(M_CBX,         RR,    0x1d4, "cbx",        _A3(A_T,A_A,A_B),           00112, SHUF)  /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
00193 APUOP(M_CHX,         RR,    0x1d5, "chx",        _A3(A_T,A_A,A_B),           00112, SHUF)  /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
00194 APUOP(M_CWX,         RR,    0x1d6, "cwx",        _A3(A_T,A_A,A_B),           00112, SHUF)  /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
00195 APUOP(M_CDX,         RR,    0x1d7, "cdx",        _A3(A_T,A_A,A_B),           00112, SHUF)  /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
00196 APUOP(M_LQX,         RR,    0x1c4, "lqx",        _A3(A_T,A_A,A_B),           00112, LS)    /* LoadQindeX    RT<-M[Ra+Rb] */
00197 APUOP(M_ROTQBI,             RR,    0x1d8, "rotqbi",     _A3(A_T,A_A,A_B),           00112, SHUF)  /* ROTQBI        RT<-RA<<<Rb */
00198 APUOP(M_ROTQMBI,     RR,    0x1d9, "rotqmbi",    _A3(A_T,A_A,A_B),           00112, SHUF)  /* ROTQMBI       RT<-RA<<Rb */
00199 APUOP(M_SHLQBI,             RR,    0x1db, "shlqbi",     _A3(A_T,A_A,A_B),           00112, SHUF)  /* SHLQBI        RT<-RA<<Rb */
00200 APUOP(M_ROTQBY,             RR,    0x1dc, "rotqby",     _A3(A_T,A_A,A_B),           00112,        SHUF)  /* ROTQBY        RT<-RA<<<(Rb*8) */
00201 APUOP(M_ROTQMBY,     RR,    0x1dd, "rotqmby",    _A3(A_T,A_A,A_B),           00112,        SHUF)  /* ROTQMBY       RT<-RA<<Rb */
00202 APUOP(M_SHLQBY,             RR,    0x1df, "shlqby",     _A3(A_T,A_A,A_B),           00112, SHUF)  /* SHLQBY        RT<-RA<<Rb */
00203 APUOP(M_ROTQBYBI,    RR,    0x1cc, "rotqbybi",   _A3(A_T,A_A,A_B),           00112,        SHUF)  /* ROTQBYBI      RT<-RA<<Rb */
00204 APUOP(M_ROTQMBYBI,   RR,    0x1cd, "rotqmbybi",  _A3(A_T,A_A,A_B),           00112,        SHUF)  /* ROTQMBYBI     RT<-RA<<Rb */
00205 APUOP(M_SHLQBYBI,    RR,    0x1cf, "shlqbybi",   _A3(A_T,A_A,A_B),           00112, SHUF)  /* SHLQBYBI      RT<-RA<<Rb */
00206 APUOP(M_STQX,        RR,    0x144, "stqx",              _A3(A_T,A_A,A_B),           00111, LS)    /* SToreQindeX   M[Ra+Rb]<-RT */
00207 APUOP(M_SHUFB,              RRR,   0x580, "shufb",      _A4(A_C,A_A,A_B,A_T),       02111, SHUF)  /* SHUFfleBytes  RC<-f(RA,RB,RT) */
00208 APUOP(M_IL,          RI16,  0x204, "il",         _A2(A_T,A_S16),      00002, FX2)   /* ImmLoad       RT<-sxt(I16) */
00209 APUOP(M_ILH,         RI16,  0x20c, "ilh",        _A2(A_T,A_X16),      00002, FX2)   /* ImmLoadH      RT<-I16 */
00210 APUOP(M_ILHU,        RI16,  0x208, "ilhu",              _A2(A_T,A_X16),      00002, FX2)   /* ImmLoadHUpper RT<-I16<<16 */
00211 APUOP(M_ILA,         RI18,  0x210, "ila",        _A2(A_T,A_U18),      00002, FX2)   /* ImmLoadAddr   RT<-zxt(I18) */
00212 APUOP(M_NOP,         RR,    0x201, "nop",        _A1(A_T),            00000, NOP)   /* XNOP          no_operation */
00213 APUOP(M_NOP2,        RR,    0x201, "nop",        _A0(),        00000, NOP)   /* XNOP          no_operation */
00214 APUOP(M_IOHL,        RI16,  0x304, "iohl",              _A2(A_T,A_X16),      00003, FX2)   /* AddImmeXt     RT<-RT+sxt(I16) */
00215 APUOP(M_ANDBI,              RI10,  0x0b0, "andbi",      _A3(A_T,A_A,A_S10B), 00012, FX2)   /* AND%I         RT<-RA&I10 */
00216 APUOP(M_ANDHI,              RI10,  0x0a8, "andhi",      _A3(A_T,A_A,A_S10),  00012, FX2)   /* AND%I         RT<-RA&I10 */
00217 APUOP(M_ANDI,        RI10,  0x0a0, "andi",              _A3(A_T,A_A,A_S10),  00012, FX2)   /* AND%I         RT<-RA&I10 */
00218 APUOP(M_ORBI,        RI10,  0x030, "orbi",              _A3(A_T,A_A,A_S10B), 00012, FX2)   /* OR%I          RT<-RA|I10 */
00219 APUOP(M_ORHI,        RI10,  0x028, "orhi",              _A3(A_T,A_A,A_S10),  00012, FX2)   /* OR%I          RT<-RA|I10 */
00220 APUOP(M_ORI,         RI10,  0x020, "ori",        _A3(A_T,A_A,A_S10),  00012, FX2)   /* OR%I          RT<-RA|I10 */
00221 APUOP(M_ORX,         RR,    0x1f0, "orx",        _A2(A_T,A_A),        00012, BR)    /* ORX           RT<-RA.w0|RA.w1|RA.w2|RA.w3 */
00222 APUOP(M_XORBI,              RI10,  0x230, "xorbi",      _A3(A_T,A_A,A_S10B), 00012, FX2)   /* XOR%I         RT<-RA^I10 */
00223 APUOP(M_XORHI,              RI10,  0x228, "xorhi",      _A3(A_T,A_A,A_S10),  00012, FX2)   /* XOR%I         RT<-RA^I10 */
00224 APUOP(M_XORI,        RI10,  0x220, "xori",              _A3(A_T,A_A,A_S10),  00012, FX2)   /* XOR%I         RT<-RA^I10 */
00225 APUOP(M_AHI,         RI10,  0x0e8, "ahi",        _A3(A_T,A_A,A_S10),  00012, FX2)   /* Add%Immed     RT<-RA+I10 */
00226 APUOP(M_AI,          RI10,  0x0e0, "ai",         _A3(A_T,A_A,A_S10),  00012, FX2)   /* Add%Immed     RT<-RA+I10 */
00227 APUOP(M_SFHI,        RI10,  0x068, "sfhi",              _A3(A_T,A_A,A_S10),  00012, FX2)   /* SubFrom%Imm   RT<-I10-RA */
00228 APUOP(M_SFI,         RI10,  0x060, "sfi",        _A3(A_T,A_A,A_S10),  00012, FX2)   /* SubFrom%Imm   RT<-I10-RA */
00229 APUOP(M_CGTBI,              RI10,  0x270, "cgtbi",      _A3(A_T,A_A,A_S10B), 00012, FX2)   /* CGT%I         RT<-(RA>I10) */
00230 APUOP(M_CGTHI,              RI10,  0x268, "cgthi",      _A3(A_T,A_A,A_S10),  00012, FX2)   /* CGT%I         RT<-(RA>I10) */
00231 APUOP(M_CGTI,        RI10,  0x260, "cgti",              _A3(A_T,A_A,A_S10),  00012, FX2)   /* CGT%I         RT<-(RA>I10) */
00232 APUOP(M_CLGTBI,             RI10,  0x2f0, "clgtbi",     _A3(A_T,A_A,A_S10B), 00012, FX2)   /* CLGT%I        RT<-(RA>I10) */
00233 APUOP(M_CLGTHI,             RI10,  0x2e8, "clgthi",     _A3(A_T,A_A,A_S10),  00012, FX2)   /* CLGT%I        RT<-(RA>I10) */
00234 APUOP(M_CLGTI,              RI10,  0x2e0, "clgti",      _A3(A_T,A_A,A_S10),  00012, FX2)   /* CLGT%I        RT<-(RA>I10) */
00235 APUOP(M_CEQBI,              RI10,  0x3f0, "ceqbi",      _A3(A_T,A_A,A_S10B), 00012, FX2)   /* CEQ%I         RT<-(RA=I10) */
00236 APUOP(M_CEQHI,              RI10,  0x3e8, "ceqhi",      _A3(A_T,A_A,A_S10),  00012, FX2)   /* CEQ%I         RT<-(RA=I10) */
00237 APUOP(M_CEQI,        RI10,  0x3e0, "ceqi",              _A3(A_T,A_A,A_S10),  00012, FX2)   /* CEQ%I         RT<-(RA=I10) */
00238 APUOP(M_HGTI,        RI10,  0x278, "hgti",              _A3(A_T,A_A,A_S10),  00010, FX2)   /* HaltGTI       halt_if(RA>I10) */
00239 APUOP(M_HGTI2,              RI10,  0x278, "hgti",              _A2(A_A,A_S10),      00010, FX2)   /* HaltGTI       halt_if(RA>I10) */
00240 APUOP(M_HLGTI,              RI10,  0x2f8, "hlgti",      _A3(A_T,A_A,A_S10),  00010, FX2)   /* HaltLGTI      halt_if(RA>I10) */
00241 APUOP(M_HLGTI2,             RI10,  0x2f8, "hlgti",      _A2(A_A,A_S10),      00010, FX2)   /* HaltLGTI      halt_if(RA>I10) */
00242 APUOP(M_HEQI,        RI10,  0x3f8, "heqi",              _A3(A_T,A_A,A_S10),  00010, FX2)   /* HaltEQImm     halt_if(RA=I10) */
00243 APUOP(M_HEQI2,              RI10,  0x3f8, "heqi",              _A2(A_A,A_S10),      00010, FX2)   /* HaltEQImm     halt_if(RA=I10) */
00244 APUOP(M_MPYI,        RI10,  0x3a0, "mpyi",              _A3(A_T,A_A,A_S10),  00012, FP7)   /* MPYI          RT<-RA*I10 */
00245 APUOP(M_MPYUI,              RI10,  0x3a8, "mpyui",      _A3(A_T,A_A,A_S10),  00012, FP7)   /* MPYUI         RT<-RA*I10 */
00246 APUOP(M_CFLTS,              RI8,   0x3b0, "cflts",      _A3(A_T,A_A,A_U7A),  00012, FP7)   /* CFLTS         RT<-int(RA,I8) */
00247 APUOP(M_CFLTU,              RI8,   0x3b2, "cfltu",      _A3(A_T,A_A,A_U7A),  00012, FP7)   /* CFLTU         RT<-int(RA,I8) */
00248 APUOP(M_CSFLT,              RI8,   0x3b4, "csflt",      _A3(A_T,A_A,A_U7B),  00012, FP7)   /* CSFLT         RT<-flt(RA,I8) */
00249 APUOP(M_CUFLT,              RI8,   0x3b6, "cuflt",      _A3(A_T,A_A,A_U7B),  00012, FP7)   /* CUFLT         RT<-flt(RA,I8) */
00250 APUOP(M_FESD,        RR,    0x3b8, "fesd",              _A2(A_T,A_A), 00012, FPD)   /* FESD          RT<-double(RA) */
00251 APUOP(M_FRDS,        RR,    0x3b9, "frds",              _A2(A_T,A_A), 00012, FPD)   /* FRDS          RT<-single(RA) */
00252 APUOP(M_FSCRRD,             RR,    0x398, "fscrrd",     _A1(A_T),            00002, FPD)   /* FSCRRD        RT<-FP_status */
00253 APUOP(M_FSCRWR,             RR,    0x3ba, "fscrwr",     _A2(A_T,A_A), 00010, FP7)   /* FSCRWR        FP_status<-RA */
00254 APUOP(M_FSCRWR2,     RR,    0x3ba, "fscrwr",     _A1(A_A),            00010, FP7)   /* FSCRWR        FP_status<-RA */
00255 APUOP(M_CLZ,         RR,    0x2a5, "clz",        _A2(A_T,A_A), 00012, FX2)   /* CLZ           RT<-clz(RA) */
00256 APUOP(M_CNTB,        RR,    0x2b4, "cntb",              _A2(A_T,A_A), 00012, FXB)   /* CNT           RT<-pop(RA) */
00257 APUOP(M_XSBH,        RR,    0x2b6, "xsbh",              _A2(A_T,A_A), 00012, FX2)   /* eXtSignBtoH   RT<-sign_ext(RA) */
00258 APUOP(M_XSHW,        RR,    0x2ae, "xshw",              _A2(A_T,A_A), 00012, FX2)   /* eXtSignHtoW   RT<-sign_ext(RA) */
00259 APUOP(M_XSWD,        RR,    0x2a6, "xswd",              _A2(A_T,A_A), 00012, FX2)   /* eXtSignWtoD   RT<-sign_ext(RA) */
00260 APUOP(M_ROTI,        RI7,   0x078, "roti",              _A3(A_T,A_A,A_S7N),  00012, FX3)   /* ROT%I         RT<-RA<<<I7 */
00261 APUOP(M_ROTMI,              RI7,   0x079, "rotmi",      _A3(A_T,A_A,A_S7),   00012, FX3)   /* ROT%MI        RT<-RA<<I7 */
00262 APUOP(M_ROTMAI,             RI7,   0x07a, "rotmai",     _A3(A_T,A_A,A_S7),   00012, FX3)   /* ROTMA%I       RT<-RA<<I7 */
00263 APUOP(M_SHLI,        RI7,   0x07b, "shli",              _A3(A_T,A_A,A_U6),   00012, FX3)   /* SHL%I         RT<-RA<<I7 */
00264 APUOP(M_ROTHI,              RI7,   0x07c, "rothi",      _A3(A_T,A_A,A_S7N),  00012, FX3)   /* ROT%I         RT<-RA<<<I7 */
00265 APUOP(M_ROTHMI,             RI7,   0x07d, "rothmi",     _A3(A_T,A_A,A_S6),   00012, FX3)   /* ROT%MI        RT<-RA<<I7 */
00266 APUOP(M_ROTMAHI,     RI7,   0x07e, "rotmahi",    _A3(A_T,A_A,A_S6),   00012, FX3)   /* ROTMA%I       RT<-RA<<I7 */
00267 APUOP(M_SHLHI,              RI7,   0x07f, "shlhi",      _A3(A_T,A_A,A_U5),   00012, FX3)   /* SHL%I         RT<-RA<<I7 */
00268 APUOP(M_A,           RR,    0x0c0, "a",          _A3(A_T,A_A,A_B),           00112, FX2)   /* Add%          RT<-RA+RB */
00269 APUOP(M_AH,          RR,    0x0c8, "ah",         _A3(A_T,A_A,A_B),           00112, FX2)   /* Add%          RT<-RA+RB */
00270 APUOP(M_SF,          RR,    0x040, "sf",         _A3(A_T,A_A,A_B),           00112, FX2)   /* SubFrom%      RT<-RB-RA */
00271 APUOP(M_SFH,         RR,    0x048, "sfh",        _A3(A_T,A_A,A_B),           00112, FX2)   /* SubFrom%      RT<-RB-RA */
00272 APUOP(M_CGT,         RR,    0x240, "cgt",        _A3(A_T,A_A,A_B),           00112, FX2)   /* CGT%          RT<-(RA>RB) */
00273 APUOP(M_CGTB,        RR,    0x250, "cgtb",              _A3(A_T,A_A,A_B),           00112, FX2)   /* CGT%          RT<-(RA>RB) */
00274 APUOP(M_CGTH,        RR,    0x248, "cgth",              _A3(A_T,A_A,A_B),           00112, FX2)   /* CGT%          RT<-(RA>RB) */
00275 APUOP(M_CLGT,        RR,    0x2c0, "clgt",              _A3(A_T,A_A,A_B),           00112, FX2)   /* CLGT%         RT<-(RA>RB) */
00276 APUOP(M_CLGTB,              RR,    0x2d0, "clgtb",      _A3(A_T,A_A,A_B),           00112, FX2)   /* CLGT%         RT<-(RA>RB) */
00277 APUOP(M_CLGTH,              RR,    0x2c8, "clgth",      _A3(A_T,A_A,A_B),           00112, FX2)   /* CLGT%         RT<-(RA>RB) */
00278 APUOP(M_CEQ,         RR,    0x3c0, "ceq",        _A3(A_T,A_A,A_B),           00112, FX2)   /* CEQ%          RT<-(RA=RB) */
00279 APUOP(M_CEQB,        RR,    0x3d0, "ceqb",              _A3(A_T,A_A,A_B),           00112, FX2)   /* CEQ%          RT<-(RA=RB) */
00280 APUOP(M_CEQH,        RR,    0x3c8, "ceqh",              _A3(A_T,A_A,A_B),           00112, FX2)   /* CEQ%          RT<-(RA=RB) */
00281 APUOP(M_HGT,         RR,    0x258, "hgt",        _A3(A_T,A_A,A_B),           00110, FX2)   /* HaltGT        halt_if(RA>RB) */
00282 APUOP(M_HGT2,        RR,    0x258, "hgt",        _A2(A_A,A_B), 00110, FX2)   /* HaltGT        halt_if(RA>RB) */
00283 APUOP(M_HLGT,        RR,    0x2d8, "hlgt",              _A3(A_T,A_A,A_B),           00110, FX2)   /* HaltLGT       halt_if(RA>RB) */
00284 APUOP(M_HLGT2,              RR,    0x2d8, "hlgt",              _A2(A_A,A_B), 00110, FX2)   /* HaltLGT       halt_if(RA>RB) */
00285 APUOP(M_HEQ,         RR,    0x3d8, "heq",        _A3(A_T,A_A,A_B),           00110, FX2)   /* HaltEQ        halt_if(RA=RB) */
00286 APUOP(M_HEQ2,        RR,    0x3d8, "heq",        _A2(A_A,A_B), 00110, FX2)   /* HaltEQ        halt_if(RA=RB) */
00287 APUOP(M_FCEQ,        RR,    0x3c2, "fceq",              _A3(A_T,A_A,A_B),           00112, FX2)   /* FCEQ          RT<-(RA=RB) */
00288 APUOP(M_FCMEQ,              RR,    0x3ca, "fcmeq",      _A3(A_T,A_A,A_B),           00112, FX2)   /* FCMEQ         RT<-(|RA|=|RB|) */
00289 APUOP(M_FCGT,        RR,    0x2c2, "fcgt",              _A3(A_T,A_A,A_B),           00112, FX2)   /* FCGT          RT<-(RA<RB) */
00290 APUOP(M_FCMGT,              RR,    0x2ca, "fcmgt",      _A3(A_T,A_A,A_B),           00112, FX2)   /* FCMGT         RT<-(|RA|<|RB|) */
00291 APUOP(M_AND,         RR,    0x0c1, "and",        _A3(A_T,A_A,A_B),           00112, FX2)   /* AND           RT<-RA&RB */
00292 APUOP(M_NAND,        RR,    0x0c9, "nand",              _A3(A_T,A_A,A_B),           00112, FX2)   /* NAND          RT<-!(RA&RB) */
00293 APUOP(M_OR,          RR,    0x041, "or",         _A3(A_T,A_A,A_B),           00112, FX2)   /* OR            RT<-RA|RB */
00294 APUOP(M_NOR,         RR,    0x049, "nor",        _A3(A_T,A_A,A_B),           00112, FX2)   /* NOR           RT<-!(RA&RB) */
00295 APUOP(M_XOR,         RR,    0x241, "xor",        _A3(A_T,A_A,A_B),           00112, FX2)   /* XOR           RT<-RA^RB */
00296 APUOP(M_EQV,         RR,    0x249, "eqv",        _A3(A_T,A_A,A_B),           00112, FX2)   /* EQuiValent    RT<-!(RA^RB) */
00297 APUOP(M_ANDC,        RR,    0x2c1, "andc",              _A3(A_T,A_A,A_B),           00112, FX2)   /* ANDComplement RT<-RA&!RB */
00298 APUOP(M_ORC,         RR,    0x2c9, "orc",        _A3(A_T,A_A,A_B),           00112, FX2)   /* ORComplement  RT<-RA|!RB */
00299 APUOP(M_ABSDB,              RR,    0x053, "absdb",      _A3(A_T,A_A,A_B),           00112, FXB)   /* ABSoluteDiff  RT<-|RA-RB| */
00300 APUOP(M_AVGB,        RR,    0x0d3, "avgb",              _A3(A_T,A_A,A_B),           00112, FXB)   /* AVG%          RT<-(RA+RB+1)/2 */
00301 APUOP(M_SUMB,        RR,    0x253, "sumb",              _A3(A_T,A_A,A_B),           00112, FXB)   /* SUM%          RT<-f(RA,RB) */
00302 APUOP(M_DFA,         RR,    0x2cc, "dfa",        _A3(A_T,A_A,A_B),           00112, FPD)   /* DFAdd         RT<-RA+RB */
00303 APUOP(M_DFM,         RR,    0x2ce, "dfm",        _A3(A_T,A_A,A_B),           00112, FPD)   /* DFMul         RT<-RA*RB */
00304 APUOP(M_DFS,         RR,    0x2cd, "dfs",        _A3(A_T,A_A,A_B),           00112, FPD)   /* DFSub         RT<-RA-RB */
00305 APUOP(M_FA,          RR,    0x2c4, "fa",         _A3(A_T,A_A,A_B),           00112, FP6)   /* FAdd          RT<-RA+RB */
00306 APUOP(M_FM,          RR,    0x2c6, "fm",         _A3(A_T,A_A,A_B),           00112, FP6)   /* FMul          RT<-RA*RB */
00307 APUOP(M_FS,          RR,    0x2c5, "fs",         _A3(A_T,A_A,A_B),           00112, FP6)   /* FSub          RT<-RA-RB */
00308 APUOP(M_MPY,         RR,    0x3c4, "mpy",        _A3(A_T,A_A,A_B),           00112, FP7)   /* MPY           RT<-RA*RB */
00309 APUOP(M_MPYH,        RR,    0x3c5, "mpyh",              _A3(A_T,A_A,A_B),           00112, FP7)   /* MPYH          RT<-(RAh*RB)<<16 */
00310 APUOP(M_MPYHH,              RR,    0x3c6, "mpyhh",      _A3(A_T,A_A,A_B),           00112, FP7)   /* MPYHH         RT<-RAh*RBh */
00311 APUOP(M_MPYHHU,             RR,    0x3ce, "mpyhhu",     _A3(A_T,A_A,A_B),           00112, FP7)   /* MPYHHU        RT<-RAh*RBh */
00312 APUOP(M_MPYS,        RR,    0x3c7, "mpys",              _A3(A_T,A_A,A_B),           00112, FP7)   /* MPYS          RT<-(RA*RB)>>16 */
00313 APUOP(M_MPYU,        RR,    0x3cc, "mpyu",              _A3(A_T,A_A,A_B),           00112, FP7)   /* MPYU          RT<-RA*RB */
00314 APUOP(M_FI,          RR,    0x3d4, "fi",         _A3(A_T,A_A,A_B),           00112, FP7)   /* FInterpolate  RT<-f(RA,RB) */
00315 APUOP(M_ROT,         RR,    0x058, "rot",        _A3(A_T,A_A,A_B),           00112, FX3)   /* ROT%          RT<-RA<<<RB */
00316 APUOP(M_ROTM,        RR,    0x059, "rotm",              _A3(A_T,A_A,A_B),           00112, FX3)   /* ROT%M         RT<-RA<<Rb */
00317 APUOP(M_ROTMA,              RR,    0x05a, "rotma",      _A3(A_T,A_A,A_B),           00112, FX3)   /* ROTMA%        RT<-RA<<Rb */
00318 APUOP(M_SHL,         RR,    0x05b, "shl",        _A3(A_T,A_A,A_B),           00112, FX3)   /* SHL%          RT<-RA<<Rb */
00319 APUOP(M_ROTH,        RR,    0x05c, "roth",              _A3(A_T,A_A,A_B),           00112, FX3)   /* ROT%          RT<-RA<<<RB */
00320 APUOP(M_ROTHM,              RR,    0x05d, "rothm",      _A3(A_T,A_A,A_B),           00112, FX3)   /* ROT%M         RT<-RA<<Rb */
00321 APUOP(M_ROTMAH,             RR,    0x05e, "rotmah",     _A3(A_T,A_A,A_B),           00112, FX3)   /* ROTMA%        RT<-RA<<Rb */
00322 APUOP(M_SHLH,        RR,    0x05f, "shlh",              _A3(A_T,A_A,A_B),           00112, FX3)   /* SHL%          RT<-RA<<Rb */
00323 APUOP(M_MPYHHA,             RR,    0x346, "mpyhha",     _A3(A_T,A_A,A_B),           00113, FP7)   /* MPYHHA        RT<-RAh*RBh+RT */
00324 APUOP(M_MPYHHAU,     RR,    0x34e, "mpyhhau",    _A3(A_T,A_A,A_B),           00113, FP7)   /* MPYHHAU       RT<-RAh*RBh+RT */
00325 APUOP(M_DFMA,        RR,    0x35c, "dfma",              _A3(A_T,A_A,A_B),           00113, FPD)   /* DFMAdd        RT<-RT+RA*RB */
00326 APUOP(M_DFMS,        RR,    0x35d, "dfms",              _A3(A_T,A_A,A_B),           00113, FPD)   /* DFMSub        RT<-RA*RB-RT */
00327 APUOP(M_DFNMS,              RR,    0x35e, "dfnms",      _A3(A_T,A_A,A_B),           00113, FPD)   /* DFNMSub       RT<-RT-RA*RB */
00328 APUOP(M_DFNMA,              RR,    0x35f, "dfnma",      _A3(A_T,A_A,A_B),           00113, FPD)   /* DFNMAdd       RT<-(-RT)-RA*RB */
00329 APUOP(M_FMA,         RRR,   0x700, "fma",        _A4(A_C,A_A,A_B,A_T),       02111, FP6)   /* FMAdd         RC<-RT+RA*RB */
00330 APUOP(M_FMS,         RRR,   0x780, "fms",        _A4(A_C,A_A,A_B,A_T),       02111, FP6)   /* FMSub         RC<-RA*RB-RT */
00331 APUOP(M_FNMS,        RRR,   0x680, "fnms",              _A4(A_C,A_A,A_B,A_T),       02111, FP6)   /* FNMSub        RC<-RT-RA*RB */
00332 APUOP(M_MPYA,        RRR,   0x600, "mpya",              _A4(A_C,A_A,A_B,A_T),       02111, FP7)   /* MPYA          RC<-RA*RB+RT */
00333 APUOP(M_SELB,        RRR,   0x400, "selb",              _A4(A_C,A_A,A_B,A_T),       02111, FX2)   /* SELectBits    RC<-RA&RT|RB&!RT */
00334 /* for system function call, this uses op-code of mtspr */
00335 APUOP(M_SYSCALL,     RI7,    0x10c,       "syscall",      _A3(A_T,A_A,A_S7N),       00002, SPR)        /* System Call */
00336 /*
00337 pseudo instruction:
00338 system call
00339 value of I9   operation
00340 0      halt
00341 1             rt[0] = open(MEM[ra[0]],    ra[1])
00342 2             rt[0] = close(ra[0])
00343 3             rt[0] = read(ra[0],  MEM[ra[1]],   ra[2])
00344 4             rt[0] = write(ra[0], MEM[ra[1]],   ra[2])
00345 5             printf(MEM[ra[0]],   ra[1], ra[2], ra[3])
00346 42            rt[0] = clock()
00347 52            rt[0] = lseek(ra0,   ra1,   ra2)
00348 
00349 */
00350 
00351 
00352 /* new multiprecision add/sub */
00353 APUOP(M_ADDX,        RR,    0x340, "addx",              _A3(A_T,A_A,A_B),           00113,        FX2)   /* Add_eXtended  RT<-RA+RB+RT */
00354 APUOP(M_CG,          RR,    0x0c2, "cg",         _A3(A_T,A_A,A_B),           00112,        FX2)   /* CarryGenerate RT<-cout(RA+RB) */
00355 APUOP(M_CGX,         RR,    0x342, "cgx",        _A3(A_T,A_A,A_B),           00113,        FX2)   /* CarryGen_eXtd RT<-cout(RA+RB+RT) */
00356 APUOP(M_SFX,         RR,    0x341, "sfx",        _A3(A_T,A_A,A_B),           00113,        FX2)   /* Add_eXtended  RT<-RA+RB+RT */
00357 APUOP(M_BG,          RR,    0x042, "bg",         _A3(A_T,A_A,A_B),           00112,        FX2)   /* CarryGenerate RT<-cout(RA+RB) */
00358 APUOP(M_BGX,         RR,    0x343, "bgx",        _A3(A_T,A_A,A_B),           00113,        FX2)   /* CarryGen_eXtd RT<-cout(RA+RB+RT) */
00359 
00360 /*
00361 
00362 The following ops are a subset of above except with feature bits set.
00363 Feature bits are bits 11-17 of the instruction:
00364 
00365   11 - C & P feature bit
00366   12 - disable interrupts
00367   13 - enable interrupts
00368 
00369 */
00370 APUOPFB(M_BID,              RR,    0x1a8, 0x20,  "bid",        _A1(A_A),            00010, BR)    /* BI            IP<-RA */
00371 APUOPFB(M_BIE,              RR,    0x1a8, 0x10,  "bie",        _A1(A_A),            00010, BR)    /* BI            IP<-RA */
00372 APUOPFB(M_BISLD,     RR,    0x1a9, 0x20,  "bisld",      _A2(A_T,A_A), 00012, BR)    /* BISL          RT,IP<-IP,RA */
00373 APUOPFB(M_BISLE,     RR,    0x1a9, 0x10,  "bisle",      _A2(A_T,A_A), 00012, BR)    /* BISL          RT,IP<-IP,RA */
00374 APUOPFB(M_IRETD,     RR,    0x1aa, 0x20,  "iretd",      _A1(A_A),     00010, BR)    /* IRET          IP<-SRR0 */
00375 APUOPFB(M_IRETD2,    RR,    0x1aa, 0x20,  "iretd",      _A0(),        00010, BR)    /* IRET          IP<-SRR0 */
00376 APUOPFB(M_IRETE,     RR,    0x1aa, 0x10,  "irete",      _A1(A_A),     00010, BR)    /* IRET          IP<-SRR0 */
00377 APUOPFB(M_IRETE2,    RR,    0x1aa, 0x10,  "irete",      _A0(),        00010, BR)    /* IRET          IP<-SRR0 */
00378 APUOPFB(M_BISLEDD,   RR,    0x1ab, 0x20,  "bisledd",    _A2(A_T,A_A), 00012, BR)    /* BISLED        RT,IP<-IP,RA_if(ext) */
00379 APUOPFB(M_BISLEDE,   RR,    0x1ab, 0x10,  "bislede",    _A2(A_T,A_A), 00012, BR)    /* BISLED        RT,IP<-IP,RA_if(ext) */
00380 APUOPFB(M_BIHNZD,    RR,    0x12b, 0x20,  "bihnzd",     _A2(A_T,A_A), 00011, BR)    /* BIHNZ         IP<-RA_if(RT) */
00381 APUOPFB(M_BIHNZE,    RR,    0x12b, 0x10,  "bihnze",     _A2(A_T,A_A), 00011, BR)    /* BIHNZ         IP<-RA_if(RT) */
00382 APUOPFB(M_BIHZD,     RR,    0x12a, 0x20,  "bihzd",      _A2(A_T,A_A), 00011, BR)    /* BIHZ          IP<-RA_if(RT) */
00383 APUOPFB(M_BIHZE,     RR,    0x12a, 0x10,  "bihze",      _A2(A_T,A_A), 00011, BR)    /* BIHZ          IP<-RA_if(RT) */
00384 APUOPFB(M_BINZD,     RR,    0x129, 0x20,  "binzd",      _A2(A_T,A_A), 00011, BR)    /* BINZ          IP<-RA_if(RT) */
00385 APUOPFB(M_BINZE,     RR,    0x129, 0x10,  "binze",      _A2(A_T,A_A), 00011, BR)    /* BINZ          IP<-RA_if(RT) */
00386 APUOPFB(M_BIZD,             RR,    0x128, 0x20,  "bizd",              _A2(A_T,A_A), 00011, BR)    /* BIZ           IP<-RA_if(RT) */
00387 APUOPFB(M_BIZE,             RR,    0x128, 0x10,  "bize",              _A2(A_T,A_A), 00011, BR)    /* BIZ           IP<-RA_if(RT) */
00388 APUOPFB(M_SYNCC,     RR,    0x002, 0x40,  "syncc",      _A0(),        00000, BR)    /* SYNCC          flush_pipe */
00389 APUOPFB(M_HBRP,             LBTI,  0x1ac, 0x40,  "hbrp",              _A0(),         00010,       LS)    /* HBR           BTB[B9]<-M[Ra] */
00390 
00391 /* Synonyms required by the AS manual. */
00392 APUOP(M_LR,          RI10,  0x020, "lr",         _A2(A_T,A_A), 00012, FX2)   /* OR%I          RT<-RA|I10 */
00393 APUOP(M_BIHT,        RR,    0x12b, "biht",       _A2(A_T,A_A), 00011, BR)    /* BIHNZ         IP<-RA_if(RT) */
00394 APUOP(M_BIHF,        RR,    0x12a, "bihf",              _A2(A_T,A_A), 00011, BR)    /* BIHZ          IP<-RA_if(RT) */
00395 APUOP(M_BIT,         RR,    0x129, "bit",        _A2(A_T,A_A), 00011, BR)    /* BINZ          IP<-RA_if(RT) */
00396 APUOP(M_BIF,         RR,    0x128, "bif",        _A2(A_T,A_A), 00011, BR)    /* BIZ           IP<-RA_if(RT) */
00397 APUOPFB(M_BIHTD,     RR,    0x12b, 0x20,  "bihtd",      _A2(A_T,A_A), 00011, BR)    /* BIHNF         IP<-RA_if(RT) */
00398 APUOPFB(M_BIHTE,     RR,    0x12b, 0x10,  "bihte",      _A2(A_T,A_A), 00011, BR)    /* BIHNF         IP<-RA_if(RT) */
00399 APUOPFB(M_BIHFD,     RR,    0x12a, 0x20,  "bihfd",      _A2(A_T,A_A), 00011, BR)    /* BIHZ          IP<-RA_if(RT) */
00400 APUOPFB(M_BIHFE,     RR,    0x12a, 0x10,  "bihfe",      _A2(A_T,A_A), 00011, BR)    /* BIHZ          IP<-RA_if(RT) */
00401 APUOPFB(M_BITD,      RR,    0x129, 0x20,  "bitd",       _A2(A_T,A_A), 00011, BR)    /* BINF          IP<-RA_if(RT) */
00402 APUOPFB(M_BITE,      RR,    0x129, 0x10,  "bite",       _A2(A_T,A_A), 00011, BR)    /* BINF          IP<-RA_if(RT) */
00403 APUOPFB(M_BIFD,             RR,    0x128, 0x20,  "bifd",              _A2(A_T,A_A), 00011, BR)    /* BIZ           IP<-RA_if(RT) */
00404 APUOPFB(M_BIFE,             RR,    0x128, 0x10,  "bife",              _A2(A_T,A_A), 00011, BR)    /* BIZ           IP<-RA_if(RT) */
00405 
00406 /* New soma double-float insns.  */
00407 APUOP(M_DFCEQ,              RR,    0x3c3, "dfceq",      _A3(A_T,A_A,A_B),    00112, FX2)   /* DFCEQ         RT<-(RA=RB) */
00408 APUOP(M_DFCMEQ,             RR,    0x3cb, "dfcmeq",     _A3(A_T,A_A,A_B),    00112, FX2)   /* DFCMEQ        RT<-(|RA|=|RB|) */
00409 APUOP(M_DFCGT,              RR,    0x2c3, "dfcgt",      _A3(A_T,A_A,A_B),    00112, FX2)   /* DFCGT         RT<-(RA>RB) */
00410 APUOP(M_DFCMGT,             RR,    0x2cb, "dfcmgt",     _A3(A_T,A_A,A_B),    00112, FX2)   /* DFCMGT        RT<-(|RA|>|RB|) */
00411 APUOP(M_DFTSV,              RI7,   0x3bf, "dftsv",      _A3(A_T,A_A,A_U7),   00012, FX2)   /* DFTSV         RT<-testspecial(RA,I7) */
00412 
00413 #undef _A0
00414 #undef _A1
00415 #undef _A2
00416 #undef _A3
00417 #undef _A4