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