Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /* SPU ELF support for BFD.
0003 
0004    Copyright 2006 Free Software Foundation, Inc.
0005 
0006    This file is part of BFD, the Binary File Descriptor library.
0007 
0008  */
0009 
0010 /* SPU Opcode Table
0011 
0012 -=-=-= FORMAT =-=-=-
0013                                                                                                  
0014        +----+-------+-------+-------+-------+              +------------+-------+-------+-------+
0015 RRR    | op |  RC   |  RB   |  RA   |  RT   |       RI7    | op         |  I7   |  RA   |  RT   |
0016        +----+-------+-------+-------+-------+              +------------+-------+-------+-------+
0017         0  3       1       1       2       3                0          1       1       2       3 
0018                    0       7       4       1                           0       7       4       1 
0019 
0020        +-----------+--------+-------+-------+              +---------+----------+-------+-------+
0021 RI8    | op        |   I8   |  RA   |  RT   |       RI10   | op      |   I10    |  RA   |  RT   |
0022        +-----------+--------+-------+-------+              +---------+----------+-------+-------+
0023         0         9        1       2       3                0       7          1       2       3 
0024                            7       4       1                                   7       4       1 
0025 
0026        +----------+-----------------+-------+              +--------+-------------------+-------+
0027 RI16   | op       |       I16       |  RT   |       RI18   | op     |       I18         |  RT   |
0028        +----------+-----------------+-------+              +--------+-------------------+-------+
0029         0        8                 2       3                0      6                   2       3 
0030                                    4       1                                           4       1 
0031 
0032        +------------+-------+-------+-------+              +-------+--+-----------------+-------+
0033 RR     | op         |  RB   |  RA   |  RT   |       LBT    | op    |RO|       I16       |  RO   |
0034        +------------+-------+-------+-------+              +-------+--+-----------------+-------+
0035         0          1       1       2       3                0     6  8                 2       3 
0036                    0       7       4       1                                           4       1 
0037 
0038                                    +------------+----+--+-------+-------+
0039                             LBTI   | op         | // |RO|  RA   |  RO   |
0040                                    +------------+----+--+-------+-------+
0041                                     0          1    1  1       2       3
0042                                                0    5  7       4       1
0043 
0044 -=-=-= OPCODE =-=-=-
0045 
0046 OPCODE field specifies the most significant 11bit of the instruction. Some formats don't have 11bits for opcode field, and in this
0047 case, bit field other than op are defined as 0s. For example, opcode of fma instruction which is RRR format is defined as 0x700,
0048 since 0x700 -> 11'b11100000000, this means opcode is 4'b1110, and other 7bits are defined as 7'b0000000.
0049 
0050 -=-=-= ASM_FORMAT =-=-=-
0051 
0052 RRR category                        RI7 category                               
0053     ASM_RRR     mnemonic RC, RA, RB, RT             ASM_RI4         mnemonic RT, RA, I4
0054                                     ASM_RI7         mnemonic RT, RA, I7
0055 
0056 RI8 category                        RI10 category                               
0057     ASM_RUI8    mnemonic RT, RA, UI8                ASM_AI10        mnemonic RA, I10    
0058                                     ASM_RI10        mnemonic RT, RA, R10
0059                                     ASM_RI10IDX     mnemonic RT, I10(RA)
0060 
0061 RI16 category                       RI18 category                           
0062     ASM_I16W    mnemonic I16W                   ASM_RI18        mnemonic RT, I18
0063     ASM_RI16    mnemonic RT, I16
0064     ASM_RI16W   mnemonic RT, I16W
0065 
0066 RR category                     LBT category                                    
0067     ASM_MFSPR   mnemonic RT, SA                 ASM_LBT         mnemonic brinst, brtarg 
0068     ASM_MTSPR   mnemonic SA, RT                                                         
0069     ASM_NOOP    mnemonic            LBTI category                                   
0070     ASM_RA      mnemonic RA                 ASM_LBTI        mnemonic brinst, RA     
0071     ASM_RAB     mnemonic RA, RB
0072     ASM_RDCH    mnemonic RT, CA
0073     ASM_RR      mnemonic RT, RA, RB
0074     ASM_RT      mnemonic RT
0075     ASM_RTA     mnemonic RT, RA
0076     ASM_WRCH    mnemonic CA, RT
0077 
0078 Note that RRR instructions have the names for RC and RT reversed from
0079 what's in the ISA, in order to put RT in the same position it appears
0080 for other formats.
0081 
0082 -=-=-= DEPENDENCY =-=-=-
0083 
0084 DEPENDENCY filed consists of 5 digits. This represents which register is used as source and which register is used as target.
0085 The first(most significant) digit is always 0. Then it is followd by RC, RB, RA and RT digits.
0086 If the digit is 0, this means the corresponding register is not used in the instruction.
0087 If the digit is 1, this means the corresponding register is used as a source in the instruction.
0088 If the digit is 2, this means the corresponding register is used as a target in the instruction.
0089 If the digit is 3, this means the corresponding register is used as both source and target in the instruction.
0090 For example, fms instruction has 00113 as the DEPENDENCY field. This means RC is not used in this operation, RB and RA are
0091 used as sources and RT is the target.
0092 
0093 -=-=-= PIPE =-=-=-
0094 
0095 This field shows which execution pipe is used for the instruction
0096 
0097 pipe0 execution pipelines:
0098     FP6 SP floating pipeline
0099     FP7 integer operations executed in SP floating pipeline
0100     FPD DP floating pipeline
0101     FX2 FXU pipeline
0102     FX3 Rotate/Shift pipeline
0103     FXB Byte pipeline
0104     NOP No pipeline
0105 
0106 pipe1 execution pipelines:
0107     BR  Branch pipeline
0108     LNOP    No pipeline
0109     LS  Load/Store pipeline
0110     SHUF    Shuffle pipeline
0111     SPR SPR/CH pipeline
0112 
0113 */
0114 
0115 #define _A0() {0}
0116 #define _A1(a) {1,a}
0117 #define _A2(a,b) {2,a,b}
0118 #define _A3(a,b,c) {3,a,b,c}
0119 #define _A4(a,b,c,d) {4,a,b,c,d}
0120 
0121 /*    TAG       FORMAT  OPCODE  MNEMONIC    ASM_FORMAT  DEPENDENCY  PIPE    COMMENT             */
0122 /*                                  0[RC][RB][RA][RT]                   */
0123 /*                                  1:src, 2:target                     */
0124 
0125 APUOP(M_BR,     RI16,   0x190,  "br",       _A1(A_R18), 00000,  BR) /* BRel          IP<-IP+I16 */
0126 APUOP(M_BRSL,       RI16,   0x198,  "brsl",     _A2(A_T,A_R18), 00002,  BR) /* BRelSetLink   RT,IP<-IP,IP+I16 */
0127 APUOP(M_BRA,        RI16,   0x180,  "bra",      _A1(A_S18), 00000,  BR) /* BRAbs         IP<-I16 */
0128 APUOP(M_BRASL,      RI16,   0x188,  "brasl",    _A2(A_T,A_S18), 00002,  BR) /* BRAbsSetLink  RT,IP<-IP,I16 */
0129 APUOP(M_FSMBI,      RI16,   0x194,  "fsmbi",    _A2(A_T,A_X16), 00002,  SHUF)   /* FormSelMask%I RT<-fsm(I16) */
0130 APUOP(M_LQA,        RI16,   0x184,  "lqa",      _A2(A_T,A_S18), 00002,  LS) /* LoadQAbs      RT<-M[I16] */
0131 APUOP(M_LQR,        RI16,   0x19C,  "lqr",      _A2(A_T,A_R18), 00002,  LS) /* LoadQRel      RT<-M[IP+I16] */
0132 APUOP(M_STOP,       RR, 0x000,  "stop",     _A0(),      00000,  BR) /* STOP          stop */
0133 APUOP(M_STOP2,      RR, 0x000,  "stop",     _A1(A_U14), 00000,  BR) /* STOP          stop */
0134 APUOP(M_STOPD,      RR, 0x140,  "stopd",    _A3(A_T,A_A,A_B),         00111,    BR) /* STOPD         stop (with register dependencies) */
0135 APUOP(M_LNOP,       RR, 0x001,  "lnop",     _A0(),      00000,  LNOP)   /* LNOP          no_operation */
0136 APUOP(M_SYNC,       RR, 0x002,  "sync",     _A0(),      00000,  BR) /* SYNC          flush_pipe */
0137 APUOP(M_DSYNC,      RR, 0x003,  "dsync",    _A0(),      00000,  BR) /* DSYNC         flush_store_queue */
0138 APUOP(M_MFSPR,      RR, 0x00c,  "mfspr",    _A2(A_T,A_S),   00002,  SPR)    /* MFSPR         RT<-SA */
0139 APUOP(M_RDCH,       RR, 0x00d,  "rdch",     _A2(A_T,A_H),   00002,  SPR)    /* ReaDCHannel   RT<-CA:data */
0140 APUOP(M_RCHCNT,     RR, 0x00f,  "rchcnt",   _A2(A_T,A_H),   00002,  SPR)    /* ReaDCHanCouNT RT<-CA:count */
0141 APUOP(M_HBRA,       LBT,    0x080,  "hbra",     _A2(A_S11,A_S18),   00000,  LS) /* HBRA          BTB[B9]<-M[I16] */
0142 APUOP(M_HBRR,       LBT,    0x090,  "hbrr",     _A2(A_S11,A_R18),   00000,  LS) /* HBRR          BTB[B9]<-M[IP+I16] */
0143 APUOP(M_BRZ,        RI16,   0x100,  "brz",      _A2(A_T,A_R18), 00001,  BR) /* BRZ           IP<-IP+I16_if(RT) */
0144 APUOP(M_BRNZ,       RI16,   0x108,  "brnz",     _A2(A_T,A_R18), 00001,  BR) /* BRNZ          IP<-IP+I16_if(RT) */
0145 APUOP(M_BRHZ,       RI16,   0x110,  "brhz",     _A2(A_T,A_R18), 00001,  BR) /* BRHZ          IP<-IP+I16_if(RT) */
0146 APUOP(M_BRHNZ,      RI16,   0x118,  "brhnz",    _A2(A_T,A_R18), 00001,  BR) /* BRHNZ         IP<-IP+I16_if(RT) */
0147 APUOP(M_STQA,       RI16,   0x104,  "stqa",     _A2(A_T,A_S18), 00001,  LS) /* SToreQAbs     M[I16]<-RT */
0148 APUOP(M_STQR,       RI16,   0x11C,  "stqr",     _A2(A_T,A_R18), 00001,  LS) /* SToreQRel     M[IP+I16]<-RT */
0149 APUOP(M_MTSPR,      RR, 0x10c,  "mtspr",    _A2(A_S,A_T),   00001,  SPR)    /* MTSPR         SA<-RT */
0150 APUOP(M_WRCH,       RR, 0x10d,  "wrch",     _A2(A_H,A_T),   00001,  SPR)    /* ChanWRite     CA<-RT */
0151 APUOP(M_LQD,        RI10,   0x1a0,  "lqd",      _A4(A_T,A_S14,A_P,A_A), 00012,  LS) /* LoadQDisp     RT<-M[Ra+I10] */
0152 APUOP(M_BI,     RR, 0x1a8,  "bi",       _A1(A_A),       00010,  BR) /* BI            IP<-RA */
0153 APUOP(M_BISL,       RR, 0x1a9,  "bisl",     _A2(A_T,A_A),   00012,  BR) /* BISL          RT,IP<-IP,RA */
0154 APUOP(M_IRET,       RR, 0x1aa,  "iret",         _A1(A_A),   00010,  BR) /* IRET          IP<-SRR0 */
0155 APUOP(M_IRET2,      RR, 0x1aa,  "iret",         _A0(),      00010,  BR) /* IRET          IP<-SRR0 */
0156 APUOP(M_BISLED,     RR, 0x1ab,  "bisled",   _A2(A_T,A_A),   00012,  BR) /* BISLED        RT,IP<-IP,RA_if(ext) */
0157 APUOP(M_HBR,        LBTI,   0x1ac,  "hbr",      _A2(A_S11I,A_A),    00010,  LS) /* HBR           BTB[B9]<-M[Ra] */
0158 APUOP(M_FREST,      RR, 0x1b8,  "frest",    _A2(A_T,A_A),   00012,  SHUF)   /* FREST         RT<-recip(RA) */
0159 APUOP(M_FRSQEST,    RR, 0x1b9,  "frsqest",  _A2(A_T,A_A),   00012,  SHUF)   /* FRSQEST       RT<-rsqrt(RA) */
0160 APUOP(M_FSM,        RR, 0x1b4,  "fsm",      _A2(A_T,A_A),   00012,  SHUF)   /* FormSelMask%  RT<-expand(Ra) */
0161 APUOP(M_FSMH,       RR, 0x1b5,  "fsmh",     _A2(A_T,A_A),   00012,  SHUF)   /* FormSelMask%  RT<-expand(Ra) */
0162 APUOP(M_FSMB,       RR, 0x1b6,  "fsmb",     _A2(A_T,A_A),   00012,  SHUF)   /* FormSelMask%  RT<-expand(Ra) */
0163 APUOP(M_GB,     RR, 0x1b0,  "gb",       _A2(A_T,A_A),   00012,  SHUF)   /* GatherBits%   RT<-gather(RA) */
0164 APUOP(M_GBH,        RR, 0x1b1,  "gbh",      _A2(A_T,A_A),   00012,  SHUF)   /* GatherBits%   RT<-gather(RA) */
0165 APUOP(M_GBB,        RR, 0x1b2,  "gbb",      _A2(A_T,A_A),   00012,  SHUF)   /* GatherBits%   RT<-gather(RA) */
0166 APUOP(M_CBD,        RI7,    0x1f4,  "cbd",      _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
0167 APUOP(M_CHD,        RI7,    0x1f5,  "chd",      _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
0168 APUOP(M_CWD,        RI7,    0x1f6,  "cwd",      _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
0169 APUOP(M_CDD,        RI7,    0x1f7,  "cdd",      _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
0170 APUOP(M_ROTQBII,    RI7,    0x1f8,  "rotqbii",  _A3(A_T,A_A,A_U3),  00012,  SHUF)   /* ROTQBII       RT<-RA<<<I7 */
0171 APUOP(M_ROTQBYI,    RI7,    0x1fc,  "rotqbyi",  _A3(A_T,A_A,A_S7N), 00012,  SHUF)   /* ROTQBYI       RT<-RA<<<(I7*8) */
0172 APUOP(M_ROTQMBII,   RI7,    0x1f9,  "rotqmbii", _A3(A_T,A_A,A_S3),  00012,  SHUF)   /* ROTQMBII      RT<-RA<<I7 */
0173 APUOP(M_ROTQMBYI,   RI7,    0x1fd,  "rotqmbyi", _A3(A_T,A_A,A_S6),  00012,  SHUF)   /* ROTQMBYI      RT<-RA<<I7 */
0174 APUOP(M_SHLQBII,    RI7,    0x1fb,  "shlqbii",  _A3(A_T,A_A,A_U3),  00012,  SHUF)   /* SHLQBII       RT<-RA<<I7 */
0175 APUOP(M_SHLQBYI,    RI7,    0x1ff,  "shlqbyi",  _A3(A_T,A_A,A_U5),  00012,  SHUF)   /* SHLQBYI       RT<-RA<<I7 */
0176 APUOP(M_STQD,       RI10,   0x120,  "stqd",     _A4(A_T,A_S14,A_P,A_A), 00011,  LS) /* SToreQDisp    M[Ra+I10]<-RT */
0177 APUOP(M_BIHNZ,      RR, 0x12b,  "bihnz",    _A2(A_T,A_A),   00011,  BR) /* BIHNZ         IP<-RA_if(RT) */
0178 APUOP(M_BIHZ,       RR, 0x12a,  "bihz",     _A2(A_T,A_A),   00011,  BR) /* BIHZ          IP<-RA_if(RT) */
0179 APUOP(M_BINZ,       RR, 0x129,  "binz",     _A2(A_T,A_A),   00011,  BR) /* BINZ          IP<-RA_if(RT) */
0180 APUOP(M_BIZ,        RR, 0x128,  "biz",      _A2(A_T,A_A),   00011,  BR) /* BIZ           IP<-RA_if(RT) */
0181 APUOP(M_CBX,        RR, 0x1d4,  "cbx",      _A3(A_T,A_A,A_B),       00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
0182 APUOP(M_CHX,        RR, 0x1d5,  "chx",      _A3(A_T,A_A,A_B),       00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
0183 APUOP(M_CWX,        RR, 0x1d6,  "cwx",      _A3(A_T,A_A,A_B),       00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
0184 APUOP(M_CDX,        RR, 0x1d7,  "cdx",      _A3(A_T,A_A,A_B),       00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
0185 APUOP(M_LQX,        RR, 0x1c4,  "lqx",      _A3(A_T,A_A,A_B),       00112,  LS) /* LoadQindeX    RT<-M[Ra+Rb] */
0186 APUOP(M_ROTQBI,     RR, 0x1d8,  "rotqbi",   _A3(A_T,A_A,A_B),       00112,  SHUF)   /* ROTQBI        RT<-RA<<<Rb */
0187 APUOP(M_ROTQMBI,    RR, 0x1d9,  "rotqmbi",  _A3(A_T,A_A,A_B),       00112,  SHUF)   /* ROTQMBI       RT<-RA<<Rb */
0188 APUOP(M_SHLQBI,     RR, 0x1db,  "shlqbi",   _A3(A_T,A_A,A_B),       00112,  SHUF)   /* SHLQBI        RT<-RA<<Rb */
0189 APUOP(M_ROTQBY,     RR, 0x1dc,  "rotqby",   _A3(A_T,A_A,A_B),       00112,      SHUF)   /* ROTQBY        RT<-RA<<<(Rb*8) */
0190 APUOP(M_ROTQMBY,    RR, 0x1dd,  "rotqmby",  _A3(A_T,A_A,A_B),       00112,      SHUF)   /* ROTQMBY       RT<-RA<<Rb */
0191 APUOP(M_SHLQBY,     RR, 0x1df,  "shlqby",   _A3(A_T,A_A,A_B),       00112,  SHUF)   /* SHLQBY        RT<-RA<<Rb */
0192 APUOP(M_ROTQBYBI,   RR, 0x1cc,  "rotqbybi", _A3(A_T,A_A,A_B),       00112,      SHUF)   /* ROTQBYBI      RT<-RA<<Rb */
0193 APUOP(M_ROTQMBYBI,  RR, 0x1cd,  "rotqmbybi",    _A3(A_T,A_A,A_B),       00112,      SHUF)   /* ROTQMBYBI     RT<-RA<<Rb */
0194 APUOP(M_SHLQBYBI,   RR, 0x1cf,  "shlqbybi", _A3(A_T,A_A,A_B),       00112,  SHUF)   /* SHLQBYBI      RT<-RA<<Rb */
0195 APUOP(M_STQX,       RR, 0x144,  "stqx",     _A3(A_T,A_A,A_B),       00111,  LS) /* SToreQindeX   M[Ra+Rb]<-RT */
0196 APUOP(M_SHUFB,      RRR,    0x580,  "shufb",    _A4(A_C,A_A,A_B,A_T),   02111,  SHUF)   /* SHUFfleBytes  RC<-f(RA,RB,RT) */
0197 APUOP(M_IL,     RI16,   0x204,  "il",       _A2(A_T,A_S16), 00002,  FX2)    /* ImmLoad       RT<-sxt(I16) */
0198 APUOP(M_ILH,        RI16,   0x20c,  "ilh",      _A2(A_T,A_X16), 00002,  FX2)    /* ImmLoadH      RT<-I16 */
0199 APUOP(M_ILHU,       RI16,   0x208,  "ilhu",     _A2(A_T,A_X16), 00002,  FX2)    /* ImmLoadHUpper RT<-I16<<16 */
0200 APUOP(M_ILA,        RI18,   0x210,  "ila",      _A2(A_T,A_U18), 00002,  FX2)    /* ImmLoadAddr   RT<-zxt(I18) */
0201 APUOP(M_NOP,        RR, 0x201,  "nop",      _A1(A_T),       00000,  NOP)    /* XNOP          no_operation */
0202 APUOP(M_NOP2,       RR, 0x201,  "nop",      _A0(),      00000,  NOP)    /* XNOP          no_operation */
0203 APUOP(M_IOHL,       RI16,   0x304,  "iohl",     _A2(A_T,A_X16), 00003,  FX2)    /* AddImmeXt     RT<-RT+sxt(I16) */
0204 APUOP(M_ANDBI,      RI10,   0x0b0,  "andbi",    _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* AND%I         RT<-RA&I10 */
0205 APUOP(M_ANDHI,      RI10,   0x0a8,  "andhi",    _A3(A_T,A_A,A_S10), 00012,  FX2)    /* AND%I         RT<-RA&I10 */
0206 APUOP(M_ANDI,       RI10,   0x0a0,  "andi",     _A3(A_T,A_A,A_S10), 00012,  FX2)    /* AND%I         RT<-RA&I10 */
0207 APUOP(M_ORBI,       RI10,   0x030,  "orbi",     _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* OR%I          RT<-RA|I10 */
0208 APUOP(M_ORHI,       RI10,   0x028,  "orhi",     _A3(A_T,A_A,A_S10), 00012,  FX2)    /* OR%I          RT<-RA|I10 */
0209 APUOP(M_ORI,        RI10,   0x020,  "ori",      _A3(A_T,A_A,A_S10), 00012,  FX2)    /* OR%I          RT<-RA|I10 */
0210 APUOP(M_ORX,        RR, 0x1f0,  "orx",      _A2(A_T,A_A),       00012,  BR) /* ORX           RT<-RA.w0|RA.w1|RA.w2|RA.w3 */
0211 APUOP(M_XORBI,      RI10,   0x230,  "xorbi",    _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* XOR%I         RT<-RA^I10 */
0212 APUOP(M_XORHI,      RI10,   0x228,  "xorhi",    _A3(A_T,A_A,A_S10), 00012,  FX2)    /* XOR%I         RT<-RA^I10 */
0213 APUOP(M_XORI,       RI10,   0x220,  "xori",     _A3(A_T,A_A,A_S10), 00012,  FX2)    /* XOR%I         RT<-RA^I10 */
0214 APUOP(M_AHI,        RI10,   0x0e8,  "ahi",      _A3(A_T,A_A,A_S10), 00012,  FX2)    /* Add%Immed     RT<-RA+I10 */
0215 APUOP(M_AI,     RI10,   0x0e0,  "ai",       _A3(A_T,A_A,A_S10), 00012,  FX2)    /* Add%Immed     RT<-RA+I10 */
0216 APUOP(M_SFHI,       RI10,   0x068,  "sfhi",     _A3(A_T,A_A,A_S10), 00012,  FX2)    /* SubFrom%Imm   RT<-I10-RA */
0217 APUOP(M_SFI,        RI10,   0x060,  "sfi",      _A3(A_T,A_A,A_S10), 00012,  FX2)    /* SubFrom%Imm   RT<-I10-RA */
0218 APUOP(M_CGTBI,      RI10,   0x270,  "cgtbi",    _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* CGT%I         RT<-(RA>I10) */
0219 APUOP(M_CGTHI,      RI10,   0x268,  "cgthi",    _A3(A_T,A_A,A_S10), 00012,  FX2)    /* CGT%I         RT<-(RA>I10) */
0220 APUOP(M_CGTI,       RI10,   0x260,  "cgti",     _A3(A_T,A_A,A_S10), 00012,  FX2)    /* CGT%I         RT<-(RA>I10) */
0221 APUOP(M_CLGTBI,     RI10,   0x2f0,  "clgtbi",   _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* CLGT%I        RT<-(RA>I10) */
0222 APUOP(M_CLGTHI,     RI10,   0x2e8,  "clgthi",   _A3(A_T,A_A,A_S10), 00012,  FX2)    /* CLGT%I        RT<-(RA>I10) */
0223 APUOP(M_CLGTI,      RI10,   0x2e0,  "clgti",    _A3(A_T,A_A,A_S10), 00012,  FX2)    /* CLGT%I        RT<-(RA>I10) */
0224 APUOP(M_CEQBI,      RI10,   0x3f0,  "ceqbi",    _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* CEQ%I         RT<-(RA=I10) */
0225 APUOP(M_CEQHI,      RI10,   0x3e8,  "ceqhi",    _A3(A_T,A_A,A_S10), 00012,  FX2)    /* CEQ%I         RT<-(RA=I10) */
0226 APUOP(M_CEQI,       RI10,   0x3e0,  "ceqi",     _A3(A_T,A_A,A_S10), 00012,  FX2)    /* CEQ%I         RT<-(RA=I10) */
0227 APUOP(M_HGTI,       RI10,   0x278,  "hgti",     _A3(A_T,A_A,A_S10), 00010,  FX2)    /* HaltGTI       halt_if(RA>I10) */
0228 APUOP(M_HGTI2,      RI10,   0x278,  "hgti",     _A2(A_A,A_S10), 00010,  FX2)    /* HaltGTI       halt_if(RA>I10) */
0229 APUOP(M_HLGTI,      RI10,   0x2f8,  "hlgti",    _A3(A_T,A_A,A_S10), 00010,  FX2)    /* HaltLGTI      halt_if(RA>I10) */
0230 APUOP(M_HLGTI2,     RI10,   0x2f8,  "hlgti",    _A2(A_A,A_S10), 00010,  FX2)    /* HaltLGTI      halt_if(RA>I10) */
0231 APUOP(M_HEQI,       RI10,   0x3f8,  "heqi",     _A3(A_T,A_A,A_S10), 00010,  FX2)    /* HaltEQImm     halt_if(RA=I10) */
0232 APUOP(M_HEQI2,      RI10,   0x3f8,  "heqi",     _A2(A_A,A_S10), 00010,  FX2)    /* HaltEQImm     halt_if(RA=I10) */
0233 APUOP(M_MPYI,       RI10,   0x3a0,  "mpyi",     _A3(A_T,A_A,A_S10), 00012,  FP7)    /* MPYI          RT<-RA*I10 */
0234 APUOP(M_MPYUI,      RI10,   0x3a8,  "mpyui",    _A3(A_T,A_A,A_S10), 00012,  FP7)    /* MPYUI         RT<-RA*I10 */
0235 APUOP(M_CFLTS,      RI8,    0x3b0,  "cflts",    _A3(A_T,A_A,A_U7A), 00012,  FP7)    /* CFLTS         RT<-int(RA,I8) */
0236 APUOP(M_CFLTU,      RI8,    0x3b2,  "cfltu",    _A3(A_T,A_A,A_U7A), 00012,  FP7)    /* CFLTU         RT<-int(RA,I8) */
0237 APUOP(M_CSFLT,      RI8,    0x3b4,  "csflt",    _A3(A_T,A_A,A_U7B), 00012,  FP7)    /* CSFLT         RT<-flt(RA,I8) */
0238 APUOP(M_CUFLT,      RI8,    0x3b6,  "cuflt",    _A3(A_T,A_A,A_U7B), 00012,  FP7)    /* CUFLT         RT<-flt(RA,I8) */
0239 APUOP(M_FESD,       RR, 0x3b8,  "fesd",     _A2(A_T,A_A),   00012,  FPD)    /* FESD          RT<-double(RA) */
0240 APUOP(M_FRDS,       RR, 0x3b9,  "frds",     _A2(A_T,A_A),   00012,  FPD)    /* FRDS          RT<-single(RA) */
0241 APUOP(M_FSCRRD,     RR, 0x398,  "fscrrd",   _A1(A_T),       00002,  FPD)    /* FSCRRD        RT<-FP_status */
0242 APUOP(M_FSCRWR,     RR, 0x3ba,  "fscrwr",   _A2(A_T,A_A),   00010,  FP7)    /* FSCRWR        FP_status<-RA */
0243 APUOP(M_FSCRWR2,    RR, 0x3ba,  "fscrwr",   _A1(A_A),       00010,  FP7)    /* FSCRWR        FP_status<-RA */
0244 APUOP(M_CLZ,        RR, 0x2a5,  "clz",      _A2(A_T,A_A),   00012,  FX2)    /* CLZ           RT<-clz(RA) */
0245 APUOP(M_CNTB,       RR, 0x2b4,  "cntb",     _A2(A_T,A_A),   00012,  FXB)    /* CNT           RT<-pop(RA) */
0246 APUOP(M_XSBH,       RR, 0x2b6,  "xsbh",     _A2(A_T,A_A),   00012,  FX2)    /* eXtSignBtoH   RT<-sign_ext(RA) */
0247 APUOP(M_XSHW,       RR, 0x2ae,  "xshw",     _A2(A_T,A_A),   00012,  FX2)    /* eXtSignHtoW   RT<-sign_ext(RA) */
0248 APUOP(M_XSWD,       RR, 0x2a6,  "xswd",     _A2(A_T,A_A),   00012,  FX2)    /* eXtSignWtoD   RT<-sign_ext(RA) */
0249 APUOP(M_ROTI,       RI7,    0x078,  "roti",     _A3(A_T,A_A,A_S7N), 00012,  FX3)    /* ROT%I         RT<-RA<<<I7 */
0250 APUOP(M_ROTMI,      RI7,    0x079,  "rotmi",    _A3(A_T,A_A,A_S7),  00012,  FX3)    /* ROT%MI        RT<-RA<<I7 */
0251 APUOP(M_ROTMAI,     RI7,    0x07a,  "rotmai",   _A3(A_T,A_A,A_S7),  00012,  FX3)    /* ROTMA%I       RT<-RA<<I7 */
0252 APUOP(M_SHLI,       RI7,    0x07b,  "shli",     _A3(A_T,A_A,A_U6),  00012,  FX3)    /* SHL%I         RT<-RA<<I7 */
0253 APUOP(M_ROTHI,      RI7,    0x07c,  "rothi",    _A3(A_T,A_A,A_S7N), 00012,  FX3)    /* ROT%I         RT<-RA<<<I7 */
0254 APUOP(M_ROTHMI,     RI7,    0x07d,  "rothmi",   _A3(A_T,A_A,A_S6),  00012,  FX3)    /* ROT%MI        RT<-RA<<I7 */
0255 APUOP(M_ROTMAHI,    RI7,    0x07e,  "rotmahi",  _A3(A_T,A_A,A_S6),  00012,  FX3)    /* ROTMA%I       RT<-RA<<I7 */
0256 APUOP(M_SHLHI,      RI7,    0x07f,  "shlhi",    _A3(A_T,A_A,A_U5),  00012,  FX3)    /* SHL%I         RT<-RA<<I7 */
0257 APUOP(M_A,      RR, 0x0c0,  "a",        _A3(A_T,A_A,A_B),       00112,  FX2)    /* Add%          RT<-RA+RB */
0258 APUOP(M_AH,     RR, 0x0c8,  "ah",       _A3(A_T,A_A,A_B),       00112,  FX2)    /* Add%          RT<-RA+RB */
0259 APUOP(M_SF,     RR, 0x040,  "sf",       _A3(A_T,A_A,A_B),       00112,  FX2)    /* SubFrom%      RT<-RB-RA */
0260 APUOP(M_SFH,        RR, 0x048,  "sfh",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* SubFrom%      RT<-RB-RA */
0261 APUOP(M_CGT,        RR, 0x240,  "cgt",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* CGT%          RT<-(RA>RB) */
0262 APUOP(M_CGTB,       RR, 0x250,  "cgtb",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* CGT%          RT<-(RA>RB) */
0263 APUOP(M_CGTH,       RR, 0x248,  "cgth",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* CGT%          RT<-(RA>RB) */
0264 APUOP(M_CLGT,       RR, 0x2c0,  "clgt",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* CLGT%         RT<-(RA>RB) */
0265 APUOP(M_CLGTB,      RR, 0x2d0,  "clgtb",    _A3(A_T,A_A,A_B),       00112,  FX2)    /* CLGT%         RT<-(RA>RB) */
0266 APUOP(M_CLGTH,      RR, 0x2c8,  "clgth",    _A3(A_T,A_A,A_B),       00112,  FX2)    /* CLGT%         RT<-(RA>RB) */
0267 APUOP(M_CEQ,        RR, 0x3c0,  "ceq",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* CEQ%          RT<-(RA=RB) */
0268 APUOP(M_CEQB,       RR, 0x3d0,  "ceqb",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* CEQ%          RT<-(RA=RB) */
0269 APUOP(M_CEQH,       RR, 0x3c8,  "ceqh",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* CEQ%          RT<-(RA=RB) */
0270 APUOP(M_HGT,        RR, 0x258,  "hgt",      _A3(A_T,A_A,A_B),       00110,  FX2)    /* HaltGT        halt_if(RA>RB) */
0271 APUOP(M_HGT2,       RR, 0x258,  "hgt",      _A2(A_A,A_B),   00110,  FX2)    /* HaltGT        halt_if(RA>RB) */
0272 APUOP(M_HLGT,       RR, 0x2d8,  "hlgt",     _A3(A_T,A_A,A_B),       00110,  FX2)    /* HaltLGT       halt_if(RA>RB) */
0273 APUOP(M_HLGT2,      RR, 0x2d8,  "hlgt",     _A2(A_A,A_B),   00110,  FX2)    /* HaltLGT       halt_if(RA>RB) */
0274 APUOP(M_HEQ,        RR, 0x3d8,  "heq",      _A3(A_T,A_A,A_B),       00110,  FX2)    /* HaltEQ        halt_if(RA=RB) */
0275 APUOP(M_HEQ2,       RR, 0x3d8,  "heq",      _A2(A_A,A_B),   00110,  FX2)    /* HaltEQ        halt_if(RA=RB) */
0276 APUOP(M_FCEQ,       RR, 0x3c2,  "fceq",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* FCEQ          RT<-(RA=RB) */
0277 APUOP(M_FCMEQ,      RR, 0x3ca,  "fcmeq",    _A3(A_T,A_A,A_B),       00112,  FX2)    /* FCMEQ         RT<-(|RA|=|RB|) */
0278 APUOP(M_FCGT,       RR, 0x2c2,  "fcgt",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* FCGT          RT<-(RA<RB) */
0279 APUOP(M_FCMGT,      RR, 0x2ca,  "fcmgt",    _A3(A_T,A_A,A_B),       00112,  FX2)    /* FCMGT         RT<-(|RA|<|RB|) */
0280 APUOP(M_AND,        RR, 0x0c1,  "and",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* AND           RT<-RA&RB */
0281 APUOP(M_NAND,       RR, 0x0c9,  "nand",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* NAND          RT<-!(RA&RB) */
0282 APUOP(M_OR,     RR, 0x041,  "or",       _A3(A_T,A_A,A_B),       00112,  FX2)    /* OR            RT<-RA|RB */
0283 APUOP(M_NOR,        RR, 0x049,  "nor",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* NOR           RT<-!(RA&RB) */
0284 APUOP(M_XOR,        RR, 0x241,  "xor",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* XOR           RT<-RA^RB */
0285 APUOP(M_EQV,        RR, 0x249,  "eqv",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* EQuiValent    RT<-!(RA^RB) */
0286 APUOP(M_ANDC,       RR, 0x2c1,  "andc",     _A3(A_T,A_A,A_B),       00112,  FX2)    /* ANDComplement RT<-RA&!RB */
0287 APUOP(M_ORC,        RR, 0x2c9,  "orc",      _A3(A_T,A_A,A_B),       00112,  FX2)    /* ORComplement  RT<-RA|!RB */
0288 APUOP(M_ABSDB,      RR, 0x053,  "absdb",    _A3(A_T,A_A,A_B),       00112,  FXB)    /* ABSoluteDiff  RT<-|RA-RB| */
0289 APUOP(M_AVGB,       RR, 0x0d3,  "avgb",     _A3(A_T,A_A,A_B),       00112,  FXB)    /* AVG%          RT<-(RA+RB+1)/2 */
0290 APUOP(M_SUMB,       RR, 0x253,  "sumb",     _A3(A_T,A_A,A_B),       00112,  FXB)    /* SUM%          RT<-f(RA,RB) */
0291 APUOP(M_DFA,        RR, 0x2cc,  "dfa",      _A3(A_T,A_A,A_B),       00112,  FPD)    /* DFAdd         RT<-RA+RB */
0292 APUOP(M_DFM,        RR, 0x2ce,  "dfm",      _A3(A_T,A_A,A_B),       00112,  FPD)    /* DFMul         RT<-RA*RB */
0293 APUOP(M_DFS,        RR, 0x2cd,  "dfs",      _A3(A_T,A_A,A_B),       00112,  FPD)    /* DFSub         RT<-RA-RB */
0294 APUOP(M_FA,     RR, 0x2c4,  "fa",       _A3(A_T,A_A,A_B),       00112,  FP6)    /* FAdd          RT<-RA+RB */
0295 APUOP(M_FM,     RR, 0x2c6,  "fm",       _A3(A_T,A_A,A_B),       00112,  FP6)    /* FMul          RT<-RA*RB */
0296 APUOP(M_FS,     RR, 0x2c5,  "fs",       _A3(A_T,A_A,A_B),       00112,  FP6)    /* FSub          RT<-RA-RB */
0297 APUOP(M_MPY,        RR, 0x3c4,  "mpy",      _A3(A_T,A_A,A_B),       00112,  FP7)    /* MPY           RT<-RA*RB */
0298 APUOP(M_MPYH,       RR, 0x3c5,  "mpyh",     _A3(A_T,A_A,A_B),       00112,  FP7)    /* MPYH          RT<-(RAh*RB)<<16 */
0299 APUOP(M_MPYHH,      RR, 0x3c6,  "mpyhh",    _A3(A_T,A_A,A_B),       00112,  FP7)    /* MPYHH         RT<-RAh*RBh */
0300 APUOP(M_MPYHHU,     RR, 0x3ce,  "mpyhhu",   _A3(A_T,A_A,A_B),       00112,  FP7)    /* MPYHHU        RT<-RAh*RBh */
0301 APUOP(M_MPYS,       RR, 0x3c7,  "mpys",     _A3(A_T,A_A,A_B),       00112,  FP7)    /* MPYS          RT<-(RA*RB)>>16 */
0302 APUOP(M_MPYU,       RR, 0x3cc,  "mpyu",     _A3(A_T,A_A,A_B),       00112,  FP7)    /* MPYU          RT<-RA*RB */
0303 APUOP(M_FI,     RR, 0x3d4,  "fi",       _A3(A_T,A_A,A_B),       00112,  FP7)    /* FInterpolate  RT<-f(RA,RB) */
0304 APUOP(M_ROT,        RR, 0x058,  "rot",      _A3(A_T,A_A,A_B),       00112,  FX3)    /* ROT%          RT<-RA<<<RB */
0305 APUOP(M_ROTM,       RR, 0x059,  "rotm",     _A3(A_T,A_A,A_B),       00112,  FX3)    /* ROT%M         RT<-RA<<Rb */
0306 APUOP(M_ROTMA,      RR, 0x05a,  "rotma",    _A3(A_T,A_A,A_B),       00112,  FX3)    /* ROTMA%        RT<-RA<<Rb */
0307 APUOP(M_SHL,        RR, 0x05b,  "shl",      _A3(A_T,A_A,A_B),       00112,  FX3)    /* SHL%          RT<-RA<<Rb */
0308 APUOP(M_ROTH,       RR, 0x05c,  "roth",     _A3(A_T,A_A,A_B),       00112,  FX3)    /* ROT%          RT<-RA<<<RB */
0309 APUOP(M_ROTHM,      RR, 0x05d,  "rothm",    _A3(A_T,A_A,A_B),       00112,  FX3)    /* ROT%M         RT<-RA<<Rb */
0310 APUOP(M_ROTMAH,     RR, 0x05e,  "rotmah",   _A3(A_T,A_A,A_B),       00112,  FX3)    /* ROTMA%        RT<-RA<<Rb */
0311 APUOP(M_SHLH,       RR, 0x05f,  "shlh",     _A3(A_T,A_A,A_B),       00112,  FX3)    /* SHL%          RT<-RA<<Rb */
0312 APUOP(M_MPYHHA,     RR, 0x346,  "mpyhha",   _A3(A_T,A_A,A_B),       00113,  FP7)    /* MPYHHA        RT<-RAh*RBh+RT */
0313 APUOP(M_MPYHHAU,    RR, 0x34e,  "mpyhhau",  _A3(A_T,A_A,A_B),       00113,  FP7)    /* MPYHHAU       RT<-RAh*RBh+RT */
0314 APUOP(M_DFMA,       RR, 0x35c,  "dfma",     _A3(A_T,A_A,A_B),       00113,  FPD)    /* DFMAdd        RT<-RT+RA*RB */
0315 APUOP(M_DFMS,       RR, 0x35d,  "dfms",     _A3(A_T,A_A,A_B),       00113,  FPD)    /* DFMSub        RT<-RA*RB-RT */
0316 APUOP(M_DFNMS,      RR, 0x35e,  "dfnms",    _A3(A_T,A_A,A_B),       00113,  FPD)    /* DFNMSub       RT<-RT-RA*RB */
0317 APUOP(M_DFNMA,      RR, 0x35f,  "dfnma",    _A3(A_T,A_A,A_B),       00113,  FPD)    /* DFNMAdd       RT<-(-RT)-RA*RB */
0318 APUOP(M_FMA,        RRR,    0x700,  "fma",      _A4(A_C,A_A,A_B,A_T),   02111,  FP6)    /* FMAdd         RC<-RT+RA*RB */
0319 APUOP(M_FMS,        RRR,    0x780,  "fms",      _A4(A_C,A_A,A_B,A_T),   02111,  FP6)    /* FMSub         RC<-RA*RB-RT */
0320 APUOP(M_FNMS,       RRR,    0x680,  "fnms",     _A4(A_C,A_A,A_B,A_T),   02111,  FP6)    /* FNMSub        RC<-RT-RA*RB */
0321 APUOP(M_MPYA,       RRR,    0x600,  "mpya",     _A4(A_C,A_A,A_B,A_T),   02111,  FP7)    /* MPYA          RC<-RA*RB+RT */
0322 APUOP(M_SELB,       RRR,    0x400,  "selb",     _A4(A_C,A_A,A_B,A_T),   02111,  FX2)    /* SELectBits    RC<-RA&RT|RB&!RT */
0323 /* for system function call, this uses op-code of mtspr */
0324 APUOP(M_SYSCALL,    RI7,    0x10c,  "syscall",      _A3(A_T,A_A,A_S7N), 00002,  SPR)        /* System Call */
0325 /*
0326 pseudo instruction:
0327 system call
0328 value of I9 operation
0329 0   halt
0330 1       rt[0] = open(MEM[ra[0]],    ra[1])
0331 2       rt[0] = close(ra[0])
0332 3       rt[0] = read(ra[0], MEM[ra[1]], ra[2])
0333 4       rt[0] = write(ra[0],    MEM[ra[1]], ra[2])
0334 5       printf(MEM[ra[0]],  ra[1],  ra[2],  ra[3])
0335 42      rt[0] = clock()
0336 52      rt[0] = lseek(ra0,  ra1,    ra2)
0337 
0338 */
0339 
0340 
0341 /* new multiprecision add/sub */
0342 APUOP(M_ADDX,       RR, 0x340,  "addx",     _A3(A_T,A_A,A_B),       00113,      FX2)    /* Add_eXtended  RT<-RA+RB+RT */
0343 APUOP(M_CG,     RR, 0x0c2,  "cg",       _A3(A_T,A_A,A_B),       00112,      FX2)    /* CarryGenerate RT<-cout(RA+RB) */
0344 APUOP(M_CGX,        RR, 0x342,  "cgx",      _A3(A_T,A_A,A_B),       00113,      FX2)    /* CarryGen_eXtd RT<-cout(RA+RB+RT) */
0345 APUOP(M_SFX,        RR, 0x341,  "sfx",      _A3(A_T,A_A,A_B),       00113,      FX2)    /* Add_eXtended  RT<-RA+RB+RT */
0346 APUOP(M_BG,     RR, 0x042,  "bg",       _A3(A_T,A_A,A_B),       00112,      FX2)    /* CarryGenerate RT<-cout(RA+RB) */
0347 APUOP(M_BGX,        RR, 0x343,  "bgx",      _A3(A_T,A_A,A_B),       00113,      FX2)    /* CarryGen_eXtd RT<-cout(RA+RB+RT) */
0348 
0349 /*
0350 
0351 The following ops are a subset of above except with feature bits set.
0352 Feature bits are bits 11-17 of the instruction:
0353 
0354   11 - C & P feature bit
0355   12 - disable interrupts
0356   13 - enable interrupts
0357 
0358 */
0359 APUOPFB(M_BID,      RR, 0x1a8,  0x20,   "bid",      _A1(A_A),       00010,  BR) /* BI            IP<-RA */
0360 APUOPFB(M_BIE,      RR, 0x1a8,  0x10,   "bie",      _A1(A_A),       00010,  BR) /* BI            IP<-RA */
0361 APUOPFB(M_BISLD,    RR, 0x1a9,  0x20,   "bisld",    _A2(A_T,A_A),   00012,  BR) /* BISL          RT,IP<-IP,RA */
0362 APUOPFB(M_BISLE,    RR, 0x1a9,  0x10,   "bisle",    _A2(A_T,A_A),   00012,  BR) /* BISL          RT,IP<-IP,RA */
0363 APUOPFB(M_IRETD,    RR, 0x1aa,  0x20,   "iretd",    _A1(A_A),   00010,  BR) /* IRET          IP<-SRR0 */
0364 APUOPFB(M_IRETD2,   RR, 0x1aa,  0x20,   "iretd",    _A0(),      00010,  BR) /* IRET          IP<-SRR0 */
0365 APUOPFB(M_IRETE,    RR, 0x1aa,  0x10,   "irete",    _A1(A_A),   00010,  BR) /* IRET          IP<-SRR0 */
0366 APUOPFB(M_IRETE2,   RR, 0x1aa,  0x10,   "irete",    _A0(),      00010,  BR) /* IRET          IP<-SRR0 */
0367 APUOPFB(M_BISLEDD,  RR, 0x1ab,  0x20,   "bisledd",  _A2(A_T,A_A),   00012,  BR) /* BISLED        RT,IP<-IP,RA_if(ext) */
0368 APUOPFB(M_BISLEDE,  RR, 0x1ab,  0x10,   "bislede",  _A2(A_T,A_A),   00012,  BR) /* BISLED        RT,IP<-IP,RA_if(ext) */
0369 APUOPFB(M_BIHNZD,   RR, 0x12b,  0x20,   "bihnzd",   _A2(A_T,A_A),   00011,  BR) /* BIHNZ         IP<-RA_if(RT) */
0370 APUOPFB(M_BIHNZE,   RR, 0x12b,  0x10,   "bihnze",   _A2(A_T,A_A),   00011,  BR) /* BIHNZ         IP<-RA_if(RT) */
0371 APUOPFB(M_BIHZD,    RR, 0x12a,  0x20,   "bihzd",    _A2(A_T,A_A),   00011,  BR) /* BIHZ          IP<-RA_if(RT) */
0372 APUOPFB(M_BIHZE,    RR, 0x12a,  0x10,   "bihze",    _A2(A_T,A_A),   00011,  BR) /* BIHZ          IP<-RA_if(RT) */
0373 APUOPFB(M_BINZD,    RR, 0x129,  0x20,   "binzd",    _A2(A_T,A_A),   00011,  BR) /* BINZ          IP<-RA_if(RT) */
0374 APUOPFB(M_BINZE,    RR, 0x129,  0x10,   "binze",    _A2(A_T,A_A),   00011,  BR) /* BINZ          IP<-RA_if(RT) */
0375 APUOPFB(M_BIZD,     RR, 0x128,  0x20,   "bizd",     _A2(A_T,A_A),   00011,  BR) /* BIZ           IP<-RA_if(RT) */
0376 APUOPFB(M_BIZE,     RR, 0x128,  0x10,   "bize",     _A2(A_T,A_A),   00011,  BR) /* BIZ           IP<-RA_if(RT) */
0377 APUOPFB(M_SYNCC,    RR, 0x002,  0x40,   "syncc",    _A0(),      00000,  BR) /* SYNCC          flush_pipe */
0378 APUOPFB(M_HBRP,     LBTI,   0x1ac,  0x40,   "hbrp",     _A0(),          00010,  LS) /* HBR           BTB[B9]<-M[Ra] */
0379 
0380 /* Synonyms required by the AS manual. */
0381 APUOP(M_LR,     RI10,   0x020,  "lr",       _A2(A_T,A_A),   00012,  FX2)    /* OR%I          RT<-RA|I10 */
0382 APUOP(M_BIHT,       RR, 0x12b,  "biht",     _A2(A_T,A_A),   00011,  BR) /* BIHNZ         IP<-RA_if(RT) */
0383 APUOP(M_BIHF,       RR, 0x12a,  "bihf",     _A2(A_T,A_A),   00011,  BR) /* BIHZ          IP<-RA_if(RT) */
0384 APUOP(M_BIT,        RR, 0x129,  "bit",      _A2(A_T,A_A),   00011,  BR) /* BINZ          IP<-RA_if(RT) */
0385 APUOP(M_BIF,        RR, 0x128,  "bif",      _A2(A_T,A_A),   00011,  BR) /* BIZ           IP<-RA_if(RT) */
0386 APUOPFB(M_BIHTD,    RR, 0x12b,  0x20,   "bihtd",    _A2(A_T,A_A),   00011,  BR) /* BIHNF         IP<-RA_if(RT) */
0387 APUOPFB(M_BIHTE,    RR, 0x12b,  0x10,   "bihte",    _A2(A_T,A_A),   00011,  BR) /* BIHNF         IP<-RA_if(RT) */
0388 APUOPFB(M_BIHFD,    RR, 0x12a,  0x20,   "bihfd",    _A2(A_T,A_A),   00011,  BR) /* BIHZ          IP<-RA_if(RT) */
0389 APUOPFB(M_BIHFE,    RR, 0x12a,  0x10,   "bihfe",    _A2(A_T,A_A),   00011,  BR) /* BIHZ          IP<-RA_if(RT) */
0390 APUOPFB(M_BITD,     RR, 0x129,  0x20,   "bitd",     _A2(A_T,A_A),   00011,  BR) /* BINF          IP<-RA_if(RT) */
0391 APUOPFB(M_BITE,     RR, 0x129,  0x10,   "bite",     _A2(A_T,A_A),   00011,  BR) /* BINF          IP<-RA_if(RT) */
0392 APUOPFB(M_BIFD,     RR, 0x128,  0x20,   "bifd",     _A2(A_T,A_A),   00011,  BR) /* BIZ           IP<-RA_if(RT) */
0393 APUOPFB(M_BIFE,     RR, 0x128,  0x10,   "bife",     _A2(A_T,A_A),   00011,  BR) /* BIZ           IP<-RA_if(RT) */
0394 
0395 #undef _A0
0396 #undef _A1
0397 #undef _A2
0398 #undef _A3
0399 #undef _A4