]> Git Repo - qemu.git/blame - target/s390x/insn-data.def
Merge remote-tracking branch 'remotes/berrange/tags/pull-qio-2017-07-18-1' into staging
[qemu.git] / target / s390x / insn-data.def
CommitLineData
13f67dd5
AG
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
ad044d09
RH
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)
587626f8
RH
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)
a1f12d85
AJ
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)
ad044d09
RH
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)
a1f12d85
AJ
47/* ADD IMMEDIATE HIGH */
48 C(0xcc08, AIH, RIL_a, HW, r1_sr32, i2, new, r1_32h, add, adds32)
d82287de
RH
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
ad044d09
RH
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)
a1f12d85
AJ
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)
ad044d09
RH
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)
e272b3ac
RH
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)
a1f12d85
AJ
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)
4e4bb438
RH
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)
ad044d09 85
3bbfbd1f
RH
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)
0a949039 94 C(0xd400, NC, SS_a, Z, la1, a2, 0, 0, nc, 0)
facfc864
RH
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)
a05d2b6b
RH
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)
3bbfbd1f 104
8ac33cdb
RH
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)
7233f2ed
RH
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)
c61aad69
RH
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)
a1f12d85
AJ
125/* BRANCH RELATIVE ON COUNT HIGH */
126 C(0xcc06, BRCTH, RIL_b, HW, 0, 0, 0, 0, bcth, 0)
2cf5e350
RH
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)
6a68acd5
RH
137/* BRANCH PREDICTION PRELOAD */
138 /* ??? Format is SMI, but implemented as NOP, so we need no fields. */
139 C(0xc700, BPP, E, EH, 0, 0, 0, 0, 0, 0)
140/* BRANCH PREDICTION RELATIVE PRELOAD */
141 /* ??? Format is MII, but implemented as NOP, so we need no fields. */
142 C(0xc500, BPRP, E, EH, 0, 0, 0, 0, 0, 0)
143/* NEXT INSTRUCTION ACCESS INTENT */
144 /* ??? Format is IE, but implemented as NOP, so we need no fields. */
145 C(0xb2fa, NIAI, E, EH, 0, 0, 0, 0, 0, 0)
8ac33cdb 146
374724f9
RH
147/* CHECKSUM */
148 C(0xb241, CKSM, RRE, Z, r1_o, ra2, new, r1_32, cksm, 0)
149
2db014b5
RH
150/* COPY SIGN */
151 C(0xb372, CPSDR, RRF_b, FPSSH, f3_o, f2_o, f1, 0, cps, 0)
152
a7e836d5
RH
153/* COMPARE */
154 C(0x1900, CR, RR_a, Z, r1_o, r2_o, 0, 0, 0, cmps32)
155 C(0x5900, C, RX_a, Z, r1_o, m2_32s, 0, 0, 0, cmps32)
156 C(0xe359, CY, RXY_a, LD, r1_o, m2_32s, 0, 0, 0, cmps32)
157 C(0xb920, CGR, RRE, Z, r1_o, r2_o, 0, 0, 0, cmps64)
158 C(0xb930, CGFR, RRE, Z, r1_o, r2_32s, 0, 0, 0, cmps64)
159 C(0xe320, CG, RXY_a, Z, r1_o, m2_64, 0, 0, 0, cmps64)
160 C(0xe330, CGF, RXY_a, Z, r1_o, m2_32s, 0, 0, 0, cmps64)
587626f8
RH
161 C(0xb309, CEBR, RRE, Z, e1, e2, 0, 0, ceb, 0)
162 C(0xb319, CDBR, RRE, Z, f1_o, f2_o, 0, 0, cdb, 0)
163 C(0xb349, CXBR, RRE, Z, x1_o, x2_o, 0, 0, cxb, 0)
164 C(0xed09, CEB, RXE, Z, e1, m2_32u, 0, 0, ceb, 0)
165 C(0xed19, CDB, RXE, Z, f1_o, m2_64, 0, 0, cdb, 0)
9c8be598
AJ
166/* COMPARE AND SIGNAL */
167 C(0xb308, KEBR, RRE, Z, e1, e2, 0, 0, keb, 0)
168 C(0xb318, KDBR, RRE, Z, f1_o, f2_o, 0, 0, kdb, 0)
169 C(0xb348, KXBR, RRE, Z, x1_o, x2_o, 0, 0, kxb, 0)
170 C(0xed08, KEB, RXE, Z, e1, m2_32u, 0, 0, keb, 0)
171 C(0xed18, KDB, RXE, Z, f1_o, m2_64, 0, 0, kdb, 0)
a7e836d5
RH
172/* COMPARE IMMEDIATE */
173 C(0xc20d, CFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps32)
174 C(0xc20c, CGFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps64)
403e217f
RH
175/* COMPARE RELATIVE LONG */
176 C(0xc60d, CRL, RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps32)
177 C(0xc608, CGRL, RIL_b, GIE, r1, mri2_64, 0, 0, 0, cmps64)
178 C(0xc60c, CGFRL, RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps64)
a7e836d5
RH
179/* COMPARE HALFWORD */
180 C(0x4900, CH, RX_a, Z, r1_o, m2_16s, 0, 0, 0, cmps32)
181 C(0xe379, CHY, RXY_a, LD, r1_o, m2_16s, 0, 0, 0, cmps32)
182 C(0xe334, CGH, RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
183/* COMPARE HALFWORD IMMEDIATE */
184 C(0xa70e, CHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps32)
185 C(0xa70f, CGHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps64)
186 C(0xe554, CHHSI, SIL, GIE, m1_16s, i2, 0, 0, 0, cmps64)
187 C(0xe55c, CHSI, SIL, GIE, m1_32s, i2, 0, 0, 0, cmps64)
188 C(0xe558, CGHSI, SIL, GIE, m1_64, i2, 0, 0, 0, cmps64)
189/* COMPARE HALFWORD RELATIVE LONG */
74266b4a
AJ
190 C(0xc605, CHRL, RIL_b, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
191 C(0xc604, CGHRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
a1f12d85
AJ
192/* COMPARE HIGH */
193 C(0xb9cd, CHHR, RRE, HW, r1_sr32, r2_sr32, 0, 0, 0, cmps32)
194 C(0xb9dd, CHLR, RRE, HW, r1_sr32, r2_o, 0, 0, 0, cmps32)
195 C(0xe3cd, CHF, RXY_a, HW, r1_sr32, m2_32s, 0, 0, 0, cmps32)
196/* COMPARE IMMEDIATE HIGH */
197 C(0xcc0d, CIH, RIL_a, HW, r1_sr32, i2, 0, 0, 0, cmps32)
a7e836d5
RH
198
199/* COMPARE LOGICAL */
200 C(0x1500, CLR, RR_a, Z, r1, r2, 0, 0, 0, cmpu32)
201 C(0x5500, CL, RX_a, Z, r1, m2_32s, 0, 0, 0, cmpu32)
202 C(0xe355, CLY, RXY_a, LD, r1, m2_32s, 0, 0, 0, cmpu32)
203 C(0xb921, CLGR, RRE, Z, r1, r2, 0, 0, 0, cmpu64)
204 C(0xb931, CLGFR, RRE, Z, r1, r2_32u, 0, 0, 0, cmpu64)
205 C(0xe321, CLG, RXY_a, Z, r1, m2_64, 0, 0, 0, cmpu64)
206 C(0xe331, CLGF, RXY_a, Z, r1, m2_32u, 0, 0, 0, cmpu64)
4f7403d5 207 C(0xd500, CLC, SS_a, Z, la1, a2, 0, 0, clc, 0)
a1f12d85
AJ
208/* COMPARE LOGICAL HIGH */
209 C(0xb9cf, CLHHR, RRE, HW, r1_sr32, r2_sr32, 0, 0, 0, cmpu32)
210 C(0xb9df, CLHLR, RRE, HW, r1_sr32, r2_o, 0, 0, 0, cmpu32)
211 C(0xe3cf, CLHF, RXY_a, HW, r1_sr32, m2_32s, 0, 0, 0, cmpu32)
a7e836d5
RH
212/* COMPARE LOGICAL IMMEDIATE */
213 C(0xc20f, CLFI, RIL_a, EI, r1, i2, 0, 0, 0, cmpu32)
214 C(0xc20e, CLGFI, RIL_a, EI, r1, i2_32u, 0, 0, 0, cmpu64)
215 C(0x9500, CLI, SI, Z, m1_8u, i2_8u, 0, 0, 0, cmpu64)
216 C(0xeb55, CLIY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, cmpu64)
217 C(0xe555, CLHHSI, SIL, GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
218 C(0xe55d, CLFHSI, SIL, GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
219 C(0xe559, CLGHSI, SIL, GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
a1f12d85
AJ
220/* COMPARE LOGICAL IMMEDIATE HIGH */
221 C(0xcc0f, CLIH, RIL_a, HW, r1_sr32, i2, 0, 0, 0, cmpu32)
a7e836d5
RH
222/* COMPARE LOGICAL RELATIVE LONG */
223 C(0xc60f, CLRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
224 C(0xc60a, CLGRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
225 C(0xc60e, CLGFRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
226 C(0xc607, CLHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
227 C(0xc606, CLGHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
5c2b48a8
AJ
228/* COMPARE LOGICAL LONG */
229 C(0x0f00, CLCL, RR_a, Z, 0, 0, 0, 0, clcl, 0)
eb66e6a9
RH
230/* COMPARE LOGICAL LONG EXTENDED */
231 C(0xa900, CLCLE, RS_a, Z, 0, a2, 0, 0, clcle, 0)
31006af3
AJ
232/* COMPARE LOGICAL LONG UNICODE */
233 C(0xeb8f, CLCLU, RSY_a, E2, 0, a2, 0, 0, clclu, 0)
32a44d58
RH
234/* COMPARE LOGICAL CHARACTERS UNDER MASK */
235 C(0xbd00, CLM, RS_b, Z, r1_o, a2, 0, 0, clm, 0)
236 C(0xeb21, CLMY, RSY_b, LD, r1_o, a2, 0, 0, clm, 0)
237 C(0xeb20, CLMH, RSY_b, Z, r1_sr32, a2, 0, 0, clm, 0)
aa31bf60
RH
238/* COMPARE LOGICAL STRING */
239 C(0xb25d, CLST, RRE, Z, r1_o, r2_o, 0, 0, clst, 0)
a7e836d5 240
5550359f
RH
241/* COMPARE AND BRANCH */
242 D(0xecf6, CRB, RRS, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
243 D(0xece4, CGRB, RRS, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
244 D(0xec76, CRJ, RIE_b, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
245 D(0xec64, CGRJ, RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
246 D(0xecfe, CIB, RIS, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
247 D(0xecfc, CGIB, RIS, GIE, r1_o, i2, 0, 0, cj, 0, 0)
248 D(0xec7e, CIJ, RIE_c, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
249 D(0xec7c, CGIJ, RIE_c, GIE, r1_o, i2, 0, 0, cj, 0, 0)
250/* COMPARE LOGICAL AND BRANCH */
251 D(0xecf7, CLRB, RRS, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
252 D(0xece5, CLGRB, RRS, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
253 D(0xec77, CLRJ, RIE_b, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
254 D(0xec65, CLGRJ, RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
255 D(0xecff, CLIB, RIS, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
256 D(0xecfd, CLGIB, RIS, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
257 D(0xec7f, CLIJ, RIE_c, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
258 D(0xec7d, CLGIJ, RIE_c, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
259
f3de39c4 260/* COMPARE AND SWAP */
303a9ab8
RH
261 D(0xba00, CS, RS_a, Z, r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
262 D(0xeb14, CSY, RSY_a, LD, r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
263 D(0xeb30, CSG, RSY_a, Z, r3_o, r1_o, new, r1, cs, 0, MO_TEQ)
f3de39c4 264/* COMPARE DOUBLE AND SWAP */
303a9ab8
RH
265 D(0xbb00, CDS, RS_a, Z, r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
266 D(0xeb31, CDSY, RSY_a, LD, r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
b7886de3 267 C(0xeb3e, CDSG, RSY_a, Z, 0, 0, 0, 0, cdsg, 0)
c67ba303
RH
268/* COMPARE AND SWAP AND STORE */
269 C(0xc802, CSST, SSF, CASS, la1, a2, 0, 0, csst, 0)
f3de39c4 270
1c268751
RH
271/* COMPARE AND TRAP */
272 D(0xb972, CRT, RRF_c, GIE, r1_32s, r2_32s, 0, 0, ct, 0, 0)
273 D(0xb960, CGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 0)
274 D(0xec72, CIT, RIE_a, GIE, r1_32s, i2, 0, 0, ct, 0, 0)
275 D(0xec70, CGIT, RIE_a, GIE, r1_o, i2, 0, 0, ct, 0, 0)
276/* COMPARE LOGICAL AND TRAP */
277 D(0xb973, CLRT, RRF_c, GIE, r1_32u, r2_32u, 0, 0, ct, 0, 1)
278 D(0xb961, CLGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
375ee58b
AJ
279 D(0xeb23, CLT, RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
280 D(0xeb2b, CLGT, RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
1c268751 281 D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
1dedb9b7 282 D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1)
1c268751 283
c49daa51
RH
284/* CONVERT TO DECIMAL */
285 C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
286 C(0xe326, CVDY, RXY_a, LD, r1_o, a2, 0, 0, cvd, 0)
68c8bd93
RH
287/* CONVERT TO FIXED */
288 C(0xb398, CFEBR, RRF_e, Z, 0, e2, new, r1_32, cfeb, 0)
289 C(0xb399, CFDBR, RRF_e, Z, 0, f2_o, new, r1_32, cfdb, 0)
290 C(0xb39a, CFXBR, RRF_e, Z, 0, x2_o, new, r1_32, cfxb, 0)
291 C(0xb3a8, CGEBR, RRF_e, Z, 0, e2, r1, 0, cgeb, 0)
292 C(0xb3a9, CGDBR, RRF_e, Z, 0, f2_o, r1, 0, cgdb, 0)
293 C(0xb3aa, CGXBR, RRF_e, Z, 0, x2_o, r1, 0, cgxb, 0)
683bb9a8
RH
294/* CONVERT FROM FIXED */
295 C(0xb394, CEFBR, RRF_e, Z, 0, r2_32s, new, e1, cegb, 0)
296 C(0xb395, CDFBR, RRF_e, Z, 0, r2_32s, f1, 0, cdgb, 0)
297 C(0xb396, CXFBR, RRF_e, Z, 0, r2_32s, x1, 0, cxgb, 0)
298 C(0xb3a4, CEGBR, RRF_e, Z, 0, r2_o, new, e1, cegb, 0)
299 C(0xb3a5, CDGBR, RRF_e, Z, 0, r2_o, f1, 0, cdgb, 0)
300 C(0xb3a6, CXGBR, RRF_e, Z, 0, r2_o, x1, 0, cxgb, 0)
6ac1b45f
RH
301/* CONVERT TO LOGICAL */
302 C(0xb39c, CLFEBR, RRF_e, FPE, 0, e2, new, r1_32, clfeb, 0)
303 C(0xb39d, CLFDBR, RRF_e, FPE, 0, f2_o, new, r1_32, clfdb, 0)
304 C(0xb39e, CLFXBR, RRF_e, FPE, 0, x2_o, new, r1_32, clfxb, 0)
305 C(0xb3ac, CLGEBR, RRF_e, FPE, 0, e2, r1, 0, clgeb, 0)
306 C(0xb3ad, CLGDBR, RRF_e, FPE, 0, f2_o, r1, 0, clgdb, 0)
307 C(0xb3ae, CLGXBR, RRF_e, FPE, 0, x2_o, r1, 0, clgxb, 0)
2112bf1b
RH
308/* CONVERT FROM LOGICAL */
309 C(0xb390, CELFBR, RRF_e, FPE, 0, r2_32u, new, e1, celgb, 0)
310 C(0xb391, CDLFBR, RRF_e, FPE, 0, r2_32u, f1, 0, cdlgb, 0)
311 C(0xb392, CXLFBR, RRF_e, FPE, 0, r2_32u, x1, 0, cxlgb, 0)
312 C(0xb3a0, CELGBR, RRF_e, FPE, 0, r2_o, new, e1, celgb, 0)
313 C(0xb3a1, CDLGBR, RRF_e, FPE, 0, r2_o, f1, 0, cdlgb, 0)
314 C(0xb3a2, CXLGBR, RRF_e, FPE, 0, r2_o, x1, 0, cxlgb, 0)
c49daa51 315
941ef3db
RH
316/* CONVERT UTF-8 TO UTF-16 */
317 D(0xb2a7, CU12, RRF_c, Z, 0, 0, 0, 0, cuXX, 0, 12)
318/* CONVERT UTF-8 TO UTF-32 */
319 D(0xb9b0, CU14, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 14)
320/* CONVERT UTF-16 to UTF-8 */
321 D(0xb2a6, CU21, RRF_c, Z, 0, 0, 0, 0, cuXX, 0, 21)
322/* CONVERT UTF-16 to UTF-32 */
323 D(0xb9b1, CU24, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 24)
324/* CONVERT UTF-32 to UTF-8 */
325 D(0xb9b2, CU41, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 41)
326/* CONVERT UTF-32 to UTF-16 */
327 D(0xb9b3, CU42, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 42)
328
891452e5
RH
329/* DIVIDE */
330 C(0x1d00, DR, RR_a, Z, r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
331 C(0x5d00, D, RX_a, Z, r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
f08a5c31
RH
332 C(0xb30d, DEBR, RRE, Z, e1, e2, new, e1, deb, 0)
333 C(0xb31d, DDBR, RRE, Z, f1_o, f2_o, f1, 0, ddb, 0)
334 C(0xb34d, DXBR, RRE, Z, 0, x2_o, x1, 0, dxb, 0)
335 C(0xed0d, DEB, RXE, Z, e1, m2_32u, new, e1, deb, 0)
336 C(0xed1d, DDB, RXE, Z, f1_o, m2_64, f1, 0, ddb, 0)
891452e5
RH
337/* DIVIDE LOGICAL */
338 C(0xb997, DLR, RRE, Z, r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
339 C(0xe397, DL, RXY_a, Z, r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
340 C(0xb987, DLGR, RRE, Z, 0, r2_o, r1_P, 0, divu64, 0)
341 C(0xe387, DLG, RXY_a, Z, 0, m2_64, r1_P, 0, divu64, 0)
342/* DIVIDE SINGLE */
343 C(0xb90d, DSGR, RRE, Z, r1p1, r2, r1_P, 0, divs64, 0)
344 C(0xb91d, DSGFR, RRE, Z, r1p1, r2_32s, r1_P, 0, divs64, 0)
345 C(0xe30d, DSG, RXY_a, Z, r1p1, m2_64, r1_P, 0, divs64, 0)
346 C(0xe31d, DSGF, RXY_a, Z, r1p1, m2_32s, r1_P, 0, divs64, 0)
347
3bbfbd1f
RH
348/* EXCLUSIVE OR */
349 C(0x1700, XR, RR_a, Z, r1, r2, new, r1_32, xor, nz32)
350 C(0xb9f7, XRK, RRF_a, DO, r2, r3, new, r1_32, xor, nz32)
351 C(0x5700, X, RX_a, Z, r1, m2_32s, new, r1_32, xor, nz32)
352 C(0xe357, XY, RXY_a, LD, r1, m2_32s, new, r1_32, xor, nz32)
353 C(0xb982, XGR, RRE, Z, r1, r2, r1, 0, xor, nz64)
354 C(0xb9e7, XGRK, RRF_a, DO, r2, r3, r1, 0, xor, nz64)
355 C(0xe382, XG, RXY_a, Z, r1, m2_64, r1, 0, xor, nz64)
d074ac6d 356 C(0xd700, XC, SS_a, Z, 0, 0, 0, 0, xc, 0)
facfc864
RH
357/* EXCLUSIVE OR IMMEDIATE */
358 D(0xc006, XIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
359 D(0xc007, XILF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
a05d2b6b
RH
360 C(0x9700, XI, SI, Z, m1_8u, i2_8u, new, m1_8, xor, nz64)
361 C(0xeb57, XIY, SIY, LD, m1_8u, i2_8u, new, m1_8, xor, nz64)
facfc864 362
6e764e97 363/* EXECUTE */
a72da8b7 364 C(0x4400, EX, RX_a, Z, 0, a2, 0, 0, ex, 0)
6e764e97 365/* EXECUTE RELATIVE LONG */
a72da8b7 366 C(0xc600, EXRL, RIL_b, EE, 0, ri2, 0, 0, ex, 0)
6e764e97 367
d62a4c97
RH
368/* EXTRACT ACCESS */
369 C(0xb24f, EAR, RRE, Z, 0, 0, new, r1_32, ear, 0)
0774710f
RH
370/* EXTRACT CPU ATTRIBUTE */
371 C(0xeb4c, ECAG, RSY_a, GIE, 0, a2, r1, 0, ecag, 0)
ea20490f
RH
372/* EXTRACT FPC */
373 C(0xb38c, EFPC, RRE, Z, 0, 0, new, r1_32, efpc, 0)
e30a9d3f
RH
374/* EXTRACT PSW */
375 C(0xb98d, EPSW, RRE, Z, 0, 0, 0, 0, epsw, 0)
ea20490f 376
102bf2c6
RH
377/* FIND LEFTMOST ONE */
378 C(0xb983, FLOGR, RRE, EI, 0, r2_o, r1_P, 0, flogr, 0)
379
afdc70be
RH
380/* INSERT CHARACTER */
381 C(0x4300, IC, RX_a, Z, 0, m2_8u, 0, r1_8, mov2, 0)
382 C(0xe373, ICY, RXY_a, LD, 0, m2_8u, 0, r1_8, mov2, 0)
58a9e35b
RH
383/* INSERT CHARACTERS UNDER MASK */
384 D(0xbf00, ICM, RS_b, Z, 0, a2, r1, 0, icm, 0, 0)
385 D(0xeb81, ICMY, RSY_b, LD, 0, a2, r1, 0, icm, 0, 0)
386 D(0xeb80, ICMH, RSY_b, Z, 0, a2, r1, 0, icm, 0, 32)
facfc864
RH
387/* INSERT IMMEDIATE */
388 D(0xc008, IIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
389 D(0xc009, IILF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
390 D(0xa500, IIHH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
391 D(0xa501, IIHL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
392 D(0xa502, IILH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
393 D(0xa503, IILL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
6e2704e7
RH
394/* INSERT PROGRAM MASK */
395 C(0xb222, IPM, RRE, Z, 0, 0, r1, 0, ipm, 0)
3bbfbd1f 396
22c37a08
RH
397/* LOAD */
398 C(0x1800, LR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, 0)
399 C(0x5800, L, RX_a, Z, 0, a2, new, r1_32, ld32s, 0)
92892330 400 C(0xe358, LY, RXY_a, LD, 0, a2, new, r1_32, ld32s, 0)
22c37a08
RH
401 C(0xb904, LGR, RRE, Z, 0, r2_o, 0, r1, mov2, 0)
402 C(0xb914, LGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, 0)
403 C(0xe304, LG, RXY_a, Z, 0, a2, r1, 0, ld64, 0)
404 C(0xe314, LGF, RXY_a, Z, 0, a2, r1, 0, ld32s, 0)
d764a8d1
RH
405 C(0x2800, LDR, RR_a, Z, 0, f2_o, 0, f1, mov2, 0)
406 C(0x6800, LD, RX_a, Z, 0, m2_64, 0, f1, mov2, 0)
407 C(0xed65, LDY, RXY_a, LD, 0, m2_64, 0, f1, mov2, 0)
408 C(0x3800, LER, RR_a, Z, 0, e2, 0, cond_e1e2, mov2, 0)
409 C(0x7800, LE, RX_a, Z, 0, m2_32u, 0, e1, mov2, 0)
410 C(0xed64, LEY, RXY_a, LD, 0, m2_32u, 0, e1, mov2, 0)
411 C(0xb365, LXR, RRE, Z, 0, x2_o, 0, x1, movx, 0)
22c37a08
RH
412/* LOAD IMMEDIATE */
413 C(0xc001, LGFI, RIL_a, EI, 0, i2, 0, r1, mov2, 0)
414/* LOAD RELATIVE LONG */
415 C(0xc40d, LRL, RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
416 C(0xc408, LGRL, RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
417 C(0xc40c, LGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
aedec19d
RH
418/* LOAD ADDRESS */
419 C(0x4100, LA, RX_a, Z, 0, a2, 0, r1, mov2, 0)
420 C(0xe371, LAY, RXY_a, LD, 0, a2, 0, r1, mov2, 0)
a1c7610a
AJ
421/* LOAD ADDRESS EXTENDED */
422 C(0x5100, LAE, RX_a, Z, 0, a2, 0, r1, mov2e, 0)
423 C(0xe375, LAEY, RXY_a, GIE, 0, a2, 0, r1, mov2e, 0)
aedec19d
RH
424/* LOAD ADDRESS RELATIVE LONG */
425 C(0xc000, LARL, RIL_b, Z, 0, ri2, 0, r1, mov2, 0)
57af7289 426/* LOAD AND ADD */
4dba4d6f
RH
427 D(0xebf8, LAA, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, laa, adds32, MO_TESL)
428 D(0xebe8, LAAG, RSY_a, ILA, r3, a2, new, in2_r1, laa, adds64, MO_TEQ)
57af7289 429/* LOAD AND ADD LOGICAL */
4dba4d6f
RH
430 D(0xebfa, LAAL, RSY_a, ILA, r3_32u, a2, new, in2_r1_32, laa, addu32, MO_TEUL)
431 D(0xebea, LAALG, RSY_a, ILA, r3, a2, new, in2_r1, laa, addu64, MO_TEQ)
57af7289 432/* LOAD AND AND */
4dba4d6f
RH
433 D(0xebf4, LAN, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lan, nz32, MO_TESL)
434 D(0xebe4, LANG, RSY_a, ILA, r3, a2, new, in2_r1, lan, nz64, MO_TEQ)
57af7289 435/* LOAD AND EXCLUSIVE OR */
4dba4d6f
RH
436 D(0xebf7, LAX, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lax, nz32, MO_TESL)
437 D(0xebe7, LAXG, RSY_a, ILA, r3, a2, new, in2_r1, lax, nz64, MO_TEQ)
57af7289 438/* LOAD AND OR */
4dba4d6f
RH
439 D(0xebf6, LAO, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lao, nz32, MO_TESL)
440 D(0xebe6, LAOG, RSY_a, ILA, r3, a2, new, in2_r1, lao, nz64, MO_TEQ)
11bf2d73
RH
441/* LOAD AND TEST */
442 C(0x1200, LTR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, s32)
443 C(0xb902, LTGR, RRE, Z, 0, r2_o, 0, r1, mov2, s64)
444 C(0xb912, LTGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, s64)
445 C(0xe312, LT, RXY_a, EI, 0, a2, new, r1_32, ld32s, s64)
446 C(0xe302, LTG, RXY_a, EI, 0, a2, r1, 0, ld64, s64)
447 C(0xe332, LTGF, RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
587626f8
RH
448 C(0xb302, LTEBR, RRE, Z, 0, e2, 0, cond_e1e2, mov2, f32)
449 C(0xb312, LTDBR, RRE, Z, 0, f2_o, 0, f1, mov2, f64)
450 C(0xb342, LTXBR, RRE, Z, 0, x2_o, 0, x1, movx, f128)
782a8479
AJ
451/* LOAD AND TRAP */
452 C(0xe39f, LAT, RXY_a, LAT, 0, m2_32u, r1, 0, lat, 0)
453 C(0xe385, LGAT, RXY_a, LAT, 0, a2, r1, 0, lgat, 0)
c2a5c1d7
RH
454/* LOAD AND ZERO RIGHTMOST BYTE */
455 C(0xe3eb, LZRF, RXY_a, LZRB, 0, m2_32u, new, r1_32, lzrb, 0)
456 C(0xe32a, LZRG, RXY_a, LZRB, 0, m2_64, r1, 0, lzrb, 0)
457/* LOAD LOGICAL AND ZERO RIGHTMOST BYTE */
458 C(0xe33a, LLZRGF, RXY_a, LZRB, 0, m2_32u, r1, 0, lzrb, 0)
c698d876
RH
459/* LOAD BYTE */
460 C(0xb926, LBR, RRE, EI, 0, r2_8s, 0, r1_32, mov2, 0)
461 C(0xb906, LGBR, RRE, EI, 0, r2_8s, 0, r1, mov2, 0)
462 C(0xe376, LB, RXY_a, LD, 0, a2, new, r1_32, ld8s, 0)
463 C(0xe377, LGB, RXY_a, LD, 0, a2, r1, 0, ld8s, 0)
a1f12d85
AJ
464/* LOAD BYTE HIGH */
465 C(0xe3c0, LBH, RXY_a, HW, 0, a2, new, r1_32h, ld8s, 0)
b9bca3e5
RH
466/* LOAD COMPLEMENT */
467 C(0x1300, LCR, RR_a, Z, 0, r2, new, r1_32, neg, neg32)
468 C(0xb903, LCGR, RRE, Z, 0, r2, r1, 0, neg, neg64)
469 C(0xb913, LCGFR, RRE, Z, 0, r2_32s, r1, 0, neg, neg64)
5d7fd045
RH
470 C(0xb303, LCEBR, RRE, Z, 0, e2, new, e1, negf32, f32)
471 C(0xb313, LCDBR, RRE, Z, 0, f2_o, f1, 0, negf64, f64)
472 C(0xb343, LCXBR, RRE, Z, 0, x2_o, x1, 0, negf128, f128)
1d1f6301 473 C(0xb373, LCDFR, RRE, FPSSH, 0, f2_o, f1, 0, negf64, 0)
c698d876
RH
474/* LOAD HALFWORD */
475 C(0xb927, LHR, RRE, EI, 0, r2_16s, 0, r1_32, mov2, 0)
476 C(0xb907, LGHR, RRE, EI, 0, r2_16s, 0, r1, mov2, 0)
477 C(0x4800, LH, RX_a, Z, 0, a2, new, r1_32, ld16s, 0)
478 C(0xe378, LHY, RXY_a, LD, 0, a2, new, r1_32, ld16s, 0)
479 C(0xe315, LGH, RXY_a, Z, 0, a2, r1, 0, ld16s, 0)
a1f12d85
AJ
480/* LOAD HALFWORD HIGH */
481 C(0xe3c4, LHH, RXY_a, HW, 0, a2, new, r1_32h, ld16s, 0)
c698d876
RH
482/* LOAD HALFWORD IMMEDIATE */
483 C(0xa708, LHI, RI_a, Z, 0, i2, 0, r1_32, mov2, 0)
484 C(0xa709, LGHI, RI_a, Z, 0, i2, 0, r1, mov2, 0)
485/* LOAD HALFWORD RELATIVE LONG */
486 C(0xc405, LHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
487 C(0xc404, LGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
a1f12d85
AJ
488/* LOAD HIGH */
489 C(0xe3ca, LFH, RXY_a, HW, 0, a2, new, r1_32h, ld32u, 0)
782a8479
AJ
490/* LOAG HIGH AND TRAP */
491 C(0xe3c8, LFHAT, RXY_a, LAT, 0, m2_32u, r1, 0, lfhat, 0)
22c37a08
RH
492/* LOAD LOGICAL */
493 C(0xb916, LLGFR, RRE, Z, 0, r2_32u, 0, r1, mov2, 0)
494 C(0xe316, LLGF, RXY_a, Z, 0, a2, r1, 0, ld32u, 0)
782a8479
AJ
495/* LOAD LOGICAL AND TRAP */
496 C(0xe39d, LLGFAT, RXY_a, LAT, 0, a2, r1, 0, llgfat, 0)
22c37a08
RH
497/* LOAD LOGICAL RELATIVE LONG */
498 C(0xc40e, LLGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
c698d876
RH
499/* LOAD LOGICAL CHARACTER */
500 C(0xb994, LLCR, RRE, EI, 0, r2_8u, 0, r1_32, mov2, 0)
501 C(0xb984, LLGCR, RRE, EI, 0, r2_8u, 0, r1, mov2, 0)
502 C(0xe394, LLC, RXY_a, EI, 0, a2, new, r1_32, ld8u, 0)
503 C(0xe390, LLGC, RXY_a, Z, 0, a2, r1, 0, ld8u, 0)
a1f12d85
AJ
504/* LOAD LOGICAL CHARACTER HIGH */
505 C(0xe3c2, LLCH, RXY_a, HW, 0, a2, new, r1_32h, ld8u, 0)
c698d876
RH
506/* LOAD LOGICAL HALFWORD */
507 C(0xb995, LLHR, RRE, EI, 0, r2_16u, 0, r1_32, mov2, 0)
508 C(0xb985, LLGHR, RRE, EI, 0, r2_16u, 0, r1, mov2, 0)
509 C(0xe395, LLH, RXY_a, EI, 0, a2, new, r1_32, ld16u, 0)
510 C(0xe391, LLGH, RXY_a, Z, 0, a2, r1, 0, ld16u, 0)
a1f12d85
AJ
511/* LOAD LOGICAL HALFWORD HIGH */
512 C(0xe3c6, LLHH, RXY_a, HW, 0, a2, new, r1_32h, ld16u, 0)
c698d876
RH
513/* LOAD LOGICAL HALFWORD RELATIVE LONG */
514 C(0xc402, LLHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
515 C(0xc406, LLGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
ade9dea4
RH
516/* LOAD LOGICAL IMMEDATE */
517 D(0xc00e, LLIHF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
518 D(0xc00f, LLILF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
519 D(0xa50c, LLIHH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 48)
520 D(0xa50d, LLIHL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 32)
521 D(0xa50e, LLILH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 16)
522 D(0xa50f, LLILL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 0)
7691c23b
RH
523/* LOAD LOGICAL THIRTY ONE BITS */
524 C(0xb917, LLGTR, RRE, Z, 0, r2_o, r1, 0, llgt, 0)
525 C(0xe317, LLGT, RXY_a, Z, 0, m2_32u, r1, 0, llgt, 0)
782a8479
AJ
526/* LOAD LOGICAL THIRTY ONE BITS AND TRAP */
527 C(0xe39c, LLGTAT, RXY_a, LAT, 0, m2_32u, r1, 0, llgtat, 0)
528
143cbbc5
RH
529/* LOAD FPR FROM GR */
530 C(0xb3c1, LDGR, RRE, FPRGR, 0, r2_o, 0, f1, mov2, 0)
531/* LOAD GR FROM FPR */
532 C(0xb3cd, LGDR, RRE, FPRGR, 0, f2_o, 0, r1, mov2, 0)
b9bca3e5
RH
533/* LOAD NEGATIVE */
534 C(0x1100, LNR, RR_a, Z, 0, r2_32s, new, r1_32, nabs, nabs32)
535 C(0xb901, LNGR, RRE, Z, 0, r2, r1, 0, nabs, nabs64)
536 C(0xb911, LNGFR, RRE, Z, 0, r2_32s, r1, 0, nabs, nabs64)
5d7fd045
RH
537 C(0xb301, LNEBR, RRE, Z, 0, e2, new, e1, nabsf32, f32)
538 C(0xb311, LNDBR, RRE, Z, 0, f2_o, f1, 0, nabsf64, f64)
539 C(0xb341, LNXBR, RRE, Z, 0, x2_o, x1, 0, nabsf128, f128)
df46283c 540 C(0xb371, LNDFR, RRE, FPSSH, 0, f2_o, f1, 0, nabsf64, 0)
632086da
RH
541/* LOAD ON CONDITION */
542 C(0xb9f2, LOCR, RRF_c, LOC, r1, r2, new, r1_32, loc, 0)
543 C(0xb9e2, LOCGR, RRF_c, LOC, r1, r2, r1, 0, loc, 0)
544 C(0xebf2, LOC, RSY_b, LOC, r1, m2_32u, new, r1_32, loc, 0)
545 C(0xebe2, LOCG, RSY_b, LOC, r1, m2_64, r1, 0, loc, 0)
45aa9aa3
RH
546/* LOAD HALFWORD IMMEDIATE ON CONDITION */
547 C(0xec42, LOCHI, RIE_g, LOC2, r1, i2, new, r1_32, loc, 0)
548 C(0xec46, LOCGHI, RIE_g, LOC2, r1, i2, r1, 0, loc, 0)
549 C(0xec4e, LOCHHI, RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0)
550/* LOAD HIGH ON CONDITION */
551 C(0xb9e0, LOCFHR, RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0)
552 C(0xebe0, LOCFH, RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0)
1807aaa5
EB
553/* LOAD PAIR DISJOINT */
554 D(0xc804, LPD, SSF, ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)
555 D(0xc805, LPDG, SSF, ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEQ)
e22dfdb2
AJ
556/* LOAD PAIR FROM QUADWORD */
557 C(0xe38f, LPQ, RXY_a, Z, 0, a2, r1_P, 0, lpq, 0)
b9bca3e5
RH
558/* LOAD POSITIVE */
559 C(0x1000, LPR, RR_a, Z, 0, r2_32s, new, r1_32, abs, abs32)
560 C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
561 C(0xb910, LPGFR, RRE, Z, 0, r2_32s, r1, 0, abs, abs64)
5d7fd045
RH
562 C(0xb300, LPEBR, RRE, Z, 0, e2, new, e1, absf32, f32)
563 C(0xb310, LPDBR, RRE, Z, 0, f2_o, f1, 0, absf64, f64)
564 C(0xb340, LPXBR, RRE, Z, 0, x2_o, x1, 0, absf128, f128)
df46283c 565 C(0xb370, LPDFR, RRE, FPSSH, 0, f2_o, f1, 0, absf64, 0)
d54f5865
RH
566/* LOAD REVERSED */
567 C(0xb91f, LRVR, RRE, Z, 0, r2_32u, new, r1_32, rev32, 0)
568 C(0xb90f, LRVGR, RRE, Z, 0, r2_o, r1, 0, rev64, 0)
569 C(0xe31f, LRVH, RXY_a, Z, 0, m2_16u, new, r1_16, rev16, 0)
570 C(0xe31e, LRV, RXY_a, Z, 0, m2_32u, new, r1_32, rev32, 0)
571 C(0xe30f, LRVG, RXY_a, Z, 0, m2_64, r1, 0, rev64, 0)
24db8412
RH
572/* LOAD ZERO */
573 C(0xb374, LZER, RRE, Z, 0, 0, 0, e1, zero, 0)
574 C(0xb375, LZDR, RRE, Z, 0, 0, 0, f1, zero, 0)
575 C(0xb376, LZXR, RRE, Z, 0, 0, 0, x1, zero2, 0)
22c37a08 576
8379bfdb
RH
577/* LOAD FPC */
578 C(0xb29d, LFPC, S, Z, 0, m2_32u, 0, 0, sfpc, 0)
411edc22
RH
579/* LOAD FPC AND SIGNAL */
580 C(0xb2bd, LFAS, S, IEEEE_SIM, 0, m2_32u, 0, 0, sfas, 0)
ed0bcece
AJ
581/* LOAD FP INTEGER */
582 C(0xb357, FIEBR, RRF_e, Z, 0, e2, new, e1, fieb, 0)
583 C(0xb35f, FIDBR, RRF_e, Z, 0, f2_o, f1, 0, fidb, 0)
584 C(0xb347, FIXBR, RRF_e, Z, 0, x2_o, x1, 0, fixb, 0)
8379bfdb 585
587626f8
RH
586/* LOAD LENGTHENED */
587 C(0xb304, LDEBR, RRE, Z, 0, e2, f1, 0, ldeb, 0)
588 C(0xb305, LXDBR, RRE, Z, 0, f2_o, x1, 0, lxdb, 0)
589 C(0xb306, LXEBR, RRE, Z, 0, e2, x1, 0, lxeb, 0)
590 C(0xed04, LDEB, RXE, Z, 0, m2_32u, f1, 0, ldeb, 0)
591 C(0xed05, LXDB, RXE, Z, 0, m2_64, x1, 0, lxdb, 0)
592 C(0xed06, LXEB, RXE, Z, 0, m2_32u, x1, 0, lxeb, 0)
593/* LOAD ROUNDED */
594 C(0xb344, LEDBR, RRE, Z, 0, f2_o, new, e1, ledb, 0)
595 C(0xb345, LDXBR, RRE, Z, 0, x2_o, f1, 0, ldxb, 0)
596 C(0xb346, LEXBR, RRE, Z, 0, x2_o, new, e1, lexb, 0)
597
77f8d6c3
RH
598/* LOAD MULTIPLE */
599 C(0x9800, LM, RS_a, Z, 0, a2, 0, 0, lm32, 0)
600 C(0xeb98, LMY, RSY_a, LD, 0, a2, 0, 0, lm32, 0)
601 C(0xeb04, LMG, RSY_a, Z, 0, a2, 0, 0, lm64, 0)
602/* LOAD MULTIPLE HIGH */
603 C(0xeb96, LMH, RSY_a, Z, 0, a2, 0, 0, lmh, 0)
7df3e93a
RH
604/* LOAD ACCESS MULTIPLE */
605 C(0x9a00, LAM, RS_a, Z, 0, a2, 0, 0, lam, 0)
606 C(0xeb9a, LAMY, RSY_a, LD, 0, a2, 0, 0, lam, 0)
77f8d6c3 607
6a04d76a 608/* MOVE */
af9e5a04 609 C(0xd200, MVC, SS_a, Z, la1, a2, 0, 0, mvc, 0)
6a04d76a
RH
610 C(0xe544, MVHHI, SIL, GIE, la1, i2, 0, m1_16, mov2, 0)
611 C(0xe54c, MVHI, SIL, GIE, la1, i2, 0, m1_32, mov2, 0)
612 C(0xe548, MVGHI, SIL, GIE, la1, i2, 0, m1_64, mov2, 0)
613 C(0x9200, MVI, SI, Z, la1, i2, 0, m1_8, mov2, 0)
614 C(0xeb52, MVIY, SIY, LD, la1, i2, 0, m1_8, mov2, 0)
6c9deca8
AJ
615/* MOVE INVERSE */
616 C(0xe800, MVCIN, SS_a, Z, la1, a2, 0, 0, mvcin, 0)
e1eaada9
RH
617/* MOVE LONG */
618 C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0)
eb66e6a9
RH
619/* MOVE LONG EXTENDED */
620 C(0xa800, MVCLE, RS_a, Z, 0, a2, 0, 0, mvcle, 0)
16f2e4b8
AJ
621/* MOVE LONG UNICODE */
622 C(0xeb8e, MVCLU, RSY_a, E2, 0, a2, 0, 0, mvclu, 0)
256dab6f
AJ
623/* MOVE NUMERICS */
624 C(0xd100, MVN, SS_a, Z, la1, a2, 0, 0, mvn, 0)
ee6c38d5
RH
625/* MOVE PAGE */
626 C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0)
aa31bf60
RH
627/* MOVE STRING */
628 C(0xb255, MVST, RRE, Z, r1_o, r2_o, 0, 0, mvst, 0)
3e7e5e0b
DH
629/* MOVE WITH OPTIONAL SPECIFICATION */
630 C(0xc800, MVCOS, SSF, MVCOS, la1, a2, 0, 0, mvcos, 0)
fdc0a747
AJ
631/* MOVE WITH OFFSET */
632 /* Really format SS_b, but we pack both lengths into one argument
633 for the helper call, so we might as well leave one 8-bit field. */
634 C(0xf100, MVO, SS_a, Z, la1, a2, 0, 0, mvo, 0)
01f8db88
AJ
635/* MOVE ZONES */
636 C(0xd300, MVZ, SS_a, Z, la1, a2, 0, 0, mvz, 0)
e1eaada9 637
d87aaf93
RH
638/* MULTIPLY */
639 C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0)
640 C(0x5c00, M, RX_a, Z, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
641 C(0xe35c, MFY, RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
83b00736
RH
642 C(0xb317, MEEBR, RRE, Z, e1, e2, new, e1, meeb, 0)
643 C(0xb31c, MDBR, RRE, Z, f1_o, f2_o, f1, 0, mdb, 0)
644 C(0xb34c, MXBR, RRE, Z, 0, x2_o, x1, 0, mxb, 0)
645 C(0xb30c, MDEBR, RRE, Z, f1_o, e2, f1, 0, mdeb, 0)
646 C(0xb307, MXDBR, RRE, Z, 0, f2_o, x1, 0, mxdb, 0)
647 C(0xed17, MEEB, RXE, Z, e1, m2_32u, new, e1, meeb, 0)
648 C(0xed1c, MDB, RXE, Z, f1_o, m2_64, f1, 0, mdb, 0)
649 C(0xed0c, MDEB, RXE, Z, f1_o, m2_32u, f1, 0, mdeb, 0)
650 C(0xed07, MXDB, RXE, Z, 0, m2_64, x1, 0, mxdb, 0)
d1c04a2b
RH
651/* MULTIPLY HALFWORD */
652 C(0x4c00, MH, RX_a, Z, r1_o, m2_16s, new, r1_32, mul, 0)
653 C(0xe37c, MHY, RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
654/* MULTIPLY HALFWORD IMMEDIATE */
655 C(0xa70c, MHI, RI_a, Z, r1_o, i2, new, r1_32, mul, 0)
656 C(0xa70d, MGHI, RI_a, Z, r1_o, i2, r1, 0, mul, 0)
d87aaf93
RH
657/* MULTIPLY LOGICAL */
658 C(0xb996, MLR, RRE, Z, r1p1_32u, r2_32u, new, r1_D32, mul, 0)
659 C(0xe396, ML, RXY_a, Z, r1p1_32u, m2_32u, new, r1_D32, mul, 0)
1ac5889f
RH
660 C(0xb986, MLGR, RRE, Z, r1p1, r2_o, r1_P, 0, mul128, 0)
661 C(0xe386, MLG, RXY_a, Z, r1p1, m2_64, r1_P, 0, mul128, 0)
d1c04a2b
RH
662/* MULTIPLY SINGLE */
663 C(0xb252, MSR, RRE, Z, r1_o, r2_o, new, r1_32, mul, 0)
664 C(0x7100, MS, RX_a, Z, r1_o, m2_32s, new, r1_32, mul, 0)
665 C(0xe351, MSY, RXY_a, LD, r1_o, m2_32s, new, r1_32, mul, 0)
666 C(0xb90c, MSGR, RRE, Z, r1_o, r2_o, r1, 0, mul, 0)
667 C(0xb91c, MSGFR, RRE, Z, r1_o, r2_32s, r1, 0, mul, 0)
668 C(0xe30c, MSG, RXY_a, Z, r1_o, m2_64, r1, 0, mul, 0)
669 C(0xe31c, MSGF, RXY_a, Z, r1_o, m2_32s, r1, 0, mul, 0)
670/* MULTIPLY SINGLE IMMEDIATE */
671 C(0xc201, MSFI, RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
672 C(0xc200, MSGFI, RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
673
722bfec3
RH
674/* MULTIPLY AND ADD */
675 C(0xb30e, MAEBR, RRD, Z, e1, e2, new, e1, maeb, 0)
676 C(0xb31e, MADBR, RRD, Z, f1_o, f2_o, f1, 0, madb, 0)
677 C(0xed0e, MAEB, RXF, Z, e1, m2_32u, new, e1, maeb, 0)
678 C(0xed1e, MADB, RXF, Z, f1_o, m2_64, f1, 0, madb, 0)
679/* MULTIPLY AND SUBTRACT */
680 C(0xb30f, MSEBR, RRD, Z, e1, e2, new, e1, mseb, 0)
681 C(0xb31f, MSDBR, RRD, Z, f1_o, f2_o, f1, 0, msdb, 0)
682 C(0xed0f, MSEB, RXF, Z, e1, m2_32u, new, e1, mseb, 0)
683 C(0xed1f, MSDB, RXF, Z, f1_o, m2_64, f1, 0, msdb, 0)
684
3bbfbd1f
RH
685/* OR */
686 C(0x1600, OR, RR_a, Z, r1, r2, new, r1_32, or, nz32)
687 C(0xb9f6, ORK, RRF_a, DO, r2, r3, new, r1_32, or, nz32)
688 C(0x5600, O, RX_a, Z, r1, m2_32s, new, r1_32, or, nz32)
689 C(0xe356, OY, RXY_a, LD, r1, m2_32s, new, r1_32, or, nz32)
690 C(0xb981, OGR, RRE, Z, r1, r2, r1, 0, or, nz64)
691 C(0xb9e6, OGRK, RRF_a, DO, r2, r3, r1, 0, or, nz64)
692 C(0xe381, OG, RXY_a, Z, r1, m2_64, r1, 0, or, nz64)
0a949039 693 C(0xd600, OC, SS_a, Z, la1, a2, 0, 0, oc, 0)
facfc864
RH
694/* OR IMMEDIATE */
695 D(0xc00c, OIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
696 D(0xc00d, OILF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
697 D(0xa508, OIHH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
698 D(0xa509, OIHL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
699 D(0xa50a, OILH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
700 D(0xa50b, OILL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
a05d2b6b
RH
701 C(0x9600, OI, SI, Z, m1_8u, i2_8u, new, m1_8, or, nz64)
702 C(0xeb56, OIY, SIY, LD, m1_8u, i2_8u, new, m1_8, or, nz64)
3bbfbd1f 703
76c57490
AJ
704/* PACK */
705 /* Really format SS_b, but we pack both lengths into one argument
706 for the helper call, so we might as well leave one 8-bit field. */
707 C(0xf200, PACK, SS_a, Z, la1, a2, 0, 0, pack, 0)
3bd3d6d3
AJ
708/* PACK ASCII */
709 C(0xe900, PKA, SS_f, E2, la1, a2, 0, 0, pka, 0)
4e256bef
AJ
710/* PACK UNICODE */
711 C(0xe100, PKU, SS_f, E2, la1, a2, 0, 0, pku, 0)
76c57490 712
e0def909
RH
713/* PREFETCH */
714 /* Implemented as nops of course. */
715 C(0xe336, PFD, RXY_b, GIE, 0, 0, 0, 0, 0, 0)
716 C(0xc602, PFDRL, RIL_c, GIE, 0, 0, 0, 0, 0, 0)
632c61a9
RH
717/* PERFORM PROCESSOR ASSIST */
718 /* Implemented as nop of course. */
719 C(0xb2e8, PPA, RRF_c, PPA, 0, 0, 0, 0, 0, 0)
e0def909 720
99b4f24b
RH
721/* POPULATION COUNT */
722 C(0xb9e1, POPCNT, RRE, PC, 0, r2_o, r1, 0, popcnt, nz64)
723
cbe24bfa
RH
724/* ROTATE LEFT SINGLE LOGICAL */
725 C(0xeb1d, RLL, RSY_a, Z, r3_o, sh32, new, r1_32, rll32, 0)
726 C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh64, r1, 0, rll64, 0)
727
2d6a8698
RH
728/* ROTATE THEN INSERT SELECTED BITS */
729 C(0xec55, RISBG, RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
375ee58b 730 C(0xec59, RISBGN, RIE_f, MIE, 0, r2, r1, 0, risbg, 0)
92892330
AJ
731 C(0xec5d, RISBHG, RIE_f, HW, 0, r2, r1, 0, risbg, 0)
732 C(0xec51, RISBLG, RIE_f, HW, 0, r2, r1, 0, risbg, 0)
d6c6372e
RH
733/* ROTATE_THEN <OP> SELECTED BITS */
734 C(0xec54, RNSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
735 C(0xec56, ROSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
736 C(0xec57, RXSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
2d6a8698 737
4600c994 738/* SEARCH STRING */
7591db78 739 C(0xb25e, SRST, RRE, Z, 0, 0, 0, 0, srst, 0)
be7acb58
RH
740/* SEARCH STRING UNICODE */
741 C(0xb9be, SRSTU, RRE, ETF3, 0, 0, 0, 0, srstu, 0)
4600c994 742
d62a4c97
RH
743/* SET ACCESS */
744 C(0xb24e, SAR, RRE, Z, 0, r2_o, 0, 0, sar, 0)
8612c935
RH
745/* SET ADDRESSING MODE */
746 D(0x010c, SAM24, E, Z, 0, 0, 0, 0, sam, 0, 0)
747 D(0x010d, SAM31, E, Z, 0, 0, 0, 0, sam, 0, 1)
748 D(0x010e, SAM64, E, Z, 0, 0, 0, 0, sam, 0, 3)
8379bfdb
RH
749/* SET FPC */
750 C(0xb384, SFPC, RRE, Z, 0, r1_o, 0, 0, sfpc, 0)
411edc22
RH
751/* SET FPC AND SIGNAL */
752 C(0xb385, SFASR, RRE, IEEEE_SIM, 0, r1_o, 0, 0, sfas, 0)
a12000b9
RH
753/* SET BFP ROUNDING MODE */
754 C(0xb299, SRNM, S, Z, 0, 0, 0, 0, srnm, 0)
755 C(0xb2b8, SRNMB, S, FPE, 0, 0, 0, 0, srnm, 0)
756/* SET DFP ROUNDING MODE */
9182886d 757 C(0xb2b9, SRNMT, S, DFPR, 0, 0, 0, 0, srnm, 0)
8379bfdb 758
cbe24bfa
RH
759/* SHIFT LEFT SINGLE */
760 D(0x8b00, SLA, RS_a, Z, r1, sh32, new, r1_32, sla, 0, 31)
761 D(0xebdd, SLAK, RSY_a, DO, r3, sh32, new, r1_32, sla, 0, 31)
762 D(0xeb0b, SLAG, RSY_a, Z, r3, sh64, r1, 0, sla, 0, 63)
763/* SHIFT LEFT SINGLE LOGICAL */
764 C(0x8900, SLL, RS_a, Z, r1_o, sh32, new, r1_32, sll, 0)
765 C(0xebdf, SLLK, RSY_a, DO, r3_o, sh32, new, r1_32, sll, 0)
766 C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh64, r1, 0, sll, 0)
767/* SHIFT RIGHT SINGLE */
768 C(0x8a00, SRA, RS_a, Z, r1_32s, sh32, new, r1_32, sra, s32)
769 C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh32, new, r1_32, sra, s32)
770 C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh64, r1, 0, sra, s64)
771/* SHIFT RIGHT SINGLE LOGICAL */
772 C(0x8800, SRL, RS_a, Z, r1_32u, sh32, new, r1_32, srl, 0)
773 C(0xebde, SRLK, RSY_a, DO, r3_32u, sh32, new, r1_32, srl, 0)
774 C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh64, r1, 0, srl, 0)
a79ba339
RH
775/* SHIFT LEFT DOUBLE */
776 D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 31)
777/* SHIFT LEFT DOUBLE LOGICAL */
778 C(0x8d00, SLDL, RS_a, Z, r1_D32, sh64, new, r1_D32, sll, 0)
779/* SHIFT RIGHT DOUBLE */
780 C(0x8e00, SRDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sra, s64)
781/* SHIFT RIGHT DOUBLE LOGICAL */
782 C(0x8c00, SRDL, RS_a, Z, r1_D32, sh64, new, r1_D32, srl, 0)
cbe24bfa 783
16d7b2a4
RH
784/* SQUARE ROOT */
785 C(0xb314, SQEBR, RRE, Z, 0, e2, new, e1, sqeb, 0)
786 C(0xb315, SQDBR, RRE, Z, 0, f2_o, f1, 0, sqdb, 0)
787 C(0xb316, SQXBR, RRE, Z, 0, x2_o, x1, 0, sqxb, 0)
788 C(0xed14, SQEB, RXE, Z, 0, m2_32u, new, e1, sqeb, 0)
789 C(0xed15, SQDB, RXE, Z, 0, m2_64, f1, 0, sqdb, 0)
790
2b280b97
RH
791/* STORE */
792 C(0x5000, ST, RX_a, Z, r1_o, a2, 0, 0, st32, 0)
793 C(0xe350, STY, RXY_a, LD, r1_o, a2, 0, 0, st32, 0)
794 C(0xe324, STG, RXY_a, Z, r1_o, a2, 0, 0, st64, 0)
00574261
RH
795 C(0x6000, STD, RX_a, Z, f1_o, a2, 0, 0, st64, 0)
796 C(0xed67, STDY, RXY_a, LD, f1_o, a2, 0, 0, st64, 0)
797 C(0x7000, STE, RX_a, Z, e1, a2, 0, 0, st32, 0)
798 C(0xed66, STEY, RXY_a, LD, e1, a2, 0, 0, st32, 0)
2b280b97
RH
799/* STORE RELATIVE LONG */
800 C(0xc40f, STRL, RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
801 C(0xc40b, STGRL, RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
802/* STORE CHARACTER */
803 C(0x4200, STC, RX_a, Z, r1_o, a2, 0, 0, st8, 0)
804 C(0xe372, STCY, RXY_a, LD, r1_o, a2, 0, 0, st8, 0)
a1f12d85
AJ
805/* STORE CHARACTER HIGH */
806 C(0xe3c3, STCH, RXY_a, HW, r1_sr32, a2, 0, 0, st8, 0)
2ae68059
RH
807/* STORE CHARACTERS UNDER MASK */
808 D(0xbe00, STCM, RS_b, Z, r1_o, a2, 0, 0, stcm, 0, 0)
809 D(0xeb2d, STCMY, RSY_b, LD, r1_o, a2, 0, 0, stcm, 0, 0)
92892330 810 D(0xeb2c, STCMH, RSY_b, Z, r1_o, a2, 0, 0, stcm, 0, 32)
2b280b97
RH
811/* STORE HALFWORD */
812 C(0x4000, STH, RX_a, Z, r1_o, a2, 0, 0, st16, 0)
813 C(0xe370, STHY, RXY_a, LD, r1_o, a2, 0, 0, st16, 0)
a1f12d85
AJ
814/* STORE HALFWORD HIGH */
815 C(0xe3c7, STHH, RXY_a, HW, r1_sr32, a2, 0, 0, st16, 0)
2b280b97
RH
816/* STORE HALFWORD RELATIVE LONG */
817 C(0xc407, STHRL, RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
a1f12d85
AJ
818/* STORE HIGH */
819 C(0xe3cb, STFH, RXY_a, HW, r1_sr32, a2, 0, 0, st32, 0)
b92fa334
RH
820/* STORE ON CONDITION */
821 D(0xebf3, STOC, RSY_b, LOC, 0, 0, 0, 0, soc, 0, 0)
822 D(0xebe3, STOCG, RSY_b, LOC, 0, 0, 0, 0, soc, 0, 1)
45aa9aa3
RH
823/* STORE HIGH ON CONDITION */
824 D(0xebe1, STOCFH, RSY_b, LOC2, 0, 0, 0, 0, soc, 0, 2)
e025e52a
RH
825/* STORE REVERSED */
826 C(0xe33f, STRVH, RXY_a, Z, la2, r1_16u, new, m1_16, rev16, 0)
827 C(0xe33e, STRV, RXY_a, Z, la2, r1_32u, new, m1_32, rev32, 0)
828 C(0xe32f, STRVG, RXY_a, Z, la2, r1_o, new, m1_64, rev64, 0)
2b280b97 829
5bf83628
RH
830/* STORE FACILITY LIST EXTENDED */
831 C(0xb2b0, STFLE, S, SFLE, 0, a2, 0, 0, stfle, 0)
ea20490f
RH
832/* STORE FPC */
833 C(0xb29c, STFPC, S, Z, 0, a2, new, m2_32, efpc, 0)
834
77f8d6c3
RH
835/* STORE MULTIPLE */
836 D(0x9000, STM, RS_a, Z, 0, a2, 0, 0, stm, 0, 4)
837 D(0xeb90, STMY, RSY_a, LD, 0, a2, 0, 0, stm, 0, 4)
838 D(0xeb24, STMG, RSY_a, Z, 0, a2, 0, 0, stm, 0, 8)
839/* STORE MULTIPLE HIGH */
840 C(0xeb26, STMH, RSY_a, Z, 0, a2, 0, 0, stmh, 0)
7df3e93a
RH
841/* STORE ACCESS MULTIPLE */
842 C(0x9b00, STAM, RS_a, Z, 0, a2, 0, 0, stam, 0)
843 C(0xeb9b, STAMY, RSY_a, LD, 0, a2, 0, 0, stam, 0)
c21b610f
AJ
844/* STORE PAIR TO QUADWORD */
845 C(0xe38e, STPQ, RXY_a, Z, 0, a2, r1_P, 0, stpq, 0)
77f8d6c3 846
ad044d09
RH
847/* SUBTRACT */
848 C(0x1b00, SR, RR_a, Z, r1, r2, new, r1_32, sub, subs32)
849 C(0xb9f9, SRK, RRF_a, DO, r2, r3, new, r1_32, sub, subs32)
850 C(0x5b00, S, RX_a, Z, r1, m2_32s, new, r1_32, sub, subs32)
851 C(0xe35b, SY, RXY_a, LD, r1, m2_32s, new, r1_32, sub, subs32)
852 C(0xb909, SGR, RRE, Z, r1, r2, r1, 0, sub, subs64)
853 C(0xb919, SGFR, RRE, Z, r1, r2_32s, r1, 0, sub, subs64)
854 C(0xb9e9, SGRK, RRF_a, DO, r2, r3, r1, 0, sub, subs64)
855 C(0xe309, SG, RXY_a, Z, r1, m2_64, r1, 0, sub, subs64)
856 C(0xe319, SGF, RXY_a, Z, r1, m2_32s, r1, 0, sub, subs64)
1a800a2d
RH
857 C(0xb30b, SEBR, RRE, Z, e1, e2, new, e1, seb, f32)
858 C(0xb31b, SDBR, RRE, Z, f1_o, f2_o, f1, 0, sdb, f64)
859 C(0xb34b, SXBR, RRE, Z, 0, x2_o, x1, 0, sxb, f128)
860 C(0xed0b, SEB, RXE, Z, e1, m2_32u, new, e1, seb, f32)
861 C(0xed1b, SDB, RXE, Z, f1_o, m2_64, f1, 0, sdb, f64)
3f4cb56a
RH
862/* SUBTRACT HALFWORD */
863 C(0x4b00, SH, RX_a, Z, r1, m2_16s, new, r1_32, sub, subs32)
864 C(0xe37b, SHY, RXY_a, LD, r1, m2_16s, new, r1_32, sub, subs32)
a1f12d85
AJ
865/* SUBTRACT HIGH */
866 C(0xb9c9, SHHHR, RRF_a, HW, r2_sr32, r3_sr32, new, r1_32h, sub, subs32)
867 C(0xb9d9, SHHLR, RRF_a, HW, r2_sr32, r3, new, r1_32h, sub, subs32)
ad044d09
RH
868/* SUBTRACT LOGICAL */
869 C(0x1f00, SLR, RR_a, Z, r1, r2, new, r1_32, sub, subu32)
870 C(0xb9fb, SLRK, RRF_a, DO, r2, r3, new, r1_32, sub, subu32)
871 C(0x5f00, SL, RX_a, Z, r1, m2_32u, new, r1_32, sub, subu32)
872 C(0xe35f, SLY, RXY_a, LD, r1, m2_32u, new, r1_32, sub, subu32)
873 C(0xb90b, SLGR, RRE, Z, r1, r2, r1, 0, sub, subu64)
874 C(0xb91b, SLGFR, RRE, Z, r1, r2_32u, r1, 0, sub, subu64)
875 C(0xb9eb, SLGRK, RRF_a, DO, r2, r3, r1, 0, sub, subu64)
876 C(0xe30b, SLG, RXY_a, Z, r1, m2_64, r1, 0, sub, subu64)
877 C(0xe31b, SLGF, RXY_a, Z, r1, m2_32u, r1, 0, sub, subu64)
a1f12d85
AJ
878/* SUBTRACT LOCICAL HIGH */
879 C(0xb9cb, SLHHHR, RRF_a, HW, r2_sr32, r3_sr32, new, r1_32h, sub, subu32)
880 C(0xb9db, SLHHLR, RRF_a, HW, r2_sr32, r3, new, r1_32h, sub, subu32)
ad044d09
RH
881/* SUBTRACT LOGICAL IMMEDIATE */
882 C(0xc205, SLFI, RIL_a, EI, r1, i2_32u, new, r1_32, sub, subu32)
883 C(0xc204, SLGFI, RIL_a, EI, r1, i2_32u, r1, 0, sub, subu64)
4e4bb438
RH
884/* SUBTRACT LOGICAL WITH BORROW */
885 C(0xb999, SLBR, RRE, Z, r1, r2, new, r1_32, subb, subb32)
886 C(0xb989, SLBGR, RRE, Z, r1, r2, r1, 0, subb, subb64)
887 C(0xe399, SLB, RXY_a, Z, r1, m2_32u, new, r1_32, subb, subb32)
888 C(0xe389, SLBG, RXY_a, Z, r1, m2_64, r1, 0, subb, subb64)
00d2dc19 889
b9836c1a
RH
890/* SUPERVISOR CALL */
891 C(0x0a00, SVC, I, Z, 0, 0, 0, 0, svc, 0)
892
0c0974d7
AJ
893/* TEST ADDRESSING MODE */
894 C(0x010b, TAM, E, Z, 0, 0, 0, 0, tam, 0)
895
6699adfc
AJ
896/* TEST AND SET */
897 C(0x9300, TS, S, Z, 0, a2, 0, 0, ts, 0)
898
31aa97d1
RH
899/* TEST DATA CLASS */
900 C(0xed10, TCEB, RXE, Z, e1, a2, 0, 0, tceb, 0)
901 C(0xed11, TCDB, RXE, Z, f1_o, a2, 0, 0, tcdb, 0)
902 C(0xed12, TCXB, RXE, Z, x1_o, a2, 0, 0, tcxb, 0)
903
5d4a655a
AJ
904/* TEST DECIMAL */
905 C(0xebc0, TP, RSL, E2, la1, 0, 0, 0, tp, 0)
906
00d2dc19
RH
907/* TEST UNDER MASK */
908 C(0x9100, TM, SI, Z, m1_8u, i2_8u, 0, 0, 0, tm32)
909 C(0xeb51, TMY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, tm32)
910 D(0xa702, TMHH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
911 D(0xa703, TMHL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
912 D(0xa700, TMLH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
913 D(0xa701, TMLL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
d9a39927 914
0a949039
RH
915/* TRANSLATE */
916 C(0xdc00, TR, SS_a, Z, la1, a2, 0, 0, tr, 0)
54f00775
AJ
917/* TRANSLATE AND TEST */
918 C(0xdd00, TRT, SS_a, Z, la1, a2, 0, 0, trt, 0)
b213c9f5
RH
919/* TRANSLATE AND TEST REVERSE */
920 C(0xd000, TRTR, SS_a, ETF3, la1, a2, 0, 0, trtr, 0)
3f4de675
AJ
921/* TRANSLATE EXTENDED */
922 C(0xb2a5, TRE, RRE, Z, 0, r2, r1_P, 0, tre, 0)
0a949039 923
4065ae76
AJ
924/* TRANSLATE ONE TO ONE */
925 C(0xb993, TROO, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
926/* TRANSLATE ONE TO TWO */
927 C(0xb992, TROT, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
928/* TRANSLATE TWO TO ONE */
929 C(0xb991, TRTO, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
930/* TRANSLATE TWO TO TWO */
931 C(0xb990, TRTT, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
932
0a949039
RH
933/* UNPACK */
934 /* Really format SS_b, but we pack both lengths into one argument
935 for the helper call, so we might as well leave one 8-bit field. */
936 C(0xf300, UNPK, SS_a, Z, la1, a2, 0, 0, unpk, 0)
1a35f08a
AJ
937/* UNPACK ASCII */
938 C(0xea00, UNPKA, SS_a, E2, la1, a2, 0, 0, unpka, 0)
15417787
AJ
939/* UNPACK UNICODE */
940 C(0xe200, UNPKU, SS_a, E2, la1, a2, 0, 0, unpku, 0)
0a949039 941
d9a39927 942#ifndef CONFIG_USER_ONLY
3d596f49 943/* COMPARE AND SWAP AND PURGE */
31a18b45 944 D(0xb250, CSP, RRE, Z, r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL)
b26de951 945 D(0xb98a, CSPG, RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEQ)
972e35b9 946/* DIAGNOSE (KVM hypercall) */
8df7eef3 947 C(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0)
8026417c
RH
948/* INSERT STORAGE KEY EXTENDED */
949 C(0xb229, ISKE, RRE, Z, 0, r2_o, new, r1_8, iske, 0)
be7f28de
DH
950/* INVALIDATE DAT TABLE ENTRY */
951 C(0xb98e, IPDE, RRF_b, Z, r1_o, r2_o, 0, 0, idte, 0)
cfef53e3
RH
952/* INVALIDATE PAGE TABLE ENTRY */
953 C(0xb221, IPTE, RRF_a, Z, r1_o, r2_o, 0, 0, ipte, 0)
504488b8
RH
954/* LOAD CONTROL */
955 C(0xb700, LCTL, RS_a, Z, 0, a2, 0, 0, lctl, 0)
3e398cf9 956 C(0xeb2f, LCTLG, RSY_a, Z, 0, a2, 0, 0, lctlg, 0)
190b2422
MB
957/* LOAD PROGRAM PARAMETER */
958 C(0xb280, LPP, S, LPP, 0, m2_64, 0, 0, lpp, 0)
8b5ff571
RH
959/* LOAD PSW */
960 C(0x8200, LPSW, S, Z, 0, a2, 0, 0, lpsw, 0)
7ab938d7
RH
961/* LOAD PSW EXTENDED */
962 C(0xb2b2, LPSWE, S, Z, 0, a2, 0, 0, lpswe, 0)
d8fe4a9c
RH
963/* LOAD REAL ADDRESS */
964 C(0xb100, LRA, RX_a, Z, 0, a2, r1, 0, lra, 0)
965 C(0xe313, LRAY, RXY_a, LD, 0, a2, r1, 0, lra, 0)
966 C(0xe303, LRAG, RXY_a, Z, 0, a2, r1, 0, lra, 0)
9c3fd85b
RH
967/* LOAD USING REAL ADDRESS */
968 C(0xb24b, LURA, RRE, Z, 0, r2, new, r1_32, lura, 0)
969 C(0xb905, LURAG, RRE, Z, 0, r2, r1, 0, lurag, 0)
97c3ab61
RH
970/* MOVE TO PRIMARY */
971 C(0xda00, MVCP, SS_d, Z, la1, a2, 0, 0, mvcp, 0)
972/* MOVE TO SECONDARY */
973 C(0xdb00, MVCS, SS_d, Z, la1, a2, 0, 0, mvcs, 0)
0568d8aa
RH
974/* PURGE TLB */
975 C(0xb20d, PTLB, S, Z, 0, 0, 0, 0, ptlb, 0)
5cc69c54
RH
976/* RESET REFERENCE BIT EXTENDED */
977 C(0xb22a, RRBE, RRE, Z, 0, r2_o, 0, 0, rrbe, 0)
dc458df9
RH
978/* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
979 C(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0)
14244b21
RH
980/* SET ADDRESS SPACE CONTROL FAST */
981 C(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0)
35289799
RH
982/* SET CLOCK */
983 /* ??? Not implemented - is it necessary? */
984 C(0xb204, SCK, S, Z, 0, 0, 0, 0, 0, 0)
dd3eb7b5
RH
985/* SET CLOCK COMPARATOR */
986 C(0xb206, SCKC, S, Z, 0, m2_64, 0, 0, sckc, 0)
c4f0a863
RH
987/* SET CPU TIMER */
988 C(0xb208, SPT, S, Z, 0, m2_64, 0, 0, spt, 0)
e805a0d3
RH
989/* SET PREFIX */
990 C(0xb210, SPX, S, Z, 0, m2_32u, 0, 0, spx, 0)
28d55556
RH
991/* SET PSW KEY FROM ADDRESS */
992 C(0xb20a, SPKA, S, Z, 0, a2, 0, 0, spka, 0)
2bbde27f
RH
993/* SET STORAGE KEY EXTENDED */
994 C(0xb22b, SSKE, RRF_c, Z, r1_o, r2_o, 0, 0, sske, 0)
7d30bb73
RH
995/* SET SYSTEM MASK */
996 C(0x8000, SSM, S, Z, 0, m2_8u, 0, 0, ssm, 0)
0c240015
RH
997/* SIGNAL PROCESSOR */
998 C(0xae00, SIGP, RS_a, Z, r3_o, a2, 0, 0, sigp, 0)
434c91a5
RH
999/* STORE CLOCK */
1000 C(0xb205, STCK, S, Z, la2, 0, new, m1_64, stck, 0)
f7c21140 1001 C(0xb27c, STCKF, S, SCF, la2, 0, new, m1_64, stck, 0)
39a5003c
RH
1002/* STORE CLOCK EXTENDED */
1003 C(0xb278, STCKE, S, Z, 0, a2, 0, 0, stcke, 0)
dd3eb7b5
RH
1004/* STORE CLOCK COMPARATOR */
1005 C(0xb207, STCKC, S, Z, la2, 0, new, m1_64, stckc, 0)
504488b8
RH
1006/* STORE CONTROL */
1007 C(0xb600, STCTL, RS_a, Z, 0, a2, 0, 0, stctl, 0)
3e398cf9 1008 C(0xeb25, STCTG, RSY_a, Z, 0, a2, 0, 0, stctg, 0)
411fea3d
RH
1009/* STORE CPU ADDRESS */
1010 C(0xb212, STAP, S, Z, la2, 0, new, m1_16, stap, 0)
71bd6669 1011/* STORE CPU ID */
076d4d39 1012 C(0xb202, STIDP, S, Z, la2, 0, new, 0, stidp, 0)
c4f0a863
RH
1013/* STORE CPU TIMER */
1014 C(0xb209, STPT, S, Z, la2, 0, new, m1_64, stpt, 0)
fc778b55
RH
1015/* STORE FACILITY LIST */
1016 C(0xb2b1, STFL, S, Z, 0, 0, 0, 0, stfl, 0)
e805a0d3
RH
1017/* STORE PREFIX */
1018 C(0xb211, STPX, S, Z, la2, 0, new, m1_32, stpx, 0)
d14b3e09
RH
1019/* STORE SYSTEM INFORMATION */
1020 C(0xb27d, STSI, S, Z, 0, a2, 0, 0, stsi, 0)
145cdb40
RH
1021/* STORE THEN AND SYSTEM MASK */
1022 C(0xac00, STNSM, SI, Z, la1, 0, 0, 0, stnosm, 0)
1023/* STORE THEN OR SYSTEM MASK */
1024 C(0xad00, STOSM, SI, Z, la1, 0, 0, 0, stnosm, 0)
204504e2
RH
1025/* STORE USING REAL ADDRESS */
1026 C(0xb246, STURA, RRE, Z, r1_o, r2_o, 0, 0, stura, 0)
9c3fd85b 1027 C(0xb925, STURG, RRE, Z, r1_o, r2_o, 0, 0, sturg, 0)
f79f1ca4
TH
1028/* TEST BLOCK */
1029 C(0xb22c, TB, RRE, Z, 0, r2_o, 0, 0, testblock, 0)
112bf079
RH
1030/* TEST PROTECTION */
1031 C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0)
2c423fc0 1032
ad8a4570
AG
1033/* CCW I/O Instructions */
1034 C(0xb276, XSCH, S, Z, 0, 0, 0, 0, xsch, 0)
1035 C(0xb230, CSCH, S, Z, 0, 0, 0, 0, csch, 0)
1036 C(0xb231, HSCH, S, Z, 0, 0, 0, 0, hsch, 0)
1037 C(0xb232, MSCH, S, Z, 0, insn, 0, 0, msch, 0)
1038 C(0xb23b, RCHP, S, Z, 0, 0, 0, 0, rchp, 0)
1039 C(0xb238, RSCH, S, Z, 0, 0, 0, 0, rsch, 0)
1040 C(0xb233, SSCH, S, Z, 0, insn, 0, 0, ssch, 0)
1041 C(0xb234, STSCH, S, Z, 0, insn, 0, 0, stsch, 0)
1042 C(0xb235, TSCH, S, Z, 0, insn, 0, 0, tsch, 0)
2c423fc0
RH
1043 /* ??? Not listed in PoO ninth edition, but there's a linux driver that
1044 uses it: "A CHSC subchannel is usually present on LPAR only." */
ad8a4570 1045 C(0xb25f, CHSC, RRE, Z, 0, insn, 0, 0, chsc, 0)
d9a39927 1046#endif /* CONFIG_USER_ONLY */
This page took 0.406563 seconds and 4 git commands to generate.