Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / powerpc / xmon / spu-insns.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /* SPU ELF support for BFD.
3
4    Copyright 2006 Free Software Foundation, Inc.
5
6    This file is part of BFD, the Binary File Descriptor library.
7
8  */
9
10 /* SPU Opcode Table
11
12 -=-=-= FORMAT =-=-=-
13                                                                                                      
14        +----+-------+-------+-------+-------+                  +------------+-------+-------+-------+
15 RRR    | op |  RC   |  RB   |  RA   |  RT   |           RI7    | op         |  I7   |  RA   |  RT   |
16        +----+-------+-------+-------+-------+                  +------------+-------+-------+-------+
17         0  3       1       1       2       3                    0          1       1       2       3 
18                    0       7       4       1                               0       7       4       1 
19
20        +-----------+--------+-------+-------+                  +---------+----------+-------+-------+
21 RI8    | op        |   I8   |  RA   |  RT   |           RI10   | op      |   I10    |  RA   |  RT   |
22        +-----------+--------+-------+-------+                  +---------+----------+-------+-------+
23         0         9        1       2       3                    0       7          1       2       3 
24                            7       4       1                                       7       4       1 
25
26        +----------+-----------------+-------+                  +--------+-------------------+-------+
27 RI16   | op       |       I16       |  RT   |           RI18   | op     |       I18         |  RT   |
28        +----------+-----------------+-------+                  +--------+-------------------+-------+
29         0        8                 2       3                    0      6                   2       3 
30                                    4       1                                               4       1 
31
32        +------------+-------+-------+-------+                  +-------+--+-----------------+-------+
33 RR     | op         |  RB   |  RA   |  RT   |           LBT    | op    |RO|       I16       |  RO   |
34        +------------+-------+-------+-------+                  +-------+--+-----------------+-------+
35         0          1       1       2       3                    0     6  8                 2       3 
36                    0       7       4       1                                               4       1 
37
38                                                                +------------+----+--+-------+-------+
39                                                         LBTI   | op         | // |RO|  RA   |  RO   |
40                                                                +------------+----+--+-------+-------+
41                                                                 0          1    1  1       2       3
42                                                                            0    5  7       4       1
43
44 -=-=-= OPCODE =-=-=-
45
46 OPCODE field specifies the most significant 11bit of the instruction. Some formats don't have 11bits for opcode field, and in this
47 case, bit field other than op are defined as 0s. For example, opcode of fma instruction which is RRR format is defined as 0x700,
48 since 0x700 -> 11'b11100000000, this means opcode is 4'b1110, and other 7bits are defined as 7'b0000000.
49
50 -=-=-= ASM_FORMAT =-=-=-
51
52 RRR category                                            RI7 category                               
53         ASM_RRR         mnemonic RC, RA, RB, RT                 ASM_RI4         mnemonic RT, RA, I4
54                                                                 ASM_RI7         mnemonic RT, RA, I7
55
56 RI8 category                                            RI10 category                               
57         ASM_RUI8        mnemonic RT, RA, UI8                    ASM_AI10        mnemonic RA, I10    
58                                                                 ASM_RI10        mnemonic RT, RA, R10
59                                                                 ASM_RI10IDX     mnemonic RT, I10(RA)
60
61 RI16 category                                           RI18 category                           
62         ASM_I16W        mnemonic I16W                           ASM_RI18        mnemonic RT, I18
63         ASM_RI16        mnemonic RT, I16
64         ASM_RI16W       mnemonic RT, I16W
65
66 RR category                                             LBT category                                    
67         ASM_MFSPR       mnemonic RT, SA                         ASM_LBT         mnemonic brinst, brtarg 
68         ASM_MTSPR       mnemonic SA, RT                                                                 
69         ASM_NOOP        mnemonic                        LBTI category                                   
70         ASM_RA          mnemonic RA                             ASM_LBTI        mnemonic brinst, RA     
71         ASM_RAB         mnemonic RA, RB
72         ASM_RDCH        mnemonic RT, CA
73         ASM_RR          mnemonic RT, RA, RB
74         ASM_RT          mnemonic RT
75         ASM_RTA         mnemonic RT, RA
76         ASM_WRCH        mnemonic CA, RT
77
78 Note that RRR instructions have the names for RC and RT reversed from
79 what's in the ISA, in order to put RT in the same position it appears
80 for other formats.
81
82 -=-=-= DEPENDENCY =-=-=-
83
84 DEPENDENCY filed consists of 5 digits. This represents which register is used as source and which register is used as target.
85 The first(most significant) digit is always 0. Then it is followd by RC, RB, RA and RT digits.
86 If the digit is 0, this means the corresponding register is not used in the instruction.
87 If the digit is 1, this means the corresponding register is used as a source in the instruction.
88 If the digit is 2, this means the corresponding register is used as a target in the instruction.
89 If the digit is 3, this means the corresponding register is used as both source and target in the instruction.
90 For example, fms instruction has 00113 as the DEPENDENCY field. This means RC is not used in this operation, RB and RA are
91 used as sources and RT is the target.
92
93 -=-=-= PIPE =-=-=-
94
95 This field shows which execution pipe is used for the instruction
96
97 pipe0 execution pipelines:
98         FP6     SP floating pipeline
99         FP7     integer operations executed in SP floating pipeline
100         FPD     DP floating pipeline
101         FX2     FXU pipeline
102         FX3     Rotate/Shift pipeline
103         FXB     Byte pipeline
104         NOP     No pipeline
105
106 pipe1 execution pipelines:
107         BR      Branch pipeline
108         LNOP    No pipeline
109         LS      Load/Store pipeline
110         SHUF    Shuffle pipeline
111         SPR     SPR/CH pipeline
112
113 */
114
115 #define _A0() {0}
116 #define _A1(a) {1,a}
117 #define _A2(a,b) {2,a,b}
118 #define _A3(a,b,c) {3,a,b,c}
119 #define _A4(a,b,c,d) {4,a,b,c,d}
120
121 /*    TAG               FORMAT  OPCODE  MNEMONIC        ASM_FORMAT      DEPENDENCY      PIPE    COMMENT                         */
122 /*                                                                      0[RC][RB][RA][RT]                                       */
123 /*                                                                      1:src, 2:target                                         */
124
125 APUOP(M_BR,             RI16,   0x190,  "br",           _A1(A_R18),     00000,  BR)     /* BRel          IP<-IP+I16 */
126 APUOP(M_BRSL,           RI16,   0x198,  "brsl",         _A2(A_T,A_R18), 00002,  BR)     /* BRelSetLink   RT,IP<-IP,IP+I16 */
127 APUOP(M_BRA,            RI16,   0x180,  "bra",          _A1(A_S18),     00000,  BR)     /* BRAbs         IP<-I16 */
128 APUOP(M_BRASL,          RI16,   0x188,  "brasl",        _A2(A_T,A_S18), 00002,  BR)     /* BRAbsSetLink  RT,IP<-IP,I16 */
129 APUOP(M_FSMBI,          RI16,   0x194,  "fsmbi",        _A2(A_T,A_X16), 00002,  SHUF)   /* FormSelMask%I RT<-fsm(I16) */
130 APUOP(M_LQA,            RI16,   0x184,  "lqa",          _A2(A_T,A_S18), 00002,  LS)     /* LoadQAbs      RT<-M[I16] */
131 APUOP(M_LQR,            RI16,   0x19C,  "lqr",          _A2(A_T,A_R18), 00002,  LS)     /* LoadQRel      RT<-M[IP+I16] */
132 APUOP(M_STOP,           RR,     0x000,  "stop",         _A0(),          00000,  BR)     /* STOP          stop */
133 APUOP(M_STOP2,          RR,     0x000,  "stop",         _A1(A_U14),     00000,  BR)     /* STOP          stop */
134 APUOP(M_STOPD,          RR,     0x140,  "stopd",        _A3(A_T,A_A,A_B),         00111,        BR)     /* STOPD         stop (with register dependencies) */
135 APUOP(M_LNOP,           RR,     0x001,  "lnop",         _A0(),          00000,  LNOP)   /* LNOP          no_operation */
136 APUOP(M_SYNC,           RR,     0x002,  "sync",         _A0(),          00000,  BR)     /* SYNC          flush_pipe */
137 APUOP(M_DSYNC,          RR,     0x003,  "dsync",        _A0(),          00000,  BR)     /* DSYNC         flush_store_queue */
138 APUOP(M_MFSPR,          RR,     0x00c,  "mfspr",        _A2(A_T,A_S),   00002,  SPR)    /* MFSPR         RT<-SA */
139 APUOP(M_RDCH,           RR,     0x00d,  "rdch",         _A2(A_T,A_H),   00002,  SPR)    /* ReaDCHannel   RT<-CA:data */
140 APUOP(M_RCHCNT,         RR,     0x00f,  "rchcnt",       _A2(A_T,A_H),   00002,  SPR)    /* ReaDCHanCouNT RT<-CA:count */
141 APUOP(M_HBRA,           LBT,    0x080,  "hbra",         _A2(A_S11,A_S18),       00000,  LS)     /* HBRA          BTB[B9]<-M[I16] */
142 APUOP(M_HBRR,           LBT,    0x090,  "hbrr",         _A2(A_S11,A_R18),       00000,  LS)     /* HBRR          BTB[B9]<-M[IP+I16] */
143 APUOP(M_BRZ,            RI16,   0x100,  "brz",          _A2(A_T,A_R18), 00001,  BR)     /* BRZ           IP<-IP+I16_if(RT) */
144 APUOP(M_BRNZ,           RI16,   0x108,  "brnz",         _A2(A_T,A_R18), 00001,  BR)     /* BRNZ          IP<-IP+I16_if(RT) */
145 APUOP(M_BRHZ,           RI16,   0x110,  "brhz",         _A2(A_T,A_R18), 00001,  BR)     /* BRHZ          IP<-IP+I16_if(RT) */
146 APUOP(M_BRHNZ,          RI16,   0x118,  "brhnz",        _A2(A_T,A_R18), 00001,  BR)     /* BRHNZ         IP<-IP+I16_if(RT) */
147 APUOP(M_STQA,           RI16,   0x104,  "stqa",         _A2(A_T,A_S18), 00001,  LS)     /* SToreQAbs     M[I16]<-RT */
148 APUOP(M_STQR,           RI16,   0x11C,  "stqr",         _A2(A_T,A_R18), 00001,  LS)     /* SToreQRel     M[IP+I16]<-RT */
149 APUOP(M_MTSPR,          RR,     0x10c,  "mtspr",        _A2(A_S,A_T),   00001,  SPR)    /* MTSPR         SA<-RT */
150 APUOP(M_WRCH,           RR,     0x10d,  "wrch",         _A2(A_H,A_T),   00001,  SPR)    /* ChanWRite     CA<-RT */
151 APUOP(M_LQD,            RI10,   0x1a0,  "lqd",          _A4(A_T,A_S14,A_P,A_A), 00012,  LS)     /* LoadQDisp     RT<-M[Ra+I10] */
152 APUOP(M_BI,             RR,     0x1a8,  "bi",           _A1(A_A),               00010,  BR)     /* BI            IP<-RA */
153 APUOP(M_BISL,           RR,     0x1a9,  "bisl",         _A2(A_T,A_A),   00012,  BR)     /* BISL          RT,IP<-IP,RA */
154 APUOP(M_IRET,           RR,     0x1aa,  "iret",         _A1(A_A),       00010,  BR)     /* IRET          IP<-SRR0 */
155 APUOP(M_IRET2,          RR,     0x1aa,  "iret",         _A0(),          00010,  BR)     /* IRET          IP<-SRR0 */
156 APUOP(M_BISLED,         RR,     0x1ab,  "bisled",       _A2(A_T,A_A),   00012,  BR)     /* BISLED        RT,IP<-IP,RA_if(ext) */
157 APUOP(M_HBR,            LBTI,   0x1ac,  "hbr",          _A2(A_S11I,A_A),        00010,  LS)     /* HBR           BTB[B9]<-M[Ra] */
158 APUOP(M_FREST,          RR,     0x1b8,  "frest",        _A2(A_T,A_A),   00012,  SHUF)   /* FREST         RT<-recip(RA) */
159 APUOP(M_FRSQEST,        RR,     0x1b9,  "frsqest",      _A2(A_T,A_A),   00012,  SHUF)   /* FRSQEST       RT<-rsqrt(RA) */
160 APUOP(M_FSM,            RR,     0x1b4,  "fsm",          _A2(A_T,A_A),   00012,  SHUF)   /* FormSelMask%  RT<-expand(Ra) */
161 APUOP(M_FSMH,           RR,     0x1b5,  "fsmh",         _A2(A_T,A_A),   00012,  SHUF)   /* FormSelMask%  RT<-expand(Ra) */
162 APUOP(M_FSMB,           RR,     0x1b6,  "fsmb",         _A2(A_T,A_A),   00012,  SHUF)   /* FormSelMask%  RT<-expand(Ra) */
163 APUOP(M_GB,             RR,     0x1b0,  "gb",           _A2(A_T,A_A),   00012,  SHUF)   /* GatherBits%   RT<-gather(RA) */
164 APUOP(M_GBH,            RR,     0x1b1,  "gbh",          _A2(A_T,A_A),   00012,  SHUF)   /* GatherBits%   RT<-gather(RA) */
165 APUOP(M_GBB,            RR,     0x1b2,  "gbb",          _A2(A_T,A_A),   00012,  SHUF)   /* GatherBits%   RT<-gather(RA) */
166 APUOP(M_CBD,            RI7,    0x1f4,  "cbd",          _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
167 APUOP(M_CHD,            RI7,    0x1f5,  "chd",          _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
168 APUOP(M_CWD,            RI7,    0x1f6,  "cwd",          _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
169 APUOP(M_CDD,            RI7,    0x1f7,  "cdd",          _A4(A_T,A_U7,A_P,A_A),  00012,  SHUF)   /* genCtl%%insD  RT<-sta(Ra+I4,siz) */
170 APUOP(M_ROTQBII,        RI7,    0x1f8,  "rotqbii",      _A3(A_T,A_A,A_U3),      00012,  SHUF)   /* ROTQBII       RT<-RA<<<I7 */
171 APUOP(M_ROTQBYI,        RI7,    0x1fc,  "rotqbyi",      _A3(A_T,A_A,A_S7N),     00012,  SHUF)   /* ROTQBYI       RT<-RA<<<(I7*8) */
172 APUOP(M_ROTQMBII,       RI7,    0x1f9,  "rotqmbii",     _A3(A_T,A_A,A_S3),      00012,  SHUF)   /* ROTQMBII      RT<-RA<<I7 */
173 APUOP(M_ROTQMBYI,       RI7,    0x1fd,  "rotqmbyi",     _A3(A_T,A_A,A_S6),      00012,  SHUF)   /* ROTQMBYI      RT<-RA<<I7 */
174 APUOP(M_SHLQBII,        RI7,    0x1fb,  "shlqbii",      _A3(A_T,A_A,A_U3),      00012,  SHUF)   /* SHLQBII       RT<-RA<<I7 */
175 APUOP(M_SHLQBYI,        RI7,    0x1ff,  "shlqbyi",      _A3(A_T,A_A,A_U5),      00012,  SHUF)   /* SHLQBYI       RT<-RA<<I7 */
176 APUOP(M_STQD,           RI10,   0x120,  "stqd",         _A4(A_T,A_S14,A_P,A_A), 00011,  LS)     /* SToreQDisp    M[Ra+I10]<-RT */
177 APUOP(M_BIHNZ,          RR,     0x12b,  "bihnz",        _A2(A_T,A_A),   00011,  BR)     /* BIHNZ         IP<-RA_if(RT) */
178 APUOP(M_BIHZ,           RR,     0x12a,  "bihz",         _A2(A_T,A_A),   00011,  BR)     /* BIHZ          IP<-RA_if(RT) */
179 APUOP(M_BINZ,           RR,     0x129,  "binz",         _A2(A_T,A_A),   00011,  BR)     /* BINZ          IP<-RA_if(RT) */
180 APUOP(M_BIZ,            RR,     0x128,  "biz",          _A2(A_T,A_A),   00011,  BR)     /* BIZ           IP<-RA_if(RT) */
181 APUOP(M_CBX,            RR,     0x1d4,  "cbx",          _A3(A_T,A_A,A_B),               00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
182 APUOP(M_CHX,            RR,     0x1d5,  "chx",          _A3(A_T,A_A,A_B),               00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
183 APUOP(M_CWX,            RR,     0x1d6,  "cwx",          _A3(A_T,A_A,A_B),               00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
184 APUOP(M_CDX,            RR,     0x1d7,  "cdx",          _A3(A_T,A_A,A_B),               00112,  SHUF)   /* genCtl%%insX  RT<-sta(Ra+Rb,siz) */
185 APUOP(M_LQX,            RR,     0x1c4,  "lqx",          _A3(A_T,A_A,A_B),               00112,  LS)     /* LoadQindeX    RT<-M[Ra+Rb] */
186 APUOP(M_ROTQBI,         RR,     0x1d8,  "rotqbi",       _A3(A_T,A_A,A_B),               00112,  SHUF)   /* ROTQBI        RT<-RA<<<Rb */
187 APUOP(M_ROTQMBI,        RR,     0x1d9,  "rotqmbi",      _A3(A_T,A_A,A_B),               00112,  SHUF)   /* ROTQMBI       RT<-RA<<Rb */
188 APUOP(M_SHLQBI,         RR,     0x1db,  "shlqbi",       _A3(A_T,A_A,A_B),               00112,  SHUF)   /* SHLQBI        RT<-RA<<Rb */
189 APUOP(M_ROTQBY,         RR,     0x1dc,  "rotqby",       _A3(A_T,A_A,A_B),               00112,          SHUF)   /* ROTQBY        RT<-RA<<<(Rb*8) */
190 APUOP(M_ROTQMBY,        RR,     0x1dd,  "rotqmby",      _A3(A_T,A_A,A_B),               00112,          SHUF)   /* ROTQMBY       RT<-RA<<Rb */
191 APUOP(M_SHLQBY,         RR,     0x1df,  "shlqby",       _A3(A_T,A_A,A_B),               00112,  SHUF)   /* SHLQBY        RT<-RA<<Rb */
192 APUOP(M_ROTQBYBI,       RR,     0x1cc,  "rotqbybi",     _A3(A_T,A_A,A_B),               00112,          SHUF)   /* ROTQBYBI      RT<-RA<<Rb */
193 APUOP(M_ROTQMBYBI,      RR,     0x1cd,  "rotqmbybi",    _A3(A_T,A_A,A_B),               00112,          SHUF)   /* ROTQMBYBI     RT<-RA<<Rb */
194 APUOP(M_SHLQBYBI,       RR,     0x1cf,  "shlqbybi",     _A3(A_T,A_A,A_B),               00112,  SHUF)   /* SHLQBYBI      RT<-RA<<Rb */
195 APUOP(M_STQX,           RR,     0x144,  "stqx",         _A3(A_T,A_A,A_B),               00111,  LS)     /* SToreQindeX   M[Ra+Rb]<-RT */
196 APUOP(M_SHUFB,          RRR,    0x580,  "shufb",        _A4(A_C,A_A,A_B,A_T),   02111,  SHUF)   /* SHUFfleBytes  RC<-f(RA,RB,RT) */
197 APUOP(M_IL,             RI16,   0x204,  "il",           _A2(A_T,A_S16), 00002,  FX2)    /* ImmLoad       RT<-sxt(I16) */
198 APUOP(M_ILH,            RI16,   0x20c,  "ilh",          _A2(A_T,A_X16), 00002,  FX2)    /* ImmLoadH      RT<-I16 */
199 APUOP(M_ILHU,           RI16,   0x208,  "ilhu",         _A2(A_T,A_X16), 00002,  FX2)    /* ImmLoadHUpper RT<-I16<<16 */
200 APUOP(M_ILA,            RI18,   0x210,  "ila",          _A2(A_T,A_U18), 00002,  FX2)    /* ImmLoadAddr   RT<-zxt(I18) */
201 APUOP(M_NOP,            RR,     0x201,  "nop",          _A1(A_T),               00000,  NOP)    /* XNOP          no_operation */
202 APUOP(M_NOP2,           RR,     0x201,  "nop",          _A0(),          00000,  NOP)    /* XNOP          no_operation */
203 APUOP(M_IOHL,           RI16,   0x304,  "iohl",         _A2(A_T,A_X16), 00003,  FX2)    /* AddImmeXt     RT<-RT+sxt(I16) */
204 APUOP(M_ANDBI,          RI10,   0x0b0,  "andbi",        _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* AND%I         RT<-RA&I10 */
205 APUOP(M_ANDHI,          RI10,   0x0a8,  "andhi",        _A3(A_T,A_A,A_S10),     00012,  FX2)    /* AND%I         RT<-RA&I10 */
206 APUOP(M_ANDI,           RI10,   0x0a0,  "andi",         _A3(A_T,A_A,A_S10),     00012,  FX2)    /* AND%I         RT<-RA&I10 */
207 APUOP(M_ORBI,           RI10,   0x030,  "orbi",         _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* OR%I          RT<-RA|I10 */
208 APUOP(M_ORHI,           RI10,   0x028,  "orhi",         _A3(A_T,A_A,A_S10),     00012,  FX2)    /* OR%I          RT<-RA|I10 */
209 APUOP(M_ORI,            RI10,   0x020,  "ori",          _A3(A_T,A_A,A_S10),     00012,  FX2)    /* OR%I          RT<-RA|I10 */
210 APUOP(M_ORX,            RR,     0x1f0,  "orx",          _A2(A_T,A_A),           00012,  BR)     /* ORX           RT<-RA.w0|RA.w1|RA.w2|RA.w3 */
211 APUOP(M_XORBI,          RI10,   0x230,  "xorbi",        _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* XOR%I         RT<-RA^I10 */
212 APUOP(M_XORHI,          RI10,   0x228,  "xorhi",        _A3(A_T,A_A,A_S10),     00012,  FX2)    /* XOR%I         RT<-RA^I10 */
213 APUOP(M_XORI,           RI10,   0x220,  "xori",         _A3(A_T,A_A,A_S10),     00012,  FX2)    /* XOR%I         RT<-RA^I10 */
214 APUOP(M_AHI,            RI10,   0x0e8,  "ahi",          _A3(A_T,A_A,A_S10),     00012,  FX2)    /* Add%Immed     RT<-RA+I10 */
215 APUOP(M_AI,             RI10,   0x0e0,  "ai",           _A3(A_T,A_A,A_S10),     00012,  FX2)    /* Add%Immed     RT<-RA+I10 */
216 APUOP(M_SFHI,           RI10,   0x068,  "sfhi",         _A3(A_T,A_A,A_S10),     00012,  FX2)    /* SubFrom%Imm   RT<-I10-RA */
217 APUOP(M_SFI,            RI10,   0x060,  "sfi",          _A3(A_T,A_A,A_S10),     00012,  FX2)    /* SubFrom%Imm   RT<-I10-RA */
218 APUOP(M_CGTBI,          RI10,   0x270,  "cgtbi",        _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* CGT%I         RT<-(RA>I10) */
219 APUOP(M_CGTHI,          RI10,   0x268,  "cgthi",        _A3(A_T,A_A,A_S10),     00012,  FX2)    /* CGT%I         RT<-(RA>I10) */
220 APUOP(M_CGTI,           RI10,   0x260,  "cgti",         _A3(A_T,A_A,A_S10),     00012,  FX2)    /* CGT%I         RT<-(RA>I10) */
221 APUOP(M_CLGTBI,         RI10,   0x2f0,  "clgtbi",       _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* CLGT%I        RT<-(RA>I10) */
222 APUOP(M_CLGTHI,         RI10,   0x2e8,  "clgthi",       _A3(A_T,A_A,A_S10),     00012,  FX2)    /* CLGT%I        RT<-(RA>I10) */
223 APUOP(M_CLGTI,          RI10,   0x2e0,  "clgti",        _A3(A_T,A_A,A_S10),     00012,  FX2)    /* CLGT%I        RT<-(RA>I10) */
224 APUOP(M_CEQBI,          RI10,   0x3f0,  "ceqbi",        _A3(A_T,A_A,A_S10B),    00012,  FX2)    /* CEQ%I         RT<-(RA=I10) */
225 APUOP(M_CEQHI,          RI10,   0x3e8,  "ceqhi",        _A3(A_T,A_A,A_S10),     00012,  FX2)    /* CEQ%I         RT<-(RA=I10) */
226 APUOP(M_CEQI,           RI10,   0x3e0,  "ceqi",         _A3(A_T,A_A,A_S10),     00012,  FX2)    /* CEQ%I         RT<-(RA=I10) */
227 APUOP(M_HGTI,           RI10,   0x278,  "hgti",         _A3(A_T,A_A,A_S10),     00010,  FX2)    /* HaltGTI       halt_if(RA>I10) */
228 APUOP(M_HGTI2,          RI10,   0x278,  "hgti",         _A2(A_A,A_S10), 00010,  FX2)    /* HaltGTI       halt_if(RA>I10) */
229 APUOP(M_HLGTI,          RI10,   0x2f8,  "hlgti",        _A3(A_T,A_A,A_S10),     00010,  FX2)    /* HaltLGTI      halt_if(RA>I10) */
230 APUOP(M_HLGTI2,         RI10,   0x2f8,  "hlgti",        _A2(A_A,A_S10), 00010,  FX2)    /* HaltLGTI      halt_if(RA>I10) */
231 APUOP(M_HEQI,           RI10,   0x3f8,  "heqi",         _A3(A_T,A_A,A_S10),     00010,  FX2)    /* HaltEQImm     halt_if(RA=I10) */
232 APUOP(M_HEQI2,          RI10,   0x3f8,  "heqi",         _A2(A_A,A_S10), 00010,  FX2)    /* HaltEQImm     halt_if(RA=I10) */
233 APUOP(M_MPYI,           RI10,   0x3a0,  "mpyi",         _A3(A_T,A_A,A_S10),     00012,  FP7)    /* MPYI          RT<-RA*I10 */
234 APUOP(M_MPYUI,          RI10,   0x3a8,  "mpyui",        _A3(A_T,A_A,A_S10),     00012,  FP7)    /* MPYUI         RT<-RA*I10 */
235 APUOP(M_CFLTS,          RI8,    0x3b0,  "cflts",        _A3(A_T,A_A,A_U7A),     00012,  FP7)    /* CFLTS         RT<-int(RA,I8) */
236 APUOP(M_CFLTU,          RI8,    0x3b2,  "cfltu",        _A3(A_T,A_A,A_U7A),     00012,  FP7)    /* CFLTU         RT<-int(RA,I8) */
237 APUOP(M_CSFLT,          RI8,    0x3b4,  "csflt",        _A3(A_T,A_A,A_U7B),     00012,  FP7)    /* CSFLT         RT<-flt(RA,I8) */
238 APUOP(M_CUFLT,          RI8,    0x3b6,  "cuflt",        _A3(A_T,A_A,A_U7B),     00012,  FP7)    /* CUFLT         RT<-flt(RA,I8) */
239 APUOP(M_FESD,           RR,     0x3b8,  "fesd",         _A2(A_T,A_A),   00012,  FPD)    /* FESD          RT<-double(RA) */
240 APUOP(M_FRDS,           RR,     0x3b9,  "frds",         _A2(A_T,A_A),   00012,  FPD)    /* FRDS          RT<-single(RA) */
241 APUOP(M_FSCRRD,         RR,     0x398,  "fscrrd",       _A1(A_T),               00002,  FPD)    /* FSCRRD        RT<-FP_status */
242 APUOP(M_FSCRWR,         RR,     0x3ba,  "fscrwr",       _A2(A_T,A_A),   00010,  FP7)    /* FSCRWR        FP_status<-RA */
243 APUOP(M_FSCRWR2,        RR,     0x3ba,  "fscrwr",       _A1(A_A),               00010,  FP7)    /* FSCRWR        FP_status<-RA */
244 APUOP(M_CLZ,            RR,     0x2a5,  "clz",          _A2(A_T,A_A),   00012,  FX2)    /* CLZ           RT<-clz(RA) */
245 APUOP(M_CNTB,           RR,     0x2b4,  "cntb",         _A2(A_T,A_A),   00012,  FXB)    /* CNT           RT<-pop(RA) */
246 APUOP(M_XSBH,           RR,     0x2b6,  "xsbh",         _A2(A_T,A_A),   00012,  FX2)    /* eXtSignBtoH   RT<-sign_ext(RA) */
247 APUOP(M_XSHW,           RR,     0x2ae,  "xshw",         _A2(A_T,A_A),   00012,  FX2)    /* eXtSignHtoW   RT<-sign_ext(RA) */
248 APUOP(M_XSWD,           RR,     0x2a6,  "xswd",         _A2(A_T,A_A),   00012,  FX2)    /* eXtSignWtoD   RT<-sign_ext(RA) */
249 APUOP(M_ROTI,           RI7,    0x078,  "roti",         _A3(A_T,A_A,A_S7N),     00012,  FX3)    /* ROT%I         RT<-RA<<<I7 */
250 APUOP(M_ROTMI,          RI7,    0x079,  "rotmi",        _A3(A_T,A_A,A_S7),      00012,  FX3)    /* ROT%MI        RT<-RA<<I7 */
251 APUOP(M_ROTMAI,         RI7,    0x07a,  "rotmai",       _A3(A_T,A_A,A_S7),      00012,  FX3)    /* ROTMA%I       RT<-RA<<I7 */
252 APUOP(M_SHLI,           RI7,    0x07b,  "shli",         _A3(A_T,A_A,A_U6),      00012,  FX3)    /* SHL%I         RT<-RA<<I7 */
253 APUOP(M_ROTHI,          RI7,    0x07c,  "rothi",        _A3(A_T,A_A,A_S7N),     00012,  FX3)    /* ROT%I         RT<-RA<<<I7 */
254 APUOP(M_ROTHMI,         RI7,    0x07d,  "rothmi",       _A3(A_T,A_A,A_S6),      00012,  FX3)    /* ROT%MI        RT<-RA<<I7 */
255 APUOP(M_ROTMAHI,        RI7,    0x07e,  "rotmahi",      _A3(A_T,A_A,A_S6),      00012,  FX3)    /* ROTMA%I       RT<-RA<<I7 */
256 APUOP(M_SHLHI,          RI7,    0x07f,  "shlhi",        _A3(A_T,A_A,A_U5),      00012,  FX3)    /* SHL%I         RT<-RA<<I7 */
257 APUOP(M_A,              RR,     0x0c0,  "a",            _A3(A_T,A_A,A_B),               00112,  FX2)    /* Add%          RT<-RA+RB */
258 APUOP(M_AH,             RR,     0x0c8,  "ah",           _A3(A_T,A_A,A_B),               00112,  FX2)    /* Add%          RT<-RA+RB */
259 APUOP(M_SF,             RR,     0x040,  "sf",           _A3(A_T,A_A,A_B),               00112,  FX2)    /* SubFrom%      RT<-RB-RA */
260 APUOP(M_SFH,            RR,     0x048,  "sfh",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* SubFrom%      RT<-RB-RA */
261 APUOP(M_CGT,            RR,     0x240,  "cgt",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* CGT%          RT<-(RA>RB) */
262 APUOP(M_CGTB,           RR,     0x250,  "cgtb",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* CGT%          RT<-(RA>RB) */
263 APUOP(M_CGTH,           RR,     0x248,  "cgth",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* CGT%          RT<-(RA>RB) */
264 APUOP(M_CLGT,           RR,     0x2c0,  "clgt",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* CLGT%         RT<-(RA>RB) */
265 APUOP(M_CLGTB,          RR,     0x2d0,  "clgtb",        _A3(A_T,A_A,A_B),               00112,  FX2)    /* CLGT%         RT<-(RA>RB) */
266 APUOP(M_CLGTH,          RR,     0x2c8,  "clgth",        _A3(A_T,A_A,A_B),               00112,  FX2)    /* CLGT%         RT<-(RA>RB) */
267 APUOP(M_CEQ,            RR,     0x3c0,  "ceq",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* CEQ%          RT<-(RA=RB) */
268 APUOP(M_CEQB,           RR,     0x3d0,  "ceqb",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* CEQ%          RT<-(RA=RB) */
269 APUOP(M_CEQH,           RR,     0x3c8,  "ceqh",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* CEQ%          RT<-(RA=RB) */
270 APUOP(M_HGT,            RR,     0x258,  "hgt",          _A3(A_T,A_A,A_B),               00110,  FX2)    /* HaltGT        halt_if(RA>RB) */
271 APUOP(M_HGT2,           RR,     0x258,  "hgt",          _A2(A_A,A_B),   00110,  FX2)    /* HaltGT        halt_if(RA>RB) */
272 APUOP(M_HLGT,           RR,     0x2d8,  "hlgt",         _A3(A_T,A_A,A_B),               00110,  FX2)    /* HaltLGT       halt_if(RA>RB) */
273 APUOP(M_HLGT2,          RR,     0x2d8,  "hlgt",         _A2(A_A,A_B),   00110,  FX2)    /* HaltLGT       halt_if(RA>RB) */
274 APUOP(M_HEQ,            RR,     0x3d8,  "heq",          _A3(A_T,A_A,A_B),               00110,  FX2)    /* HaltEQ        halt_if(RA=RB) */
275 APUOP(M_HEQ2,           RR,     0x3d8,  "heq",          _A2(A_A,A_B),   00110,  FX2)    /* HaltEQ        halt_if(RA=RB) */
276 APUOP(M_FCEQ,           RR,     0x3c2,  "fceq",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* FCEQ          RT<-(RA=RB) */
277 APUOP(M_FCMEQ,          RR,     0x3ca,  "fcmeq",        _A3(A_T,A_A,A_B),               00112,  FX2)    /* FCMEQ         RT<-(|RA|=|RB|) */
278 APUOP(M_FCGT,           RR,     0x2c2,  "fcgt",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* FCGT          RT<-(RA<RB) */
279 APUOP(M_FCMGT,          RR,     0x2ca,  "fcmgt",        _A3(A_T,A_A,A_B),               00112,  FX2)    /* FCMGT         RT<-(|RA|<|RB|) */
280 APUOP(M_AND,            RR,     0x0c1,  "and",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* AND           RT<-RA&RB */
281 APUOP(M_NAND,           RR,     0x0c9,  "nand",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* NAND          RT<-!(RA&RB) */
282 APUOP(M_OR,             RR,     0x041,  "or",           _A3(A_T,A_A,A_B),               00112,  FX2)    /* OR            RT<-RA|RB */
283 APUOP(M_NOR,            RR,     0x049,  "nor",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* NOR           RT<-!(RA&RB) */
284 APUOP(M_XOR,            RR,     0x241,  "xor",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* XOR           RT<-RA^RB */
285 APUOP(M_EQV,            RR,     0x249,  "eqv",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* EQuiValent    RT<-!(RA^RB) */
286 APUOP(M_ANDC,           RR,     0x2c1,  "andc",         _A3(A_T,A_A,A_B),               00112,  FX2)    /* ANDComplement RT<-RA&!RB */
287 APUOP(M_ORC,            RR,     0x2c9,  "orc",          _A3(A_T,A_A,A_B),               00112,  FX2)    /* ORComplement  RT<-RA|!RB */
288 APUOP(M_ABSDB,          RR,     0x053,  "absdb",        _A3(A_T,A_A,A_B),               00112,  FXB)    /* ABSoluteDiff  RT<-|RA-RB| */
289 APUOP(M_AVGB,           RR,     0x0d3,  "avgb",         _A3(A_T,A_A,A_B),               00112,  FXB)    /* AVG%          RT<-(RA+RB+1)/2 */
290 APUOP(M_SUMB,           RR,     0x253,  "sumb",         _A3(A_T,A_A,A_B),               00112,  FXB)    /* SUM%          RT<-f(RA,RB) */
291 APUOP(M_DFA,            RR,     0x2cc,  "dfa",          _A3(A_T,A_A,A_B),               00112,  FPD)    /* DFAdd         RT<-RA+RB */
292 APUOP(M_DFM,            RR,     0x2ce,  "dfm",          _A3(A_T,A_A,A_B),               00112,  FPD)    /* DFMul         RT<-RA*RB */
293 APUOP(M_DFS,            RR,     0x2cd,  "dfs",          _A3(A_T,A_A,A_B),               00112,  FPD)    /* DFSub         RT<-RA-RB */
294 APUOP(M_FA,             RR,     0x2c4,  "fa",           _A3(A_T,A_A,A_B),               00112,  FP6)    /* FAdd          RT<-RA+RB */
295 APUOP(M_FM,             RR,     0x2c6,  "fm",           _A3(A_T,A_A,A_B),               00112,  FP6)    /* FMul          RT<-RA*RB */
296 APUOP(M_FS,             RR,     0x2c5,  "fs",           _A3(A_T,A_A,A_B),               00112,  FP6)    /* FSub          RT<-RA-RB */
297 APUOP(M_MPY,            RR,     0x3c4,  "mpy",          _A3(A_T,A_A,A_B),               00112,  FP7)    /* MPY           RT<-RA*RB */
298 APUOP(M_MPYH,           RR,     0x3c5,  "mpyh",         _A3(A_T,A_A,A_B),               00112,  FP7)    /* MPYH          RT<-(RAh*RB)<<16 */
299 APUOP(M_MPYHH,          RR,     0x3c6,  "mpyhh",        _A3(A_T,A_A,A_B),               00112,  FP7)    /* MPYHH         RT<-RAh*RBh */
300 APUOP(M_MPYHHU,         RR,     0x3ce,  "mpyhhu",       _A3(A_T,A_A,A_B),               00112,  FP7)    /* MPYHHU        RT<-RAh*RBh */
301 APUOP(M_MPYS,           RR,     0x3c7,  "mpys",         _A3(A_T,A_A,A_B),               00112,  FP7)    /* MPYS          RT<-(RA*RB)>>16 */
302 APUOP(M_MPYU,           RR,     0x3cc,  "mpyu",         _A3(A_T,A_A,A_B),               00112,  FP7)    /* MPYU          RT<-RA*RB */
303 APUOP(M_FI,             RR,     0x3d4,  "fi",           _A3(A_T,A_A,A_B),               00112,  FP7)    /* FInterpolate  RT<-f(RA,RB) */
304 APUOP(M_ROT,            RR,     0x058,  "rot",          _A3(A_T,A_A,A_B),               00112,  FX3)    /* ROT%          RT<-RA<<<RB */
305 APUOP(M_ROTM,           RR,     0x059,  "rotm",         _A3(A_T,A_A,A_B),               00112,  FX3)    /* ROT%M         RT<-RA<<Rb */
306 APUOP(M_ROTMA,          RR,     0x05a,  "rotma",        _A3(A_T,A_A,A_B),               00112,  FX3)    /* ROTMA%        RT<-RA<<Rb */
307 APUOP(M_SHL,            RR,     0x05b,  "shl",          _A3(A_T,A_A,A_B),               00112,  FX3)    /* SHL%          RT<-RA<<Rb */
308 APUOP(M_ROTH,           RR,     0x05c,  "roth",         _A3(A_T,A_A,A_B),               00112,  FX3)    /* ROT%          RT<-RA<<<RB */
309 APUOP(M_ROTHM,          RR,     0x05d,  "rothm",        _A3(A_T,A_A,A_B),               00112,  FX3)    /* ROT%M         RT<-RA<<Rb */
310 APUOP(M_ROTMAH,         RR,     0x05e,  "rotmah",       _A3(A_T,A_A,A_B),               00112,  FX3)    /* ROTMA%        RT<-RA<<Rb */
311 APUOP(M_SHLH,           RR,     0x05f,  "shlh",         _A3(A_T,A_A,A_B),               00112,  FX3)    /* SHL%          RT<-RA<<Rb */
312 APUOP(M_MPYHHA,         RR,     0x346,  "mpyhha",       _A3(A_T,A_A,A_B),               00113,  FP7)    /* MPYHHA        RT<-RAh*RBh+RT */
313 APUOP(M_MPYHHAU,        RR,     0x34e,  "mpyhhau",      _A3(A_T,A_A,A_B),               00113,  FP7)    /* MPYHHAU       RT<-RAh*RBh+RT */
314 APUOP(M_DFMA,           RR,     0x35c,  "dfma",         _A3(A_T,A_A,A_B),               00113,  FPD)    /* DFMAdd        RT<-RT+RA*RB */
315 APUOP(M_DFMS,           RR,     0x35d,  "dfms",         _A3(A_T,A_A,A_B),               00113,  FPD)    /* DFMSub        RT<-RA*RB-RT */
316 APUOP(M_DFNMS,          RR,     0x35e,  "dfnms",        _A3(A_T,A_A,A_B),               00113,  FPD)    /* DFNMSub       RT<-RT-RA*RB */
317 APUOP(M_DFNMA,          RR,     0x35f,  "dfnma",        _A3(A_T,A_A,A_B),               00113,  FPD)    /* DFNMAdd       RT<-(-RT)-RA*RB */
318 APUOP(M_FMA,            RRR,    0x700,  "fma",          _A4(A_C,A_A,A_B,A_T),   02111,  FP6)    /* FMAdd         RC<-RT+RA*RB */
319 APUOP(M_FMS,            RRR,    0x780,  "fms",          _A4(A_C,A_A,A_B,A_T),   02111,  FP6)    /* FMSub         RC<-RA*RB-RT */
320 APUOP(M_FNMS,           RRR,    0x680,  "fnms",         _A4(A_C,A_A,A_B,A_T),   02111,  FP6)    /* FNMSub        RC<-RT-RA*RB */
321 APUOP(M_MPYA,           RRR,    0x600,  "mpya",         _A4(A_C,A_A,A_B,A_T),   02111,  FP7)    /* MPYA          RC<-RA*RB+RT */
322 APUOP(M_SELB,           RRR,    0x400,  "selb",         _A4(A_C,A_A,A_B,A_T),   02111,  FX2)    /* SELectBits    RC<-RA&RT|RB&!RT */
323 /* for system function call, this uses op-code of mtspr */
324 APUOP(M_SYSCALL,        RI7,    0x10c,  "syscall",      _A3(A_T,A_A,A_S7N),     00002,  SPR)        /* System Call */
325 /*
326 pseudo instruction:
327 system call
328 value of I9     operation
329 0       halt
330 1               rt[0] = open(MEM[ra[0]],        ra[1])
331 2               rt[0] = close(ra[0])
332 3               rt[0] = read(ra[0],     MEM[ra[1]],     ra[2])
333 4               rt[0] = write(ra[0],    MEM[ra[1]],     ra[2])
334 5               printf(MEM[ra[0]],      ra[1],  ra[2],  ra[3])
335 42              rt[0] = clock()
336 52              rt[0] = lseek(ra0,      ra1,    ra2)
337
338 */
339
340
341 /* new multiprecision add/sub */
342 APUOP(M_ADDX,           RR,     0x340,  "addx",         _A3(A_T,A_A,A_B),               00113,          FX2)    /* Add_eXtended  RT<-RA+RB+RT */
343 APUOP(M_CG,             RR,     0x0c2,  "cg",           _A3(A_T,A_A,A_B),               00112,          FX2)    /* CarryGenerate RT<-cout(RA+RB) */
344 APUOP(M_CGX,            RR,     0x342,  "cgx",          _A3(A_T,A_A,A_B),               00113,          FX2)    /* CarryGen_eXtd RT<-cout(RA+RB+RT) */
345 APUOP(M_SFX,            RR,     0x341,  "sfx",          _A3(A_T,A_A,A_B),               00113,          FX2)    /* Add_eXtended  RT<-RA+RB+RT */
346 APUOP(M_BG,             RR,     0x042,  "bg",           _A3(A_T,A_A,A_B),               00112,          FX2)    /* CarryGenerate RT<-cout(RA+RB) */
347 APUOP(M_BGX,            RR,     0x343,  "bgx",          _A3(A_T,A_A,A_B),               00113,          FX2)    /* CarryGen_eXtd RT<-cout(RA+RB+RT) */
348
349 /*
350
351 The following ops are a subset of above except with feature bits set.
352 Feature bits are bits 11-17 of the instruction:
353
354   11 - C & P feature bit
355   12 - disable interrupts
356   13 - enable interrupts
357
358 */
359 APUOPFB(M_BID,          RR,     0x1a8,  0x20,   "bid",          _A1(A_A),               00010,  BR)     /* BI            IP<-RA */
360 APUOPFB(M_BIE,          RR,     0x1a8,  0x10,   "bie",          _A1(A_A),               00010,  BR)     /* BI            IP<-RA */
361 APUOPFB(M_BISLD,        RR,     0x1a9,  0x20,   "bisld",        _A2(A_T,A_A),   00012,  BR)     /* BISL          RT,IP<-IP,RA */
362 APUOPFB(M_BISLE,        RR,     0x1a9,  0x10,   "bisle",        _A2(A_T,A_A),   00012,  BR)     /* BISL          RT,IP<-IP,RA */
363 APUOPFB(M_IRETD,        RR,     0x1aa,  0x20,   "iretd",        _A1(A_A),       00010,  BR)     /* IRET          IP<-SRR0 */
364 APUOPFB(M_IRETD2,       RR,     0x1aa,  0x20,   "iretd",        _A0(),          00010,  BR)     /* IRET          IP<-SRR0 */
365 APUOPFB(M_IRETE,        RR,     0x1aa,  0x10,   "irete",        _A1(A_A),       00010,  BR)     /* IRET          IP<-SRR0 */
366 APUOPFB(M_IRETE2,       RR,     0x1aa,  0x10,   "irete",        _A0(),          00010,  BR)     /* IRET          IP<-SRR0 */
367 APUOPFB(M_BISLEDD,      RR,     0x1ab,  0x20,   "bisledd",      _A2(A_T,A_A),   00012,  BR)     /* BISLED        RT,IP<-IP,RA_if(ext) */
368 APUOPFB(M_BISLEDE,      RR,     0x1ab,  0x10,   "bislede",      _A2(A_T,A_A),   00012,  BR)     /* BISLED        RT,IP<-IP,RA_if(ext) */
369 APUOPFB(M_BIHNZD,       RR,     0x12b,  0x20,   "bihnzd",       _A2(A_T,A_A),   00011,  BR)     /* BIHNZ         IP<-RA_if(RT) */
370 APUOPFB(M_BIHNZE,       RR,     0x12b,  0x10,   "bihnze",       _A2(A_T,A_A),   00011,  BR)     /* BIHNZ         IP<-RA_if(RT) */
371 APUOPFB(M_BIHZD,        RR,     0x12a,  0x20,   "bihzd",        _A2(A_T,A_A),   00011,  BR)     /* BIHZ          IP<-RA_if(RT) */
372 APUOPFB(M_BIHZE,        RR,     0x12a,  0x10,   "bihze",        _A2(A_T,A_A),   00011,  BR)     /* BIHZ          IP<-RA_if(RT) */
373 APUOPFB(M_BINZD,        RR,     0x129,  0x20,   "binzd",        _A2(A_T,A_A),   00011,  BR)     /* BINZ          IP<-RA_if(RT) */
374 APUOPFB(M_BINZE,        RR,     0x129,  0x10,   "binze",        _A2(A_T,A_A),   00011,  BR)     /* BINZ          IP<-RA_if(RT) */
375 APUOPFB(M_BIZD,         RR,     0x128,  0x20,   "bizd",         _A2(A_T,A_A),   00011,  BR)     /* BIZ           IP<-RA_if(RT) */
376 APUOPFB(M_BIZE,         RR,     0x128,  0x10,   "bize",         _A2(A_T,A_A),   00011,  BR)     /* BIZ           IP<-RA_if(RT) */
377 APUOPFB(M_SYNCC,        RR,     0x002,  0x40,   "syncc",        _A0(),          00000,  BR)     /* SYNCC          flush_pipe */
378 APUOPFB(M_HBRP,         LBTI,   0x1ac,  0x40,   "hbrp",         _A0(),          00010,  LS)     /* HBR           BTB[B9]<-M[Ra] */
379
380 /* Synonyms required by the AS manual. */
381 APUOP(M_LR,             RI10,   0x020,  "lr",           _A2(A_T,A_A),   00012,  FX2)    /* OR%I          RT<-RA|I10 */
382 APUOP(M_BIHT,           RR,     0x12b,  "biht",         _A2(A_T,A_A),   00011,  BR)     /* BIHNZ         IP<-RA_if(RT) */
383 APUOP(M_BIHF,           RR,     0x12a,  "bihf",         _A2(A_T,A_A),   00011,  BR)     /* BIHZ          IP<-RA_if(RT) */
384 APUOP(M_BIT,            RR,     0x129,  "bit",          _A2(A_T,A_A),   00011,  BR)     /* BINZ          IP<-RA_if(RT) */
385 APUOP(M_BIF,            RR,     0x128,  "bif",          _A2(A_T,A_A),   00011,  BR)     /* BIZ           IP<-RA_if(RT) */
386 APUOPFB(M_BIHTD,        RR,     0x12b,  0x20,   "bihtd",        _A2(A_T,A_A),   00011,  BR)     /* BIHNF         IP<-RA_if(RT) */
387 APUOPFB(M_BIHTE,        RR,     0x12b,  0x10,   "bihte",        _A2(A_T,A_A),   00011,  BR)     /* BIHNF         IP<-RA_if(RT) */
388 APUOPFB(M_BIHFD,        RR,     0x12a,  0x20,   "bihfd",        _A2(A_T,A_A),   00011,  BR)     /* BIHZ          IP<-RA_if(RT) */
389 APUOPFB(M_BIHFE,        RR,     0x12a,  0x10,   "bihfe",        _A2(A_T,A_A),   00011,  BR)     /* BIHZ          IP<-RA_if(RT) */
390 APUOPFB(M_BITD,         RR,     0x129,  0x20,   "bitd",         _A2(A_T,A_A),   00011,  BR)     /* BINF          IP<-RA_if(RT) */
391 APUOPFB(M_BITE,         RR,     0x129,  0x10,   "bite",         _A2(A_T,A_A),   00011,  BR)     /* BINF          IP<-RA_if(RT) */
392 APUOPFB(M_BIFD,         RR,     0x128,  0x20,   "bifd",         _A2(A_T,A_A),   00011,  BR)     /* BIZ           IP<-RA_if(RT) */
393 APUOPFB(M_BIFE,         RR,     0x128,  0x10,   "bife",         _A2(A_T,A_A),   00011,  BR)     /* BIZ           IP<-RA_if(RT) */
394
395 #undef _A0
396 #undef _A1
397 #undef _A2
398 #undef _A3
399 #undef _A4