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