]> git.proxmox.com Git - mirror_qemu.git/blame - target/s390x/tcg/insn-data.def
Merge remote-tracking branch 'remotes/hdeller/tags/hppa-updates-pull-request' into...
[mirror_qemu.git] / target / s390x / tcg / 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)
fc313c64 48 D(0xeb7a, AGSI, SIY, GIE, la1, i2, new, 0, asi, adds64, MO_TEUQ)
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)
fc313c64 79 D(0xeb7e, ALGSI, SIY, GIE, la1, i2, new, 0, asiu64, addu64, MO_TEUQ)
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)
fc313c64 272 D(0xeb30, CSG, RSY_a, Z, r3_o, r1_o, new, r1, cs, 0, MO_TEUQ)
f3de39c4 273/* COMPARE DOUBLE AND SWAP */
fc313c64
FP
274 D(0xbb00, CDS, RS_a, Z, r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEUQ)
275 D(0xeb31, CDSY, RSY_a, LD, r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEUQ)
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 438 D(0xebf8, LAA, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, laa, adds32, MO_TESL)
fc313c64 439 D(0xebe8, LAAG, RSY_a, ILA, r3, a2, new, in2_r1, laa, adds64, MO_TEUQ)
57af7289 440/* LOAD AND ADD LOGICAL */
4dba4d6f 441 D(0xebfa, LAAL, RSY_a, ILA, r3_32u, a2, new, in2_r1_32, laa, addu32, MO_TEUL)
fc313c64 442 D(0xebea, LAALG, RSY_a, ILA, r3, a2, new, in2_r1, laa, addu64, MO_TEUQ)
57af7289 443/* LOAD AND AND */
4dba4d6f 444 D(0xebf4, LAN, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lan, nz32, MO_TESL)
fc313c64 445 D(0xebe4, LANG, RSY_a, ILA, r3, a2, new, in2_r1, lan, nz64, MO_TEUQ)
57af7289 446/* LOAD AND EXCLUSIVE OR */
4dba4d6f 447 D(0xebf7, LAX, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lax, nz32, MO_TESL)
fc313c64 448 D(0xebe7, LAXG, RSY_a, ILA, r3, a2, new, in2_r1, lax, nz64, MO_TEUQ)
57af7289 449/* LOAD AND OR */
4dba4d6f 450 D(0xebf6, LAO, RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lao, nz32, MO_TESL)
fc313c64 451 D(0xebe6, LAOG, RSY_a, ILA, r3, a2, new, in2_r1, lao, nz64, MO_TEUQ)
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)
fc313c64 568 D(0xc805, LPDG, SSF, ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEUQ)
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 643/* MOVE PAGE */
1a3c443c 644 C(0xb254, MVPG, RRE, Z, 0, 0, 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 749/* ROTATE LEFT SINGLE LOGICAL */
6da170be
IL
750 C(0xeb1d, RLL, RSY_a, Z, r3_o, sh, new, r1_32, rll32, 0)
751 C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh, r1, 0, rll64, 0)
cbe24bfa 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 786/* SHIFT LEFT SINGLE */
6da170be
IL
787 D(0x8b00, SLA, RS_a, Z, r1, sh, new, r1_32, sla, 0, 31)
788 D(0xebdd, SLAK, RSY_a, DO, r3, sh, new, r1_32, sla, 0, 31)
789 D(0xeb0b, SLAG, RSY_a, Z, r3, sh, r1, 0, sla, 0, 63)
cbe24bfa 790/* SHIFT LEFT SINGLE LOGICAL */
6da170be
IL
791 C(0x8900, SLL, RS_a, Z, r1_o, sh, new, r1_32, sll, 0)
792 C(0xebdf, SLLK, RSY_a, DO, r3_o, sh, new, r1_32, sll, 0)
793 C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh, r1, 0, sll, 0)
cbe24bfa 794/* SHIFT RIGHT SINGLE */
6da170be
IL
795 C(0x8a00, SRA, RS_a, Z, r1_32s, sh, new, r1_32, sra, s32)
796 C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh, new, r1_32, sra, s32)
797 C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh, r1, 0, sra, s64)
cbe24bfa 798/* SHIFT RIGHT SINGLE LOGICAL */
6da170be
IL
799 C(0x8800, SRL, RS_a, Z, r1_32u, sh, new, r1_32, srl, 0)
800 C(0xebde, SRLK, RSY_a, DO, r3_32u, sh, new, r1_32, srl, 0)
801 C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh, r1, 0, srl, 0)
a79ba339 802/* SHIFT LEFT DOUBLE */
6da170be 803 D(0x8f00, SLDA, RS_a, Z, r1_D32, sh, new, r1_D32, sla, 0, 63)
a79ba339 804/* SHIFT LEFT DOUBLE LOGICAL */
6da170be 805 C(0x8d00, SLDL, RS_a, Z, r1_D32, sh, new, r1_D32, sll, 0)
a79ba339 806/* SHIFT RIGHT DOUBLE */
6da170be 807 C(0x8e00, SRDA, RS_a, Z, r1_D32, sh, new, r1_D32, sra, s64)
a79ba339 808/* SHIFT RIGHT DOUBLE LOGICAL */
6da170be 809 C(0x8c00, SRDL, RS_a, Z, r1_D32, sh, 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
2a785dfb
DH
992/* VECTOR BIT PERMUTE */
993 E(0xe785, VBPERM, VRR_c, VE, 0, 0, 0, 0, vbperm, 0, 0, IF_VEC)
6d841663
DH
994/* VECTOR GATHER ELEMENT */
995 E(0xe713, VGEF, VRV, V, la2, 0, 0, 0, vge, 0, ES_32, IF_VEC)
996 E(0xe712, VGEG, VRV, V, la2, 0, 0, 0, vge, 0, ES_64, IF_VEC)
64052062
DH
997/* VECTOR GENERATE BYTE MASK */
998 F(0xe744, VGBM, VRI_a, V, 0, 0, 0, 0, vgbm, 0, IF_VEC)
eeb11a90
DH
999/* VECTOR GENERATE MASK */
1000 F(0xe746, VGM, VRI_b, V, 0, 0, 0, 0, vgm, 0, IF_VEC)
b4f5ae47
DH
1001/* VECTOR LOAD */
1002 F(0xe706, VL, VRX, V, la2, 0, 0, 0, vl, 0, IF_VEC)
1003 F(0xe756, VLR, VRR_a, V, 0, 0, 0, 0, vlr, 0, IF_VEC)
79c1620a
DH
1004/* VECTOR LOAD AND REPLICATE */
1005 F(0xe705, VLREP, VRX, V, la2, 0, 0, 0, vlrep, 0, IF_VEC)
4b664394
DH
1006/* VECTOR LOAD ELEMENT */
1007 E(0xe700, VLEB, VRX, V, la2, 0, 0, 0, vle, 0, ES_8, IF_VEC)
1008 E(0xe701, VLEH, VRX, V, la2, 0, 0, 0, vle, 0, ES_16, IF_VEC)
1009 E(0xe703, VLEF, VRX, V, la2, 0, 0, 0, vle, 0, ES_32, IF_VEC)
1010 E(0xe702, VLEG, VRX, V, la2, 0, 0, 0, vle, 0, ES_64, IF_VEC)
e6790d32
DH
1011/* VECTOR LOAD ELEMENT IMMEDIATE */
1012 E(0xe740, VLEIB, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_8, IF_VEC)
1013 E(0xe741, VLEIH, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_16, IF_VEC)
1014 E(0xe743, VLEIF, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_32, IF_VEC)
1015 E(0xe742, VLEIG, VRI_a, V, 0, 0, 0, 0, vlei, 0, ES_64, IF_VEC)
5d203bea
DH
1016/* VECTOR LOAD GR FROM VR ELEMENT */
1017 F(0xe721, VLGV, VRS_c, V, la2, 0, r1, 0, vlgv, 0, IF_VEC)
f180da83
DH
1018/* VECTOR LOAD LOGICAL ELEMENT AND ZERO */
1019 F(0xe704, VLLEZ, VRX, V, la2, 0, 0, 0, vllez, 0, IF_VEC)
0a85f825
DH
1020/* VECTOR LOAD MULTIPLE */
1021 F(0xe736, VLM, VRS_a, V, la2, 0, 0, 0, vlm, 0, IF_VEC)
60e9e3f1
DH
1022/* VECTOR LOAD TO BLOCK BOUNDARY */
1023 F(0xe707, VLBB, VRX, V, la2, 0, 0, 0, vlbb, 0, IF_VEC)
90e3af6b
DH
1024/* VECTOR LOAD VR ELEMENT FROM GR */
1025 F(0xe722, VLVG, VRS_b, V, la2, r3, 0, 0, vlvg, 0, IF_VEC)
76dbd289
DH
1026/* VECTOR LOAD VR FROM GRS DISJOINT */
1027 F(0xe762, VLVGP, VRR_f, V, r2, r3, 0, 0, vlvgp, 0, IF_VEC)
f6c7ff67
DH
1028/* VECTOR LOAD WITH LENGTH */
1029 F(0xe737, VLL, VRS_b, V, la2, r3_32u, 0, 0, vll, 0, IF_VEC)
2ff47e6c
DH
1030/* VECTOR MERGE HIGH */
1031 F(0xe761, VMRH, VRR_c, V, 0, 0, 0, 0, vmr, 0, IF_VEC)
1032/* VECTOR MERGE LOW */
1033 F(0xe760, VMRL, VRR_c, V, 0, 0, 0, 0, vmr, 0, IF_VEC)
73946f0d
DH
1034/* VECTOR PACK */
1035 F(0xe794, VPK, VRR_c, V, 0, 0, 0, 0, vpk, 0, IF_VEC)
1036/* VECTOR PACK SATURATE */
1037 F(0xe797, VPKS, VRR_b, V, 0, 0, 0, 0, vpk, 0, IF_VEC)
1038/* VECTOR PACK LOGICAL SATURATE */
1039 F(0xe795, VPKLS, VRR_b, V, 0, 0, 0, 0, vpk, 0, IF_VEC)
7aaf844d 1040 F(0xe78c, VPERM, VRR_e, V, 0, 0, 0, 0, vperm, 0, IF_VEC)
66bb3333
DH
1041/* VECTOR PERMUTE DOUBLEWORD IMMEDIATE */
1042 F(0xe784, VPDI, VRR_c, V, 0, 0, 0, 0, vpdi, 0, IF_VEC)
28d08731
DH
1043/* VECTOR REPLICATE */
1044 F(0xe74d, VREP, VRI_c, V, 0, 0, 0, 0, vrep, 0, IF_VEC)
3a338e29
DH
1045/* VECTOR REPLICATE IMMEDIATE */
1046 F(0xe745, VREPI, VRI_a, V, 0, 0, 0, 0, vrepi, 0, IF_VEC)
7007ec27
DH
1047/* VECTOR SCATTER ELEMENT */
1048 E(0xe71b, VSCEF, VRV, V, la2, 0, 0, 0, vsce, 0, ES_32, IF_VEC)
1049 E(0xe71a, VSCEG, VRV, V, la2, 0, 0, 0, vsce, 0, ES_64, IF_VEC)
db23070c
DH
1050/* VECTOR SELECT */
1051 F(0xe78d, VSEL, VRR_e, V, 0, 0, 0, 0, vsel, 0, IF_VEC)
a2338cfb
DH
1052/* VECTOR SIGN EXTEND TO DOUBLEWORD */
1053 F(0xe75f, VSEG, VRR_a, V, 0, 0, 0, 0, vseg, 0, IF_VEC)
15e12add
DH
1054/* VECTOR STORE */
1055 F(0xe70e, VST, VRX, V, la2, 0, 0, 0, vst, 0, IF_VEC)
7b9a236e
DH
1056/* VECTOR STORE ELEMENT */
1057 E(0xe708, VSTEB, VRX, V, la2, 0, 0, 0, vste, 0, ES_8, IF_VEC)
1058 E(0xe709, VSTEH, VRX, V, la2, 0, 0, 0, vste, 0, ES_16, IF_VEC)
1059 E(0xe70b, VSTEF, VRX, V, la2, 0, 0, 0, vste, 0, ES_32, IF_VEC)
1060 E(0xe70a, VSTEG, VRX, V, la2, 0, 0, 0, vste, 0, ES_64, IF_VEC)
29b8bcf1
DH
1061/* VECTOR STORE MULTIPLE */
1062 F(0xe73e, VSTM, VRS_a, V, la2, 0, 0, 0, vstm, 0, IF_VEC)
0e0a5b49
DH
1063/* VECTOR STORE WITH LENGTH */
1064 F(0xe73f, VSTL, VRS_b, V, la2, r3_32u, 0, 0, vstl, 0, IF_VEC)
2c7590c8
DH
1065/* VECTOR UNPACK HIGH */
1066 F(0xe7d7, VUPH, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
1067/* VECTOR UNPACK LOGICAL HIGH */
1068 F(0xe7d5, VUPLH, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
1069/* VECTOR UNPACK LOW */
1070 F(0xe7d6, VUPL, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
1071/* VECTOR UNPACK LOGICAL LOW */
1072 F(0xe7d4, VUPLL, VRR_a, V, 0, 0, 0, 0, vup, 0, IF_VEC)
6d841663 1073
b1e67c8f
DH
1074/* === Vector Integer Instructions === */
1075
1076/* VECTOR ADD */
1077 F(0xe7f3, VA, VRR_c, V, 0, 0, 0, 0, va, 0, IF_VEC)
c563f28a
DH
1078/* VECTOR ADD COMPUTE CARRY */
1079 F(0xe7f1, VACC, VRR_c, V, 0, 0, 0, 0, vacc, 0, IF_VEC)
8d4eb4b6
DH
1080/* VECTOR ADD WITH CARRY */
1081 F(0xe7bb, VAC, VRR_d, V, 0, 0, 0, 0, vac, 0, IF_VEC)
8a931bb8
DH
1082/* VECTOR ADD WITH CARRY COMPUTE CARRY */
1083 F(0xe7b9, VACCC, VRR_d, V, 0, 0, 0, 0, vaccc, 0, IF_VEC)
4c1bd09a
DH
1084/* VECTOR AND */
1085 F(0xe768, VN, VRR_c, V, 0, 0, 0, 0, vn, 0, IF_VEC)
1086/* VECTOR AND WITH COMPLEMENT */
1087 F(0xe769, VNC, VRR_c, V, 0, 0, 0, 0, vnc, 0, IF_VEC)
c1a81d4b
DH
1088/* VECTOR AVERAGE */
1089 F(0xe7f2, VAVG, VRR_c, V, 0, 0, 0, 0, vavg, 0, IF_VEC)
801aa78b
DH
1090/* VECTOR AVERAGE LOGICAL */
1091 F(0xe7f0, VAVGL, VRR_c, V, 0, 0, 0, 0, vavgl, 0, IF_VEC)
b0160ec9
DH
1092/* VECTOR CHECKSUM */
1093 F(0xe766, VCKSM, VRR_c, V, 0, 0, 0, 0, vcksm, 0, IF_VEC)
751a564f
DH
1094/* VECTOR ELEMENT COMPARE */
1095 F(0xe7db, VEC, VRR_a, V, 0, 0, 0, 0, vec, cmps64, IF_VEC)
1096/* VECTOR ELEMENT COMPARE LOGICAL */
1097 F(0xe7d9, VECL, VRR_a, V, 0, 0, 0, 0, vec, cmpu64, IF_VEC)
ff825c6d
DH
1098/* VECTOR COMPARE EQUAL */
1099 E(0xe7f8, VCEQ, VRR_b, V, 0, 0, 0, 0, vc, 0, TCG_COND_EQ, IF_VEC)
1100/* VECTOR COMPARE HIGH */
1101 E(0xe7fb, VCH, VRR_b, V, 0, 0, 0, 0, vc, 0, TCG_COND_GT, IF_VEC)
1102/* VECTOR COMPARE HIGH LOGICAL */
1103 E(0xe7f9, VCHL, VRR_b, V, 0, 0, 0, 0, vc, 0, TCG_COND_GTU, IF_VEC)
28863f1d
DH
1104/* VECTOR COUNT LEADING ZEROS */
1105 F(0xe753, VCLZ, VRR_a, V, 0, 0, 0, 0, vclz, 0, IF_VEC)
449a8ac2
DH
1106/* VECTOR COUNT TRAILING ZEROS */
1107 F(0xe752, VCTZ, VRR_a, V, 0, 0, 0, 0, vctz, 0, IF_VEC)
44951e6b
DH
1108/* VECTOR EXCLUSIVE OR */
1109 F(0xe76d, VX, VRR_c, V, 0, 0, 0, 0, vx, 0, IF_VEC)
697a45d6
DH
1110/* VECTOR GALOIS FIELD MULTIPLY SUM */
1111 F(0xe7b4, VGFM, VRR_c, V, 0, 0, 0, 0, vgfm, 0, IF_VEC)
1112/* VECTOR GALOIS FIELD MULTIPLY SUM AND ACCUMULATE */
1113 F(0xe7bc, VGFMA, VRR_d, V, 0, 0, 0, 0, vgfma, 0, IF_VEC)
53e0ca22
DH
1114/* VECTOR LOAD COMPLEMENT */
1115 F(0xe7de, VLC, VRR_a, V, 0, 0, 0, 0, vlc, 0, IF_VEC)
35f0ba5f
DH
1116/* VECTOR LOAD POSITIVE */
1117 F(0xe7df, VLP, VRR_a, V, 0, 0, 0, 0, vlp, 0, IF_VEC)
86f521b6
DH
1118/* VECTOR MAXIMUM */
1119 F(0xe7ff, VMX, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1120/* VECTOR MAXIMUM LOGICAL */
1121 F(0xe7fd, VMXL, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1122/* VECTOR MINIMUM */
1123 F(0xe7fe, VMN, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1124/* VECTOR MINIMUM LOGICAL */
1125 F(0xe7fc, VMNL, VRR_c, V, 0, 0, 0, 0, vmx, 0, IF_VEC)
1b430aec
DH
1126/* VECTOR MULTIPLY AND ADD LOW */
1127 F(0xe7aa, VMAL, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1128/* VECTOR MULTIPLY AND ADD HIGH */
1129 F(0xe7ab, VMAH, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1130/* VECTOR MULTIPLY AND ADD LOGICAL HIGH */
1131 F(0xe7a9, VMALH, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1132/* VECTOR MULTIPLY AND ADD EVEN */
1133 F(0xe7ae, VMAE, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1134/* VECTOR MULTIPLY AND ADD LOGICAL EVEN */
1135 F(0xe7ac, VMALE, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1136/* VECTOR MULTIPLY AND ADD ODD */
1137 F(0xe7af, VMAO, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
1138/* VECTOR MULTIPLY AND ADD LOGICAL ODD */
1139 F(0xe7ad, VMALO, VRR_d, V, 0, 0, 0, 0, vma, 0, IF_VEC)
2bf3ee38
DH
1140/* VECTOR MULTIPLY HIGH */
1141 F(0xe7a3, VMH, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1142/* VECTOR MULTIPLY LOGICAL HIGH */
1143 F(0xe7a1, VMLH, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1144/* VECTOR MULTIPLY LOW */
1145 F(0xe7a2, VML, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1146/* VECTOR MULTIPLY EVEN */
1147 F(0xe7a6, VME, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1148/* VECTOR MULTIPLY LOGICAL EVEN */
1149 F(0xe7a4, VMLE, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1150/* VECTOR MULTIPLY ODD */
1151 F(0xe7a7, VMO, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
1152/* VECTOR MULTIPLY LOGICAL ODD */
1153 F(0xe7a5, VMLO, VRR_c, V, 0, 0, 0, 0, vm, 0, IF_VEC)
8c18fa5b
DH
1154/* VECTOR MULTIPLY SUM LOGICAL */
1155 F(0xe7b8, VMSL, VRR_d, VE, 0, 0, 0, 0, vmsl, 0, IF_VEC)
5bc4a20f
DH
1156/* VECTOR NAND */
1157 F(0xe76e, VNN, VRR_c, VE, 0, 0, 0, 0, vnn, 0, IF_VEC)
2a01d94c
DH
1158/* VECTOR NOR */
1159 F(0xe76b, VNO, VRR_c, V, 0, 0, 0, 0, vno, 0, IF_VEC)
9023434b
DH
1160/* VECTOR NOT EXCLUSIVE OR */
1161 F(0xe76c, VNX, VRR_c, VE, 0, 0, 0, 0, vnx, 0, IF_VEC)
2bbf4dff
DH
1162/* VECTOR OR */
1163 F(0xe76a, VO, VRR_c, V, 0, 0, 0, 0, vo, 0, IF_VEC)
a014bcc7
DH
1164/* VECTOR OR WITH COMPLEMENT */
1165 F(0xe76f, VOC, VRR_c, VE, 0, 0, 0, 0, voc, 0, IF_VEC)
c3838aaa
DH
1166/* VECTOR POPULATION COUNT */
1167 F(0xe750, VPOPCT, VRR_a, V, 0, 0, 0, 0, vpopct, 0, IF_VEC)
55236da2 1168/* VECTOR ELEMENT ROTATE LEFT LOGICAL */
cea94ba3
RH
1169 F(0xe773, VERLLV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1170 F(0xe733, VERLL, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
5c4b0ab4
DH
1171/* VECTOR ELEMENT ROTATE AND INSERT UNDER MASK */
1172 F(0xe772, VERIM, VRI_d, V, 0, 0, 0, 0, verim, 0, IF_VEC)
5f164905
DH
1173/* VECTOR ELEMENT SHIFT LEFT */
1174 F(0xe770, VESLV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1175 F(0xe730, VESL, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
1176/* VECTOR ELEMENT SHIFT RIGHT ARITHMETIC */
1177 F(0xe77a, VESRAV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1178 F(0xe73a, VESRA, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
1179/* VECTOR ELEMENT SHIFT RIGHT LOGICAL */
1180 F(0xe778, VESRLV, VRR_c, V, 0, 0, 0, 0, vesv, 0, IF_VEC)
1181 F(0xe738, VESRL, VRS_a, V, la2, 0, 0, 0, ves, 0, IF_VEC)
dea33fc3
DH
1182/* VECTOR SHIFT LEFT */
1183 F(0xe774, VSL, VRR_c, V, 0, 0, 0, 0, vsl, 0, IF_VEC)
1184/* VECTOR SHIFT LEFT BY BYTE */
1185 F(0xe775, VSLB, VRR_c, V, 0, 0, 0, 0, vsl, 0, IF_VEC)
0abddd6c
DH
1186/* VECTOR SHIFT LEFT DOUBLE BY BYTE */
1187 F(0xe777, VSLDB, VRI_d, V, 0, 0, 0, 0, vsldb, 0, IF_VEC)
5f724887
DH
1188/* VECTOR SHIFT RIGHT ARITHMETIC */
1189 F(0xe77e, VSRA, VRR_c, V, 0, 0, 0, 0, vsra, 0, IF_VEC)
1190/* VECTOR SHIFT RIGHT ARITHMETIC BY BYTE */
1191 F(0xe77f, VSRAB, VRR_c, V, 0, 0, 0, 0, vsra, 0, IF_VEC)
8112274f
DH
1192/* VECTOR SHIFT RIGHT LOGICAL */
1193 F(0xe77c, VSRL, VRR_c, V, 0, 0, 0, 0, vsrl, 0, IF_VEC)
1194/* VECTOR SHIFT RIGHT LOGICAL BY BYTE */
1195 F(0xe77d, VSRLB, VRR_c, V, 0, 0, 0, 0, vsrl, 0, IF_VEC)
ea8d7840
DH
1196/* VECTOR SUBTRACT */
1197 F(0xe7f7, VS, VRR_c, V, 0, 0, 0, 0, vs, 0, IF_VEC)
1ee2d7ba
DH
1198/* VECTOR SUBTRACT COMPUTE BORROW INDICATION */
1199 F(0xe7f5, VSCBI, VRR_c, V, 0, 0, 0, 0, vscbi, 0, IF_VEC)
48390a7c
DH
1200/* VECTOR SUBTRACT WITH BORROW INDICATION */
1201 F(0xe7bf, VSBI, VRR_d, V, 0, 0, 0, 0, vsbi, 0, IF_VEC)
bc725e65
DH
1202/* VECTOR SUBTRACT WITH BORROW COMPUTE BORROW INDICATION */
1203 F(0xe7bd, VSBCBI, VRR_d, V, 0, 0, 0, 0, vsbcbi, 0, IF_VEC)
fe2be36d
DH
1204/* VECTOR SUM ACROSS DOUBLEWORD */
1205 F(0xe765, VSUMG, VRR_c, V, 0, 0, 0, 0, vsumg, 0, IF_VEC)
8dc69a19
DH
1206/* VECTOR SUM ACROSS QUADWORD */
1207 F(0xe767, VSUMQ, VRR_c, V, 0, 0, 0, 0, vsumq, 0, IF_VEC)
e58de341
DH
1208/* VECTOR SUM ACROSS WORD */
1209 F(0xe764, VSUM, VRR_c, V, 0, 0, 0, 0, vsum, 0, IF_VEC)
db156ebf
DH
1210/* VECTOR TEST UNDER MASK */
1211 F(0xe7d8, VTM, VRR_a, V, 0, 0, 0, 0, vtm, 0, IF_VEC)
b1e67c8f 1212
1fd28638
DH
1213/* === Vector String Instructions === */
1214
1215/* VECTOR FIND ANY ELEMENT EQUAL */
1216 F(0xe782, VFAE, VRR_b, V, 0, 0, 0, 0, vfae, 0, IF_VEC)
8c0e1e58
DH
1217/* VECTOR FIND ELEMENT EQUAL */
1218 F(0xe780, VFEE, VRR_b, V, 0, 0, 0, 0, vfee, 0, IF_VEC)
074e99b3
DH
1219/* VECTOR FIND ELEMENT NOT EQUAL */
1220 F(0xe781, VFENE, VRR_b, V, 0, 0, 0, 0, vfene, 0, IF_VEC)
be6324c6
DH
1221/* VECTOR ISOLATE STRING */
1222 F(0xe75c, VISTR, VRR_a, V, 0, 0, 0, 0, vistr, 0, IF_VEC)
13b0228f
DH
1223/* VECTOR STRING RANGE COMPARE */
1224 F(0xe78a, VSTRC, VRR_d, V, 0, 0, 0, 0, vstrc, 0, IF_VEC)
1fd28638 1225
3a0eae85
DH
1226/* === Vector Floating-Point Instructions */
1227
1228/* VECTOR FP ADD */
1229 F(0xe7e3, VFA, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
5b89f0fb
DH
1230/* VECTOR FP COMPARE SCALAR */
1231 F(0xe7cb, WFC, VRR_a, V, 0, 0, 0, 0, wfc, 0, IF_VEC)
1232/* VECTOR FP COMPARE AND SIGNAL SCALAR */
1233 F(0xe7ca, WFK, VRR_a, V, 0, 0, 0, 0, wfc, 0, IF_VEC)
2c806ab4
DH
1234/* VECTOR FP COMPARE EQUAL */
1235 F(0xe7e8, VFCE, VRR_c, V, 0, 0, 0, 0, vfc, 0, IF_VEC)
1236/* VECTOR FP COMPARE HIGH */
1237 F(0xe7eb, VFCH, VRR_c, V, 0, 0, 0, 0, vfc, 0, IF_VEC)
1238/* VECTOR FP COMPARE HIGH OR EQUAL */
1239 F(0xe7ea, VFCHE, VRR_c, V, 0, 0, 0, 0, vfc, 0, IF_VEC)
bb03fd84
DH
1240/* VECTOR FP CONVERT FROM FIXED 64-BIT */
1241 F(0xe7c3, VCDG, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
9b8d1a38
DH
1242/* VECTOR FP CONVERT FROM LOGICAL 64-BIT */
1243 F(0xe7c1, VCDLG, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
35b3bb1c
DH
1244/* VECTOR FP CONVERT TO FIXED 64-BIT */
1245 F(0xe7c2, VCGD, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
09c04e4b
DH
1246/* VECTOR FP CONVERT TO LOGICAL 64-BIT */
1247 F(0xe7c0, VCLGD, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
817a1cec
DH
1248/* VECTOR FP DIVIDE */
1249 F(0xe7e5, VFD, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
60d0ab29
DH
1250/* VECTOR LOAD FP INTEGER */
1251 F(0xe7c7, VFI, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
0bd3c286 1252/* VECTOR FP LOAD LENGTHENED */
1a76e59d 1253 F(0xe7c4, VFLL, VRR_a, V, 0, 0, 0, 0, vfll, 0, IF_VEC)
0bd3c286 1254/* VECTOR FP LOAD ROUNDED */
4500ede4 1255 F(0xe7c5, VFLR, VRR_a, V, 0, 0, 0, 0, vcdg, 0, IF_VEC)
da480752
DH
1256/* VECTOR FP MAXIMUM */
1257 F(0xe7ef, VFMAX, VRR_c, VE, 0, 0, 0, 0, vfmax, 0, IF_VEC)
1258/* VECTOR FP MINIMUM */
1259 F(0xe7ee, VFMIN, VRR_c, VE, 0, 0, 0, 0, vfmax, 0, IF_VEC)
8d47d4d2
DH
1260/* VECTOR FP MULTIPLY */
1261 F(0xe7e7, VFM, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
c64c5984
DH
1262/* VECTOR FP MULTIPLY AND ADD */
1263 F(0xe78f, VFMA, VRR_e, V, 0, 0, 0, 0, vfma, 0, IF_VEC)
1264/* VECTOR FP MULTIPLY AND SUBTRACT */
1265 F(0xe78e, VFMS, VRR_e, V, 0, 0, 0, 0, vfma, 0, IF_VEC)
f0249730
DH
1266/* VECTOR FP NEGATIVE MULTIPLY AND ADD */
1267 F(0xe79f, VFNMA, VRR_e, VE, 0, 0, 0, 0, vfma, 0, IF_VEC)
1268/* VECTOR FP NEGATIVE MULTIPLY AND SUBTRACT */
1269 F(0xe79e, VFNMS, VRR_e, VE, 0, 0, 0, 0, vfma, 0, IF_VEC)
76e35cc7
DH
1270/* VECTOR FP PERFORM SIGN OPERATION */
1271 F(0xe7cc, VFPSO, VRR_a, V, 0, 0, 0, 0, vfpso, 0, IF_VEC)
5938f20c
DH
1272/* VECTOR FP SQUARE ROOT */
1273 F(0xe7ce, VFSQ, VRR_a, V, 0, 0, 0, 0, vfsq, 0, IF_VEC)
658a395f
DH
1274/* VECTOR FP SUBTRACT */
1275 F(0xe7e2, VFS, VRR_c, V, 0, 0, 0, 0, vfa, 0, IF_VEC)
83b955f9
DH
1276/* VECTOR FP TEST DATA CLASS IMMEDIATE */
1277 F(0xe74a, VFTCI, VRI_e, V, 0, 0, 0, 0, vftci, 0, IF_VEC)
3a0eae85 1278
d9a39927 1279#ifndef CONFIG_USER_ONLY
3d596f49 1280/* COMPARE AND SWAP AND PURGE */
b51cc1d8 1281 E(0xb250, CSP, RRE, Z, r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL, IF_PRIV)
fc313c64 1282 E(0xb98a, CSPG, RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEUQ, IF_PRIV)
972e35b9 1283/* DIAGNOSE (KVM hypercall) */
5e49e89c 1284 F(0x8300, DIAG, RSI, Z, 0, 0, 0, 0, diag, 0, IF_PRIV | IF_IO)
8026417c 1285/* INSERT STORAGE KEY EXTENDED */
b51cc1d8 1286 F(0xb229, ISKE, RRE, Z, 0, r2_o, new, r1_8, iske, 0, IF_PRIV)
be7f28de 1287/* INVALIDATE DAT TABLE ENTRY */
b51cc1d8 1288 F(0xb98e, IPDE, RRF_b, Z, r1_o, r2_o, 0, 0, idte, 0, IF_PRIV)
cfef53e3 1289/* INVALIDATE PAGE TABLE ENTRY */
b51cc1d8 1290 F(0xb221, IPTE, RRF_a, Z, r1_o, r2_o, 0, 0, ipte, 0, IF_PRIV)
504488b8 1291/* LOAD CONTROL */
b51cc1d8
DH
1292 F(0xb700, LCTL, RS_a, Z, 0, a2, 0, 0, lctl, 0, IF_PRIV)
1293 F(0xeb2f, LCTLG, RSY_a, Z, 0, a2, 0, 0, lctlg, 0, IF_PRIV)
190b2422 1294/* LOAD PROGRAM PARAMETER */
b51cc1d8 1295 F(0xb280, LPP, S, LPP, 0, m2_64, 0, 0, lpp, 0, IF_PRIV)
8b5ff571 1296/* LOAD PSW */
b51cc1d8 1297 F(0x8200, LPSW, S, Z, 0, a2, 0, 0, lpsw, 0, IF_PRIV)
7ab938d7 1298/* LOAD PSW EXTENDED */
b51cc1d8 1299 F(0xb2b2, LPSWE, S, Z, 0, a2, 0, 0, lpswe, 0, IF_PRIV)
d8fe4a9c 1300/* LOAD REAL ADDRESS */
b51cc1d8
DH
1301 F(0xb100, LRA, RX_a, Z, 0, a2, r1, 0, lra, 0, IF_PRIV)
1302 F(0xe313, LRAY, RXY_a, LD, 0, a2, r1, 0, lra, 0, IF_PRIV)
1303 F(0xe303, LRAG, RXY_a, Z, 0, a2, r1, 0, lra, 0, IF_PRIV)
9c3fd85b 1304/* LOAD USING REAL ADDRESS */
401bf467 1305 E(0xb24b, LURA, RRE, Z, 0, ra2, new, r1_32, lura, 0, MO_TEUL, IF_PRIV)
fc313c64 1306 E(0xb905, LURAG, RRE, Z, 0, ra2, r1, 0, lura, 0, MO_TEUQ, IF_PRIV)
97c3ab61 1307/* MOVE TO PRIMARY */
b51cc1d8 1308 F(0xda00, MVCP, SS_d, Z, la1, a2, 0, 0, mvcp, 0, IF_PRIV)
97c3ab61 1309/* MOVE TO SECONDARY */
b51cc1d8 1310 F(0xdb00, MVCS, SS_d, Z, la1, a2, 0, 0, mvcs, 0, IF_PRIV)
0568d8aa 1311/* PURGE TLB */
b51cc1d8 1312 F(0xb20d, PTLB, S, Z, 0, 0, 0, 0, ptlb, 0, IF_PRIV)
5cc69c54 1313/* RESET REFERENCE BIT EXTENDED */
b51cc1d8 1314 F(0xb22a, RRBE, RRE, Z, 0, r2_o, 0, 0, rrbe, 0, IF_PRIV)
dc458df9 1315/* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
5e49e89c 1316 F(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0, IF_PRIV | IF_IO)
14244b21 1317/* SET ADDRESS SPACE CONTROL FAST */
b51cc1d8 1318 F(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0, IF_PRIV)
35289799 1319/* SET CLOCK */
5e49e89c 1320 F(0xb204, SCK, S, Z, la2, 0, 0, 0, sck, 0, IF_PRIV | IF_IO)
dd3eb7b5 1321/* SET CLOCK COMPARATOR */
5e49e89c 1322 F(0xb206, SCKC, S, Z, 0, m2_64a, 0, 0, sckc, 0, IF_PRIV | IF_IO)
257a119e 1323/* SET CLOCK PROGRAMMABLE FIELD */
b51cc1d8 1324 F(0x0107, SCKPF, E, Z, 0, 0, 0, 0, sckpf, 0, IF_PRIV)
c4f0a863 1325/* SET CPU TIMER */
5e49e89c 1326 F(0xb208, SPT, S, Z, 0, m2_64a, 0, 0, spt, 0, IF_PRIV | IF_IO)
e805a0d3 1327/* SET PREFIX */
b51cc1d8 1328 F(0xb210, SPX, S, Z, 0, m2_32ua, 0, 0, spx, 0, IF_PRIV)
28d55556 1329/* SET PSW KEY FROM ADDRESS */
b51cc1d8 1330 F(0xb20a, SPKA, S, Z, 0, a2, 0, 0, spka, 0, IF_PRIV)
2bbde27f 1331/* SET STORAGE KEY EXTENDED */
b51cc1d8 1332 F(0xb22b, SSKE, RRF_c, Z, r1_o, r2_o, 0, 0, sske, 0, IF_PRIV)
7d30bb73 1333/* SET SYSTEM MASK */
b51cc1d8 1334 F(0x8000, SSM, S, Z, 0, m2_8u, 0, 0, ssm, 0, IF_PRIV)
0c240015 1335/* SIGNAL PROCESSOR */
5e49e89c 1336 F(0xae00, SIGP, RS_a, Z, 0, a2, 0, 0, sigp, 0, IF_PRIV | IF_IO)
dd3eb7b5 1337/* STORE CLOCK COMPARATOR */
b51cc1d8 1338 F(0xb207, STCKC, S, Z, la2, 0, new, m1_64a, stckc, 0, IF_PRIV)
504488b8 1339/* STORE CONTROL */
b51cc1d8
DH
1340 F(0xb600, STCTL, RS_a, Z, 0, a2, 0, 0, stctl, 0, IF_PRIV)
1341 F(0xeb25, STCTG, RSY_a, Z, 0, a2, 0, 0, stctg, 0, IF_PRIV)
411fea3d 1342/* STORE CPU ADDRESS */
b51cc1d8 1343 F(0xb212, STAP, S, Z, la2, 0, new, m1_16a, stap, 0, IF_PRIV)
71bd6669 1344/* STORE CPU ID */
b51cc1d8 1345 F(0xb202, STIDP, S, Z, la2, 0, new, m1_64a, stidp, 0, IF_PRIV)
c4f0a863 1346/* STORE CPU TIMER */
5e49e89c 1347 F(0xb209, STPT, S, Z, la2, 0, new, m1_64a, stpt, 0, IF_PRIV | IF_IO)
fc778b55 1348/* STORE FACILITY LIST */
b51cc1d8 1349 F(0xb2b1, STFL, S, Z, 0, 0, 0, 0, stfl, 0, IF_PRIV)
e805a0d3 1350/* STORE PREFIX */
b51cc1d8 1351 F(0xb211, STPX, S, Z, la2, 0, new, m1_32a, stpx, 0, IF_PRIV)
d14b3e09 1352/* STORE SYSTEM INFORMATION */
b51cc1d8 1353 F(0xb27d, STSI, S, Z, 0, a2, 0, 0, stsi, 0, IF_PRIV)
145cdb40 1354/* STORE THEN AND SYSTEM MASK */
b51cc1d8 1355 F(0xac00, STNSM, SI, Z, la1, 0, 0, 0, stnosm, 0, IF_PRIV)
145cdb40 1356/* STORE THEN OR SYSTEM MASK */
b51cc1d8 1357 F(0xad00, STOSM, SI, Z, la1, 0, 0, 0, stnosm, 0, IF_PRIV)
204504e2 1358/* STORE USING REAL ADDRESS */
401bf467 1359 E(0xb246, STURA, RRE, Z, r1_o, ra2, 0, 0, stura, 0, MO_TEUL, IF_PRIV)
fc313c64 1360 E(0xb925, STURG, RRE, Z, r1_o, ra2, 0, 0, stura, 0, MO_TEUQ, IF_PRIV)
f79f1ca4 1361/* TEST BLOCK */
b51cc1d8 1362 F(0xb22c, TB, RRE, Z, 0, r2_o, 0, 0, testblock, 0, IF_PRIV)
112bf079
RH
1363/* TEST PROTECTION */
1364 C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0)
2c423fc0 1365
ad8a4570 1366/* CCW I/O Instructions */
5e49e89c
PD
1367 F(0xb276, XSCH, S, Z, 0, 0, 0, 0, xsch, 0, IF_PRIV | IF_IO)
1368 F(0xb230, CSCH, S, Z, 0, 0, 0, 0, csch, 0, IF_PRIV | IF_IO)
1369 F(0xb231, HSCH, S, Z, 0, 0, 0, 0, hsch, 0, IF_PRIV | IF_IO)
1370 F(0xb232, MSCH, S, Z, 0, insn, 0, 0, msch, 0, IF_PRIV | IF_IO)
1371 F(0xb23b, RCHP, S, Z, 0, 0, 0, 0, rchp, 0, IF_PRIV | IF_IO)
1372 F(0xb238, RSCH, S, Z, 0, 0, 0, 0, rsch, 0, IF_PRIV | IF_IO)
1373 F(0xb237, SAL, S, Z, 0, 0, 0, 0, sal, 0, IF_PRIV | IF_IO)
1374 F(0xb23c, SCHM, S, Z, 0, insn, 0, 0, schm, 0, IF_PRIV | IF_IO)
1375 F(0xb274, SIGA, S, Z, 0, 0, 0, 0, siga, 0, IF_PRIV | IF_IO)
1376 F(0xb23a, STCPS, S, Z, 0, 0, 0, 0, stcps, 0, IF_PRIV | IF_IO)
1377 F(0xb233, SSCH, S, Z, 0, insn, 0, 0, ssch, 0, IF_PRIV | IF_IO)
1378 F(0xb239, STCRW, S, Z, 0, insn, 0, 0, stcrw, 0, IF_PRIV | IF_IO)
1379 F(0xb234, STSCH, S, Z, 0, insn, 0, 0, stsch, 0, IF_PRIV | IF_IO)
1380 F(0xb236, TPI , S, Z, la2, 0, 0, 0, tpi, 0, IF_PRIV | IF_IO)
1381 F(0xb235, TSCH, S, Z, 0, insn, 0, 0, tsch, 0, IF_PRIV | IF_IO)
2c423fc0
RH
1382 /* ??? Not listed in PoO ninth edition, but there's a linux driver that
1383 uses it: "A CHSC subchannel is usually present on LPAR only." */
5e49e89c 1384 F(0xb25f, CHSC, RRE, Z, 0, insn, 0, 0, chsc, 0, IF_PRIV | IF_IO)
f6c232ce
CH
1385
1386/* zPCI Instructions */
1387 /* None of these instructions are documented in the PoP, so this is all
1388 based upon target/s390x/kvm.c and Linux code and likely incomplete */
5e49e89c
PD
1389 F(0xebd0, PCISTB, RSY_a, PCI, la2, 0, 0, 0, pcistb, 0, IF_PRIV | IF_IO)
1390 F(0xebd1, SIC, RSY_a, AIS, r1, r3, 0, 0, sic, 0, IF_PRIV | IF_IO)
1391 F(0xb9a0, CLP, RRF_c, PCI, 0, 0, 0, 0, clp, 0, IF_PRIV | IF_IO)
1392 F(0xb9d0, PCISTG, RRE, PCI, 0, 0, 0, 0, pcistg, 0, IF_PRIV | IF_IO)
1393 F(0xb9d2, PCILG, RRE, PCI, 0, 0, 0, 0, pcilg, 0, IF_PRIV | IF_IO)
1394 F(0xb9d3, RPCIT, RRE, PCI, 0, 0, 0, 0, rpcit, 0, IF_PRIV | IF_IO)
1395 F(0xe3d0, MPCIFC, RXY_a, PCI, la2, 0, 0, 0, mpcifc, 0, IF_PRIV | IF_IO)
1396 F(0xe3d4, STPCIFC, RXY_a, PCI, la2, 0, 0, 0, stpcifc, 0, IF_PRIV | IF_IO)
f6c232ce 1397
d9a39927 1398#endif /* CONFIG_USER_ONLY */