]> git.proxmox.com Git - mirror_qemu.git/blame - target/s390x/insn-data.def
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging
[mirror_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)
82d17933
DH
6 * E(OPC, NAME, FMT, FAC, I1, I2, P, W, OP, CC, DATA, FLAGS)
7 * F(OPC, NAME, FMT, FAC, I1, I2, P, W, OP, CC, FLAGS)
13f67dd5
AG
8 *
9 * OPC = (op << 8) | op2 where op is the major, op2 the minor opcode
10 * NAME = name of the opcode, used internally
11 * FMT = format of the opcode (defined in insn-format.def)
12 * FAC = facility the opcode is available in (defined in DisasFacility)
13 * I1 = func in1_xx fills o->in1
14 * I2 = func in2_xx fills o->in2
15 * P = func prep_xx initializes o->*out*
16 * W = func wout_xx writes o->*out* somewhere
17 * OP = func op_xx does the bulk of the operation
18 * CC = func cout_xx defines how cc should get set
19 * DATA = immediate argument to op_xx function
82d17933 20 * FLAGS = categorize the type of instruction (e.g. for advanced checks)
13f67dd5
AG
21 *
22 * The helpers get called in order: I1, I2, P, OP, W, CC
23 */
24
ad044d09
RH
25/* ADD */
26 C(0x1a00, AR, RR_a, Z, r1, r2, new, r1_32, add, adds32)
27 C(0xb9f8, ARK, RRF_a, DO, r2, r3, new, r1_32, add, adds32)
28 C(0x5a00, A, RX_a, Z, r1, m2_32s, new, r1_32, add, adds32)
29 C(0xe35a, AY, RXY_a, LD, r1, m2_32s, new, r1_32, add, adds32)
30 C(0xb908, AGR, RRE, Z, r1, r2, r1, 0, add, adds64)
31 C(0xb918, AGFR, RRE, Z, r1, r2_32s, r1, 0, add, adds64)
32 C(0xb9e8, AGRK, RRF_a, DO, r2, r3, r1, 0, add, adds64)
33 C(0xe308, AG, RXY_a, Z, r1, m2_64, r1, 0, add, adds64)
34 C(0xe318, AGF, RXY_a, Z, r1, m2_32s, r1, 0, add, adds64)
ca5f31a0 35 F(0xb30a, AEBR, RRE, Z, e1, e2, new, e1, aeb, f32, IF_BFP)
80a7b759
DH
36 F(0xb31a, ADBR, RRE, Z, f1, f2, new, f1, adb, f64, IF_BFP)
37 F(0xb34a, AXBR, RRE, Z, x2h, x2l, x1, x1, axb, f128, IF_BFP)
ca5f31a0 38 F(0xed0a, AEB, RXE, Z, e1, m2_32u, new, e1, aeb, f32, IF_BFP)
80a7b759 39 F(0xed1a, ADB, RXE, Z, f1, m2_64, new, f1, adb, f64, IF_BFP)
a1f12d85
AJ
40/* ADD HIGH */
41 C(0xb9c8, AHHHR, RRF_a, HW, r2_sr32, r3_sr32, new, r1_32h, add, adds32)
42 C(0xb9d8, AHHLR, RRF_a, HW, r2_sr32, r3, new, r1_32h, add, adds32)
ad044d09
RH
43/* ADD IMMEDIATE */
44 C(0xc209, AFI, RIL_a, EI, r1, i2, new, r1_32, add, adds32)
0e9383bc 45 D(0xeb6a, ASI, SIY, GIE, la1, i2, new, 0, asi, adds32, MO_TESL)
ad044d09
RH
46 C(0xecd8, AHIK, RIE_d, DO, r3, i2, new, r1_32, add, adds32)
47 C(0xc208, AGFI, RIL_a, EI, r1, i2, r1, 0, add, adds64)
0e9383bc 48 D(0xeb7a, AGSI, SIY, GIE, la1, i2, new, 0, asi, adds64, MO_TEQ)
ad044d09 49 C(0xecd9, AGHIK, RIE_d, DO, r3, i2, r1, 0, add, adds64)
a1f12d85
AJ
50/* ADD IMMEDIATE HIGH */
51 C(0xcc08, AIH, RIL_a, HW, r1_sr32, i2, new, r1_32h, add, adds32)
d82287de
RH
52/* ADD HALFWORD */
53 C(0x4a00, AH, RX_a, Z, r1, m2_16s, new, r1_32, add, adds32)
54 C(0xe37a, AHY, RXY_a, LD, r1, m2_16s, new, r1_32, add, adds32)
55/* ADD HALFWORD IMMEDIATE */
56 C(0xa70a, AHI, RI_a, Z, r1, i2, new, r1_32, add, adds32)
57 C(0xa70b, AGHI, RI_a, Z, r1, i2, r1, 0, add, adds64)
58
ad044d09
RH
59/* ADD LOGICAL */
60 C(0x1e00, ALR, RR_a, Z, r1, r2, new, r1_32, add, addu32)
61 C(0xb9fa, ALRK, RRF_a, DO, r2, r3, new, r1_32, add, addu32)
62 C(0x5e00, AL, RX_a, Z, r1, m2_32u, new, r1_32, add, addu32)
63 C(0xe35e, ALY, RXY_a, LD, r1, m2_32u, new, r1_32, add, addu32)
64 C(0xb90a, ALGR, RRE, Z, r1, r2, r1, 0, add, addu64)
65 C(0xb91a, ALGFR, RRE, Z, r1, r2_32u, r1, 0, add, addu64)
66 C(0xb9ea, ALGRK, RRF_a, DO, r2, r3, r1, 0, add, addu64)
67 C(0xe30a, ALG, RXY_a, Z, r1, m2_64, r1, 0, add, addu64)
68 C(0xe31a, ALGF, RXY_a, Z, r1, m2_32u, r1, 0, add, addu64)
a1f12d85
AJ
69/* ADD LOGICAL HIGH */
70 C(0xb9ca, ALHHHR, RRF_a, HW, r2_sr32, r3_sr32, new, r1_32h, add, addu32)
71 C(0xb9da, ALHHLR, RRF_a, HW, r2_sr32, r3, new, r1_32h, add, addu32)
ad044d09
RH
72/* ADD LOGICAL IMMEDIATE */
73 C(0xc20b, ALFI, RIL_a, EI, r1, i2_32u, new, r1_32, add, addu32)
74 C(0xc20a, ALGFI, RIL_a, EI, r1, i2_32u, r1, 0, add, addu64)
e272b3ac 75/* ADD LOGICAL WITH SIGNED IMMEDIATE */
0e9383bc 76 D(0xeb6e, ALSI, SIY, GIE, la1, i2, new, 0, asi, addu32, MO_TEUL)
e272b3ac 77 C(0xecda, ALHSIK, RIE_d, DO, r3, i2, new, r1_32, add, addu32)
0e9383bc 78 D(0xeb7e, ALGSI, SIY, GIE, la1, i2, new, 0, asi, addu64, MO_TEQ)
e272b3ac 79 C(0xecdb, ALGHSIK, RIE_d, DO, r3, i2, r1, 0, add, addu64)
a1f12d85
AJ
80/* ADD LOGICAL WITH SIGNED IMMEDIATE HIGH */
81 C(0xcc0a, ALSIH, RIL_a, HW, r1_sr32, i2, new, r1_32h, add, addu32)
82 C(0xcc0b, ALSIHN, RIL_a, HW, r1_sr32, i2, new, r1_32h, add, 0)
4e4bb438
RH
83/* ADD LOGICAL WITH CARRY */
84 C(0xb998, ALCR, RRE, Z, r1, r2, new, r1_32, addc, addc32)
85 C(0xb988, ALCGR, RRE, Z, r1, r2, r1, 0, addc, addc64)
86 C(0xe398, ALC, RXY_a, Z, r1, m2_32u, new, r1_32, addc, addc32)
87 C(0xe388, ALCG, RXY_a, Z, r1, m2_64, r1, 0, addc, addc64)
ad044d09 88
3bbfbd1f
RH
89/* AND */
90 C(0x1400, NR, RR_a, Z, r1, r2, new, r1_32, and, nz32)
91 C(0xb9f4, NRK, RRF_a, DO, r2, r3, new, r1_32, and, nz32)
92 C(0x5400, N, RX_a, Z, r1, m2_32s, new, r1_32, and, nz32)
93 C(0xe354, NY, RXY_a, LD, r1, m2_32s, new, r1_32, and, nz32)
94 C(0xb980, NGR, RRE, Z, r1, r2, r1, 0, and, nz64)
95 C(0xb9e4, NGRK, RRF_a, DO, r2, r3, r1, 0, and, nz64)
96 C(0xe380, NG, RXY_a, Z, r1, m2_64, r1, 0, and, nz64)
0a949039 97 C(0xd400, NC, SS_a, Z, la1, a2, 0, 0, nc, 0)
facfc864
RH
98/* AND IMMEDIATE */
99 D(0xc00a, NIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, andi, 0, 0x2020)
100 D(0xc00b, NILF, RIL_a, EI, r1_o, i2_32u, r1, 0, andi, 0, 0x2000)
101 D(0xa504, NIHH, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1030)
102 D(0xa505, NIHL, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1020)
103 D(0xa506, NILH, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1010)
104 D(0xa507, NILL, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1000)
f400be18
DH
105 D(0x9400, NI, SI, Z, la1, i2_8u, new, 0, ni, nz64, MO_UB)
106 D(0xeb54, NIY, SIY, LD, la1, i2_8u, new, 0, ni, nz64, MO_UB)
3bbfbd1f 107
e1db291b
PZ
108/* BRANCH AND LINK */
109 C(0x0500, BALR, RR_a, Z, 0, r2_nz, r1, 0, bal, 0)
110 C(0x4500, BAL, RX_a, Z, 0, a2, r1, 0, bal, 0)
8ac33cdb
RH
111/* BRANCH AND SAVE */
112 C(0x0d00, BASR, RR_a, Z, 0, r2_nz, r1, 0, bas, 0)
113 C(0x4d00, BAS, RX_a, Z, 0, a2, r1, 0, bas, 0)
114/* BRANCH RELATIVE AND SAVE */
115 C(0xa705, BRAS, RI_b, Z, 0, 0, r1, 0, basi, 0)
116 C(0xc005, BRASL, RIL_b, Z, 0, 0, r1, 0, basi, 0)
7233f2ed
RH
117/* BRANCH ON CONDITION */
118 C(0x0700, BCR, RR_b, Z, 0, r2_nz, 0, 0, bc, 0)
119 C(0x4700, BC, RX_b, Z, 0, a2, 0, 0, bc, 0)
120/* BRANCH RELATIVE ON CONDITION */
121 C(0xa704, BRC, RI_c, Z, 0, 0, 0, 0, bc, 0)
122 C(0xc004, BRCL, RIL_c, Z, 0, 0, 0, 0, bc, 0)
c61aad69
RH
123/* BRANCH ON COUNT */
124 C(0x0600, BCTR, RR_a, Z, 0, r2_nz, 0, 0, bct32, 0)
125 C(0xb946, BCTGR, RRE, Z, 0, r2_nz, 0, 0, bct64, 0)
126 C(0x4600, BCT, RX_a, Z, 0, a2, 0, 0, bct32, 0)
127 C(0xe346, BCTG, RXY_a, Z, 0, a2, 0, 0, bct64, 0)
128/* BRANCH RELATIVE ON COUNT */
129 C(0xa706, BRCT, RI_b, Z, 0, 0, 0, 0, bct32, 0)
130 C(0xa707, BRCTG, RI_b, Z, 0, 0, 0, 0, bct64, 0)
a1f12d85
AJ
131/* BRANCH RELATIVE ON COUNT HIGH */
132 C(0xcc06, BRCTH, RIL_b, HW, 0, 0, 0, 0, bcth, 0)
2cf5e350
RH
133/* BRANCH ON INDEX */
134 D(0x8600, BXH, RS_a, Z, 0, a2, 0, 0, bx32, 0, 0)
135 D(0x8700, BXLE, RS_a, Z, 0, a2, 0, 0, bx32, 0, 1)
136 D(0xeb44, BXHG, RSY_a, Z, 0, a2, 0, 0, bx64, 0, 0)
137 D(0xeb45, BXLEG, RSY_a, Z, 0, a2, 0, 0, bx64, 0, 1)
138/* BRANCH RELATIVE ON INDEX */
139 D(0x8400, BRXH, RSI, Z, 0, 0, 0, 0, bx32, 0, 0)
140 D(0x8500, BRXLE, RSI, Z, 0, 0, 0, 0, bx32, 0, 1)
141 D(0xec44, BRXHG, RIE_e, Z, 0, 0, 0, 0, bx64, 0, 0)
142 D(0xec45, BRXHLE, RIE_e, Z, 0, 0, 0, 0, bx64, 0, 1)
6a68acd5
RH
143/* BRANCH PREDICTION PRELOAD */
144 /* ??? Format is SMI, but implemented as NOP, so we need no fields. */
145 C(0xc700, BPP, E, EH, 0, 0, 0, 0, 0, 0)
146/* BRANCH PREDICTION RELATIVE PRELOAD */
147 /* ??? Format is MII, but implemented as NOP, so we need no fields. */
148 C(0xc500, BPRP, E, EH, 0, 0, 0, 0, 0, 0)
149/* NEXT INSTRUCTION ACCESS INTENT */
150 /* ??? Format is IE, but implemented as NOP, so we need no fields. */
151 C(0xb2fa, NIAI, E, EH, 0, 0, 0, 0, 0, 0)
8ac33cdb 152
374724f9
RH
153/* CHECKSUM */
154 C(0xb241, CKSM, RRE, Z, r1_o, ra2, new, r1_32, cksm, 0)
155
2db014b5 156/* COPY SIGN */
80a7b759 157 F(0xb372, CPSDR, RRF_b, FPSSH, f3, f2, new, f1, cps, 0, IF_AFP1 | IF_AFP2 | IF_AFP3)
2db014b5 158
a7e836d5
RH
159/* COMPARE */
160 C(0x1900, CR, RR_a, Z, r1_o, r2_o, 0, 0, 0, cmps32)
161 C(0x5900, C, RX_a, Z, r1_o, m2_32s, 0, 0, 0, cmps32)
162 C(0xe359, CY, RXY_a, LD, r1_o, m2_32s, 0, 0, 0, cmps32)
163 C(0xb920, CGR, RRE, Z, r1_o, r2_o, 0, 0, 0, cmps64)
164 C(0xb930, CGFR, RRE, Z, r1_o, r2_32s, 0, 0, 0, cmps64)
165 C(0xe320, CG, RXY_a, Z, r1_o, m2_64, 0, 0, 0, cmps64)
166 C(0xe330, CGF, RXY_a, Z, r1_o, m2_32s, 0, 0, 0, cmps64)
ca5f31a0 167 F(0xb309, CEBR, RRE, Z, e1, e2, 0, 0, ceb, 0, IF_BFP)
80a7b759
DH
168 F(0xb319, CDBR, RRE, Z, f1, f2, 0, 0, cdb, 0, IF_BFP)
169 F(0xb349, CXBR, RRE, Z, x2h, x2l, x1, 0, cxb, 0, IF_BFP)
ca5f31a0 170 F(0xed09, CEB, RXE, Z, e1, m2_32u, 0, 0, ceb, 0, IF_BFP)
80a7b759 171 F(0xed19, CDB, RXE, Z, f1, m2_64, 0, 0, cdb, 0, IF_BFP)
9c8be598 172/* COMPARE AND SIGNAL */
ca5f31a0 173 F(0xb308, KEBR, RRE, Z, e1, e2, 0, 0, keb, 0, IF_BFP)
80a7b759
DH
174 F(0xb318, KDBR, RRE, Z, f1, f2, 0, 0, kdb, 0, IF_BFP)
175 F(0xb348, KXBR, RRE, Z, x2h, x2l, x1, 0, kxb, 0, IF_BFP)
ca5f31a0 176 F(0xed08, KEB, RXE, Z, e1, m2_32u, 0, 0, keb, 0, IF_BFP)
80a7b759 177 F(0xed18, KDB, RXE, Z, f1, m2_64, 0, 0, kdb, 0, IF_BFP)
a7e836d5
RH
178/* COMPARE IMMEDIATE */
179 C(0xc20d, CFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps32)
180 C(0xc20c, CGFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps64)
403e217f
RH
181/* COMPARE RELATIVE LONG */
182 C(0xc60d, CRL, RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps32)
183 C(0xc608, CGRL, RIL_b, GIE, r1, mri2_64, 0, 0, 0, cmps64)
184 C(0xc60c, CGFRL, RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps64)
a7e836d5
RH
185/* COMPARE HALFWORD */
186 C(0x4900, CH, RX_a, Z, r1_o, m2_16s, 0, 0, 0, cmps32)
187 C(0xe379, CHY, RXY_a, LD, r1_o, m2_16s, 0, 0, 0, cmps32)
188 C(0xe334, CGH, RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
189/* COMPARE HALFWORD IMMEDIATE */
190 C(0xa70e, CHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps32)
191 C(0xa70f, CGHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps64)
192 C(0xe554, CHHSI, SIL, GIE, m1_16s, i2, 0, 0, 0, cmps64)
193 C(0xe55c, CHSI, SIL, GIE, m1_32s, i2, 0, 0, 0, cmps64)
194 C(0xe558, CGHSI, SIL, GIE, m1_64, i2, 0, 0, 0, cmps64)
195/* COMPARE HALFWORD RELATIVE LONG */
74266b4a
AJ
196 C(0xc605, CHRL, RIL_b, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
197 C(0xc604, CGHRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
a1f12d85
AJ
198/* COMPARE HIGH */
199 C(0xb9cd, CHHR, RRE, HW, r1_sr32, r2_sr32, 0, 0, 0, cmps32)
200 C(0xb9dd, CHLR, RRE, HW, r1_sr32, r2_o, 0, 0, 0, cmps32)
201 C(0xe3cd, CHF, RXY_a, HW, r1_sr32, m2_32s, 0, 0, 0, cmps32)
202/* COMPARE IMMEDIATE HIGH */
203 C(0xcc0d, CIH, RIL_a, HW, r1_sr32, i2, 0, 0, 0, cmps32)
a7e836d5
RH
204
205/* COMPARE LOGICAL */
206 C(0x1500, CLR, RR_a, Z, r1, r2, 0, 0, 0, cmpu32)
207 C(0x5500, CL, RX_a, Z, r1, m2_32s, 0, 0, 0, cmpu32)
208 C(0xe355, CLY, RXY_a, LD, r1, m2_32s, 0, 0, 0, cmpu32)
209 C(0xb921, CLGR, RRE, Z, r1, r2, 0, 0, 0, cmpu64)
210 C(0xb931, CLGFR, RRE, Z, r1, r2_32u, 0, 0, 0, cmpu64)
211 C(0xe321, CLG, RXY_a, Z, r1, m2_64, 0, 0, 0, cmpu64)
212 C(0xe331, CLGF, RXY_a, Z, r1, m2_32u, 0, 0, 0, cmpu64)
4f7403d5 213 C(0xd500, CLC, SS_a, Z, la1, a2, 0, 0, clc, 0)
a1f12d85
AJ
214/* COMPARE LOGICAL HIGH */
215 C(0xb9cf, CLHHR, RRE, HW, r1_sr32, r2_sr32, 0, 0, 0, cmpu32)
216 C(0xb9df, CLHLR, RRE, HW, r1_sr32, r2_o, 0, 0, 0, cmpu32)
217 C(0xe3cf, CLHF, RXY_a, HW, r1_sr32, m2_32s, 0, 0, 0, cmpu32)
a7e836d5
RH
218/* COMPARE LOGICAL IMMEDIATE */
219 C(0xc20f, CLFI, RIL_a, EI, r1, i2, 0, 0, 0, cmpu32)
220 C(0xc20e, CLGFI, RIL_a, EI, r1, i2_32u, 0, 0, 0, cmpu64)
221 C(0x9500, CLI, SI, Z, m1_8u, i2_8u, 0, 0, 0, cmpu64)
222 C(0xeb55, CLIY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, cmpu64)
223 C(0xe555, CLHHSI, SIL, GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
224 C(0xe55d, CLFHSI, SIL, GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
225 C(0xe559, CLGHSI, SIL, GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
a1f12d85
AJ
226/* COMPARE LOGICAL IMMEDIATE HIGH */
227 C(0xcc0f, CLIH, RIL_a, HW, r1_sr32, i2, 0, 0, 0, cmpu32)
a7e836d5
RH
228/* COMPARE LOGICAL RELATIVE LONG */
229 C(0xc60f, CLRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
230 C(0xc60a, CLGRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
231 C(0xc60e, CLGFRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
232 C(0xc607, CLHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
233 C(0xc606, CLGHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
5c2b48a8
AJ
234/* COMPARE LOGICAL LONG */
235 C(0x0f00, CLCL, RR_a, Z, 0, 0, 0, 0, clcl, 0)
eb66e6a9
RH
236/* COMPARE LOGICAL LONG EXTENDED */
237 C(0xa900, CLCLE, RS_a, Z, 0, a2, 0, 0, clcle, 0)
31006af3
AJ
238/* COMPARE LOGICAL LONG UNICODE */
239 C(0xeb8f, CLCLU, RSY_a, E2, 0, a2, 0, 0, clclu, 0)
32a44d58
RH
240/* COMPARE LOGICAL CHARACTERS UNDER MASK */
241 C(0xbd00, CLM, RS_b, Z, r1_o, a2, 0, 0, clm, 0)
242 C(0xeb21, CLMY, RSY_b, LD, r1_o, a2, 0, 0, clm, 0)
243 C(0xeb20, CLMH, RSY_b, Z, r1_sr32, a2, 0, 0, clm, 0)
aa31bf60
RH
244/* COMPARE LOGICAL STRING */
245 C(0xb25d, CLST, RRE, Z, r1_o, r2_o, 0, 0, clst, 0)
a7e836d5 246
5550359f
RH
247/* COMPARE AND BRANCH */
248 D(0xecf6, CRB, RRS, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
249 D(0xece4, CGRB, RRS, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
250 D(0xec76, CRJ, RIE_b, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
251 D(0xec64, CGRJ, RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
252 D(0xecfe, CIB, RIS, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
253 D(0xecfc, CGIB, RIS, GIE, r1_o, i2, 0, 0, cj, 0, 0)
254 D(0xec7e, CIJ, RIE_c, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
255 D(0xec7c, CGIJ, RIE_c, GIE, r1_o, i2, 0, 0, cj, 0, 0)
256/* COMPARE LOGICAL AND BRANCH */
257 D(0xecf7, CLRB, RRS, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
258 D(0xece5, CLGRB, RRS, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
259 D(0xec77, CLRJ, RIE_b, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
260 D(0xec65, CLGRJ, RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
261 D(0xecff, CLIB, RIS, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
262 D(0xecfd, CLGIB, RIS, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
263 D(0xec7f, CLIJ, RIE_c, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
264 D(0xec7d, CLGIJ, RIE_c, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
265
f3de39c4 266/* COMPARE AND SWAP */
303a9ab8
RH
267 D(0xba00, CS, RS_a, Z, r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
268 D(0xeb14, CSY, RSY_a, LD, r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
269 D(0xeb30, CSG, RSY_a, Z, r3_o, r1_o, new, r1, cs, 0, MO_TEQ)
f3de39c4 270/* COMPARE DOUBLE AND SWAP */
303a9ab8
RH
271 D(0xbb00, CDS, RS_a, Z, r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
272 D(0xeb31, CDSY, RSY_a, LD, r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
b7886de3 273 C(0xeb3e, CDSG, RSY_a, Z, 0, 0, 0, 0, cdsg, 0)
c67ba303
RH
274/* COMPARE AND SWAP AND STORE */
275 C(0xc802, CSST, SSF, CASS, la1, a2, 0, 0, csst, 0)
f3de39c4 276
1c268751
RH
277/* COMPARE AND TRAP */
278 D(0xb972, CRT, RRF_c, GIE, r1_32s, r2_32s, 0, 0, ct, 0, 0)
279 D(0xb960, CGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 0)
280 D(0xec72, CIT, RIE_a, GIE, r1_32s, i2, 0, 0, ct, 0, 0)
281 D(0xec70, CGIT, RIE_a, GIE, r1_o, i2, 0, 0, ct, 0, 0)
282/* COMPARE LOGICAL AND TRAP */
283 D(0xb973, CLRT, RRF_c, GIE, r1_32u, r2_32u, 0, 0, ct, 0, 1)
284 D(0xb961, CLGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
375ee58b
AJ
285 D(0xeb23, CLT, RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
286 D(0xeb2b, CLGT, RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
1c268751 287 D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
1dedb9b7 288 D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1)
1c268751 289
c49daa51
RH
290/* CONVERT TO DECIMAL */
291 C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
292 C(0xe326, CVDY, RXY_a, LD, r1_o, a2, 0, 0, cvd, 0)
68c8bd93 293/* CONVERT TO FIXED */
ca5f31a0 294 F(0xb398, CFEBR, RRF_e, Z, 0, e2, new, r1_32, cfeb, 0, IF_BFP)
80a7b759
DH
295 F(0xb399, CFDBR, RRF_e, Z, 0, f2, new, r1_32, cfdb, 0, IF_BFP)
296 F(0xb39a, CFXBR, RRF_e, Z, x2h, x2l, new, r1_32, cfxb, 0, IF_BFP)
ca5f31a0 297 F(0xb3a8, CGEBR, RRF_e, Z, 0, e2, r1, 0, cgeb, 0, IF_BFP)
80a7b759
DH
298 F(0xb3a9, CGDBR, RRF_e, Z, 0, f2, r1, 0, cgdb, 0, IF_BFP)
299 F(0xb3aa, CGXBR, RRF_e, Z, x2h, x2l, r1, 0, cgxb, 0, IF_BFP)
683bb9a8 300/* CONVERT FROM FIXED */
ca5f31a0 301 F(0xb394, CEFBR, RRF_e, Z, 0, r2_32s, new, e1, cegb, 0, IF_BFP)
80a7b759
DH
302 F(0xb395, CDFBR, RRF_e, Z, 0, r2_32s, new, f1, cdgb, 0, IF_BFP)
303 F(0xb396, CXFBR, RRF_e, Z, 0, r2_32s, new_P, x1, cxgb, 0, IF_BFP)
ca5f31a0 304 F(0xb3a4, CEGBR, RRF_e, Z, 0, r2_o, new, e1, cegb, 0, IF_BFP)
80a7b759
DH
305 F(0xb3a5, CDGBR, RRF_e, Z, 0, r2_o, new, f1, cdgb, 0, IF_BFP)
306 F(0xb3a6, CXGBR, RRF_e, Z, 0, r2_o, new_P, x1, cxgb, 0, IF_BFP)
6ac1b45f 307/* CONVERT TO LOGICAL */
ca5f31a0 308 F(0xb39c, CLFEBR, RRF_e, FPE, 0, e2, new, r1_32, clfeb, 0, IF_BFP)
80a7b759
DH
309 F(0xb39d, CLFDBR, RRF_e, FPE, 0, f2, new, r1_32, clfdb, 0, IF_BFP)
310 F(0xb39e, CLFXBR, RRF_e, FPE, x2h, x2l, new, r1_32, clfxb, 0, IF_BFP)
ca5f31a0 311 F(0xb3ac, CLGEBR, RRF_e, FPE, 0, e2, r1, 0, clgeb, 0, IF_BFP)
80a7b759
DH
312 F(0xb3ad, CLGDBR, RRF_e, FPE, 0, f2, r1, 0, clgdb, 0, IF_BFP)
313 F(0xb3ae, CLGXBR, RRF_e, FPE, x2h, x2l, r1, 0, clgxb, 0, IF_BFP)
2112bf1b 314/* CONVERT FROM LOGICAL */
ca5f31a0 315 F(0xb390, CELFBR, RRF_e, FPE, 0, r2_32u, new, e1, celgb, 0, IF_BFP)
80a7b759
DH
316 F(0xb391, CDLFBR, RRF_e, FPE, 0, r2_32u, new, f1, cdlgb, 0, IF_BFP)
317 F(0xb392, CXLFBR, RRF_e, FPE, 0, r2_32u, new_P, x1, cxlgb, 0, IF_BFP)
ca5f31a0 318 F(0xb3a0, CELGBR, RRF_e, FPE, 0, r2_o, new, e1, celgb, 0, IF_BFP)
80a7b759
DH
319 F(0xb3a1, CDLGBR, RRF_e, FPE, 0, r2_o, new, f1, cdlgb, 0, IF_BFP)
320 F(0xb3a2, CXLGBR, RRF_e, FPE, 0, r2_o, new_P, x1, cxlgb, 0, IF_BFP)
c49daa51 321
941ef3db
RH
322/* CONVERT UTF-8 TO UTF-16 */
323 D(0xb2a7, CU12, RRF_c, Z, 0, 0, 0, 0, cuXX, 0, 12)
324/* CONVERT UTF-8 TO UTF-32 */
325 D(0xb9b0, CU14, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 14)
326/* CONVERT UTF-16 to UTF-8 */
327 D(0xb2a6, CU21, RRF_c, Z, 0, 0, 0, 0, cuXX, 0, 21)
328/* CONVERT UTF-16 to UTF-32 */
329 D(0xb9b1, CU24, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 24)
330/* CONVERT UTF-32 to UTF-8 */
331 D(0xb9b2, CU41, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 41)
332/* CONVERT UTF-32 to UTF-16 */
333 D(0xb9b3, CU42, RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 42)
334
891452e5
RH
335/* DIVIDE */
336 C(0x1d00, DR, RR_a, Z, r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
337 C(0x5d00, D, RX_a, Z, r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
ca5f31a0 338 F(0xb30d, DEBR, RRE, Z, e1, e2, new, e1, deb, 0, IF_BFP)
80a7b759
DH
339 F(0xb31d, DDBR, RRE, Z, f1, f2, new, f1, ddb, 0, IF_BFP)
340 F(0xb34d, DXBR, RRE, Z, x2h, x2l, x1, x1, dxb, 0, IF_BFP)
ca5f31a0 341 F(0xed0d, DEB, RXE, Z, e1, m2_32u, new, e1, deb, 0, IF_BFP)
80a7b759 342 F(0xed1d, DDB, RXE, Z, f1, m2_64, new, f1, ddb, 0, IF_BFP)
891452e5
RH
343/* DIVIDE LOGICAL */
344 C(0xb997, DLR, RRE, Z, r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
345 C(0xe397, DL, RXY_a, Z, r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
346 C(0xb987, DLGR, RRE, Z, 0, r2_o, r1_P, 0, divu64, 0)
347 C(0xe387, DLG, RXY_a, Z, 0, m2_64, r1_P, 0, divu64, 0)
348/* DIVIDE SINGLE */
349 C(0xb90d, DSGR, RRE, Z, r1p1, r2, r1_P, 0, divs64, 0)
350 C(0xb91d, DSGFR, RRE, Z, r1p1, r2_32s, r1_P, 0, divs64, 0)
351 C(0xe30d, DSG, RXY_a, Z, r1p1, m2_64, r1_P, 0, divs64, 0)
352 C(0xe31d, DSGF, RXY_a, Z, r1p1, m2_32s, r1_P, 0, divs64, 0)
353
3bbfbd1f
RH
354/* EXCLUSIVE OR */
355 C(0x1700, XR, RR_a, Z, r1, r2, new, r1_32, xor, nz32)
356 C(0xb9f7, XRK, RRF_a, DO, r2, r3, new, r1_32, xor, nz32)
357 C(0x5700, X, RX_a, Z, r1, m2_32s, new, r1_32, xor, nz32)
358 C(0xe357, XY, RXY_a, LD, r1, m2_32s, new, r1_32, xor, nz32)
359 C(0xb982, XGR, RRE, Z, r1, r2, r1, 0, xor, nz64)
360 C(0xb9e7, XGRK, RRF_a, DO, r2, r3, r1, 0, xor, nz64)
361 C(0xe382, XG, RXY_a, Z, r1, m2_64, r1, 0, xor, nz64)
d074ac6d 362 C(0xd700, XC, SS_a, Z, 0, 0, 0, 0, xc, 0)
facfc864
RH
363/* EXCLUSIVE OR IMMEDIATE */
364 D(0xc006, XIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
365 D(0xc007, XILF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
f400be18
DH
366 D(0x9700, XI, SI, Z, la1, i2_8u, new, 0, xi, nz64, MO_UB)
367 D(0xeb57, XIY, SIY, LD, la1, i2_8u, new, 0, xi, nz64, MO_UB)
facfc864 368
6e764e97 369/* EXECUTE */
a72da8b7 370 C(0x4400, EX, RX_a, Z, 0, a2, 0, 0, ex, 0)
6e764e97 371/* EXECUTE RELATIVE LONG */
a72da8b7 372 C(0xc600, EXRL, RIL_b, EE, 0, ri2, 0, 0, ex, 0)
6e764e97 373
d62a4c97
RH
374/* EXTRACT ACCESS */
375 C(0xb24f, EAR, RRE, Z, 0, 0, new, r1_32, ear, 0)
0774710f
RH
376/* EXTRACT CPU ATTRIBUTE */
377 C(0xeb4c, ECAG, RSY_a, GIE, 0, a2, r1, 0, ecag, 0)
4bac52f5
DH
378/* EXTRACT CPU TIME */
379 C(0xc801, ECTG, SSF, ECT, 0, 0, 0, 0, ectg, 0)
ea20490f 380/* EXTRACT FPC */
ca5f31a0 381 F(0xb38c, EFPC, RRE, Z, 0, 0, new, r1_32, efpc, 0, IF_BFP)
e30a9d3f
RH
382/* EXTRACT PSW */
383 C(0xb98d, EPSW, RRE, Z, 0, 0, 0, 0, epsw, 0)
ea20490f 384
102bf2c6
RH
385/* FIND LEFTMOST ONE */
386 C(0xb983, FLOGR, RRE, EI, 0, r2_o, r1_P, 0, flogr, 0)
387
afdc70be
RH
388/* INSERT CHARACTER */
389 C(0x4300, IC, RX_a, Z, 0, m2_8u, 0, r1_8, mov2, 0)
390 C(0xe373, ICY, RXY_a, LD, 0, m2_8u, 0, r1_8, mov2, 0)
58a9e35b
RH
391/* INSERT CHARACTERS UNDER MASK */
392 D(0xbf00, ICM, RS_b, Z, 0, a2, r1, 0, icm, 0, 0)
393 D(0xeb81, ICMY, RSY_b, LD, 0, a2, r1, 0, icm, 0, 0)
394 D(0xeb80, ICMH, RSY_b, Z, 0, a2, r1, 0, icm, 0, 32)
facfc864
RH
395/* INSERT IMMEDIATE */
396 D(0xc008, IIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
397 D(0xc009, IILF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
398 D(0xa500, IIHH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
399 D(0xa501, IIHL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
400 D(0xa502, IILH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
401 D(0xa503, IILL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
6e2704e7
RH
402/* INSERT PROGRAM MASK */
403 C(0xb222, IPM, RRE, Z, 0, 0, r1, 0, ipm, 0)
3bbfbd1f 404
22c37a08
RH
405/* LOAD */
406 C(0x1800, LR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, 0)
407 C(0x5800, L, RX_a, Z, 0, a2, new, r1_32, ld32s, 0)
92892330 408 C(0xe358, LY, RXY_a, LD, 0, a2, new, r1_32, ld32s, 0)
22c37a08
RH
409 C(0xb904, LGR, RRE, Z, 0, r2_o, 0, r1, mov2, 0)
410 C(0xb914, LGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, 0)
411 C(0xe304, LG, RXY_a, Z, 0, a2, r1, 0, ld64, 0)
412 C(0xe314, LGF, RXY_a, Z, 0, a2, r1, 0, ld32s, 0)
80a7b759 413 F(0x2800, LDR, RR_a, Z, 0, f2, 0, f1, mov2, 0, IF_AFP1 | IF_AFP2)
ca5f31a0
DH
414 F(0x6800, LD, RX_a, Z, 0, m2_64, 0, f1, mov2, 0, IF_AFP1)
415 F(0xed65, LDY, RXY_a, LD, 0, m2_64, 0, f1, mov2, 0, IF_AFP1)
416 F(0x3800, LER, RR_a, Z, 0, e2, 0, cond_e1e2, mov2, 0, IF_AFP1 | IF_AFP2)
417 F(0x7800, LE, RX_a, Z, 0, m2_32u, 0, e1, mov2, 0, IF_AFP1)
418 F(0xed64, LEY, RXY_a, LD, 0, m2_32u, 0, e1, mov2, 0, IF_AFP1)
80a7b759 419 F(0xb365, LXR, RRE, Z, x2h, x2l, 0, x1, movx, 0, IF_AFP1)
22c37a08
RH
420/* LOAD IMMEDIATE */
421 C(0xc001, LGFI, RIL_a, EI, 0, i2, 0, r1, mov2, 0)
422/* LOAD RELATIVE LONG */
423 C(0xc40d, LRL, RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
424 C(0xc408, LGRL, RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
425 C(0xc40c, LGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
aedec19d
RH
426/* LOAD ADDRESS */
427 C(0x4100, LA, RX_a, Z, 0, a2, 0, r1, mov2, 0)
428 C(0xe371, LAY, RXY_a, LD, 0, a2, 0, r1, mov2, 0)
a1c7610a
AJ
429/* LOAD ADDRESS EXTENDED */
430 C(0x5100, LAE, RX_a, Z, 0, a2, 0, r1, mov2e, 0)
431 C(0xe375, LAEY, RXY_a, GIE, 0, a2, 0, r1, mov2e, 0)
aedec19d
RH
432/* LOAD ADDRESS RELATIVE LONG */
433 C(0xc000, LARL, RIL_b, Z, 0, ri2, 0, r1, mov2, 0)
57af7289 434/* LOAD AND ADD */
4dba4d6f
RH
435 D(0xebf8, LAA, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, laa, adds32, MO_TESL)
436 D(0xebe8, LAAG, RSY_a, ILA, r3, a2, new, in2_r1, laa, adds64, MO_TEQ)
57af7289 437/* LOAD AND ADD LOGICAL */
4dba4d6f
RH
438 D(0xebfa, LAAL, RSY_a, ILA, r3_32u, a2, new, in2_r1_32, laa, addu32, MO_TEUL)
439 D(0xebea, LAALG, RSY_a, ILA, r3, a2, new, in2_r1, laa, addu64, MO_TEQ)
57af7289 440/* LOAD AND AND */
4dba4d6f
RH
441 D(0xebf4, LAN, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lan, nz32, MO_TESL)
442 D(0xebe4, LANG, RSY_a, ILA, r3, a2, new, in2_r1, lan, nz64, MO_TEQ)
57af7289 443/* LOAD AND EXCLUSIVE OR */
4dba4d6f
RH
444 D(0xebf7, LAX, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lax, nz32, MO_TESL)
445 D(0xebe7, LAXG, RSY_a, ILA, r3, a2, new, in2_r1, lax, nz64, MO_TEQ)
57af7289 446/* LOAD AND OR */
4dba4d6f
RH
447 D(0xebf6, LAO, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lao, nz32, MO_TESL)
448 D(0xebe6, LAOG, RSY_a, ILA, r3, a2, new, in2_r1, lao, nz64, MO_TEQ)
11bf2d73
RH
449/* LOAD AND TEST */
450 C(0x1200, LTR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, s32)
451 C(0xb902, LTGR, RRE, Z, 0, r2_o, 0, r1, mov2, s64)
452 C(0xb912, LTGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, s64)
453 C(0xe312, LT, RXY_a, EI, 0, a2, new, r1_32, ld32s, s64)
454 C(0xe302, LTG, RXY_a, EI, 0, a2, r1, 0, ld64, s64)
455 C(0xe332, LTGF, RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
ca5f31a0 456 F(0xb302, LTEBR, RRE, Z, 0, e2, 0, cond_e1e2, mov2, f32, IF_BFP)
80a7b759
DH
457 F(0xb312, LTDBR, RRE, Z, 0, f2, 0, f1, mov2, f64, IF_BFP)
458 F(0xb342, LTXBR, RRE, Z, x2h, x2l, 0, x1, movx, f128, IF_BFP)
782a8479
AJ
459/* LOAD AND TRAP */
460 C(0xe39f, LAT, RXY_a, LAT, 0, m2_32u, r1, 0, lat, 0)
461 C(0xe385, LGAT, RXY_a, LAT, 0, a2, r1, 0, lgat, 0)
c2a5c1d7
RH
462/* LOAD AND ZERO RIGHTMOST BYTE */
463 C(0xe3eb, LZRF, RXY_a, LZRB, 0, m2_32u, new, r1_32, lzrb, 0)
464 C(0xe32a, LZRG, RXY_a, LZRB, 0, m2_64, r1, 0, lzrb, 0)
465/* LOAD LOGICAL AND ZERO RIGHTMOST BYTE */
466 C(0xe33a, LLZRGF, RXY_a, LZRB, 0, m2_32u, r1, 0, lzrb, 0)
c698d876
RH
467/* LOAD BYTE */
468 C(0xb926, LBR, RRE, EI, 0, r2_8s, 0, r1_32, mov2, 0)
469 C(0xb906, LGBR, RRE, EI, 0, r2_8s, 0, r1, mov2, 0)
470 C(0xe376, LB, RXY_a, LD, 0, a2, new, r1_32, ld8s, 0)
471 C(0xe377, LGB, RXY_a, LD, 0, a2, r1, 0, ld8s, 0)
a1f12d85
AJ
472/* LOAD BYTE HIGH */
473 C(0xe3c0, LBH, RXY_a, HW, 0, a2, new, r1_32h, ld8s, 0)
b9bca3e5
RH
474/* LOAD COMPLEMENT */
475 C(0x1300, LCR, RR_a, Z, 0, r2, new, r1_32, neg, neg32)
476 C(0xb903, LCGR, RRE, Z, 0, r2, r1, 0, neg, neg64)
477 C(0xb913, LCGFR, RRE, Z, 0, r2_32s, r1, 0, neg, neg64)
ca5f31a0 478 F(0xb303, LCEBR, RRE, Z, 0, e2, new, e1, negf32, f32, IF_BFP)
80a7b759
DH
479 F(0xb313, LCDBR, RRE, Z, 0, f2, new, f1, negf64, f64, IF_BFP)
480 F(0xb343, LCXBR, RRE, Z, x2h, x2l, new_P, x1, negf128, f128, IF_BFP)
481 F(0xb373, LCDFR, RRE, FPSSH, 0, f2, new, f1, negf64, 0, IF_AFP1 | IF_AFP2)
6d930332
DH
482/* LOAD COUNT TO BLOCK BOUNDARY */
483 C(0xe727, LCBB, RXE, V, la2, 0, r1, 0, lcbb, 0)
c698d876
RH
484/* LOAD HALFWORD */
485 C(0xb927, LHR, RRE, EI, 0, r2_16s, 0, r1_32, mov2, 0)
486 C(0xb907, LGHR, RRE, EI, 0, r2_16s, 0, r1, mov2, 0)
487 C(0x4800, LH, RX_a, Z, 0, a2, new, r1_32, ld16s, 0)
488 C(0xe378, LHY, RXY_a, LD, 0, a2, new, r1_32, ld16s, 0)
489 C(0xe315, LGH, RXY_a, Z, 0, a2, r1, 0, ld16s, 0)
a1f12d85
AJ
490/* LOAD HALFWORD HIGH */
491 C(0xe3c4, LHH, RXY_a, HW, 0, a2, new, r1_32h, ld16s, 0)
c698d876
RH
492/* LOAD HALFWORD IMMEDIATE */
493 C(0xa708, LHI, RI_a, Z, 0, i2, 0, r1_32, mov2, 0)
494 C(0xa709, LGHI, RI_a, Z, 0, i2, 0, r1, mov2, 0)
495/* LOAD HALFWORD RELATIVE LONG */
496 C(0xc405, LHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
497 C(0xc404, LGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
a1f12d85
AJ
498/* LOAD HIGH */
499 C(0xe3ca, LFH, RXY_a, HW, 0, a2, new, r1_32h, ld32u, 0)
782a8479
AJ
500/* LOAG HIGH AND TRAP */
501 C(0xe3c8, LFHAT, RXY_a, LAT, 0, m2_32u, r1, 0, lfhat, 0)
22c37a08
RH
502/* LOAD LOGICAL */
503 C(0xb916, LLGFR, RRE, Z, 0, r2_32u, 0, r1, mov2, 0)
504 C(0xe316, LLGF, RXY_a, Z, 0, a2, r1, 0, ld32u, 0)
782a8479
AJ
505/* LOAD LOGICAL AND TRAP */
506 C(0xe39d, LLGFAT, RXY_a, LAT, 0, a2, r1, 0, llgfat, 0)
22c37a08
RH
507/* LOAD LOGICAL RELATIVE LONG */
508 C(0xc40e, LLGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
c698d876
RH
509/* LOAD LOGICAL CHARACTER */
510 C(0xb994, LLCR, RRE, EI, 0, r2_8u, 0, r1_32, mov2, 0)
511 C(0xb984, LLGCR, RRE, EI, 0, r2_8u, 0, r1, mov2, 0)
512 C(0xe394, LLC, RXY_a, EI, 0, a2, new, r1_32, ld8u, 0)
513 C(0xe390, LLGC, RXY_a, Z, 0, a2, r1, 0, ld8u, 0)
a1f12d85
AJ
514/* LOAD LOGICAL CHARACTER HIGH */
515 C(0xe3c2, LLCH, RXY_a, HW, 0, a2, new, r1_32h, ld8u, 0)
c698d876
RH
516/* LOAD LOGICAL HALFWORD */
517 C(0xb995, LLHR, RRE, EI, 0, r2_16u, 0, r1_32, mov2, 0)
518 C(0xb985, LLGHR, RRE, EI, 0, r2_16u, 0, r1, mov2, 0)
519 C(0xe395, LLH, RXY_a, EI, 0, a2, new, r1_32, ld16u, 0)
520 C(0xe391, LLGH, RXY_a, Z, 0, a2, r1, 0, ld16u, 0)
a1f12d85
AJ
521/* LOAD LOGICAL HALFWORD HIGH */
522 C(0xe3c6, LLHH, RXY_a, HW, 0, a2, new, r1_32h, ld16u, 0)
c698d876
RH
523/* LOAD LOGICAL HALFWORD RELATIVE LONG */
524 C(0xc402, LLHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
525 C(0xc406, LLGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
ade9dea4
RH
526/* LOAD LOGICAL IMMEDATE */
527 D(0xc00e, LLIHF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
528 D(0xc00f, LLILF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
529 D(0xa50c, LLIHH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 48)
530 D(0xa50d, LLIHL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 32)
531 D(0xa50e, LLILH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 16)
532 D(0xa50f, LLILL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 0)
7691c23b
RH
533/* LOAD LOGICAL THIRTY ONE BITS */
534 C(0xb917, LLGTR, RRE, Z, 0, r2_o, r1, 0, llgt, 0)
535 C(0xe317, LLGT, RXY_a, Z, 0, m2_32u, r1, 0, llgt, 0)
782a8479
AJ
536/* LOAD LOGICAL THIRTY ONE BITS AND TRAP */
537 C(0xe39c, LLGTAT, RXY_a, LAT, 0, m2_32u, r1, 0, llgtat, 0)
538
143cbbc5 539/* LOAD FPR FROM GR */
ca5f31a0 540 F(0xb3c1, LDGR, RRE, FPRGR, 0, r2_o, 0, f1, mov2, 0, IF_AFP1)
143cbbc5 541/* LOAD GR FROM FPR */
80a7b759 542 F(0xb3cd, LGDR, RRE, FPRGR, 0, f2, 0, r1, mov2, 0, IF_AFP2)
b9bca3e5
RH
543/* LOAD NEGATIVE */
544 C(0x1100, LNR, RR_a, Z, 0, r2_32s, new, r1_32, nabs, nabs32)
545 C(0xb901, LNGR, RRE, Z, 0, r2, r1, 0, nabs, nabs64)
546 C(0xb911, LNGFR, RRE, Z, 0, r2_32s, r1, 0, nabs, nabs64)
ca5f31a0 547 F(0xb301, LNEBR, RRE, Z, 0, e2, new, e1, nabsf32, f32, IF_BFP)
80a7b759
DH
548 F(0xb311, LNDBR, RRE, Z, 0, f2, new, f1, nabsf64, f64, IF_BFP)
549 F(0xb341, LNXBR, RRE, Z, x2h, x2l, new_P, x1, nabsf128, f128, IF_BFP)
550 F(0xb371, LNDFR, RRE, FPSSH, 0, f2, new, f1, nabsf64, 0, IF_AFP1 | IF_AFP2)
632086da
RH
551/* LOAD ON CONDITION */
552 C(0xb9f2, LOCR, RRF_c, LOC, r1, r2, new, r1_32, loc, 0)
553 C(0xb9e2, LOCGR, RRF_c, LOC, r1, r2, r1, 0, loc, 0)
554 C(0xebf2, LOC, RSY_b, LOC, r1, m2_32u, new, r1_32, loc, 0)
555 C(0xebe2, LOCG, RSY_b, LOC, r1, m2_64, r1, 0, loc, 0)
45aa9aa3
RH
556/* LOAD HALFWORD IMMEDIATE ON CONDITION */
557 C(0xec42, LOCHI, RIE_g, LOC2, r1, i2, new, r1_32, loc, 0)
558 C(0xec46, LOCGHI, RIE_g, LOC2, r1, i2, r1, 0, loc, 0)
559 C(0xec4e, LOCHHI, RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0)
560/* LOAD HIGH ON CONDITION */
561 C(0xb9e0, LOCFHR, RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0)
562 C(0xebe0, LOCFH, RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0)
1807aaa5
EB
563/* LOAD PAIR DISJOINT */
564 D(0xc804, LPD, SSF, ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)
565 D(0xc805, LPDG, SSF, ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEQ)
e22dfdb2
AJ
566/* LOAD PAIR FROM QUADWORD */
567 C(0xe38f, LPQ, RXY_a, Z, 0, a2, r1_P, 0, lpq, 0)
b9bca3e5
RH
568/* LOAD POSITIVE */
569 C(0x1000, LPR, RR_a, Z, 0, r2_32s, new, r1_32, abs, abs32)
570 C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
571 C(0xb910, LPGFR, RRE, Z, 0, r2_32s, r1, 0, abs, abs64)
ca5f31a0 572 F(0xb300, LPEBR, RRE, Z, 0, e2, new, e1, absf32, f32, IF_BFP)
80a7b759
DH
573 F(0xb310, LPDBR, RRE, Z, 0, f2, new, f1, absf64, f64, IF_BFP)
574 F(0xb340, LPXBR, RRE, Z, x2h, x2l, new_P, x1, absf128, f128, IF_BFP)
575 F(0xb370, LPDFR, RRE, FPSSH, 0, f2, new, f1, absf64, 0, IF_AFP1 | IF_AFP2)
d54f5865
RH
576/* LOAD REVERSED */
577 C(0xb91f, LRVR, RRE, Z, 0, r2_32u, new, r1_32, rev32, 0)
578 C(0xb90f, LRVGR, RRE, Z, 0, r2_o, r1, 0, rev64, 0)
579 C(0xe31f, LRVH, RXY_a, Z, 0, m2_16u, new, r1_16, rev16, 0)
580 C(0xe31e, LRV, RXY_a, Z, 0, m2_32u, new, r1_32, rev32, 0)
581 C(0xe30f, LRVG, RXY_a, Z, 0, m2_64, r1, 0, rev64, 0)
24db8412 582/* LOAD ZERO */
ca5f31a0
DH
583 F(0xb374, LZER, RRE, Z, 0, 0, 0, e1, zero, 0, IF_AFP1)
584 F(0xb375, LZDR, RRE, Z, 0, 0, 0, f1, zero, 0, IF_AFP1)
585 F(0xb376, LZXR, RRE, Z, 0, 0, 0, x1, zero2, 0, IF_AFP1)
22c37a08 586
8379bfdb 587/* LOAD FPC */
ca5f31a0 588 F(0xb29d, LFPC, S, Z, 0, m2_32u, 0, 0, sfpc, 0, IF_BFP)
411edc22 589/* LOAD FPC AND SIGNAL */
ca5f31a0 590 F(0xb2bd, LFAS, S, IEEEE_SIM, 0, m2_32u, 0, 0, sfas, 0, IF_DFP)
ed0bcece 591/* LOAD FP INTEGER */
ca5f31a0 592 F(0xb357, FIEBR, RRF_e, Z, 0, e2, new, e1, fieb, 0, IF_BFP)
80a7b759
DH
593 F(0xb35f, FIDBR, RRF_e, Z, 0, f2, new, f1, fidb, 0, IF_BFP)
594 F(0xb347, FIXBR, RRF_e, Z, x2h, x2l, new_P, x1, fixb, 0, IF_BFP)
8379bfdb 595
587626f8 596/* LOAD LENGTHENED */
80a7b759
DH
597 F(0xb304, LDEBR, RRE, Z, 0, e2, new, f1, ldeb, 0, IF_BFP)
598 F(0xb305, LXDBR, RRE, Z, 0, f2, new_P, x1, lxdb, 0, IF_BFP)
599 F(0xb306, LXEBR, RRE, Z, 0, e2, new_P, x1, lxeb, 0, IF_BFP)
600 F(0xed04, LDEB, RXE, Z, 0, m2_32u, new, f1, ldeb, 0, IF_BFP)
601 F(0xed05, LXDB, RXE, Z, 0, m2_64, new_P, x1, lxdb, 0, IF_BFP)
602 F(0xed06, LXEB, RXE, Z, 0, m2_32u, new_P, x1, lxeb, 0, IF_BFP)
86b59624
DH
603 F(0xb324, LDER, RXE, Z, 0, e2, new, f1, lde, 0, IF_AFP1)
604 F(0xed24, LDE, RXE, Z, 0, m2_32u, new, f1, lde, 0, IF_AFP1)
587626f8 605/* LOAD ROUNDED */
bdcfcd44
DH
606 F(0xb344, LEDBR, RRF_e, Z, 0, f2, new, e1, ledb, 0, IF_BFP)
607 F(0xb345, LDXBR, RRF_e, Z, x2h, x2l, new, f1, ldxb, 0, IF_BFP)
608 F(0xb346, LEXBR, RRF_e, Z, x2h, x2l, new, e1, lexb, 0, IF_BFP)
587626f8 609
77f8d6c3
RH
610/* LOAD MULTIPLE */
611 C(0x9800, LM, RS_a, Z, 0, a2, 0, 0, lm32, 0)
612 C(0xeb98, LMY, RSY_a, LD, 0, a2, 0, 0, lm32, 0)
613 C(0xeb04, LMG, RSY_a, Z, 0, a2, 0, 0, lm64, 0)
614/* LOAD MULTIPLE HIGH */
615 C(0xeb96, LMH, RSY_a, Z, 0, a2, 0, 0, lmh, 0)
7df3e93a
RH
616/* LOAD ACCESS MULTIPLE */
617 C(0x9a00, LAM, RS_a, Z, 0, a2, 0, 0, lam, 0)
618 C(0xeb9a, LAMY, RSY_a, LD, 0, a2, 0, 0, lam, 0)
77f8d6c3 619
6a04d76a 620/* MOVE */
af9e5a04 621 C(0xd200, MVC, SS_a, Z, la1, a2, 0, 0, mvc, 0)
6a04d76a
RH
622 C(0xe544, MVHHI, SIL, GIE, la1, i2, 0, m1_16, mov2, 0)
623 C(0xe54c, MVHI, SIL, GIE, la1, i2, 0, m1_32, mov2, 0)
624 C(0xe548, MVGHI, SIL, GIE, la1, i2, 0, m1_64, mov2, 0)
625 C(0x9200, MVI, SI, Z, la1, i2, 0, m1_8, mov2, 0)
626 C(0xeb52, MVIY, SIY, LD, la1, i2, 0, m1_8, mov2, 0)
6c9deca8
AJ
627/* MOVE INVERSE */
628 C(0xe800, MVCIN, SS_a, Z, la1, a2, 0, 0, mvcin, 0)
e1eaada9
RH
629/* MOVE LONG */
630 C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0)
eb66e6a9
RH
631/* MOVE LONG EXTENDED */
632 C(0xa800, MVCLE, RS_a, Z, 0, a2, 0, 0, mvcle, 0)
16f2e4b8
AJ
633/* MOVE LONG UNICODE */
634 C(0xeb8e, MVCLU, RSY_a, E2, 0, a2, 0, 0, mvclu, 0)
256dab6f
AJ
635/* MOVE NUMERICS */
636 C(0xd100, MVN, SS_a, Z, la1, a2, 0, 0, mvn, 0)
ee6c38d5
RH
637/* MOVE PAGE */
638 C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0)
aa31bf60 639/* MOVE STRING */
2bb525e2 640 C(0xb255, MVST, RRE, Z, 0, 0, 0, 0, mvst, 0)
3e7e5e0b
DH
641/* MOVE WITH OPTIONAL SPECIFICATION */
642 C(0xc800, MVCOS, SSF, MVCOS, la1, a2, 0, 0, mvcos, 0)
fdc0a747
AJ
643/* MOVE WITH OFFSET */
644 /* Really format SS_b, but we pack both lengths into one argument
645 for the helper call, so we might as well leave one 8-bit field. */
646 C(0xf100, MVO, SS_a, Z, la1, a2, 0, 0, mvo, 0)
01f8db88
AJ
647/* MOVE ZONES */
648 C(0xd300, MVZ, SS_a, Z, la1, a2, 0, 0, mvz, 0)
e1eaada9 649
d87aaf93
RH
650/* MULTIPLY */
651 C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0)
652 C(0x5c00, M, RX_a, Z, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
653 C(0xe35c, MFY, RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
ca5f31a0 654 F(0xb317, MEEBR, RRE, Z, e1, e2, new, e1, meeb, 0, IF_BFP)
80a7b759
DH
655 F(0xb31c, MDBR, RRE, Z, f1, f2, new, f1, mdb, 0, IF_BFP)
656 F(0xb34c, MXBR, RRE, Z, x2h, x2l, x1, x1, mxb, 0, IF_BFP)
657 F(0xb30c, MDEBR, RRE, Z, f1, e2, new, f1, mdeb, 0, IF_BFP)
658 F(0xb307, MXDBR, RRE, Z, 0, f2, x1, x1, mxdb, 0, IF_BFP)
ca5f31a0 659 F(0xed17, MEEB, RXE, Z, e1, m2_32u, new, e1, meeb, 0, IF_BFP)
80a7b759
DH
660 F(0xed1c, MDB, RXE, Z, f1, m2_64, new, f1, mdb, 0, IF_BFP)
661 F(0xed0c, MDEB, RXE, Z, f1, m2_32u, new, f1, mdeb, 0, IF_BFP)
662 F(0xed07, MXDB, RXE, Z, 0, m2_64, x1, x1, mxdb, 0, IF_BFP)
d1c04a2b
RH
663/* MULTIPLY HALFWORD */
664 C(0x4c00, MH, RX_a, Z, r1_o, m2_16s, new, r1_32, mul, 0)
665 C(0xe37c, MHY, RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
666/* MULTIPLY HALFWORD IMMEDIATE */
667 C(0xa70c, MHI, RI_a, Z, r1_o, i2, new, r1_32, mul, 0)
668 C(0xa70d, MGHI, RI_a, Z, r1_o, i2, r1, 0, mul, 0)
d87aaf93
RH
669/* MULTIPLY LOGICAL */
670 C(0xb996, MLR, RRE, Z, r1p1_32u, r2_32u, new, r1_D32, mul, 0)
671 C(0xe396, ML, RXY_a, Z, r1p1_32u, m2_32u, new, r1_D32, mul, 0)
1ac5889f
RH
672 C(0xb986, MLGR, RRE, Z, r1p1, r2_o, r1_P, 0, mul128, 0)
673 C(0xe386, MLG, RXY_a, Z, r1p1, m2_64, r1_P, 0, mul128, 0)
d1c04a2b
RH
674/* MULTIPLY SINGLE */
675 C(0xb252, MSR, RRE, Z, r1_o, r2_o, new, r1_32, mul, 0)
676 C(0x7100, MS, RX_a, Z, r1_o, m2_32s, new, r1_32, mul, 0)
677 C(0xe351, MSY, RXY_a, LD, r1_o, m2_32s, new, r1_32, mul, 0)
678 C(0xb90c, MSGR, RRE, Z, r1_o, r2_o, r1, 0, mul, 0)
679 C(0xb91c, MSGFR, RRE, Z, r1_o, r2_32s, r1, 0, mul, 0)
680 C(0xe30c, MSG, RXY_a, Z, r1_o, m2_64, r1, 0, mul, 0)
681 C(0xe31c, MSGF, RXY_a, Z, r1_o, m2_32s, r1, 0, mul, 0)
682/* MULTIPLY SINGLE IMMEDIATE */
683 C(0xc201, MSFI, RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
684 C(0xc200, MSGFI, RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
685
722bfec3 686/* MULTIPLY AND ADD */
ca5f31a0 687 F(0xb30e, MAEBR, RRD, Z, e1, e2, new, e1, maeb, 0, IF_BFP)
80a7b759 688 F(0xb31e, MADBR, RRD, Z, f1, f2, new, f1, madb, 0, IF_BFP)
ca5f31a0 689 F(0xed0e, MAEB, RXF, Z, e1, m2_32u, new, e1, maeb, 0, IF_BFP)
80a7b759 690 F(0xed1e, MADB, RXF, Z, f1, m2_64, new, f1, madb, 0, IF_BFP)
722bfec3 691/* MULTIPLY AND SUBTRACT */
ca5f31a0 692 F(0xb30f, MSEBR, RRD, Z, e1, e2, new, e1, mseb, 0, IF_BFP)
80a7b759 693 F(0xb31f, MSDBR, RRD, Z, f1, f2, new, f1, msdb, 0, IF_BFP)
ca5f31a0 694 F(0xed0f, MSEB, RXF, Z, e1, m2_32u, new, e1, mseb, 0, IF_BFP)
80a7b759 695 F(0xed1f, MSDB, RXF, Z, f1, m2_64, new, f1, msdb, 0, IF_BFP)
722bfec3 696
3bbfbd1f
RH
697/* OR */
698 C(0x1600, OR, RR_a, Z, r1, r2, new, r1_32, or, nz32)
699 C(0xb9f6, ORK, RRF_a, DO, r2, r3, new, r1_32, or, nz32)
700 C(0x5600, O, RX_a, Z, r1, m2_32s, new, r1_32, or, nz32)
701 C(0xe356, OY, RXY_a, LD, r1, m2_32s, new, r1_32, or, nz32)
702 C(0xb981, OGR, RRE, Z, r1, r2, r1, 0, or, nz64)
703 C(0xb9e6, OGRK, RRF_a, DO, r2, r3, r1, 0, or, nz64)
704 C(0xe381, OG, RXY_a, Z, r1, m2_64, r1, 0, or, nz64)
0a949039 705 C(0xd600, OC, SS_a, Z, la1, a2, 0, 0, oc, 0)
facfc864
RH
706/* OR IMMEDIATE */
707 D(0xc00c, OIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
708 D(0xc00d, OILF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
709 D(0xa508, OIHH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
710 D(0xa509, OIHL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
711 D(0xa50a, OILH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
712 D(0xa50b, OILL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
f400be18
DH
713 D(0x9600, OI, SI, Z, la1, i2_8u, new, 0, oi, nz64, MO_UB)
714 D(0xeb56, OIY, SIY, LD, la1, i2_8u, new, 0, oi, nz64, MO_UB)
3bbfbd1f 715
76c57490
AJ
716/* PACK */
717 /* Really format SS_b, but we pack both lengths into one argument
718 for the helper call, so we might as well leave one 8-bit field. */
719 C(0xf200, PACK, SS_a, Z, la1, a2, 0, 0, pack, 0)
3bd3d6d3
AJ
720/* PACK ASCII */
721 C(0xe900, PKA, SS_f, E2, la1, a2, 0, 0, pka, 0)
4e256bef
AJ
722/* PACK UNICODE */
723 C(0xe100, PKU, SS_f, E2, la1, a2, 0, 0, pku, 0)
76c57490 724
e0def909
RH
725/* PREFETCH */
726 /* Implemented as nops of course. */
727 C(0xe336, PFD, RXY_b, GIE, 0, 0, 0, 0, 0, 0)
728 C(0xc602, PFDRL, RIL_c, GIE, 0, 0, 0, 0, 0, 0)
632c61a9
RH
729/* PERFORM PROCESSOR ASSIST */
730 /* Implemented as nop of course. */
731 C(0xb2e8, PPA, RRF_c, PPA, 0, 0, 0, 0, 0, 0)
e0def909 732
99b4f24b
RH
733/* POPULATION COUNT */
734 C(0xb9e1, POPCNT, RRE, PC, 0, r2_o, r1, 0, popcnt, nz64)
735
cbe24bfa
RH
736/* ROTATE LEFT SINGLE LOGICAL */
737 C(0xeb1d, RLL, RSY_a, Z, r3_o, sh32, new, r1_32, rll32, 0)
738 C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh64, r1, 0, rll64, 0)
739
2d6a8698
RH
740/* ROTATE THEN INSERT SELECTED BITS */
741 C(0xec55, RISBG, RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
375ee58b 742 C(0xec59, RISBGN, RIE_f, MIE, 0, r2, r1, 0, risbg, 0)
92892330
AJ
743 C(0xec5d, RISBHG, RIE_f, HW, 0, r2, r1, 0, risbg, 0)
744 C(0xec51, RISBLG, RIE_f, HW, 0, r2, r1, 0, risbg, 0)
d6c6372e
RH
745/* ROTATE_THEN <OP> SELECTED BITS */
746 C(0xec54, RNSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
747 C(0xec56, ROSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
748 C(0xec57, RXSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
2d6a8698 749
4600c994 750/* SEARCH STRING */
7591db78 751 C(0xb25e, SRST, RRE, Z, 0, 0, 0, 0, srst, 0)
be7acb58
RH
752/* SEARCH STRING UNICODE */
753 C(0xb9be, SRSTU, RRE, ETF3, 0, 0, 0, 0, srstu, 0)
4600c994 754
d62a4c97
RH
755/* SET ACCESS */
756 C(0xb24e, SAR, RRE, Z, 0, r2_o, 0, 0, sar, 0)
8612c935
RH
757/* SET ADDRESSING MODE */
758 D(0x010c, SAM24, E, Z, 0, 0, 0, 0, sam, 0, 0)
759 D(0x010d, SAM31, E, Z, 0, 0, 0, 0, sam, 0, 1)
760 D(0x010e, SAM64, E, Z, 0, 0, 0, 0, sam, 0, 3)
8379bfdb 761/* SET FPC */
ca5f31a0 762 F(0xb384, SFPC, RRE, Z, 0, r1_o, 0, 0, sfpc, 0, IF_BFP)
411edc22 763/* SET FPC AND SIGNAL */
ca5f31a0 764 F(0xb385, SFASR, RRE, IEEEE_SIM, 0, r1_o, 0, 0, sfas, 0, IF_DFP)
a12000b9 765/* SET BFP ROUNDING MODE */
b9c737f5
DH
766 F(0xb299, SRNM, S, Z, la2, 0, 0, 0, srnm, 0, IF_BFP)
767 F(0xb2b8, SRNMB, S, FPE, la2, 0, 0, 0, srnmb, 0, IF_BFP)
a12000b9 768/* SET DFP ROUNDING MODE */
b9c737f5 769 F(0xb2b9, SRNMT, S, DFPR, la2, 0, 0, 0, srnmt, 0, IF_DFP)
6b257354
DH
770/* SET PROGRAM MASK */
771 C(0x0400, SPM, RR_a, Z, r1, 0, 0, 0, spm, 0)
8379bfdb 772
cbe24bfa
RH
773/* SHIFT LEFT SINGLE */
774 D(0x8b00, SLA, RS_a, Z, r1, sh32, new, r1_32, sla, 0, 31)
775 D(0xebdd, SLAK, RSY_a, DO, r3, sh32, new, r1_32, sla, 0, 31)
776 D(0xeb0b, SLAG, RSY_a, Z, r3, sh64, r1, 0, sla, 0, 63)
777/* SHIFT LEFT SINGLE LOGICAL */
778 C(0x8900, SLL, RS_a, Z, r1_o, sh32, new, r1_32, sll, 0)
779 C(0xebdf, SLLK, RSY_a, DO, r3_o, sh32, new, r1_32, sll, 0)
780 C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh64, r1, 0, sll, 0)
781/* SHIFT RIGHT SINGLE */
782 C(0x8a00, SRA, RS_a, Z, r1_32s, sh32, new, r1_32, sra, s32)
783 C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh32, new, r1_32, sra, s32)
784 C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh64, r1, 0, sra, s64)
785/* SHIFT RIGHT SINGLE LOGICAL */
786 C(0x8800, SRL, RS_a, Z, r1_32u, sh32, new, r1_32, srl, 0)
787 C(0xebde, SRLK, RSY_a, DO, r3_32u, sh32, new, r1_32, srl, 0)
788 C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh64, r1, 0, srl, 0)
a79ba339
RH
789/* SHIFT LEFT DOUBLE */
790 D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 31)
791/* SHIFT LEFT DOUBLE LOGICAL */
792 C(0x8d00, SLDL, RS_a, Z, r1_D32, sh64, new, r1_D32, sll, 0)
793/* SHIFT RIGHT DOUBLE */
794 C(0x8e00, SRDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sra, s64)
795/* SHIFT RIGHT DOUBLE LOGICAL */
796 C(0x8c00, SRDL, RS_a, Z, r1_D32, sh64, new, r1_D32, srl, 0)
cbe24bfa 797
16d7b2a4 798/* SQUARE ROOT */
ca5f31a0 799 F(0xb314, SQEBR, RRE, Z, 0, e2, new, e1, sqeb, 0, IF_BFP)
80a7b759
DH
800 F(0xb315, SQDBR, RRE, Z, 0, f2, new, f1, sqdb, 0, IF_BFP)
801 F(0xb316, SQXBR, RRE, Z, x2h, x2l, new, x1, sqxb, 0, IF_BFP)
ca5f31a0 802 F(0xed14, SQEB, RXE, Z, 0, m2_32u, new, e1, sqeb, 0, IF_BFP)
80a7b759 803 F(0xed15, SQDB, RXE, Z, 0, m2_64, new, f1, sqdb, 0, IF_BFP)
16d7b2a4 804
2b280b97
RH
805/* STORE */
806 C(0x5000, ST, RX_a, Z, r1_o, a2, 0, 0, st32, 0)
807 C(0xe350, STY, RXY_a, LD, r1_o, a2, 0, 0, st32, 0)
808 C(0xe324, STG, RXY_a, Z, r1_o, a2, 0, 0, st64, 0)
80a7b759
DH
809 F(0x6000, STD, RX_a, Z, f1, a2, 0, 0, st64, 0, IF_AFP1)
810 F(0xed67, STDY, RXY_a, LD, f1, a2, 0, 0, st64, 0, IF_AFP1)
ca5f31a0
DH
811 F(0x7000, STE, RX_a, Z, e1, a2, 0, 0, st32, 0, IF_AFP1)
812 F(0xed66, STEY, RXY_a, LD, e1, a2, 0, 0, st32, 0, IF_AFP1)
2b280b97
RH
813/* STORE RELATIVE LONG */
814 C(0xc40f, STRL, RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
815 C(0xc40b, STGRL, RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
816/* STORE CHARACTER */
817 C(0x4200, STC, RX_a, Z, r1_o, a2, 0, 0, st8, 0)
818 C(0xe372, STCY, RXY_a, LD, r1_o, a2, 0, 0, st8, 0)
a1f12d85
AJ
819/* STORE CHARACTER HIGH */
820 C(0xe3c3, STCH, RXY_a, HW, r1_sr32, a2, 0, 0, st8, 0)
2ae68059
RH
821/* STORE CHARACTERS UNDER MASK */
822 D(0xbe00, STCM, RS_b, Z, r1_o, a2, 0, 0, stcm, 0, 0)
823 D(0xeb2d, STCMY, RSY_b, LD, r1_o, a2, 0, 0, stcm, 0, 0)
92892330 824 D(0xeb2c, STCMH, RSY_b, Z, r1_o, a2, 0, 0, stcm, 0, 32)
2b280b97
RH
825/* STORE HALFWORD */
826 C(0x4000, STH, RX_a, Z, r1_o, a2, 0, 0, st16, 0)
827 C(0xe370, STHY, RXY_a, LD, r1_o, a2, 0, 0, st16, 0)
a1f12d85
AJ
828/* STORE HALFWORD HIGH */
829 C(0xe3c7, STHH, RXY_a, HW, r1_sr32, a2, 0, 0, st16, 0)
2b280b97
RH
830/* STORE HALFWORD RELATIVE LONG */
831 C(0xc407, STHRL, RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
a1f12d85
AJ
832/* STORE HIGH */
833 C(0xe3cb, STFH, RXY_a, HW, r1_sr32, a2, 0, 0, st32, 0)
b92fa334
RH
834/* STORE ON CONDITION */
835 D(0xebf3, STOC, RSY_b, LOC, 0, 0, 0, 0, soc, 0, 0)
836 D(0xebe3, STOCG, RSY_b, LOC, 0, 0, 0, 0, soc, 0, 1)
45aa9aa3
RH
837/* STORE HIGH ON CONDITION */
838 D(0xebe1, STOCFH, RSY_b, LOC2, 0, 0, 0, 0, soc, 0, 2)
e025e52a
RH
839/* STORE REVERSED */
840 C(0xe33f, STRVH, RXY_a, Z, la2, r1_16u, new, m1_16, rev16, 0)
841 C(0xe33e, STRV, RXY_a, Z, la2, r1_32u, new, m1_32, rev32, 0)
842 C(0xe32f, STRVG, RXY_a, Z, la2, r1_o, new, m1_64, rev64, 0)
2b280b97 843
965018be
RH
844/* STORE CLOCK */
845 C(0xb205, STCK, S, Z, la2, 0, new, m1_64, stck, 0)
846 C(0xb27c, STCKF, S, SCF, la2, 0, new, m1_64, stck, 0)
847/* STORE CLOCK EXTENDED */
848 C(0xb278, STCKE, S, Z, 0, a2, 0, 0, stcke, 0)
849
5bf83628
RH
850/* STORE FACILITY LIST EXTENDED */
851 C(0xb2b0, STFLE, S, SFLE, 0, a2, 0, 0, stfle, 0)
ea20490f 852/* STORE FPC */
ca5f31a0 853 F(0xb29c, STFPC, S, Z, 0, a2, new, m2_32, efpc, 0, IF_BFP)
ea20490f 854
77f8d6c3
RH
855/* STORE MULTIPLE */
856 D(0x9000, STM, RS_a, Z, 0, a2, 0, 0, stm, 0, 4)
857 D(0xeb90, STMY, RSY_a, LD, 0, a2, 0, 0, stm, 0, 4)
858 D(0xeb24, STMG, RSY_a, Z, 0, a2, 0, 0, stm, 0, 8)
859/* STORE MULTIPLE HIGH */
860 C(0xeb26, STMH, RSY_a, Z, 0, a2, 0, 0, stmh, 0)
7df3e93a
RH
861/* STORE ACCESS MULTIPLE */
862 C(0x9b00, STAM, RS_a, Z, 0, a2, 0, 0, stam, 0)
863 C(0xeb9b, STAMY, RSY_a, LD, 0, a2, 0, 0, stam, 0)
c21b610f
AJ
864/* STORE PAIR TO QUADWORD */
865 C(0xe38e, STPQ, RXY_a, Z, 0, a2, r1_P, 0, stpq, 0)
77f8d6c3 866
ad044d09
RH
867/* SUBTRACT */
868 C(0x1b00, SR, RR_a, Z, r1, r2, new, r1_32, sub, subs32)
869 C(0xb9f9, SRK, RRF_a, DO, r2, r3, new, r1_32, sub, subs32)
870 C(0x5b00, S, RX_a, Z, r1, m2_32s, new, r1_32, sub, subs32)
871 C(0xe35b, SY, RXY_a, LD, r1, m2_32s, new, r1_32, sub, subs32)
872 C(0xb909, SGR, RRE, Z, r1, r2, r1, 0, sub, subs64)
873 C(0xb919, SGFR, RRE, Z, r1, r2_32s, r1, 0, sub, subs64)
874 C(0xb9e9, SGRK, RRF_a, DO, r2, r3, r1, 0, sub, subs64)
875 C(0xe309, SG, RXY_a, Z, r1, m2_64, r1, 0, sub, subs64)
876 C(0xe319, SGF, RXY_a, Z, r1, m2_32s, r1, 0, sub, subs64)
ca5f31a0 877 F(0xb30b, SEBR, RRE, Z, e1, e2, new, e1, seb, f32, IF_BFP)
80a7b759
DH
878 F(0xb31b, SDBR, RRE, Z, f1, f2, new, f1, sdb, f64, IF_BFP)
879 F(0xb34b, SXBR, RRE, Z, x2h, x2l, x1, x1, sxb, f128, IF_BFP)
ca5f31a0 880 F(0xed0b, SEB, RXE, Z, e1, m2_32u, new, e1, seb, f32, IF_BFP)
80a7b759 881 F(0xed1b, SDB, RXE, Z, f1, m2_64, new, f1, sdb, f64, IF_BFP)
3f4cb56a
RH
882/* SUBTRACT HALFWORD */
883 C(0x4b00, SH, RX_a, Z, r1, m2_16s, new, r1_32, sub, subs32)
884 C(0xe37b, SHY, RXY_a, LD, r1, m2_16s, new, r1_32, sub, subs32)
a1f12d85
AJ
885/* SUBTRACT HIGH */
886 C(0xb9c9, SHHHR, RRF_a, HW, r2_sr32, r3_sr32, new, r1_32h, sub, subs32)
887 C(0xb9d9, SHHLR, RRF_a, HW, r2_sr32, r3, new, r1_32h, sub, subs32)
ad044d09
RH
888/* SUBTRACT LOGICAL */
889 C(0x1f00, SLR, RR_a, Z, r1, r2, new, r1_32, sub, subu32)
890 C(0xb9fb, SLRK, RRF_a, DO, r2, r3, new, r1_32, sub, subu32)
891 C(0x5f00, SL, RX_a, Z, r1, m2_32u, new, r1_32, sub, subu32)
892 C(0xe35f, SLY, RXY_a, LD, r1, m2_32u, new, r1_32, sub, subu32)
893 C(0xb90b, SLGR, RRE, Z, r1, r2, r1, 0, sub, subu64)
894 C(0xb91b, SLGFR, RRE, Z, r1, r2_32u, r1, 0, sub, subu64)
895 C(0xb9eb, SLGRK, RRF_a, DO, r2, r3, r1, 0, sub, subu64)
896 C(0xe30b, SLG, RXY_a, Z, r1, m2_64, r1, 0, sub, subu64)
897 C(0xe31b, SLGF, RXY_a, Z, r1, m2_32u, r1, 0, sub, subu64)
a1f12d85
AJ
898/* SUBTRACT LOCICAL HIGH */
899 C(0xb9cb, SLHHHR, RRF_a, HW, r2_sr32, r3_sr32, new, r1_32h, sub, subu32)
900 C(0xb9db, SLHHLR, RRF_a, HW, r2_sr32, r3, new, r1_32h, sub, subu32)
ad044d09
RH
901/* SUBTRACT LOGICAL IMMEDIATE */
902 C(0xc205, SLFI, RIL_a, EI, r1, i2_32u, new, r1_32, sub, subu32)
903 C(0xc204, SLGFI, RIL_a, EI, r1, i2_32u, r1, 0, sub, subu64)
4e4bb438
RH
904/* SUBTRACT LOGICAL WITH BORROW */
905 C(0xb999, SLBR, RRE, Z, r1, r2, new, r1_32, subb, subb32)
906 C(0xb989, SLBGR, RRE, Z, r1, r2, r1, 0, subb, subb64)
907 C(0xe399, SLB, RXY_a, Z, r1, m2_32u, new, r1_32, subb, subb32)
908 C(0xe389, SLBG, RXY_a, Z, r1, m2_64, r1, 0, subb, subb64)
00d2dc19 909
b9836c1a
RH
910/* SUPERVISOR CALL */
911 C(0x0a00, SVC, I, Z, 0, 0, 0, 0, svc, 0)
912
0c0974d7
AJ
913/* TEST ADDRESSING MODE */
914 C(0x010b, TAM, E, Z, 0, 0, 0, 0, tam, 0)
915
6699adfc
AJ
916/* TEST AND SET */
917 C(0x9300, TS, S, Z, 0, a2, 0, 0, ts, 0)
918
31aa97d1 919/* TEST DATA CLASS */
ca5f31a0 920 F(0xed10, TCEB, RXE, Z, e1, a2, 0, 0, tceb, 0, IF_BFP)
80a7b759
DH
921 F(0xed11, TCDB, RXE, Z, f1, a2, 0, 0, tcdb, 0, IF_BFP)
922 F(0xed12, TCXB, RXE, Z, 0, a2, x1, 0, tcxb, 0, IF_BFP)
31aa97d1 923
5d4a655a
AJ
924/* TEST DECIMAL */
925 C(0xebc0, TP, RSL, E2, la1, 0, 0, 0, tp, 0)
926
00d2dc19
RH
927/* TEST UNDER MASK */
928 C(0x9100, TM, SI, Z, m1_8u, i2_8u, 0, 0, 0, tm32)
929 C(0xeb51, TMY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, tm32)
930 D(0xa702, TMHH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
931 D(0xa703, TMHL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
932 D(0xa700, TMLH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
933 D(0xa701, TMLL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
d9a39927 934
0a949039
RH
935/* TRANSLATE */
936 C(0xdc00, TR, SS_a, Z, la1, a2, 0, 0, tr, 0)
54f00775
AJ
937/* TRANSLATE AND TEST */
938 C(0xdd00, TRT, SS_a, Z, la1, a2, 0, 0, trt, 0)
b213c9f5
RH
939/* TRANSLATE AND TEST REVERSE */
940 C(0xd000, TRTR, SS_a, ETF3, la1, a2, 0, 0, trtr, 0)
3f4de675
AJ
941/* TRANSLATE EXTENDED */
942 C(0xb2a5, TRE, RRE, Z, 0, r2, r1_P, 0, tre, 0)
0a949039 943
4065ae76
AJ
944/* TRANSLATE ONE TO ONE */
945 C(0xb993, TROO, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
946/* TRANSLATE ONE TO TWO */
947 C(0xb992, TROT, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
948/* TRANSLATE TWO TO ONE */
949 C(0xb991, TRTO, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
950/* TRANSLATE TWO TO TWO */
951 C(0xb990, TRTT, RRF_c, E2, 0, 0, 0, 0, trXX, 0)
952
0a949039
RH
953/* UNPACK */
954 /* Really format SS_b, but we pack both lengths into one argument
955 for the helper call, so we might as well leave one 8-bit field. */
956 C(0xf300, UNPK, SS_a, Z, la1, a2, 0, 0, unpk, 0)
1a35f08a
AJ
957/* UNPACK ASCII */
958 C(0xea00, UNPKA, SS_a, E2, la1, a2, 0, 0, unpka, 0)
15417787
AJ
959/* UNPACK UNICODE */
960 C(0xe200, UNPKU, SS_a, E2, la1, a2, 0, 0, unpku, 0)
0a949039 961
7705c750
DH
962/* MSA Instructions */
963 D(0xb91e, KMAC, RRE, MSA, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMAC)
964 D(0xb928, PCKMO, RRE, MSA3, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PCKMO)
965 D(0xb92a, KMF, RRE, MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMF)
966 D(0xb92b, KMO, RRE, MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMO)
967 D(0xb92c, PCC, RRE, MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PCC)
968 D(0xb92d, KMCTR, RRF_b, MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMCTR)
969 D(0xb92e, KM, RRE, MSA, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KM)
970 D(0xb92f, KMC, RRE, MSA, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMC)
971 D(0xb93c, PPNO, RRE, MSA5, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PPNO)
972 D(0xb93e, KIMD, RRE, MSA, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KIMD)
973 D(0xb93f, KLMD, RRE, MSA, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KLMD)
974
6d841663
DH
975/* === Vector Support Instructions === */
976
977/* VECTOR GATHER ELEMENT */
978 E(0xe713, VGEF, VRV, V, la2, 0, 0, 0, vge, 0, ES_32, IF_VEC)
979 E(0xe712, VGEG, VRV, V, la2, 0, 0, 0, vge, 0, ES_64, IF_VEC)
64052062
DH
980/* VECTOR GENERATE BYTE MASK */
981 F(0xe744, VGBM, VRI_a, V, 0, 0, 0, 0, vgbm, 0, IF_VEC)
eeb11a90
DH
982/* VECTOR GENERATE MASK */
983 F(0xe746, VGM, VRI_b, V, 0, 0, 0, 0, vgm, 0, IF_VEC)
b4f5ae47
DH
984/* VECTOR LOAD */
985 F(0xe706, VL, VRX, V, la2, 0, 0, 0, vl, 0, IF_VEC)
986 F(0xe756, VLR, VRR_a, V, 0, 0, 0, 0, vlr, 0, IF_VEC)
79c1620a
DH
987/* VECTOR LOAD AND REPLICATE */
988 F(0xe705, VLREP, VRX, V, la2, 0, 0, 0, vlrep, 0, IF_VEC)
4b664394
DH
989/* VECTOR LOAD ELEMENT */
990 E(0xe700, VLEB, VRX, V, la2, 0, 0, 0, vle, 0, ES_8, IF_VEC)
991 E(0xe701, VLEH, VRX, V, la2, 0, 0, 0, vle, 0, ES_16, IF_VEC)
992 E(0xe703, VLEF, VRX, V, la2, 0, 0, 0, vle, 0, ES_32, IF_VEC)
993 E(0xe702, VLEG, VRX, V, la2, 0, 0, 0, vle, 0, ES_64, IF_VEC)
e6790d32
DH
994/* VECTOR LOAD ELEMENT IMMEDIATE */
995 E(0xe740, VLEIB, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_8, IF_VEC)
996 E(0xe741, VLEIH, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_16, IF_VEC)
997 E(0xe743, VLEIF, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_32, IF_VEC)
998 E(0xe742, VLEIG, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_64, IF_VEC)
5d203bea
DH
999/* VECTOR LOAD GR FROM VR ELEMENT */
1000 F(0xe721, VLGV, VRS_c, V, la2, 0, r1, 0, vlgv, 0, IF_VEC)
f180da83
DH
1001/* VECTOR LOAD LOGICAL ELEMENT AND ZERO */
1002 F(0xe704, VLLEZ, VRX, V, la2, 0, 0, 0, vllez, 0, IF_VEC)
0a85f825
DH
1003/* VECTOR LOAD MULTIPLE */
1004 F(0xe736, VLM, VRS_a, V, la2, 0, 0, 0, vlm, 0, IF_VEC)
60e9e3f1
DH
1005/* VECTOR LOAD TO BLOCK BOUNDARY */
1006 F(0xe707, VLBB, VRX, V, la2, 0, 0, 0, vlbb, 0, IF_VEC)
90e3af6b
DH
1007/* VECTOR LOAD VR ELEMENT FROM GR */
1008 F(0xe722, VLVG, VRS_b, V, la2, r3, 0, 0, vlvg, 0, IF_VEC)
76dbd289
DH
1009/* VECTOR LOAD VR FROM GRS DISJOINT */
1010 F(0xe762, VLVGP, VRR_f, V, r2, r3, 0, 0, vlvgp, 0, IF_VEC)
f6c7ff67
DH
1011/* VECTOR LOAD WITH LENGTH */
1012 F(0xe737, VLL, VRS_b, V, la2, r3_32u, 0, 0, vll, 0, IF_VEC)
2ff47e6c
DH
1013/* VECTOR MERGE HIGH */
1014 F(0xe761, VMRH, VRR_c, V, 0, 0, 0, 0, vmr, 0, IF_VEC)
1015/* VECTOR MERGE LOW */
1016 F(0xe760, VMRL, VRR_c, V, 0, 0, 0, 0, vmr, 0, IF_VEC)
73946f0d
DH
1017/* VECTOR PACK */
1018 F(0xe794, VPK, VRR_c, V, 0, 0, 0, 0, vpk, 0, IF_VEC)
1019/* VECTOR PACK SATURATE */
1020 F(0xe797, VPKS, VRR_b, V, 0, 0, 0, 0, vpk, 0, IF_VEC)
1021/* VECTOR PACK LOGICAL SATURATE */
1022 F(0xe795, VPKLS, VRR_b, V, 0, 0, 0, 0, vpk, 0, IF_VEC)
7aaf844d 1023 F(0xe78c, VPERM, VRR_e, V, 0, 0, 0, 0, vperm, 0, IF_VEC)
66bb3333
DH
1024/* VECTOR PERMUTE DOUBLEWORD IMMEDIATE */
1025 F(0xe784, VPDI, VRR_c, V, 0, 0, 0, 0, vpdi, 0, IF_VEC)
28d08731
DH
1026/* VECTOR REPLICATE */
1027 F(0xe74d, VREP, VRI_c, V, 0, 0, 0, 0, vrep, 0, IF_VEC)
3a338e29
DH
1028/* VECTOR REPLICATE IMMEDIATE */
1029 F(0xe745, VREPI, VRI_a, V, 0, 0, 0, 0, vrepi, 0, IF_VEC)
7007ec27
DH
1030/* VECTOR SCATTER ELEMENT */
1031 E(0xe71b, VSCEF, VRV, V, la2, 0, 0, 0, vsce, 0, ES_32, IF_VEC)
1032 E(0xe71a, VSCEG, VRV, V, la2, 0, 0, 0, vsce, 0, ES_64, IF_VEC)
db23070c
DH
1033/* VECTOR SELECT */
1034 F(0xe78d, VSEL, VRR_e, V, 0, 0, 0, 0, vsel, 0, IF_VEC)
a2338cfb
DH
1035/* VECTOR SIGN EXTEND TO DOUBLEWORD */
1036 F(0xe75f, VSEG, VRR_a, V, 0, 0, 0, 0, vseg, 0, IF_VEC)
15e12add
DH
1037/* VECTOR STORE */
1038 F(0xe70e, VST, VRX, V, la2, 0, 0, 0, vst, 0, IF_VEC)
7b9a236e
DH
1039/* VECTOR STORE ELEMENT */
1040 E(0xe708, VSTEB, VRX, V, la2, 0, 0, 0, vste, 0, ES_8, IF_VEC)
1041 E(0xe709, VSTEH, VRX, V, la2, 0, 0, 0, vste, 0, ES_16, IF_VEC)
1042 E(0xe70b, VSTEF, VRX, V, la2, 0, 0, 0, vste, 0, ES_32, IF_VEC)
1043 E(0xe70a, VSTEG, VRX, V, la2, 0, 0, 0, vste, 0, ES_64, IF_VEC)
29b8bcf1
DH
1044/* VECTOR STORE MULTIPLE */
1045 F(0xe73e, VSTM, VRS_a, V, la2, 0, 0, 0, vstm, 0, IF_VEC)
0e0a5b49
DH
1046/* VECTOR STORE WITH LENGTH */
1047 F(0xe73f, VSTL, VRS_b, V, la2, r3_32u, 0, 0, vstl, 0, IF_VEC)
2c7590c8
DH
1048/* VECTOR UNPACK HIGH */
1049 F(0xe7d7, VUPH, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
1050/* VECTOR UNPACK LOGICAL HIGH */
1051 F(0xe7d5, VUPLH, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
1052/* VECTOR UNPACK LOW */
1053 F(0xe7d6, VUPL, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
1054/* VECTOR UNPACK LOGICAL LOW */
1055 F(0xe7d4, VUPLL, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
6d841663 1056
b1e67c8f
DH
1057/* === Vector Integer Instructions === */
1058
1059/* VECTOR ADD */
1060 F(0xe7f3, VA, VRR_c, V, 0, 0, 0, 0, va, 0, IF_VEC)
c563f28a
DH
1061/* VECTOR ADD COMPUTE CARRY */
1062 F(0xe7f1, VACC, VRR_c, V, 0, 0, 0, 0, vacc, 0, IF_VEC)
8d4eb4b6
DH
1063/* VECTOR ADD WITH CARRY */
1064 F(0xe7bb, VAC, VRR_d, V, 0, 0, 0, 0, vac, 0, IF_VEC)
8a931bb8
DH
1065/* VECTOR ADD WITH CARRY COMPUTE CARRY */
1066 F(0xe7b9, VACCC, VRR_d, V, 0, 0, 0, 0, vaccc, 0, IF_VEC)
4c1bd09a
DH
1067/* VECTOR AND */
1068 F(0xe768, VN, VRR_c, V, 0, 0, 0, 0, vn, 0, IF_VEC)
1069/* VECTOR AND WITH COMPLEMENT */
1070 F(0xe769, VNC, VRR_c, V, 0, 0, 0, 0, vnc, 0, IF_VEC)
c1a81d4b
DH
1071/* VECTOR AVERAGE */
1072 F(0xe7f2, VAVG, VRR_c, V, 0, 0, 0, 0, vavg, 0, IF_VEC)
801aa78b
DH
1073/* VECTOR AVERAGE LOGICAL */
1074 F(0xe7f0, VAVGL, VRR_c, V, 0, 0, 0, 0, vavgl, 0, IF_VEC)
b0160ec9
DH
1075/* VECTOR CHECKSUM */
1076 F(0xe766, VCKSM, VRR_c, V, 0, 0, 0, 0, vcksm, 0, IF_VEC)
751a564f
DH
1077/* VECTOR ELEMENT COMPARE */
1078 F(0xe7db, VEC, VRR_a, V, 0, 0, 0, 0, vec, cmps64, IF_VEC)
1079/* VECTOR ELEMENT COMPARE LOGICAL */
1080 F(0xe7d9, VECL, VRR_a, V, 0, 0, 0, 0, vec, cmpu64, IF_VEC)
ff825c6d
DH
1081/* VECTOR COMPARE EQUAL */
1082 E(0xe7f8, VCEQ, VRR_b, V, 0, 0, 0, 0, vc, 0, TCG_COND_EQ, IF_VEC)
1083/* VECTOR COMPARE HIGH */
1084 E(0xe7fb, VCH, VRR_b, V, 0, 0, 0, 0, vc, 0, TCG_COND_GT, IF_VEC)
1085/* VECTOR COMPARE HIGH LOGICAL */
1086 E(0xe7f9, VCHL, VRR_b, V, 0, 0, 0, 0, vc, 0, TCG_COND_GTU, IF_VEC)
28863f1d
DH
1087/* VECTOR COUNT LEADING ZEROS */
1088 F(0xe753, VCLZ, VRR_a, V, 0, 0, 0, 0, vclz, 0, IF_VEC)
449a8ac2
DH
1089/* VECTOR COUNT TRAILING ZEROS */
1090 F(0xe752, VCTZ, VRR_a, V, 0, 0, 0, 0, vctz, 0, IF_VEC)
44951e6b
DH
1091/* VECTOR EXCLUSIVE OR */
1092 F(0xe76d, VX, VRR_c, V, 0, 0, 0, 0, vx, 0, IF_VEC)
697a45d6
DH
1093/* VECTOR GALOIS FIELD MULTIPLY SUM */
1094 F(0xe7b4, VGFM, VRR_c, V, 0, 0, 0, 0, vgfm, 0, IF_VEC)
1095/* VECTOR GALOIS FIELD MULTIPLY SUM AND ACCUMULATE */
1096 F(0xe7bc, VGFMA, VRR_d, V, 0, 0, 0, 0, vgfma, 0, IF_VEC)
53e0ca22
DH
1097/* VECTOR LOAD COMPLEMENT */
1098 F(0xe7de, VLC, VRR_a, V, 0, 0, 0, 0, vlc, 0, IF_VEC)
35f0ba5f
DH
1099/* VECTOR LOAD POSITIVE */
1100 F(0xe7df, VLP, VRR_a, V, 0, 0, 0, 0, vlp, 0, IF_VEC)
86f521b6
DH
1101/* VECTOR MAXIMUM */
1102 F(0xe7ff, VMX, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1103/* VECTOR MAXIMUM LOGICAL */
1104 F(0xe7fd, VMXL, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1105/* VECTOR MINIMUM */
1106 F(0xe7fe, VMN, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1107/* VECTOR MINIMUM LOGICAL */
1108 F(0xe7fc, VMNL, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1b430aec
DH
1109/* VECTOR MULTIPLY AND ADD LOW */
1110 F(0xe7aa, VMAL, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1111/* VECTOR MULTIPLY AND ADD HIGH */
1112 F(0xe7ab, VMAH, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1113/* VECTOR MULTIPLY AND ADD LOGICAL HIGH */
1114 F(0xe7a9, VMALH, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1115/* VECTOR MULTIPLY AND ADD EVEN */
1116 F(0xe7ae, VMAE, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1117/* VECTOR MULTIPLY AND ADD LOGICAL EVEN */
1118 F(0xe7ac, VMALE, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1119/* VECTOR MULTIPLY AND ADD ODD */
1120 F(0xe7af, VMAO, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1121/* VECTOR MULTIPLY AND ADD LOGICAL ODD */
1122 F(0xe7ad, VMALO, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
2bf3ee38
DH
1123/* VECTOR MULTIPLY HIGH */
1124 F(0xe7a3, VMH, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1125/* VECTOR MULTIPLY LOGICAL HIGH */
1126 F(0xe7a1, VMLH, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1127/* VECTOR MULTIPLY LOW */
1128 F(0xe7a2, VML, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1129/* VECTOR MULTIPLY EVEN */
1130 F(0xe7a6, VME, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1131/* VECTOR MULTIPLY LOGICAL EVEN */
1132 F(0xe7a4, VMLE, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1133/* VECTOR MULTIPLY ODD */
1134 F(0xe7a7, VMO, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1135/* VECTOR MULTIPLY LOGICAL ODD */
1136 F(0xe7a5, VMLO, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
5bc4a20f
DH
1137/* VECTOR NAND */
1138 F(0xe76e, VNN, VRR_c, VE, 0, 0, 0, 0, vnn, 0, IF_VEC)
2a01d94c
DH
1139/* VECTOR NOR */
1140 F(0xe76b, VNO, VRR_c, V, 0, 0, 0, 0, vno, 0, IF_VEC)
9023434b
DH
1141/* VECTOR NOT EXCLUSIVE OR */
1142 F(0xe76c, VNX, VRR_c, VE, 0, 0, 0, 0, vnx, 0, IF_VEC)
2bbf4dff
DH
1143/* VECTOR OR */
1144 F(0xe76a, VO, VRR_c, V, 0, 0, 0, 0, vo, 0, IF_VEC)
a014bcc7
DH
1145/* VECTOR OR WITH COMPLEMENT */
1146 F(0xe76f, VOC, VRR_c, VE, 0, 0, 0, 0, voc, 0, IF_VEC)
c3838aaa
DH
1147/* VECTOR POPULATION COUNT */
1148 F(0xe750, VPOPCT, VRR_a, V, 0, 0, 0, 0, vpopct, 0, IF_VEC)
55236da2
DH
1149/* VECTOR ELEMENT ROTATE LEFT LOGICAL */
1150 F(0xe773, VERLLV, VRR_c, V, 0, 0, 0, 0, verllv, 0, IF_VEC)
1151 F(0xe733, VERLL, VRS_a, V, la2, 0, 0, 0, verll, 0, IF_VEC)
5c4b0ab4
DH
1152/* VECTOR ELEMENT ROTATE AND INSERT UNDER MASK */
1153 F(0xe772, VERIM, VRI_d, V, 0, 0, 0, 0, verim, 0, IF_VEC)
5f164905
DH
1154/* VECTOR ELEMENT SHIFT LEFT */
1155 F(0xe770, VESLV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1156 F(0xe730, VESL, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
1157/* VECTOR ELEMENT SHIFT RIGHT ARITHMETIC */
1158 F(0xe77a, VESRAV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1159 F(0xe73a, VESRA, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
1160/* VECTOR ELEMENT SHIFT RIGHT LOGICAL */
1161 F(0xe778, VESRLV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1162 F(0xe738, VESRL, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
dea33fc3
DH
1163/* VECTOR SHIFT LEFT */
1164 F(0xe774, VSL, VRR_c, V, 0, 0, 0, 0, vsl, 0, IF_VEC)
1165/* VECTOR SHIFT LEFT BY BYTE */
1166 F(0xe775, VSLB, VRR_c, V, 0, 0, 0, 0, vsl, 0, IF_VEC)
0abddd6c
DH
1167/* VECTOR SHIFT LEFT DOUBLE BY BYTE */
1168 F(0xe777, VSLDB, VRI_d, V, 0, 0, 0, 0, vsldb, 0, IF_VEC)
5f724887
DH
1169/* VECTOR SHIFT RIGHT ARITHMETIC */
1170 F(0xe77e, VSRA, VRR_c, V, 0, 0, 0, 0, vsra, 0, IF_VEC)
1171/* VECTOR SHIFT RIGHT ARITHMETIC BY BYTE */
1172 F(0xe77f, VSRAB, VRR_c, V, 0, 0, 0, 0, vsra, 0, IF_VEC)
8112274f
DH
1173/* VECTOR SHIFT RIGHT LOGICAL */
1174 F(0xe77c, VSRL, VRR_c, V, 0, 0, 0, 0, vsrl, 0, IF_VEC)
1175/* VECTOR SHIFT RIGHT LOGICAL BY BYTE */
1176 F(0xe77d, VSRLB, VRR_c, V, 0, 0, 0, 0, vsrl, 0, IF_VEC)
ea8d7840
DH
1177/* VECTOR SUBTRACT */
1178 F(0xe7f7, VS, VRR_c, V, 0, 0, 0, 0, vs, 0, IF_VEC)
1ee2d7ba
DH
1179/* VECTOR SUBTRACT COMPUTE BORROW INDICATION */
1180 F(0xe7f5, VSCBI, VRR_c, V, 0, 0, 0, 0, vscbi, 0, IF_VEC)
48390a7c
DH
1181/* VECTOR SUBTRACT WITH BORROW INDICATION */
1182 F(0xe7bf, VSBI, VRR_d, V, 0, 0, 0, 0, vsbi, 0, IF_VEC)
bc725e65
DH
1183/* VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION */
1184 F(0xe7bd, VSBCBI, VRR_d, V, 0, 0, 0, 0, vsbcbi, 0, IF_VEC)
fe2be36d
DH
1185/* VECTOR SUM ACROSS DOUBLEWORD */
1186 F(0xe765, VSUMG, VRR_c, V, 0, 0, 0, 0, vsumg, 0, IF_VEC)
8dc69a19
DH
1187/* VECTOR SUM ACROSS QUADWORD */
1188 F(0xe767, VSUMQ, VRR_c, V, 0, 0, 0, 0, vsumq, 0, IF_VEC)
e58de341
DH
1189/* VECTOR SUM ACROSS WORD */
1190 F(0xe764, VSUM, VRR_c, V, 0, 0, 0, 0, vsum, 0, IF_VEC)
db156ebf
DH
1191/* VECTOR TEST UNDER MASK */
1192 F(0xe7d8, VTM, VRR_a, V, 0, 0, 0, 0, vtm, 0, IF_VEC)
b1e67c8f 1193
1fd28638
DH
1194/* === Vector String Instructions === */
1195
1196/* VECTOR FIND ANY ELEMENT EQUAL */
1197 F(0xe782, VFAE, VRR_b, V, 0, 0, 0, 0, vfae, 0, IF_VEC)
8c0e1e58
DH
1198/* VECTOR FIND ELEMENT EQUAL */
1199 F(0xe780, VFEE, VRR_b, V, 0, 0, 0, 0, vfee, 0, IF_VEC)
074e99b3
DH
1200/* VECTOR FIND ELEMENT NOT EQUAL */
1201 F(0xe781, VFENE, VRR_b, V, 0, 0, 0, 0, vfene, 0, IF_VEC)
be6324c6
DH
1202/* VECTOR ISOLATE STRING */
1203 F(0xe75c, VISTR, VRR_a, V, 0, 0, 0, 0, vistr, 0, IF_VEC)
13b0228f
DH
1204/* VECTOR STRING RANGE COMPARE */
1205 F(0xe78a, VSTRC, VRR_d, V, 0, 0, 0, 0, vstrc, 0, IF_VEC)
1fd28638 1206
3a0eae85
DH
1207/* === Vector Floating-Point Instructions */
1208
1209/* VECTOR FP ADD */
1210 F(0xe7e3, VFA, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
5b89f0fb
DH
1211/* VECTOR FP COMPARE SCALAR */
1212 F(0xe7cb, WFC, VRR_a, V, 0, 0, 0, 0, wfc, 0, IF_VEC)
1213/* VECTOR FP COMPARE AND SIGNAL SCALAR */
1214 F(0xe7ca, WFK, VRR_a, V, 0, 0, 0, 0, wfc, 0, IF_VEC)
2c806ab4
DH
1215/* VECTOR FP COMPARE EQUAL */
1216 F(0xe7e8, VFCE, VRR_c, V, 0, 0, 0, 0, vfc, 0, IF_VEC)
1217/* VECTOR FP COMPARE HIGH */
1218 F(0xe7eb, VFCH, VRR_c, V, 0, 0, 0, 0, vfc, 0, IF_VEC)
1219/* VECTOR FP COMPARE HIGH OR EQUAL */
1220 F(0xe7ea, VFCHE, VRR_c, V, 0, 0, 0, 0, vfc, 0, IF_VEC)
bb03fd84
DH
1221/* VECTOR FP CONVERT FROM FIXED 64-BIT */
1222 F(0xe7c3, VCDG, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
9b8d1a38
DH
1223/* VECTOR FP CONVERT FROM LOGICAL 64-BIT */
1224 F(0xe7c1, VCDLG, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
35b3bb1c
DH
1225/* VECTOR FP CONVERT TO FIXED 64-BIT */
1226 F(0xe7c2, VCGD, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
09c04e4b
DH
1227/* VECTOR FP CONVERT TO LOGICAL 64-BIT */
1228 F(0xe7c0, VCLGD, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
817a1cec
DH
1229/* VECTOR FP DIVIDE */
1230 F(0xe7e5, VFD, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
60d0ab29
DH
1231/* VECTOR LOAD FP INTEGER */
1232 F(0xe7c7, VFI, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
1a76e59d
DH
1233/* VECTOR LOAD LENGTHENED */
1234 F(0xe7c4, VFLL, VRR_a, V, 0, 0, 0, 0, vfll, 0, IF_VEC)
4500ede4
DH
1235/* VECTOR LOAD ROUNDED */
1236 F(0xe7c5, VFLR, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
8d47d4d2
DH
1237/* VECTOR FP MULTIPLY */
1238 F(0xe7e7, VFM, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
c64c5984
DH
1239/* VECTOR FP MULTIPLY AND ADD */
1240 F(0xe78f, VFMA, VRR_e, V, 0, 0, 0, 0, vfma, 0, IF_VEC)
1241/* VECTOR FP MULTIPLY AND SUBTRACT */
1242 F(0xe78e, VFMS, VRR_e, V, 0, 0, 0, 0, vfma, 0, IF_VEC)
76e35cc7
DH
1243/* VECTOR FP PERFORM SIGN OPERATION */
1244 F(0xe7cc, VFPSO, VRR_a, V, 0, 0, 0, 0, vfpso, 0, IF_VEC)
5938f20c
DH
1245/* VECTOR FP SQUARE ROOT */
1246 F(0xe7ce, VFSQ, VRR_a, V, 0, 0, 0, 0, vfsq, 0, IF_VEC)
658a395f
DH
1247/* VECTOR FP SUBTRACT */
1248 F(0xe7e2, VFS, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
83b955f9
DH
1249/* VECTOR FP TEST DATA CLASS IMMEDIATE */
1250 F(0xe74a, VFTCI, VRI_e, V, 0, 0, 0, 0, vftci, 0, IF_VEC)
3a0eae85 1251
d9a39927 1252#ifndef CONFIG_USER_ONLY
3d596f49 1253/* COMPARE AND SWAP AND PURGE */
b51cc1d8
DH
1254 E(0xb250, CSP, RRE, Z, r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL, IF_PRIV)
1255 E(0xb98a, CSPG, RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEQ, IF_PRIV)
972e35b9 1256/* DIAGNOSE (KVM hypercall) */
b51cc1d8 1257 F(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0, IF_PRIV)
8026417c 1258/* INSERT STORAGE KEY EXTENDED */
b51cc1d8 1259 F(0xb229, ISKE, RRE, Z, 0, r2_o, new, r1_8, iske, 0, IF_PRIV)
be7f28de 1260/* INVALIDATE DAT TABLE ENTRY */
b51cc1d8 1261 F(0xb98e, IPDE, RRF_b, Z, r1_o, r2_o, 0, 0, idte, 0, IF_PRIV)
cfef53e3 1262/* INVALIDATE PAGE TABLE ENTRY */
b51cc1d8 1263 F(0xb221, IPTE, RRF_a, Z, r1_o, r2_o, 0, 0, ipte, 0, IF_PRIV)
504488b8 1264/* LOAD CONTROL */
b51cc1d8
DH
1265 F(0xb700, LCTL, RS_a, Z, 0, a2, 0, 0, lctl, 0, IF_PRIV)
1266 F(0xeb2f, LCTLG, RSY_a, Z, 0, a2, 0, 0, lctlg, 0, IF_PRIV)
190b2422 1267/* LOAD PROGRAM PARAMETER */
b51cc1d8 1268 F(0xb280, LPP, S, LPP, 0, m2_64, 0, 0, lpp, 0, IF_PRIV)
8b5ff571 1269/* LOAD PSW */
b51cc1d8 1270 F(0x8200, LPSW, S, Z, 0, a2, 0, 0, lpsw, 0, IF_PRIV)
7ab938d7 1271/* LOAD PSW EXTENDED */
b51cc1d8 1272 F(0xb2b2, LPSWE, S, Z, 0, a2, 0, 0, lpswe, 0, IF_PRIV)
d8fe4a9c 1273/* LOAD REAL ADDRESS */
b51cc1d8
DH
1274 F(0xb100, LRA, RX_a, Z, 0, a2, r1, 0, lra, 0, IF_PRIV)
1275 F(0xe313, LRAY, RXY_a, LD, 0, a2, r1, 0, lra, 0, IF_PRIV)
1276 F(0xe303, LRAG, RXY_a, Z, 0, a2, r1, 0, lra, 0, IF_PRIV)
9c3fd85b 1277/* LOAD USING REAL ADDRESS */
5e34df7c
RH
1278 E(0xb24b, LURA, RRE, Z, 0, 0, new, r1_32, lura, 0, MO_TEUL, IF_PRIV)
1279 E(0xb905, LURAG, RRE, Z, 0, 0, r1, 0, lura, 0, MO_TEQ, IF_PRIV)
97c3ab61 1280/* MOVE TO PRIMARY */
b51cc1d8 1281 F(0xda00, MVCP, SS_d, Z, la1, a2, 0, 0, mvcp, 0, IF_PRIV)
97c3ab61 1282/* MOVE TO SECONDARY */
b51cc1d8 1283 F(0xdb00, MVCS, SS_d, Z, la1, a2, 0, 0, mvcs, 0, IF_PRIV)
0568d8aa 1284/* PURGE TLB */
b51cc1d8 1285 F(0xb20d, PTLB, S, Z, 0, 0, 0, 0, ptlb, 0, IF_PRIV)
5cc69c54 1286/* RESET REFERENCE BIT EXTENDED */
b51cc1d8 1287 F(0xb22a, RRBE, RRE, Z, 0, r2_o, 0, 0, rrbe, 0, IF_PRIV)
dc458df9 1288/* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
b51cc1d8 1289 F(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0, IF_PRIV)
14244b21 1290/* SET ADDRESS SPACE CONTROL FAST */
b51cc1d8 1291 F(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0, IF_PRIV)
35289799 1292/* SET CLOCK */
b51cc1d8 1293 F(0xb204, SCK, S, Z, la2, 0, 0, 0, sck, 0, IF_PRIV)
dd3eb7b5 1294/* SET CLOCK COMPARATOR */
b51cc1d8 1295 F(0xb206, SCKC, S, Z, 0, m2_64a, 0, 0, sckc, 0, IF_PRIV)
257a119e 1296/* SET CLOCK PROGRAMMABLE FIELD */
b51cc1d8 1297 F(0x0107, SCKPF, E, Z, 0, 0, 0, 0, sckpf, 0, IF_PRIV)
c4f0a863 1298/* SET CPU TIMER */
b51cc1d8 1299 F(0xb208, SPT, S, Z, 0, m2_64a, 0, 0, spt, 0, IF_PRIV)
e805a0d3 1300/* SET PREFIX */
b51cc1d8 1301 F(0xb210, SPX, S, Z, 0, m2_32ua, 0, 0, spx, 0, IF_PRIV)
28d55556 1302/* SET PSW KEY FROM ADDRESS */
b51cc1d8 1303 F(0xb20a, SPKA, S, Z, 0, a2, 0, 0, spka, 0, IF_PRIV)
2bbde27f 1304/* SET STORAGE KEY EXTENDED */
b51cc1d8 1305 F(0xb22b, SSKE, RRF_c, Z, r1_o, r2_o, 0, 0, sske, 0, IF_PRIV)
7d30bb73 1306/* SET SYSTEM MASK */
b51cc1d8 1307 F(0x8000, SSM, S, Z, 0, m2_8u, 0, 0, ssm, 0, IF_PRIV)
0c240015 1308/* SIGNAL PROCESSOR */
b51cc1d8 1309 F(0xae00, SIGP, RS_a, Z, 0, a2, 0, 0, sigp, 0, IF_PRIV)
dd3eb7b5 1310/* STORE CLOCK COMPARATOR */
b51cc1d8 1311 F(0xb207, STCKC, S, Z, la2, 0, new, m1_64a, stckc, 0, IF_PRIV)
504488b8 1312/* STORE CONTROL */
b51cc1d8
DH
1313 F(0xb600, STCTL, RS_a, Z, 0, a2, 0, 0, stctl, 0, IF_PRIV)
1314 F(0xeb25, STCTG, RSY_a, Z, 0, a2, 0, 0, stctg, 0, IF_PRIV)
411fea3d 1315/* STORE CPU ADDRESS */
b51cc1d8 1316 F(0xb212, STAP, S, Z, la2, 0, new, m1_16a, stap, 0, IF_PRIV)
71bd6669 1317/* STORE CPU ID */
b51cc1d8 1318 F(0xb202, STIDP, S, Z, la2, 0, new, m1_64a, stidp, 0, IF_PRIV)
c4f0a863 1319/* STORE CPU TIMER */
b51cc1d8 1320 F(0xb209, STPT, S, Z, la2, 0, new, m1_64a, stpt, 0, IF_PRIV)
fc778b55 1321/* STORE FACILITY LIST */
b51cc1d8 1322 F(0xb2b1, STFL, S, Z, 0, 0, 0, 0, stfl, 0, IF_PRIV)
e805a0d3 1323/* STORE PREFIX */
b51cc1d8 1324 F(0xb211, STPX, S, Z, la2, 0, new, m1_32a, stpx, 0, IF_PRIV)
d14b3e09 1325/* STORE SYSTEM INFORMATION */
b51cc1d8 1326 F(0xb27d, STSI, S, Z, 0, a2, 0, 0, stsi, 0, IF_PRIV)
145cdb40 1327/* STORE THEN AND SYSTEM MASK */
b51cc1d8 1328 F(0xac00, STNSM, SI, Z, la1, 0, 0, 0, stnosm, 0, IF_PRIV)
145cdb40 1329/* STORE THEN OR SYSTEM MASK */
b51cc1d8 1330 F(0xad00, STOSM, SI, Z, la1, 0, 0, 0, stnosm, 0, IF_PRIV)
204504e2 1331/* STORE USING REAL ADDRESS */
5e34df7c
RH
1332 E(0xb246, STURA, RRE, Z, r1_o, 0, 0, 0, stura, 0, MO_TEUL, IF_PRIV)
1333 E(0xb925, STURG, RRE, Z, r1_o, 0, 0, 0, stura, 0, MO_TEQ, IF_PRIV)
f79f1ca4 1334/* TEST BLOCK */
b51cc1d8 1335 F(0xb22c, TB, RRE, Z, 0, r2_o, 0, 0, testblock, 0, IF_PRIV)
112bf079
RH
1336/* TEST PROTECTION */
1337 C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0)
2c423fc0 1338
ad8a4570 1339/* CCW I/O Instructions */
b51cc1d8
DH
1340 F(0xb276, XSCH, S, Z, 0, 0, 0, 0, xsch, 0, IF_PRIV)
1341 F(0xb230, CSCH, S, Z, 0, 0, 0, 0, csch, 0, IF_PRIV)
1342 F(0xb231, HSCH, S, Z, 0, 0, 0, 0, hsch, 0, IF_PRIV)
1343 F(0xb232, MSCH, S, Z, 0, insn, 0, 0, msch, 0, IF_PRIV)
1344 F(0xb23b, RCHP, S, Z, 0, 0, 0, 0, rchp, 0, IF_PRIV)
1345 F(0xb238, RSCH, S, Z, 0, 0, 0, 0, rsch, 0, IF_PRIV)
1346 F(0xb237, SAL, S, Z, 0, 0, 0, 0, sal, 0, IF_PRIV)
1347 F(0xb23c, SCHM, S, Z, 0, insn, 0, 0, schm, 0, IF_PRIV)
1348 F(0xb274, SIGA, S, Z, 0, 0, 0, 0, siga, 0, IF_PRIV)
1349 F(0xb23a, STCPS, S, Z, 0, 0, 0, 0, stcps, 0, IF_PRIV)
1350 F(0xb233, SSCH, S, Z, 0, insn, 0, 0, ssch, 0, IF_PRIV)
1351 F(0xb239, STCRW, S, Z, 0, insn, 0, 0, stcrw, 0, IF_PRIV)
1352 F(0xb234, STSCH, S, Z, 0, insn, 0, 0, stsch, 0, IF_PRIV)
1353 F(0xb236, TPI , S, Z, la2, 0, 0, 0, tpi, 0, IF_PRIV)
1354 F(0xb235, TSCH, S, Z, 0, insn, 0, 0, tsch, 0, IF_PRIV)
2c423fc0
RH
1355 /* ??? Not listed in PoO ninth edition, but there's a linux driver that
1356 uses it: "A CHSC subchannel is usually present on LPAR only." */
b51cc1d8 1357 F(0xb25f, CHSC, RRE, Z, 0, insn, 0, 0, chsc, 0, IF_PRIV)
f6c232ce
CH
1358
1359/* zPCI Instructions */
1360 /* None of these instructions are documented in the PoP, so this is all
1361 based upon target/s390x/kvm.c and Linux code and likely incomplete */
b51cc1d8
DH
1362 F(0xebd0, PCISTB, RSY_a, PCI, la2, 0, 0, 0, pcistb, 0, IF_PRIV)
1363 F(0xebd1, SIC, RSY_a, AIS, r1, r3, 0, 0, sic, 0, IF_PRIV)
1364 F(0xb9a0, CLP, RRF_c, PCI, 0, 0, 0, 0, clp, 0, IF_PRIV)
1365 F(0xb9d0, PCISTG, RRE, PCI, 0, 0, 0, 0, pcistg, 0, IF_PRIV)
1366 F(0xb9d2, PCILG, RRE, PCI, 0, 0, 0, 0, pcilg, 0, IF_PRIV)
1367 F(0xb9d3, RPCIT, RRE, PCI, 0, 0, 0, 0, rpcit, 0, IF_PRIV)
1368 F(0xe3d0, MPCIFC, RXY_a, PCI, la2, 0, 0, 0, mpcifc, 0, IF_PRIV)
1369 F(0xe3d4, STPCIFC, RXY_a, PCI, la2, 0, 0, 0, stpcifc, 0, IF_PRIV)
f6c232ce 1370
d9a39927 1371#endif /* CONFIG_USER_ONLY */