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