]> Git Repo - qemu.git/blob - target/s390x/insn-data.def
s390x/cpumodel: wire up cpu type + id for TCG
[qemu.git] / target / s390x / insn-data.def
1 /*
2  *  Arguments to the opcode prototypes
3  *
4  *  C(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC)
5  *  D(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, DATA)
6  *
7  *  OPC  = (op << 8) | op2 where op is the major, op2 the minor opcode
8  *  NAME = name of the opcode, used internally
9  *  FMT  = format of the opcode (defined in insn-format.def)
10  *  FAC  = facility the opcode is available in (defined in DisasFacility)
11  *  I1   = func in1_xx fills o->in1
12  *  I2   = func in2_xx fills o->in2
13  *  P    = func prep_xx initializes o->*out*
14  *  W    = func wout_xx writes o->*out* somewhere
15  *  OP   = func op_xx does the bulk of the operation
16  *  CC   = func cout_xx defines how cc should get set
17  *  DATA = immediate argument to op_xx function
18  *
19  *  The helpers get called in order: I1, I2, P, OP, W, CC
20  */
21
22 /* ADD */
23     C(0x1a00, AR,      RR_a,  Z,   r1, r2, new, r1_32, add, adds32)
24     C(0xb9f8, ARK,     RRF_a, DO,  r2, r3, new, r1_32, add, adds32)
25     C(0x5a00, A,       RX_a,  Z,   r1, m2_32s, new, r1_32, add, adds32)
26     C(0xe35a, AY,      RXY_a, LD,  r1, m2_32s, new, r1_32, add, adds32)
27     C(0xb908, AGR,     RRE,   Z,   r1, r2, r1, 0, add, adds64)
28     C(0xb918, AGFR,    RRE,   Z,   r1, r2_32s, r1, 0, add, adds64)
29     C(0xb9e8, AGRK,    RRF_a, DO,  r2, r3, r1, 0, add, adds64)
30     C(0xe308, AG,      RXY_a, Z,   r1, m2_64, r1, 0, add, adds64)
31     C(0xe318, AGF,     RXY_a, Z,   r1, m2_32s, r1, 0, add, adds64)
32     C(0xb30a, AEBR,    RRE,   Z,   e1, e2, new, e1, aeb, f32)
33     C(0xb31a, ADBR,    RRE,   Z,   f1_o, f2_o, f1, 0, adb, f64)
34     C(0xb34a, AXBR,    RRE,   Z,   0, x2_o, x1, 0, axb, f128)
35     C(0xed0a, AEB,     RXE,   Z,   e1, m2_32u, new, e1, aeb, f32)
36     C(0xed1a, ADB,     RXE,   Z,   f1_o, m2_64, f1, 0, adb, f64)
37 /* ADD HIGH */
38     C(0xb9c8, AHHHR,   RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, add, adds32)
39     C(0xb9d8, AHHLR,   RRF_a, HW,  r2_sr32, r3, new, r1_32h, add, adds32)
40 /* ADD IMMEDIATE */
41     C(0xc209, AFI,     RIL_a, EI,  r1, i2, new, r1_32, add, adds32)
42     C(0xeb6a, ASI,     SIY,   GIE, m1_32s, i2, new, m1_32, add, adds32)
43     C(0xecd8, AHIK,    RIE_d, DO,  r3, i2, new, r1_32, add, adds32)
44     C(0xc208, AGFI,    RIL_a, EI,  r1, i2, r1, 0, add, adds64)
45     C(0xeb7a, AGSI,    SIY,   GIE, m1_64, i2, new, m1_64, add, adds64)
46     C(0xecd9, AGHIK,   RIE_d, DO,  r3, i2, r1, 0, add, adds64)
47 /* ADD IMMEDIATE HIGH */
48     C(0xcc08, AIH,     RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, adds32)
49 /* ADD HALFWORD */
50     C(0x4a00, AH,      RX_a,  Z,   r1, m2_16s, new, r1_32, add, adds32)
51     C(0xe37a, AHY,     RXY_a, LD,  r1, m2_16s, new, r1_32, add, adds32)
52 /* ADD HALFWORD IMMEDIATE */
53     C(0xa70a, AHI,     RI_a,  Z,   r1, i2, new, r1_32, add, adds32)
54     C(0xa70b, AGHI,    RI_a,  Z,   r1, i2, r1, 0, add, adds64)
55
56 /* ADD LOGICAL */
57     C(0x1e00, ALR,     RR_a,  Z,   r1, r2, new, r1_32, add, addu32)
58     C(0xb9fa, ALRK,    RRF_a, DO,  r2, r3, new, r1_32, add, addu32)
59     C(0x5e00, AL,      RX_a,  Z,   r1, m2_32u, new, r1_32, add, addu32)
60     C(0xe35e, ALY,     RXY_a, LD,  r1, m2_32u, new, r1_32, add, addu32)
61     C(0xb90a, ALGR,    RRE,   Z,   r1, r2, r1, 0, add, addu64)
62     C(0xb91a, ALGFR,   RRE,   Z,   r1, r2_32u, r1, 0, add, addu64)
63     C(0xb9ea, ALGRK,   RRF_a, DO,  r2, r3, r1, 0, add, addu64)
64     C(0xe30a, ALG,     RXY_a, Z,   r1, m2_64, r1, 0, add, addu64)
65     C(0xe31a, ALGF,    RXY_a, Z,   r1, m2_32u, r1, 0, add, addu64)
66 /* ADD LOGICAL HIGH */
67     C(0xb9ca, ALHHHR,  RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, add, addu32)
68     C(0xb9da, ALHHLR,  RRF_a, HW,  r2_sr32, r3, new, r1_32h, add, addu32)
69 /* ADD LOGICAL IMMEDIATE */
70     C(0xc20b, ALFI,    RIL_a, EI,  r1, i2_32u, new, r1_32, add, addu32)
71     C(0xc20a, ALGFI,   RIL_a, EI,  r1, i2_32u, r1, 0, add, addu64)
72 /* ADD LOGICAL WITH SIGNED IMMEDIATE */
73     C(0xeb6e, ALSI,    SIY,   GIE, m1_32u, i2, new, m1_32, add, addu32)
74     C(0xecda, ALHSIK,  RIE_d, DO,  r3, i2, new, r1_32, add, addu32)
75     C(0xeb7e, ALGSI,   SIY,   GIE, m1_64, i2, new, m1_64, add, addu64)
76     C(0xecdb, ALGHSIK, RIE_d, DO,  r3, i2, r1, 0, add, addu64)
77 /* ADD LOGICAL WITH SIGNED IMMEDIATE HIGH */
78     C(0xcc0a, ALSIH,   RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, addu32)
79     C(0xcc0b, ALSIHN,  RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, 0)
80 /* ADD LOGICAL WITH CARRY */
81     C(0xb998, ALCR,    RRE,   Z,   r1, r2, new, r1_32, addc, addc32)
82     C(0xb988, ALCGR,   RRE,   Z,   r1, r2, r1, 0, addc, addc64)
83     C(0xe398, ALC,     RXY_a, Z,   r1, m2_32u, new, r1_32, addc, addc32)
84     C(0xe388, ALCG,    RXY_a, Z,   r1, m2_64, r1, 0, addc, addc64)
85
86 /* AND */
87     C(0x1400, NR,      RR_a,  Z,   r1, r2, new, r1_32, and, nz32)
88     C(0xb9f4, NRK,     RRF_a, DO,  r2, r3, new, r1_32, and, nz32)
89     C(0x5400, N,       RX_a,  Z,   r1, m2_32s, new, r1_32, and, nz32)
90     C(0xe354, NY,      RXY_a, LD,  r1, m2_32s, new, r1_32, and, nz32)
91     C(0xb980, NGR,     RRE,   Z,   r1, r2, r1, 0, and, nz64)
92     C(0xb9e4, NGRK,    RRF_a, DO,  r2, r3, r1, 0, and, nz64)
93     C(0xe380, NG,      RXY_a, Z,   r1, m2_64, r1, 0, and, nz64)
94     C(0xd400, NC,      SS_a,  Z,   la1, a2, 0, 0, nc, 0)
95 /* AND IMMEDIATE */
96     D(0xc00a, NIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, andi, 0, 0x2020)
97     D(0xc00b, NILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, andi, 0, 0x2000)
98     D(0xa504, NIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1030)
99     D(0xa505, NIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1020)
100     D(0xa506, NILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1010)
101     D(0xa507, NILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1000)
102     C(0x9400, NI,      SI,    Z,   m1_8u, i2_8u, new, m1_8, and, nz64)
103     C(0xeb54, NIY,     SIY,   LD,  m1_8u, i2_8u, new, m1_8, and, nz64)
104
105 /* BRANCH AND SAVE */
106     C(0x0d00, BASR,    RR_a,  Z,   0, r2_nz, r1, 0, bas, 0)
107     C(0x4d00, BAS,     RX_a,  Z,   0, a2, r1, 0, bas, 0)
108 /* BRANCH RELATIVE AND SAVE */
109     C(0xa705, BRAS,    RI_b,  Z,   0, 0, r1, 0, basi, 0)
110     C(0xc005, BRASL,   RIL_b, Z,   0, 0, r1, 0, basi, 0)
111 /* BRANCH ON CONDITION */
112     C(0x0700, BCR,     RR_b,  Z,   0, r2_nz, 0, 0, bc, 0)
113     C(0x4700, BC,      RX_b,  Z,   0, a2, 0, 0, bc, 0)
114 /* BRANCH RELATIVE ON CONDITION */
115     C(0xa704, BRC,     RI_c,  Z,   0, 0, 0, 0, bc, 0)
116     C(0xc004, BRCL,    RIL_c, Z,   0, 0, 0, 0, bc, 0)
117 /* BRANCH ON COUNT */
118     C(0x0600, BCTR,    RR_a,  Z,   0, r2_nz, 0, 0, bct32, 0)
119     C(0xb946, BCTGR,   RRE,   Z,   0, r2_nz, 0, 0, bct64, 0)
120     C(0x4600, BCT,     RX_a,  Z,   0, a2, 0, 0, bct32, 0)
121     C(0xe346, BCTG,    RXY_a, Z,   0, a2, 0, 0, bct64, 0)
122 /* BRANCH RELATIVE ON COUNT */
123     C(0xa706, BRCT,    RI_b,  Z,   0, 0, 0, 0, bct32, 0)
124     C(0xa707, BRCTG,   RI_b,  Z,   0, 0, 0, 0, bct64, 0)
125 /* BRANCH RELATIVE ON COUNT HIGH */
126     C(0xcc06, BRCTH,   RIL_b, HW,  0, 0, 0, 0, bcth, 0)
127 /* BRANCH ON INDEX */
128     D(0x8600, BXH,     RS_a,  Z,   0, a2, 0, 0, bx32, 0, 0)
129     D(0x8700, BXLE,    RS_a,  Z,   0, a2, 0, 0, bx32, 0, 1)
130     D(0xeb44, BXHG,    RSY_a, Z,   0, a2, 0, 0, bx64, 0, 0)
131     D(0xeb45, BXLEG,   RSY_a, Z,   0, a2, 0, 0, bx64, 0, 1)
132 /* BRANCH RELATIVE ON INDEX */
133     D(0x8400, BRXH,    RSI,   Z,   0, 0, 0, 0, bx32, 0, 0)
134     D(0x8500, BRXLE,   RSI,   Z,   0, 0, 0, 0, bx32, 0, 1)
135     D(0xec44, BRXHG,   RIE_e, Z,   0, 0, 0, 0, bx64, 0, 0)
136     D(0xec45, BRXHLE,  RIE_e, Z,   0, 0, 0, 0, bx64, 0, 1)
137
138 /* CHECKSUM */
139     C(0xb241, CKSM,    RRE,   Z,   r1_o, ra2, new, r1_32, cksm, 0)
140
141 /* COPY SIGN */
142     C(0xb372, CPSDR,   RRF_b, FPSSH, f3_o, f2_o, f1, 0, cps, 0)
143
144 /* COMPARE */
145     C(0x1900, CR,      RR_a,  Z,   r1_o, r2_o, 0, 0, 0, cmps32)
146     C(0x5900, C,       RX_a,  Z,   r1_o, m2_32s, 0, 0, 0, cmps32)
147     C(0xe359, CY,      RXY_a, LD,  r1_o, m2_32s, 0, 0, 0, cmps32)
148     C(0xb920, CGR,     RRE,   Z,   r1_o, r2_o, 0, 0, 0, cmps64)
149     C(0xb930, CGFR,    RRE,   Z,   r1_o, r2_32s, 0, 0, 0, cmps64)
150     C(0xe320, CG,      RXY_a, Z,   r1_o, m2_64, 0, 0, 0, cmps64)
151     C(0xe330, CGF,     RXY_a, Z,   r1_o, m2_32s, 0, 0, 0, cmps64)
152     C(0xb309, CEBR,    RRE,   Z,   e1, e2, 0, 0, ceb, 0)
153     C(0xb319, CDBR,    RRE,   Z,   f1_o, f2_o, 0, 0, cdb, 0)
154     C(0xb349, CXBR,    RRE,   Z,   x1_o, x2_o, 0, 0, cxb, 0)
155     C(0xed09, CEB,     RXE,   Z,   e1, m2_32u, 0, 0, ceb, 0)
156     C(0xed19, CDB,     RXE,   Z,   f1_o, m2_64, 0, 0, cdb, 0)
157 /* COMPARE AND SIGNAL */
158     C(0xb308, KEBR,    RRE,   Z,   e1, e2, 0, 0, keb, 0)
159     C(0xb318, KDBR,    RRE,   Z,   f1_o, f2_o, 0, 0, kdb, 0)
160     C(0xb348, KXBR,    RRE,   Z,   x1_o, x2_o, 0, 0, kxb, 0)
161     C(0xed08, KEB,     RXE,   Z,   e1, m2_32u, 0, 0, keb, 0)
162     C(0xed18, KDB,     RXE,   Z,   f1_o, m2_64, 0, 0, kdb, 0)
163 /* COMPARE IMMEDIATE */
164     C(0xc20d, CFI,     RIL_a, EI,  r1, i2, 0, 0, 0, cmps32)
165     C(0xc20c, CGFI,    RIL_a, EI,  r1, i2, 0, 0, 0, cmps64)
166 /* COMPARE RELATIVE LONG */
167     C(0xc60d, CRL,     RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps32)
168     C(0xc608, CGRL,    RIL_b, GIE, r1, mri2_64, 0, 0, 0, cmps64)
169     C(0xc60c, CGFRL,   RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps64)
170 /* COMPARE HALFWORD */
171     C(0x4900, CH,      RX_a,  Z,   r1_o, m2_16s, 0, 0, 0, cmps32)
172     C(0xe379, CHY,     RXY_a, LD,  r1_o, m2_16s, 0, 0, 0, cmps32)
173     C(0xe334, CGH,     RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
174 /* COMPARE HALFWORD IMMEDIATE */
175     C(0xa70e, CHI,     RI_a,  Z,   r1_o, i2, 0, 0, 0, cmps32)
176     C(0xa70f, CGHI,    RI_a,  Z,   r1_o, i2, 0, 0, 0, cmps64)
177     C(0xe554, CHHSI,   SIL,   GIE, m1_16s, i2, 0, 0, 0, cmps64)
178     C(0xe55c, CHSI,    SIL,   GIE, m1_32s, i2, 0, 0, 0, cmps64)
179     C(0xe558, CGHSI,   SIL,   GIE, m1_64, i2, 0, 0, 0, cmps64)
180 /* COMPARE HALFWORD RELATIVE LONG */
181     C(0xc605, CHRL,    RIL_b, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
182     C(0xc604, CGHRL,   RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
183 /* COMPARE HIGH */
184     C(0xb9cd, CHHR,    RRE,   HW,  r1_sr32, r2_sr32, 0, 0, 0, cmps32)
185     C(0xb9dd, CHLR,    RRE,   HW,  r1_sr32, r2_o, 0, 0, 0, cmps32)
186     C(0xe3cd, CHF,     RXY_a, HW,  r1_sr32, m2_32s, 0, 0, 0, cmps32)
187 /* COMPARE IMMEDIATE HIGH */
188     C(0xcc0d, CIH,     RIL_a, HW,  r1_sr32, i2, 0, 0, 0, cmps32)
189
190 /* COMPARE LOGICAL */
191     C(0x1500, CLR,     RR_a,  Z,   r1, r2, 0, 0, 0, cmpu32)
192     C(0x5500, CL,      RX_a,  Z,   r1, m2_32s, 0, 0, 0, cmpu32)
193     C(0xe355, CLY,     RXY_a, LD,  r1, m2_32s, 0, 0, 0, cmpu32)
194     C(0xb921, CLGR,    RRE,   Z,   r1, r2, 0, 0, 0, cmpu64)
195     C(0xb931, CLGFR,   RRE,   Z,   r1, r2_32u, 0, 0, 0, cmpu64)
196     C(0xe321, CLG,     RXY_a, Z,   r1, m2_64, 0, 0, 0, cmpu64)
197     C(0xe331, CLGF,    RXY_a, Z,   r1, m2_32u, 0, 0, 0, cmpu64)
198     C(0xd500, CLC,     SS_a,  Z,   la1, a2, 0, 0, clc, 0)
199 /* COMPARE LOGICAL HIGH */
200     C(0xb9cf, CLHHR,   RRE,   HW,  r1_sr32, r2_sr32, 0, 0, 0, cmpu32)
201     C(0xb9df, CLHLR,   RRE,   HW,  r1_sr32, r2_o, 0, 0, 0, cmpu32)
202     C(0xe3cf, CLHF,    RXY_a, HW,  r1_sr32, m2_32s, 0, 0, 0, cmpu32)
203 /* COMPARE LOGICAL IMMEDIATE */
204     C(0xc20f, CLFI,    RIL_a, EI,  r1, i2, 0, 0, 0, cmpu32)
205     C(0xc20e, CLGFI,   RIL_a, EI,  r1, i2_32u, 0, 0, 0, cmpu64)
206     C(0x9500, CLI,     SI,    Z,   m1_8u, i2_8u, 0, 0, 0, cmpu64)
207     C(0xeb55, CLIY,    SIY,   LD,  m1_8u, i2_8u, 0, 0, 0, cmpu64)
208     C(0xe555, CLHHSI,  SIL,   GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
209     C(0xe55d, CLFHSI,  SIL,   GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
210     C(0xe559, CLGHSI,  SIL,   GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
211 /* COMPARE LOGICAL IMMEDIATE HIGH */
212     C(0xcc0f, CLIH,    RIL_a, HW,  r1_sr32, i2, 0, 0, 0, cmpu32)
213 /* COMPARE LOGICAL RELATIVE LONG */
214     C(0xc60f, CLRL,    RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
215     C(0xc60a, CLGRL,   RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
216     C(0xc60e, CLGFRL,  RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
217     C(0xc607, CLHRL,   RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
218     C(0xc606, CLGHRL,  RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
219 /* COMPARE LOGICAL LONG */
220     C(0x0f00, CLCL,    RR_a,  Z,   0, 0, 0, 0, clcl, 0)
221 /* COMPARE LOGICAL LONG EXTENDED */
222     C(0xa900, CLCLE,   RS_a,  Z,   0, a2, 0, 0, clcle, 0)
223 /* COMPARE LOGICAL LONG UNICODE */
224     C(0xeb8f, CLCLU,   RSY_a, E2,  0, a2, 0, 0, clclu, 0)
225 /* COMPARE LOGICAL CHARACTERS UNDER MASK */
226     C(0xbd00, CLM,     RS_b,  Z,   r1_o, a2, 0, 0, clm, 0)
227     C(0xeb21, CLMY,    RSY_b, LD,  r1_o, a2, 0, 0, clm, 0)
228     C(0xeb20, CLMH,    RSY_b, Z,   r1_sr32, a2, 0, 0, clm, 0)
229 /* COMPARE LOGICAL STRING */
230     C(0xb25d, CLST,    RRE,   Z,   r1_o, r2_o, 0, 0, clst, 0)
231
232 /* COMPARE AND BRANCH */
233     D(0xecf6, CRB,     RRS,   GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
234     D(0xece4, CGRB,    RRS,   GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
235     D(0xec76, CRJ,     RIE_b, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
236     D(0xec64, CGRJ,    RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
237     D(0xecfe, CIB,     RIS,   GIE, r1_32s, i2, 0, 0, cj, 0, 0)
238     D(0xecfc, CGIB,    RIS,   GIE, r1_o, i2, 0, 0, cj, 0, 0)
239     D(0xec7e, CIJ,     RIE_c, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
240     D(0xec7c, CGIJ,    RIE_c, GIE, r1_o, i2, 0, 0, cj, 0, 0)
241 /* COMPARE LOGICAL AND BRANCH */
242     D(0xecf7, CLRB,    RRS,   GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
243     D(0xece5, CLGRB,   RRS,   GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
244     D(0xec77, CLRJ,    RIE_b, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
245     D(0xec65, CLGRJ,   RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
246     D(0xecff, CLIB,    RIS,   GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
247     D(0xecfd, CLGIB,   RIS,   GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
248     D(0xec7f, CLIJ,    RIE_c, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
249     D(0xec7d, CLGIJ,   RIE_c, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
250
251 /* COMPARE AND SWAP */
252     D(0xba00, CS,      RS_a,  Z,   r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
253     D(0xeb14, CSY,     RSY_a, LD,  r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
254     D(0xeb30, CSG,     RSY_a, Z,   r3_o, r1_o, new, r1, cs, 0, MO_TEQ)
255 /* COMPARE DOUBLE AND SWAP */
256     D(0xbb00, CDS,     RS_a,  Z,   r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
257     D(0xeb31, CDSY,    RSY_a, LD,  r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
258     C(0xeb3e, CDSG,    RSY_a, Z,   0, 0, 0, 0, cdsg, 0)
259
260 /* COMPARE AND TRAP */
261     D(0xb972, CRT,     RRF_c, GIE, r1_32s, r2_32s, 0, 0, ct, 0, 0)
262     D(0xb960, CGRT,    RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 0)
263     D(0xec72, CIT,     RIE_a, GIE, r1_32s, i2, 0, 0, ct, 0, 0)
264     D(0xec70, CGIT,    RIE_a, GIE, r1_o, i2, 0, 0, ct, 0, 0)
265 /* COMPARE LOGICAL AND TRAP */
266     D(0xb973, CLRT,    RRF_c, GIE, r1_32u, r2_32u, 0, 0, ct, 0, 1)
267     D(0xb961, CLGRT,   RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
268     D(0xeb23, CLT,     RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
269     D(0xeb2b, CLGT,    RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
270     D(0xec73, CLFIT,   RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
271     D(0xec71, CLGIT,   RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1)
272
273 /* CONVERT TO DECIMAL */
274     C(0x4e00, CVD,     RX_a,  Z,   r1_o, a2, 0, 0, cvd, 0)
275     C(0xe326, CVDY,    RXY_a, LD,  r1_o, a2, 0, 0, cvd, 0)
276 /* CONVERT TO FIXED */
277     C(0xb398, CFEBR,   RRF_e, Z,   0, e2, new, r1_32, cfeb, 0)
278     C(0xb399, CFDBR,   RRF_e, Z,   0, f2_o, new, r1_32, cfdb, 0)
279     C(0xb39a, CFXBR,   RRF_e, Z,   0, x2_o, new, r1_32, cfxb, 0)
280     C(0xb3a8, CGEBR,   RRF_e, Z,   0, e2, r1, 0, cgeb, 0)
281     C(0xb3a9, CGDBR,   RRF_e, Z,   0, f2_o, r1, 0, cgdb, 0)
282     C(0xb3aa, CGXBR,   RRF_e, Z,   0, x2_o, r1, 0, cgxb, 0)
283 /* CONVERT FROM FIXED */
284     C(0xb394, CEFBR,   RRF_e, Z,   0, r2_32s, new, e1, cegb, 0)
285     C(0xb395, CDFBR,   RRF_e, Z,   0, r2_32s, f1, 0, cdgb, 0)
286     C(0xb396, CXFBR,   RRF_e, Z,   0, r2_32s, x1, 0, cxgb, 0)
287     C(0xb3a4, CEGBR,   RRF_e, Z,   0, r2_o, new, e1, cegb, 0)
288     C(0xb3a5, CDGBR,   RRF_e, Z,   0, r2_o, f1, 0, cdgb, 0)
289     C(0xb3a6, CXGBR,   RRF_e, Z,   0, r2_o, x1, 0, cxgb, 0)
290 /* CONVERT TO LOGICAL */
291     C(0xb39c, CLFEBR,  RRF_e, FPE, 0, e2, new, r1_32, clfeb, 0)
292     C(0xb39d, CLFDBR,  RRF_e, FPE, 0, f2_o, new, r1_32, clfdb, 0)
293     C(0xb39e, CLFXBR,  RRF_e, FPE, 0, x2_o, new, r1_32, clfxb, 0)
294     C(0xb3ac, CLGEBR,  RRF_e, FPE, 0, e2, r1, 0, clgeb, 0)
295     C(0xb3ad, CLGDBR,  RRF_e, FPE, 0, f2_o, r1, 0, clgdb, 0)
296     C(0xb3ae, CLGXBR,  RRF_e, FPE, 0, x2_o, r1, 0, clgxb, 0)
297 /* CONVERT FROM LOGICAL */
298     C(0xb390, CELFBR,  RRF_e, FPE, 0, r2_32u, new, e1, celgb, 0)
299     C(0xb391, CDLFBR,  RRF_e, FPE, 0, r2_32u, f1, 0, cdlgb, 0)
300     C(0xb392, CXLFBR,  RRF_e, FPE, 0, r2_32u, x1, 0, cxlgb, 0)
301     C(0xb3a0, CELGBR,  RRF_e, FPE, 0, r2_o, new, e1, celgb, 0)
302     C(0xb3a1, CDLGBR,  RRF_e, FPE, 0, r2_o, f1, 0, cdlgb, 0)
303     C(0xb3a2, CXLGBR,  RRF_e, FPE, 0, r2_o, x1, 0, cxlgb, 0)
304
305 /* DIVIDE */
306     C(0x1d00, DR,      RR_a,  Z,   r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
307     C(0x5d00, D,       RX_a,  Z,   r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
308     C(0xb30d, DEBR,    RRE,   Z,   e1, e2, new, e1, deb, 0)
309     C(0xb31d, DDBR,    RRE,   Z,   f1_o, f2_o, f1, 0, ddb, 0)
310     C(0xb34d, DXBR,    RRE,   Z,   0, x2_o, x1, 0, dxb, 0)
311     C(0xed0d, DEB,     RXE,   Z,   e1, m2_32u, new, e1, deb, 0)
312     C(0xed1d, DDB,     RXE,   Z,   f1_o, m2_64, f1, 0, ddb, 0)
313 /* DIVIDE LOGICAL */
314     C(0xb997, DLR,     RRE,   Z,   r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
315     C(0xe397, DL,      RXY_a, Z,   r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
316     C(0xb987, DLGR,    RRE,   Z,   0, r2_o, r1_P, 0, divu64, 0)
317     C(0xe387, DLG,     RXY_a, Z,   0, m2_64, r1_P, 0, divu64, 0)
318 /* DIVIDE SINGLE */
319     C(0xb90d, DSGR,    RRE,   Z,   r1p1, r2, r1_P, 0, divs64, 0)
320     C(0xb91d, DSGFR,   RRE,   Z,   r1p1, r2_32s, r1_P, 0, divs64, 0)
321     C(0xe30d, DSG,     RXY_a, Z,   r1p1, m2_64, r1_P, 0, divs64, 0)
322     C(0xe31d, DSGF,    RXY_a, Z,   r1p1, m2_32s, r1_P, 0, divs64, 0)
323
324 /* EXCLUSIVE OR */
325     C(0x1700, XR,      RR_a,  Z,   r1, r2, new, r1_32, xor, nz32)
326     C(0xb9f7, XRK,     RRF_a, DO,  r2, r3, new, r1_32, xor, nz32)
327     C(0x5700, X,       RX_a,  Z,   r1, m2_32s, new, r1_32, xor, nz32)
328     C(0xe357, XY,      RXY_a, LD,  r1, m2_32s, new, r1_32, xor, nz32)
329     C(0xb982, XGR,     RRE,   Z,   r1, r2, r1, 0, xor, nz64)
330     C(0xb9e7, XGRK,    RRF_a, DO,  r2, r3, r1, 0, xor, nz64)
331     C(0xe382, XG,      RXY_a, Z,   r1, m2_64, r1, 0, xor, nz64)
332     C(0xd700, XC,      SS_a,  Z,   0, 0, 0, 0, xc, 0)
333 /* EXCLUSIVE OR IMMEDIATE */
334     D(0xc006, XIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
335     D(0xc007, XILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
336     C(0x9700, XI,      SI,    Z,   m1_8u, i2_8u, new, m1_8, xor, nz64)
337     C(0xeb57, XIY,     SIY,   LD,  m1_8u, i2_8u, new, m1_8, xor, nz64)
338
339 /* EXECUTE */
340     C(0x4400, EX,      RX_a,  Z,   0, a2, 0, 0, ex, 0)
341 /* EXECUTE RELATIVE LONG */
342     C(0xc600, EXRL,    RIL_b, EE,  0, ri2, 0, 0, ex, 0)
343
344 /* EXTRACT ACCESS */
345     C(0xb24f, EAR,     RRE,   Z,   0, 0, new, r1_32, ear, 0)
346 /* EXTRACT CPU ATTRIBUTE */
347     C(0xeb4c, ECAG,    RSY_a, GIE, 0, a2, r1, 0, ecag, 0)
348 /* EXTRACT FPC */
349     C(0xb38c, EFPC,    RRE,   Z,   0, 0, new, r1_32, efpc, 0)
350 /* EXTRACT PSW */
351     C(0xb98d, EPSW,    RRE,   Z,   0, 0, 0, 0, epsw, 0)
352
353 /* FIND LEFTMOST ONE */
354     C(0xb983, FLOGR,   RRE,   EI,  0, r2_o, r1_P, 0, flogr, 0)
355
356 /* INSERT CHARACTER */
357     C(0x4300, IC,      RX_a,  Z,   0, m2_8u, 0, r1_8, mov2, 0)
358     C(0xe373, ICY,     RXY_a, LD,  0, m2_8u, 0, r1_8, mov2, 0)
359 /* INSERT CHARACTERS UNDER MASK */
360     D(0xbf00, ICM,     RS_b,  Z,   0, a2, r1, 0, icm, 0, 0)
361     D(0xeb81, ICMY,    RSY_b, LD,  0, a2, r1, 0, icm, 0, 0)
362     D(0xeb80, ICMH,    RSY_b, Z,   0, a2, r1, 0, icm, 0, 32)
363 /* INSERT IMMEDIATE */
364     D(0xc008, IIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
365     D(0xc009, IILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
366     D(0xa500, IIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
367     D(0xa501, IIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
368     D(0xa502, IILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
369     D(0xa503, IILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
370 /* INSERT PROGRAM MASK */
371     C(0xb222, IPM,     RRE,   Z,   0, 0, r1, 0, ipm, 0)
372
373 /* LOAD */
374     C(0x1800, LR,      RR_a,  Z,   0, r2_o, 0, cond_r1r2_32, mov2, 0)
375     C(0x5800, L,       RX_a,  Z,   0, a2, new, r1_32, ld32s, 0)
376     C(0xe358, LY,      RXY_a, LD,  0, a2, new, r1_32, ld32s, 0)
377     C(0xb904, LGR,     RRE,   Z,   0, r2_o, 0, r1, mov2, 0)
378     C(0xb914, LGFR,    RRE,   Z,   0, r2_32s, 0, r1, mov2, 0)
379     C(0xe304, LG,      RXY_a, Z,   0, a2, r1, 0, ld64, 0)
380     C(0xe314, LGF,     RXY_a, Z,   0, a2, r1, 0, ld32s, 0)
381     C(0x2800, LDR,     RR_a,  Z,   0, f2_o, 0, f1, mov2, 0)
382     C(0x6800, LD,      RX_a,  Z,   0, m2_64, 0, f1, mov2, 0)
383     C(0xed65, LDY,     RXY_a, LD,  0, m2_64, 0, f1, mov2, 0)
384     C(0x3800, LER,     RR_a,  Z,   0, e2, 0, cond_e1e2, mov2, 0)
385     C(0x7800, LE,      RX_a,  Z,   0, m2_32u, 0, e1, mov2, 0)
386     C(0xed64, LEY,     RXY_a, LD,  0, m2_32u, 0, e1, mov2, 0)
387     C(0xb365, LXR,     RRE,   Z,   0, x2_o, 0, x1, movx, 0)
388 /* LOAD IMMEDIATE */
389     C(0xc001, LGFI,    RIL_a, EI,  0, i2, 0, r1, mov2, 0)
390 /* LOAD RELATIVE LONG */
391     C(0xc40d, LRL,     RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
392     C(0xc408, LGRL,    RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
393     C(0xc40c, LGFRL,   RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
394 /* LOAD ADDRESS */
395     C(0x4100, LA,      RX_a,  Z,   0, a2, 0, r1, mov2, 0)
396     C(0xe371, LAY,     RXY_a, LD,  0, a2, 0, r1, mov2, 0)
397 /* LOAD ADDRESS EXTENDED */
398     C(0x5100, LAE,     RX_a,  Z,   0, a2, 0, r1, mov2e, 0)
399     C(0xe375, LAEY,    RXY_a, GIE, 0, a2, 0, r1, mov2e, 0)
400 /* LOAD ADDRESS RELATIVE LONG */
401     C(0xc000, LARL,    RIL_b, Z,   0, ri2, 0, r1, mov2, 0)
402 /* LOAD AND ADD */
403     D(0xebf8, LAA,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, laa, adds32, MO_TESL)
404     D(0xebe8, LAAG,    RSY_a, ILA, r3, a2, new, in2_r1, laa, adds64, MO_TEQ)
405 /* LOAD AND ADD LOGICAL */
406     D(0xebfa, LAAL,    RSY_a, ILA, r3_32u, a2, new, in2_r1_32, laa, addu32, MO_TEUL)
407     D(0xebea, LAALG,   RSY_a, ILA, r3, a2, new, in2_r1, laa, addu64, MO_TEQ)
408 /* LOAD AND AND */
409     D(0xebf4, LAN,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lan, nz32, MO_TESL)
410     D(0xebe4, LANG,    RSY_a, ILA, r3, a2, new, in2_r1, lan, nz64, MO_TEQ)
411 /* LOAD AND EXCLUSIVE OR */
412     D(0xebf7, LAX,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lax, nz32, MO_TESL)
413     D(0xebe7, LAXG,    RSY_a, ILA, r3, a2, new, in2_r1, lax, nz64, MO_TEQ)
414 /* LOAD AND OR */
415     D(0xebf6, LAO,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lao, nz32, MO_TESL)
416     D(0xebe6, LAOG,    RSY_a, ILA, r3, a2, new, in2_r1, lao, nz64, MO_TEQ)
417 /* LOAD AND TEST */
418     C(0x1200, LTR,     RR_a,  Z,   0, r2_o, 0, cond_r1r2_32, mov2, s32)
419     C(0xb902, LTGR,    RRE,   Z,   0, r2_o, 0, r1, mov2, s64)
420     C(0xb912, LTGFR,   RRE,   Z,   0, r2_32s, 0, r1, mov2, s64)
421     C(0xe312, LT,      RXY_a, EI,  0, a2, new, r1_32, ld32s, s64)
422     C(0xe302, LTG,     RXY_a, EI,  0, a2, r1, 0, ld64, s64)
423     C(0xe332, LTGF,    RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
424     C(0xb302, LTEBR,   RRE,   Z,   0, e2, 0, cond_e1e2, mov2, f32)
425     C(0xb312, LTDBR,   RRE,   Z,   0, f2_o, 0, f1, mov2, f64)
426     C(0xb342, LTXBR,   RRE,   Z,   0, x2_o, 0, x1, movx, f128)
427 /* LOAD AND TRAP */
428     C(0xe39f, LAT,     RXY_a, LAT, 0, m2_32u, r1, 0, lat, 0)
429     C(0xe385, LGAT,    RXY_a, LAT, 0, a2, r1, 0, lgat, 0)
430 /* LOAD BYTE */
431     C(0xb926, LBR,     RRE,   EI,  0, r2_8s, 0, r1_32, mov2, 0)
432     C(0xb906, LGBR,    RRE,   EI,  0, r2_8s, 0, r1, mov2, 0)
433     C(0xe376, LB,      RXY_a, LD,  0, a2, new, r1_32, ld8s, 0)
434     C(0xe377, LGB,     RXY_a, LD,  0, a2, r1, 0, ld8s, 0)
435 /* LOAD BYTE HIGH */
436     C(0xe3c0, LBH,     RXY_a, HW,  0, a2, new, r1_32h, ld8s, 0)
437 /* LOAD COMPLEMENT */
438     C(0x1300, LCR,     RR_a,  Z,   0, r2, new, r1_32, neg, neg32)
439     C(0xb903, LCGR,    RRE,   Z,   0, r2, r1, 0, neg, neg64)
440     C(0xb913, LCGFR,   RRE,   Z,   0, r2_32s, r1, 0, neg, neg64)
441     C(0xb303, LCEBR,   RRE,   Z,   0, e2, new, e1, negf32, f32)
442     C(0xb313, LCDBR,   RRE,   Z,   0, f2_o, f1, 0, negf64, f64)
443     C(0xb343, LCXBR,   RRE,   Z,   0, x2_o, x1, 0, negf128, f128)
444     C(0xb373, LCDFR,   RRE,   FPSSH, 0, f2_o, f1, 0, negf64, 0)
445 /* LOAD HALFWORD */
446     C(0xb927, LHR,     RRE,   EI,  0, r2_16s, 0, r1_32, mov2, 0)
447     C(0xb907, LGHR,    RRE,   EI,  0, r2_16s, 0, r1, mov2, 0)
448     C(0x4800, LH,      RX_a,  Z,   0, a2, new, r1_32, ld16s, 0)
449     C(0xe378, LHY,     RXY_a, LD,  0, a2, new, r1_32, ld16s, 0)
450     C(0xe315, LGH,     RXY_a, Z,   0, a2, r1, 0, ld16s, 0)
451 /* LOAD HALFWORD HIGH */
452     C(0xe3c4, LHH,     RXY_a, HW,  0, a2, new, r1_32h, ld16s, 0)
453 /* LOAD HALFWORD IMMEDIATE */
454     C(0xa708, LHI,     RI_a,  Z,   0, i2, 0, r1_32, mov2, 0)
455     C(0xa709, LGHI,    RI_a,  Z,   0, i2, 0, r1, mov2, 0)
456 /* LOAD HALFWORD RELATIVE LONG */
457     C(0xc405, LHRL,    RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
458     C(0xc404, LGHRL,   RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
459 /* LOAD HIGH */
460     C(0xe3ca, LFH,     RXY_a, HW,  0, a2, new, r1_32h, ld32u, 0)
461 /* LOAG HIGH AND TRAP */
462     C(0xe3c8, LFHAT,   RXY_a, LAT, 0, m2_32u, r1, 0, lfhat, 0)
463 /* LOAD LOGICAL */
464     C(0xb916, LLGFR,   RRE,   Z,   0, r2_32u, 0, r1, mov2, 0)
465     C(0xe316, LLGF,    RXY_a, Z,   0, a2, r1, 0, ld32u, 0)
466 /* LOAD LOGICAL AND TRAP */
467     C(0xe39d, LLGFAT,  RXY_a, LAT, 0, a2, r1, 0, llgfat, 0)
468 /* LOAD LOGICAL RELATIVE LONG */
469     C(0xc40e, LLGFRL,  RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
470 /* LOAD LOGICAL CHARACTER */
471     C(0xb994, LLCR,    RRE,   EI,  0, r2_8u, 0, r1_32, mov2, 0)
472     C(0xb984, LLGCR,   RRE,   EI,  0, r2_8u, 0, r1, mov2, 0)
473     C(0xe394, LLC,     RXY_a, EI,  0, a2, new, r1_32, ld8u, 0)
474     C(0xe390, LLGC,    RXY_a, Z,   0, a2, r1, 0, ld8u, 0)
475 /* LOAD LOGICAL CHARACTER HIGH */
476     C(0xe3c2, LLCH,    RXY_a, HW,  0, a2, new, r1_32h, ld8u, 0)
477 /* LOAD LOGICAL HALFWORD */
478     C(0xb995, LLHR,    RRE,   EI,  0, r2_16u, 0, r1_32, mov2, 0)
479     C(0xb985, LLGHR,   RRE,   EI,  0, r2_16u, 0, r1, mov2, 0)
480     C(0xe395, LLH,     RXY_a, EI,  0, a2, new, r1_32, ld16u, 0)
481     C(0xe391, LLGH,    RXY_a, Z,   0, a2, r1, 0, ld16u, 0)
482 /* LOAD LOGICAL HALFWORD HIGH */
483     C(0xe3c6, LLHH,    RXY_a, HW,  0, a2, new, r1_32h, ld16u, 0)
484 /* LOAD LOGICAL HALFWORD RELATIVE LONG */
485     C(0xc402, LLHRL,   RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
486     C(0xc406, LLGHRL,  RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
487 /* LOAD LOGICAL IMMEDATE */
488     D(0xc00e, LLIHF,   RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
489     D(0xc00f, LLILF,   RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
490     D(0xa50c, LLIHH,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 48)
491     D(0xa50d, LLIHL,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 32)
492     D(0xa50e, LLILH,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 16)
493     D(0xa50f, LLILL,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 0)
494 /* LOAD LOGICAL THIRTY ONE BITS */
495     C(0xb917, LLGTR,   RRE,   Z,  0, r2_o, r1, 0, llgt, 0)
496     C(0xe317, LLGT,    RXY_a, Z,  0, m2_32u, r1, 0, llgt, 0)
497 /* LOAD LOGICAL THIRTY ONE BITS AND TRAP */
498     C(0xe39c, LLGTAT,  RXY_a, LAT, 0, m2_32u, r1, 0, llgtat, 0)
499
500 /* LOAD FPR FROM GR */
501     C(0xb3c1, LDGR,    RRE,   FPRGR, 0, r2_o, 0, f1, mov2, 0)
502 /* LOAD GR FROM FPR */
503     C(0xb3cd, LGDR,    RRE,   FPRGR, 0, f2_o, 0, r1, mov2, 0)
504 /* LOAD NEGATIVE */
505     C(0x1100, LNR,     RR_a,  Z,   0, r2_32s, new, r1_32, nabs, nabs32)
506     C(0xb901, LNGR,    RRE,   Z,   0, r2, r1, 0, nabs, nabs64)
507     C(0xb911, LNGFR,   RRE,   Z,   0, r2_32s, r1, 0, nabs, nabs64)
508     C(0xb301, LNEBR,   RRE,   Z,   0, e2, new, e1, nabsf32, f32)
509     C(0xb311, LNDBR,   RRE,   Z,   0, f2_o, f1, 0, nabsf64, f64)
510     C(0xb341, LNXBR,   RRE,   Z,   0, x2_o, x1, 0, nabsf128, f128)
511     C(0xb371, LNDFR,   RRE,   FPSSH, 0, f2_o, f1, 0, nabsf64, 0)
512 /* LOAD ON CONDITION */
513     C(0xb9f2, LOCR,    RRF_c, LOC, r1, r2, new, r1_32, loc, 0)
514     C(0xb9e2, LOCGR,   RRF_c, LOC, r1, r2, r1, 0, loc, 0)
515     C(0xebf2, LOC,     RSY_b, LOC, r1, m2_32u, new, r1_32, loc, 0)
516     C(0xebe2, LOCG,    RSY_b, LOC, r1, m2_64, r1, 0, loc, 0)
517 /* LOAD PAIR DISJOINT */
518     D(0xc804, LPD,     SSF,   ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)
519     D(0xc805, LPDG,    SSF,   ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEQ)
520 /* LOAD PAIR FROM QUADWORD */
521     C(0xe38f, LPQ,     RXY_a, Z,   0, a2, r1_P, 0, lpq, 0)
522 /* LOAD POSITIVE */
523     C(0x1000, LPR,     RR_a,  Z,   0, r2_32s, new, r1_32, abs, abs32)
524     C(0xb900, LPGR,    RRE,   Z,   0, r2, r1, 0, abs, abs64)
525     C(0xb910, LPGFR,   RRE,   Z,   0, r2_32s, r1, 0, abs, abs64)
526     C(0xb300, LPEBR,   RRE,   Z,   0, e2, new, e1, absf32, f32)
527     C(0xb310, LPDBR,   RRE,   Z,   0, f2_o, f1, 0, absf64, f64)
528     C(0xb340, LPXBR,   RRE,   Z,   0, x2_o, x1, 0, absf128, f128)
529     C(0xb370, LPDFR,   RRE,   FPSSH, 0, f2_o, f1, 0, absf64, 0)
530 /* LOAD REVERSED */
531     C(0xb91f, LRVR,    RRE,   Z,   0, r2_32u, new, r1_32, rev32, 0)
532     C(0xb90f, LRVGR,   RRE,   Z,   0, r2_o, r1, 0, rev64, 0)
533     C(0xe31f, LRVH,    RXY_a, Z,   0, m2_16u, new, r1_16, rev16, 0)
534     C(0xe31e, LRV,     RXY_a, Z,   0, m2_32u, new, r1_32, rev32, 0)
535     C(0xe30f, LRVG,    RXY_a, Z,   0, m2_64, r1, 0, rev64, 0)
536 /* LOAD ZERO */
537     C(0xb374, LZER,    RRE,   Z,   0, 0, 0, e1, zero, 0)
538     C(0xb375, LZDR,    RRE,   Z,   0, 0, 0, f1, zero, 0)
539     C(0xb376, LZXR,    RRE,   Z,   0, 0, 0, x1, zero2, 0)
540
541 /* LOAD FPC */
542     C(0xb29d, LFPC,    S,     Z,   0, m2_32u, 0, 0, sfpc, 0)
543 /* LOAD FPC AND SIGNAL */
544     C(0xb2bd, LFAS,    S,     IEEEE_SIM, 0, m2_32u, 0, 0, sfas, 0)
545 /* LOAD FP INTEGER */
546     C(0xb357, FIEBR,   RRF_e, Z,   0, e2, new, e1, fieb, 0)
547     C(0xb35f, FIDBR,   RRF_e, Z,   0, f2_o, f1, 0, fidb, 0)
548     C(0xb347, FIXBR,   RRF_e, Z,   0, x2_o, x1, 0, fixb, 0)
549
550 /* LOAD LENGTHENED */
551     C(0xb304, LDEBR,   RRE,   Z,   0, e2, f1, 0, ldeb, 0)
552     C(0xb305, LXDBR,   RRE,   Z,   0, f2_o, x1, 0, lxdb, 0)
553     C(0xb306, LXEBR,   RRE,   Z,   0, e2, x1, 0, lxeb, 0)
554     C(0xed04, LDEB,    RXE,   Z,   0, m2_32u, f1, 0, ldeb, 0)
555     C(0xed05, LXDB,    RXE,   Z,   0, m2_64, x1, 0, lxdb, 0)
556     C(0xed06, LXEB,    RXE,   Z,   0, m2_32u, x1, 0, lxeb, 0)
557 /* LOAD ROUNDED */
558     C(0xb344, LEDBR,   RRE,   Z,   0, f2_o, new, e1, ledb, 0)
559     C(0xb345, LDXBR,   RRE,   Z,   0, x2_o, f1, 0, ldxb, 0)
560     C(0xb346, LEXBR,   RRE,   Z,   0, x2_o, new, e1, lexb, 0)
561
562 /* LOAD MULTIPLE */
563     C(0x9800, LM,      RS_a,  Z,   0, a2, 0, 0, lm32, 0)
564     C(0xeb98, LMY,     RSY_a, LD,  0, a2, 0, 0, lm32, 0)
565     C(0xeb04, LMG,     RSY_a, Z,   0, a2, 0, 0, lm64, 0)
566 /* LOAD MULTIPLE HIGH */
567     C(0xeb96, LMH,     RSY_a, Z,   0, a2, 0, 0, lmh, 0)
568 /* LOAD ACCESS MULTIPLE */
569     C(0x9a00, LAM,     RS_a,  Z,   0, a2, 0, 0, lam, 0)
570     C(0xeb9a, LAMY,    RSY_a, LD,  0, a2, 0, 0, lam, 0)
571
572 /* MOVE */
573     C(0xd200, MVC,     SS_a,  Z,   la1, a2, 0, 0, mvc, 0)
574     C(0xe544, MVHHI,   SIL,   GIE, la1, i2, 0, m1_16, mov2, 0)
575     C(0xe54c, MVHI,    SIL,   GIE, la1, i2, 0, m1_32, mov2, 0)
576     C(0xe548, MVGHI,   SIL,   GIE, la1, i2, 0, m1_64, mov2, 0)
577     C(0x9200, MVI,     SI,    Z,   la1, i2, 0, m1_8, mov2, 0)
578     C(0xeb52, MVIY,    SIY,   LD,  la1, i2, 0, m1_8, mov2, 0)
579 /* MOVE INVERSE */
580     C(0xe800, MVCIN,   SS_a,  Z,   la1, a2, 0, 0, mvcin, 0)
581 /* MOVE LONG */
582     C(0x0e00, MVCL,    RR_a,  Z,   0, 0, 0, 0, mvcl, 0)
583 /* MOVE LONG EXTENDED */
584     C(0xa800, MVCLE,   RS_a,  Z,   0, a2, 0, 0, mvcle, 0)
585 /* MOVE LONG UNICODE */
586     C(0xeb8e, MVCLU,   RSY_a, E2,  0, a2, 0, 0, mvclu, 0)
587 /* MOVE NUMERICS */
588     C(0xd100, MVN,     SS_a,  Z,   la1, a2, 0, 0, mvn, 0)
589 /* MOVE PAGE */
590     C(0xb254, MVPG,    RRE,   Z,   r1_o, r2_o, 0, 0, mvpg, 0)
591 /* MOVE STRING */
592     C(0xb255, MVST,    RRE,   Z,   r1_o, r2_o, 0, 0, mvst, 0)
593 /* MOVE WITH OFFSET */
594     /* Really format SS_b, but we pack both lengths into one argument
595        for the helper call, so we might as well leave one 8-bit field.  */
596     C(0xf100, MVO,     SS_a,  Z,   la1, a2, 0, 0, mvo, 0)
597 /* MOVE ZONES */
598     C(0xd300, MVZ,     SS_a,  Z,   la1, a2, 0, 0, mvz, 0)
599
600 /* MULTIPLY */
601     C(0x1c00, MR,      RR_a,  Z,   r1p1_32s, r2_32s, new, r1_D32, mul, 0)
602     C(0x5c00, M,       RX_a,  Z,   r1p1_32s, m2_32s, new, r1_D32, mul, 0)
603     C(0xe35c, MFY,     RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
604     C(0xb317, MEEBR,   RRE,   Z,   e1, e2, new, e1, meeb, 0)
605     C(0xb31c, MDBR,    RRE,   Z,   f1_o, f2_o, f1, 0, mdb, 0)
606     C(0xb34c, MXBR,    RRE,   Z,   0, x2_o, x1, 0, mxb, 0)
607     C(0xb30c, MDEBR,   RRE,   Z,   f1_o, e2, f1, 0, mdeb, 0)
608     C(0xb307, MXDBR,   RRE,   Z,   0, f2_o, x1, 0, mxdb, 0)
609     C(0xed17, MEEB,    RXE,   Z,   e1, m2_32u, new, e1, meeb, 0)
610     C(0xed1c, MDB,     RXE,   Z,   f1_o, m2_64, f1, 0, mdb, 0)
611     C(0xed0c, MDEB,    RXE,   Z,   f1_o, m2_32u, f1, 0, mdeb, 0)
612     C(0xed07, MXDB,    RXE,   Z,   0, m2_64, x1, 0, mxdb, 0)
613 /* MULTIPLY HALFWORD */
614     C(0x4c00, MH,      RX_a,  Z,   r1_o, m2_16s, new, r1_32, mul, 0)
615     C(0xe37c, MHY,     RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
616 /* MULTIPLY HALFWORD IMMEDIATE */
617     C(0xa70c, MHI,     RI_a,  Z,   r1_o, i2, new, r1_32, mul, 0)
618     C(0xa70d, MGHI,    RI_a,  Z,   r1_o, i2, r1, 0, mul, 0)
619 /* MULTIPLY LOGICAL */
620     C(0xb996, MLR,     RRE,   Z,   r1p1_32u, r2_32u, new, r1_D32, mul, 0)
621     C(0xe396, ML,      RXY_a, Z,   r1p1_32u, m2_32u, new, r1_D32, mul, 0)
622     C(0xb986, MLGR,    RRE,   Z,   r1p1, r2_o, r1_P, 0, mul128, 0)
623     C(0xe386, MLG,     RXY_a, Z,   r1p1, m2_64, r1_P, 0, mul128, 0)
624 /* MULTIPLY SINGLE */
625     C(0xb252, MSR,     RRE,   Z,   r1_o, r2_o, new, r1_32, mul, 0)
626     C(0x7100, MS,      RX_a,  Z,   r1_o, m2_32s, new, r1_32, mul, 0)
627     C(0xe351, MSY,     RXY_a, LD,  r1_o, m2_32s, new, r1_32, mul, 0)
628     C(0xb90c, MSGR,    RRE,   Z,   r1_o, r2_o, r1, 0, mul, 0)
629     C(0xb91c, MSGFR,   RRE,   Z,   r1_o, r2_32s, r1, 0, mul, 0)
630     C(0xe30c, MSG,     RXY_a, Z,   r1_o, m2_64, r1, 0, mul, 0)
631     C(0xe31c, MSGF,    RXY_a, Z,   r1_o, m2_32s, r1, 0, mul, 0)
632 /* MULTIPLY SINGLE IMMEDIATE */
633     C(0xc201, MSFI,    RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
634     C(0xc200, MSGFI,   RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
635
636 /* MULTIPLY AND ADD */
637     C(0xb30e, MAEBR,   RRD,   Z,   e1, e2, new, e1, maeb, 0)
638     C(0xb31e, MADBR,   RRD,   Z,   f1_o, f2_o, f1, 0, madb, 0)
639     C(0xed0e, MAEB,    RXF,   Z,   e1, m2_32u, new, e1, maeb, 0)
640     C(0xed1e, MADB,    RXF,   Z,   f1_o, m2_64, f1, 0, madb, 0)
641 /* MULTIPLY AND SUBTRACT */
642     C(0xb30f, MSEBR,   RRD,   Z,   e1, e2, new, e1, mseb, 0)
643     C(0xb31f, MSDBR,   RRD,   Z,   f1_o, f2_o, f1, 0, msdb, 0)
644     C(0xed0f, MSEB,    RXF,   Z,   e1, m2_32u, new, e1, mseb, 0)
645     C(0xed1f, MSDB,    RXF,   Z,   f1_o, m2_64, f1, 0, msdb, 0)
646
647 /* OR */
648     C(0x1600, OR,      RR_a,  Z,   r1, r2, new, r1_32, or, nz32)
649     C(0xb9f6, ORK,     RRF_a, DO,  r2, r3, new, r1_32, or, nz32)
650     C(0x5600, O,       RX_a,  Z,   r1, m2_32s, new, r1_32, or, nz32)
651     C(0xe356, OY,      RXY_a, LD,  r1, m2_32s, new, r1_32, or, nz32)
652     C(0xb981, OGR,     RRE,   Z,   r1, r2, r1, 0, or, nz64)
653     C(0xb9e6, OGRK,    RRF_a, DO,  r2, r3, r1, 0, or, nz64)
654     C(0xe381, OG,      RXY_a, Z,   r1, m2_64, r1, 0, or, nz64)
655     C(0xd600, OC,      SS_a,  Z,   la1, a2, 0, 0, oc, 0)
656 /* OR IMMEDIATE */
657     D(0xc00c, OIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
658     D(0xc00d, OILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
659     D(0xa508, OIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
660     D(0xa509, OIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
661     D(0xa50a, OILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
662     D(0xa50b, OILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
663     C(0x9600, OI,      SI,    Z,   m1_8u, i2_8u, new, m1_8, or, nz64)
664     C(0xeb56, OIY,     SIY,   LD,  m1_8u, i2_8u, new, m1_8, or, nz64)
665
666 /* PACK */
667     /* Really format SS_b, but we pack both lengths into one argument
668        for the helper call, so we might as well leave one 8-bit field.  */
669     C(0xf200, PACK,    SS_a,  Z,   la1, a2, 0, 0, pack, 0)
670 /* PACK ASCII */
671     C(0xe900, PKA,     SS_f,  E2,  la1, a2, 0, 0, pka, 0)
672 /* PACK UNICODE */
673     C(0xe100, PKU,     SS_f,  E2,  la1, a2, 0, 0, pku, 0)
674
675 /* PREFETCH */
676     /* Implemented as nops of course.  */
677     C(0xe336, PFD,     RXY_b, GIE, 0, 0, 0, 0, 0, 0)
678     C(0xc602, PFDRL,   RIL_c, GIE, 0, 0, 0, 0, 0, 0)
679
680 /* POPULATION COUNT */
681     C(0xb9e1, POPCNT,  RRE,   PC,  0, r2_o, r1, 0, popcnt, nz64)
682
683 /* ROTATE LEFT SINGLE LOGICAL */
684     C(0xeb1d, RLL,     RSY_a, Z,   r3_o, sh32, new, r1_32, rll32, 0)
685     C(0xeb1c, RLLG,    RSY_a, Z,   r3_o, sh64, r1, 0, rll64, 0)
686
687 /* ROTATE THEN INSERT SELECTED BITS */
688     C(0xec55, RISBG,   RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
689     C(0xec59, RISBGN,  RIE_f, MIE, 0, r2, r1, 0, risbg, 0)
690     C(0xec5d, RISBHG,  RIE_f, HW,  0, r2, r1, 0, risbg, 0)
691     C(0xec51, RISBLG,  RIE_f, HW,  0, r2, r1, 0, risbg, 0)
692 /* ROTATE_THEN <OP> SELECTED BITS */
693     C(0xec54, RNSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
694     C(0xec56, ROSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
695     C(0xec57, RXSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
696
697 /* SEARCH STRING */
698     C(0xb25e, SRST,    RRE,   Z,   r1_o, r2_o, 0, 0, srst, 0)
699
700 /* SET ACCESS */
701     C(0xb24e, SAR,     RRE,   Z,   0, r2_o, 0, 0, sar, 0)
702 /* SET ADDRESSING MODE */
703     D(0x010c, SAM24,   E,     Z,   0, 0, 0, 0, sam, 0, 0)
704     D(0x010d, SAM31,   E,     Z,   0, 0, 0, 0, sam, 0, 1)
705     D(0x010e, SAM64,   E,     Z,   0, 0, 0, 0, sam, 0, 3)
706 /* SET FPC */
707     C(0xb384, SFPC,    RRE,   Z,   0, r1_o, 0, 0, sfpc, 0)
708 /* SET FPC AND SIGNAL */
709     C(0xb385, SFASR,   RRE,   IEEEE_SIM, 0, r1_o, 0, 0, sfas, 0)
710 /* SET BFP ROUNDING MODE */
711     C(0xb299, SRNM,    S,     Z,   0, 0, 0, 0, srnm, 0)
712     C(0xb2b8, SRNMB,   S,     FPE, 0, 0, 0, 0, srnm, 0)
713 /* SET DFP ROUNDING MODE */
714     C(0xb2b9, SRNMT,   S,     DFPR, 0, 0, 0, 0, srnm, 0)
715
716 /* SHIFT LEFT SINGLE */
717     D(0x8b00, SLA,     RS_a,  Z,   r1, sh32, new, r1_32, sla, 0, 31)
718     D(0xebdd, SLAK,    RSY_a, DO,  r3, sh32, new, r1_32, sla, 0, 31)
719     D(0xeb0b, SLAG,    RSY_a, Z,   r3, sh64, r1, 0, sla, 0, 63)
720 /* SHIFT LEFT SINGLE LOGICAL */
721     C(0x8900, SLL,     RS_a,  Z,   r1_o, sh32, new, r1_32, sll, 0)
722     C(0xebdf, SLLK,    RSY_a, DO,  r3_o, sh32, new, r1_32, sll, 0)
723     C(0xeb0d, SLLG,    RSY_a, Z,   r3_o, sh64, r1, 0, sll, 0)
724 /* SHIFT RIGHT SINGLE */
725     C(0x8a00, SRA,     RS_a,  Z,   r1_32s, sh32, new, r1_32, sra, s32)
726     C(0xebdc, SRAK,    RSY_a, DO,  r3_32s, sh32, new, r1_32, sra, s32)
727     C(0xeb0a, SRAG,    RSY_a, Z,   r3_o, sh64, r1, 0, sra, s64)
728 /* SHIFT RIGHT SINGLE LOGICAL */
729     C(0x8800, SRL,     RS_a,  Z,   r1_32u, sh32, new, r1_32, srl, 0)
730     C(0xebde, SRLK,    RSY_a, DO,  r3_32u, sh32, new, r1_32, srl, 0)
731     C(0xeb0c, SRLG,    RSY_a, Z,   r3_o, sh64, r1, 0, srl, 0)
732 /* SHIFT LEFT DOUBLE */
733     D(0x8f00, SLDA,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, sla, 0, 31)
734 /* SHIFT LEFT DOUBLE LOGICAL */
735     C(0x8d00, SLDL,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, sll, 0)
736 /* SHIFT RIGHT DOUBLE */
737     C(0x8e00, SRDA,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, sra, s64)
738 /* SHIFT RIGHT DOUBLE LOGICAL */
739     C(0x8c00, SRDL,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, srl, 0)
740
741 /* SQUARE ROOT */
742     C(0xb314, SQEBR,   RRE,   Z,   0, e2, new, e1, sqeb, 0)
743     C(0xb315, SQDBR,   RRE,   Z,   0, f2_o, f1, 0, sqdb, 0)
744     C(0xb316, SQXBR,   RRE,   Z,   0, x2_o, x1, 0, sqxb, 0)
745     C(0xed14, SQEB,    RXE,   Z,   0, m2_32u, new, e1, sqeb, 0)
746     C(0xed15, SQDB,    RXE,   Z,   0, m2_64, f1, 0, sqdb, 0)
747
748 /* STORE */
749     C(0x5000, ST,      RX_a,  Z,   r1_o, a2, 0, 0, st32, 0)
750     C(0xe350, STY,     RXY_a, LD,  r1_o, a2, 0, 0, st32, 0)
751     C(0xe324, STG,     RXY_a, Z,   r1_o, a2, 0, 0, st64, 0)
752     C(0x6000, STD,     RX_a,  Z,   f1_o, a2, 0, 0, st64, 0)
753     C(0xed67, STDY,    RXY_a, LD,  f1_o, a2, 0, 0, st64, 0)
754     C(0x7000, STE,     RX_a,  Z,   e1, a2, 0, 0, st32, 0)
755     C(0xed66, STEY,    RXY_a, LD,  e1, a2, 0, 0, st32, 0)
756 /* STORE RELATIVE LONG */
757     C(0xc40f, STRL,    RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
758     C(0xc40b, STGRL,   RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
759 /* STORE CHARACTER */
760     C(0x4200, STC,     RX_a,  Z,   r1_o, a2, 0, 0, st8, 0)
761     C(0xe372, STCY,    RXY_a, LD,  r1_o, a2, 0, 0, st8, 0)
762 /* STORE CHARACTER HIGH */
763     C(0xe3c3, STCH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st8, 0)
764 /* STORE CHARACTERS UNDER MASK */
765     D(0xbe00, STCM,    RS_b,  Z,   r1_o, a2, 0, 0, stcm, 0, 0)
766     D(0xeb2d, STCMY,   RSY_b, LD,  r1_o, a2, 0, 0, stcm, 0, 0)
767     D(0xeb2c, STCMH,   RSY_b, Z,   r1_o, a2, 0, 0, stcm, 0, 32)
768 /* STORE HALFWORD */
769     C(0x4000, STH,     RX_a,  Z,   r1_o, a2, 0, 0, st16, 0)
770     C(0xe370, STHY,    RXY_a, LD,  r1_o, a2, 0, 0, st16, 0)
771 /* STORE HALFWORD HIGH */
772     C(0xe3c7, STHH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st16, 0)
773 /* STORE HALFWORD RELATIVE LONG */
774     C(0xc407, STHRL,   RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
775 /* STORE HIGH */
776     C(0xe3cb, STFH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st32, 0)
777 /* STORE ON CONDITION */
778     D(0xebf3, STOC,    RSY_b, LOC, 0, 0, 0, 0, soc, 0, 0)
779     D(0xebe3, STOCG,   RSY_b, LOC, 0, 0, 0, 0, soc, 0, 1)
780 /* STORE REVERSED */
781     C(0xe33f, STRVH,   RXY_a, Z,   la2, r1_16u, new, m1_16, rev16, 0)
782     C(0xe33e, STRV,    RXY_a, Z,   la2, r1_32u, new, m1_32, rev32, 0)
783     C(0xe32f, STRVG,   RXY_a, Z,   la2, r1_o, new, m1_64, rev64, 0)
784
785 /* STORE FACILITY LIST EXTENDED */
786     C(0xb2b0, STFLE,   S,  SFLE,   0, a2, 0, 0, stfle, 0)
787 /* STORE FPC */
788     C(0xb29c, STFPC,   S,     Z,   0, a2, new, m2_32, efpc, 0)
789
790 /* STORE MULTIPLE */
791     D(0x9000, STM,     RS_a,  Z,   0, a2, 0, 0, stm, 0, 4)
792     D(0xeb90, STMY,    RSY_a, LD,  0, a2, 0, 0, stm, 0, 4)
793     D(0xeb24, STMG,    RSY_a, Z,   0, a2, 0, 0, stm, 0, 8)
794 /* STORE MULTIPLE HIGH */
795     C(0xeb26, STMH,    RSY_a, Z,   0, a2, 0, 0, stmh, 0)
796 /* STORE ACCESS MULTIPLE */
797     C(0x9b00, STAM,    RS_a,  Z,   0, a2, 0, 0, stam, 0)
798     C(0xeb9b, STAMY,   RSY_a, LD,  0, a2, 0, 0, stam, 0)
799 /* STORE PAIR TO QUADWORD */
800     C(0xe38e, STPQ,    RXY_a, Z,   0, a2, r1_P, 0, stpq, 0)
801
802 /* SUBTRACT */
803     C(0x1b00, SR,      RR_a,  Z,   r1, r2, new, r1_32, sub, subs32)
804     C(0xb9f9, SRK,     RRF_a, DO,  r2, r3, new, r1_32, sub, subs32)
805     C(0x5b00, S,       RX_a,  Z,   r1, m2_32s, new, r1_32, sub, subs32)
806     C(0xe35b, SY,      RXY_a, LD,  r1, m2_32s, new, r1_32, sub, subs32)
807     C(0xb909, SGR,     RRE,   Z,   r1, r2, r1, 0, sub, subs64)
808     C(0xb919, SGFR,    RRE,   Z,   r1, r2_32s, r1, 0, sub, subs64)
809     C(0xb9e9, SGRK,    RRF_a, DO,  r2, r3, r1, 0, sub, subs64)
810     C(0xe309, SG,      RXY_a, Z,   r1, m2_64, r1, 0, sub, subs64)
811     C(0xe319, SGF,     RXY_a, Z,   r1, m2_32s, r1, 0, sub, subs64)
812     C(0xb30b, SEBR,    RRE,   Z,   e1, e2, new, e1, seb, f32)
813     C(0xb31b, SDBR,    RRE,   Z,   f1_o, f2_o, f1, 0, sdb, f64)
814     C(0xb34b, SXBR,    RRE,   Z,   0, x2_o, x1, 0, sxb, f128)
815     C(0xed0b, SEB,     RXE,   Z,   e1, m2_32u, new, e1, seb, f32)
816     C(0xed1b, SDB,     RXE,   Z,   f1_o, m2_64, f1, 0, sdb, f64)
817 /* SUBTRACT HALFWORD */
818     C(0x4b00, SH,      RX_a,  Z,   r1, m2_16s, new, r1_32, sub, subs32)
819     C(0xe37b, SHY,     RXY_a, LD,  r1, m2_16s, new, r1_32, sub, subs32)
820 /* SUBTRACT HIGH */
821     C(0xb9c9, SHHHR,   RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, sub, subs32)
822     C(0xb9d9, SHHLR,   RRF_a, HW,  r2_sr32, r3, new, r1_32h, sub, subs32)
823 /* SUBTRACT LOGICAL */
824     C(0x1f00, SLR,     RR_a,  Z,   r1, r2, new, r1_32, sub, subu32)
825     C(0xb9fb, SLRK,    RRF_a, DO,  r2, r3, new, r1_32, sub, subu32)
826     C(0x5f00, SL,      RX_a,  Z,   r1, m2_32u, new, r1_32, sub, subu32)
827     C(0xe35f, SLY,     RXY_a, LD,  r1, m2_32u, new, r1_32, sub, subu32)
828     C(0xb90b, SLGR,    RRE,   Z,   r1, r2, r1, 0, sub, subu64)
829     C(0xb91b, SLGFR,   RRE,   Z,   r1, r2_32u, r1, 0, sub, subu64)
830     C(0xb9eb, SLGRK,   RRF_a, DO,  r2, r3, r1, 0, sub, subu64)
831     C(0xe30b, SLG,     RXY_a, Z,   r1, m2_64, r1, 0, sub, subu64)
832     C(0xe31b, SLGF,    RXY_a, Z,   r1, m2_32u, r1, 0, sub, subu64)
833 /* SUBTRACT LOCICAL HIGH */
834     C(0xb9cb, SLHHHR,  RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, sub, subu32)
835     C(0xb9db, SLHHLR,  RRF_a, HW,  r2_sr32, r3, new, r1_32h, sub, subu32)
836 /* SUBTRACT LOGICAL IMMEDIATE */
837     C(0xc205, SLFI,    RIL_a, EI,  r1, i2_32u, new, r1_32, sub, subu32)
838     C(0xc204, SLGFI,   RIL_a, EI,  r1, i2_32u, r1, 0, sub, subu64)
839 /* SUBTRACT LOGICAL WITH BORROW */
840     C(0xb999, SLBR,    RRE,   Z,   r1, r2, new, r1_32, subb, subb32)
841     C(0xb989, SLBGR,   RRE,   Z,   r1, r2, r1, 0, subb, subb64)
842     C(0xe399, SLB,     RXY_a, Z,   r1, m2_32u, new, r1_32, subb, subb32)
843     C(0xe389, SLBG,    RXY_a, Z,   r1, m2_64, r1, 0, subb, subb64)
844
845 /* SUPERVISOR CALL */
846     C(0x0a00, SVC,     I,     Z,   0, 0, 0, 0, svc, 0)
847
848 /* TEST ADDRESSING MODE */
849     C(0x010b, TAM,     E,     Z,   0, 0, 0, 0, tam, 0)
850
851 /* TEST AND SET */
852     C(0x9300, TS,      S,     Z,   0, a2, 0, 0, ts, 0)
853
854 /* TEST DATA CLASS */
855     C(0xed10, TCEB,    RXE,   Z,   e1, a2, 0, 0, tceb, 0)
856     C(0xed11, TCDB,    RXE,   Z,   f1_o, a2, 0, 0, tcdb, 0)
857     C(0xed12, TCXB,    RXE,   Z,   x1_o, a2, 0, 0, tcxb, 0)
858
859 /* TEST DECIMAL */
860     C(0xebc0, TP,      RSL,   E2,  la1, 0, 0, 0, tp, 0)
861
862 /* TEST UNDER MASK */
863     C(0x9100, TM,      SI,    Z,   m1_8u, i2_8u, 0, 0, 0, tm32)
864     C(0xeb51, TMY,     SIY,   LD,  m1_8u, i2_8u, 0, 0, 0, tm32)
865     D(0xa702, TMHH,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
866     D(0xa703, TMHL,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
867     D(0xa700, TMLH,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
868     D(0xa701, TMLL,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
869
870 /* TRANSLATE */
871     C(0xdc00, TR,      SS_a,  Z,   la1, a2, 0, 0, tr, 0)
872 /* TRANSLATE AND TEST */
873     C(0xdd00, TRT,     SS_a,  Z,   la1, a2, 0, 0, trt, 0)
874 /* TRANSLATE EXTENDED */
875     C(0xb2a5, TRE,     RRE,   Z,   0, r2, r1_P, 0, tre, 0)
876
877 /* TRANSLATE ONE TO ONE */
878     C(0xb993, TROO,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
879 /* TRANSLATE ONE TO TWO */
880     C(0xb992, TROT,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
881 /* TRANSLATE TWO TO ONE */
882     C(0xb991, TRTO,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
883 /* TRANSLATE TWO TO TWO */
884     C(0xb990, TRTT,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
885
886 /* UNPACK */
887     /* Really format SS_b, but we pack both lengths into one argument
888        for the helper call, so we might as well leave one 8-bit field.  */
889     C(0xf300, UNPK,    SS_a,  Z,   la1, a2, 0, 0, unpk, 0)
890 /* UNPACK ASCII */
891     C(0xea00, UNPKA,   SS_a,  E2,  la1, a2, 0, 0, unpka, 0)
892 /* UNPACK UNICODE */
893     C(0xe200, UNPKU,   SS_a,  E2,  la1, a2, 0, 0, unpku, 0)
894
895 #ifndef CONFIG_USER_ONLY
896 /* COMPARE AND SWAP AND PURGE */
897     D(0xb250, CSP,     RRE,   Z,   r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL)
898     D(0xb98a, CSPG,    RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEQ)
899 /* DIAGNOSE (KVM hypercall) */
900     C(0x8300, DIAG,    RSI,   Z,   0, 0, 0, 0, diag, 0)
901 /* INSERT STORAGE KEY EXTENDED */
902     C(0xb229, ISKE,    RRE,   Z,   0, r2_o, new, r1_8, iske, 0)
903 /* INVALIDATE PAGE TABLE ENTRY */
904     C(0xb221, IPTE,    RRF_a, Z,   r1_o, r2_o, 0, 0, ipte, 0)
905 /* LOAD CONTROL */
906     C(0xb700, LCTL,    RS_a,  Z,   0, a2, 0, 0, lctl, 0)
907     C(0xeb2f, LCTLG,   RSY_a, Z,   0, a2, 0, 0, lctlg, 0)
908 /* LOAD PROGRAM PARAMETER */
909     C(0xb280, LPP,     S,   LPP,   0, m2_64, 0, 0, lpp, 0)
910 /* LOAD PSW */
911     C(0x8200, LPSW,    S,     Z,   0, a2, 0, 0, lpsw, 0)
912 /* LOAD PSW EXTENDED */
913     C(0xb2b2, LPSWE,   S,     Z,   0, a2, 0, 0, lpswe, 0)
914 /* LOAD REAL ADDRESS */
915     C(0xb100, LRA,     RX_a,  Z,   0, a2, r1, 0, lra, 0)
916     C(0xe313, LRAY,    RXY_a, LD,  0, a2, r1, 0, lra, 0)
917     C(0xe303, LRAG,    RXY_a, Z,   0, a2, r1, 0, lra, 0)
918 /* LOAD USING REAL ADDRESS */
919     C(0xb24b, LURA,    RRE,   Z,   0, r2, new, r1_32, lura, 0)
920     C(0xb905, LURAG,   RRE,   Z,   0, r2, r1, 0, lurag, 0)
921 /* MOVE TO PRIMARY */
922     C(0xda00, MVCP,    SS_d,  Z,   la1, a2, 0, 0, mvcp, 0)
923 /* MOVE TO SECONDARY */
924     C(0xdb00, MVCS,    SS_d,  Z,   la1, a2, 0, 0, mvcs, 0)
925 /* PURGE TLB */
926     C(0xb20d, PTLB,    S,     Z,   0, 0, 0, 0, ptlb, 0)
927 /* RESET REFERENCE BIT EXTENDED */
928     C(0xb22a, RRBE,    RRE,   Z,   0, r2_o, 0, 0, rrbe, 0)
929 /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
930     C(0xb220, SERVC,   RRE,   Z,   r1_o, r2_o, 0, 0, servc, 0)
931 /* SET ADDRESS SPACE CONTROL FAST */
932     C(0xb279, SACF,    S,     Z,   0, a2, 0, 0, sacf, 0)
933 /* SET CLOCK */
934     /* ??? Not implemented - is it necessary? */
935     C(0xb204, SCK,     S,     Z,   0, 0, 0, 0, 0, 0)
936 /* SET CLOCK COMPARATOR */
937     C(0xb206, SCKC,    S,     Z,   0, m2_64, 0, 0, sckc, 0)
938 /* SET CPU TIMER */
939     C(0xb208, SPT,     S,     Z,   0, m2_64, 0, 0, spt, 0)
940 /* SET PREFIX */
941     C(0xb210, SPX,     S,     Z,   0, m2_32u, 0, 0, spx, 0)
942 /* SET PSW KEY FROM ADDRESS */
943     C(0xb20a, SPKA,    S,     Z,   0, a2, 0, 0, spka, 0)
944 /* SET STORAGE KEY EXTENDED */
945     C(0xb22b, SSKE,    RRF_c, Z,   r1_o, r2_o, 0, 0, sske, 0)
946 /* SET SYSTEM MASK */
947     C(0x8000, SSM,     S,     Z,   0, m2_8u, 0, 0, ssm, 0)
948 /* SIGNAL PROCESSOR */
949     C(0xae00, SIGP,    RS_a,  Z,   r3_o, a2, 0, 0, sigp, 0)
950 /* STORE CLOCK */
951     C(0xb205, STCK,    S,     Z,   la2, 0, new, m1_64, stck, 0)
952     C(0xb27c, STCKF,   S,     SCF, la2, 0, new, m1_64, stck, 0)
953 /* STORE CLOCK EXTENDED */
954     C(0xb278, STCKE,   S,     Z,   0, a2, 0, 0, stcke, 0)
955 /* STORE CLOCK COMPARATOR */
956     C(0xb207, STCKC,   S,     Z,   la2, 0, new, m1_64, stckc, 0)
957 /* STORE CONTROL */
958     C(0xb600, STCTL,   RS_a,  Z,   0, a2, 0, 0, stctl, 0)
959     C(0xeb25, STCTG,   RSY_a, Z,   0, a2, 0, 0, stctg, 0)
960 /* STORE CPU ADDRESS */
961     C(0xb212, STAP,    S,     Z,   la2, 0, new, m1_16, stap, 0)
962 /* STORE CPU ID */
963     C(0xb202, STIDP,   S,     Z,   la2, 0, new, 0, stidp, 0)
964 /* STORE CPU TIMER */
965     C(0xb209, STPT,    S,     Z,   la2, 0, new, m1_64, stpt, 0)
966 /* STORE FACILITY LIST */
967     C(0xb2b1, STFL,    S,     Z,   0, 0, 0, 0, stfl, 0)
968 /* STORE PREFIX */
969     C(0xb211, STPX,    S,     Z,   la2, 0, new, m1_32, stpx, 0)
970 /* STORE SYSTEM INFORMATION */
971     C(0xb27d, STSI,    S,     Z,   0, a2, 0, 0, stsi, 0)
972 /* STORE THEN AND SYSTEM MASK */
973     C(0xac00, STNSM,   SI,    Z,   la1, 0, 0, 0, stnosm, 0)
974 /* STORE THEN OR SYSTEM MASK */
975     C(0xad00, STOSM,   SI,    Z,   la1, 0, 0, 0, stnosm, 0)
976 /* STORE USING REAL ADDRESS */
977     C(0xb246, STURA,   RRE,   Z,   r1_o, r2_o, 0, 0, stura, 0)
978     C(0xb925, STURG,   RRE,   Z,   r1_o, r2_o, 0, 0, sturg, 0)
979 /* TEST BLOCK */
980     C(0xb22c, TB,      RRE,   Z,   0, r2_o, 0, 0, testblock, 0)
981 /* TEST PROTECTION */
982     C(0xe501, TPROT,   SSE,   Z,   la1, a2, 0, 0, tprot, 0)
983
984 /* CCW I/O Instructions */
985     C(0xb276, XSCH,    S,     Z,   0, 0, 0, 0, xsch, 0)
986     C(0xb230, CSCH,    S,     Z,   0, 0, 0, 0, csch, 0)
987     C(0xb231, HSCH,    S,     Z,   0, 0, 0, 0, hsch, 0)
988     C(0xb232, MSCH,    S,     Z,   0, insn, 0, 0, msch, 0)
989     C(0xb23b, RCHP,    S,     Z,   0, 0, 0, 0, rchp, 0)
990     C(0xb238, RSCH,    S,     Z,   0, 0, 0, 0, rsch, 0)
991     C(0xb233, SSCH,    S,     Z,   0, insn, 0, 0, ssch, 0)
992     C(0xb234, STSCH,   S,     Z,   0, insn, 0, 0, stsch, 0)
993     C(0xb235, TSCH,    S,     Z,   0, insn, 0, 0, tsch, 0)
994     /* ??? Not listed in PoO ninth edition, but there's a linux driver that
995        uses it: "A CHSC subchannel is usually present on LPAR only."  */
996     C(0xb25f, CHSC,  RRE,     Z,   0, insn, 0, 0, chsc, 0)
997 #endif /* CONFIG_USER_ONLY */
This page took 0.081096 seconds and 4 git commands to generate.