]> git.proxmox.com Git - mirror_qemu.git/blob - target-s390x/insn-data.def
s390x/kvm: more details for SIGP handler with one destination vcpu
[mirror_qemu.git] / target-s390x / insn-data.def
1 /* ADD */
2 C(0x1a00, AR, RR_a, Z, r1, r2, new, r1_32, add, adds32)
3 C(0xb9f8, ARK, RRF_a, DO, r2, r3, new, r1_32, add, adds32)
4 C(0x5a00, A, RX_a, Z, r1, m2_32s, new, r1_32, add, adds32)
5 C(0xe35a, AY, RXY_a, LD, r1, m2_32s, new, r1_32, add, adds32)
6 C(0xb908, AGR, RRE, Z, r1, r2, r1, 0, add, adds64)
7 C(0xb918, AGFR, RRE, Z, r1, r2_32s, r1, 0, add, adds64)
8 C(0xb9e8, AGRK, RRF_a, DO, r2, r3, r1, 0, add, adds64)
9 C(0xe308, AG, RXY_a, Z, r1, m2_64, r1, 0, add, adds64)
10 C(0xe318, AGF, RXY_a, Z, r1, m2_32s, r1, 0, add, adds64)
11 C(0xb30a, AEBR, RRE, Z, e1, e2, new, e1, aeb, f32)
12 C(0xb31a, ADBR, RRE, Z, f1_o, f2_o, f1, 0, adb, f64)
13 C(0xb34a, AXBR, RRE, Z, 0, x2_o, x1, 0, axb, f128)
14 C(0xed0a, AEB, RXE, Z, e1, m2_32u, new, e1, aeb, f32)
15 C(0xed1a, ADB, RXE, Z, f1_o, m2_64, f1, 0, adb, f64)
16 /* ADD IMMEDIATE */
17 C(0xc209, AFI, RIL_a, EI, r1, i2, new, r1_32, add, adds32)
18 C(0xeb6a, ASI, SIY, GIE, m1_32s, i2, new, m1_32, add, adds32)
19 C(0xecd8, AHIK, RIE_d, DO, r3, i2, new, r1_32, add, adds32)
20 C(0xc208, AGFI, RIL_a, EI, r1, i2, r1, 0, add, adds64)
21 C(0xeb7a, AGSI, SIY, GIE, m1_64, i2, new, m1_64, add, adds64)
22 C(0xecd9, AGHIK, RIE_d, DO, r3, i2, r1, 0, add, adds64)
23 /* ADD HALFWORD */
24 C(0x4a00, AH, RX_a, Z, r1, m2_16s, new, r1_32, add, adds32)
25 C(0xe37a, AHY, RXY_a, LD, r1, m2_16s, new, r1_32, add, adds32)
26 /* ADD HALFWORD IMMEDIATE */
27 C(0xa70a, AHI, RI_a, Z, r1, i2, new, r1_32, add, adds32)
28 C(0xa70b, AGHI, RI_a, Z, r1, i2, r1, 0, add, adds64)
29
30 /* ADD LOGICAL */
31 C(0x1e00, ALR, RR_a, Z, r1, r2, new, r1_32, add, addu32)
32 C(0xb9fa, ALRK, RRF_a, DO, r2, r3, new, r1_32, add, addu32)
33 C(0x5e00, AL, RX_a, Z, r1, m2_32u, new, r1_32, add, addu32)
34 C(0xe35e, ALY, RXY_a, LD, r1, m2_32u, new, r1_32, add, addu32)
35 C(0xb90a, ALGR, RRE, Z, r1, r2, r1, 0, add, addu64)
36 C(0xb91a, ALGFR, RRE, Z, r1, r2_32u, r1, 0, add, addu64)
37 C(0xb9ea, ALGRK, RRF_a, DO, r2, r3, r1, 0, add, addu64)
38 C(0xe30a, ALG, RXY_a, Z, r1, m2_64, r1, 0, add, addu64)
39 C(0xe31a, ALGF, RXY_a, Z, r1, m2_32u, r1, 0, add, addu64)
40 /* ADD LOGICAL IMMEDIATE */
41 C(0xc20b, ALFI, RIL_a, EI, r1, i2_32u, new, r1_32, add, addu32)
42 C(0xc20a, ALGFI, RIL_a, EI, r1, i2_32u, r1, 0, add, addu64)
43 /* ADD LOGICAL WITH SIGNED IMMEDIATE */
44 C(0xeb6e, ALSI, SIY, GIE, m1_32u, i2, new, m1_32, add, addu32)
45 C(0xecda, ALHSIK, RIE_d, DO, r3, i2, new, r1_32, add, addu32)
46 C(0xeb7e, ALGSI, SIY, GIE, m1_64, i2, new, m1_64, add, addu64)
47 C(0xecdb, ALGHSIK, RIE_d, DO, r3, i2, r1, 0, add, addu64)
48 /* ADD LOGICAL WITH CARRY */
49 C(0xb998, ALCR, RRE, Z, r1, r2, new, r1_32, addc, addc32)
50 C(0xb988, ALCGR, RRE, Z, r1, r2, r1, 0, addc, addc64)
51 C(0xe398, ALC, RXY_a, Z, r1, m2_32u, new, r1_32, addc, addc32)
52 C(0xe388, ALCG, RXY_a, Z, r1, m2_64, r1, 0, addc, addc64)
53
54 /* AND */
55 C(0x1400, NR, RR_a, Z, r1, r2, new, r1_32, and, nz32)
56 C(0xb9f4, NRK, RRF_a, DO, r2, r3, new, r1_32, and, nz32)
57 C(0x5400, N, RX_a, Z, r1, m2_32s, new, r1_32, and, nz32)
58 C(0xe354, NY, RXY_a, LD, r1, m2_32s, new, r1_32, and, nz32)
59 C(0xb980, NGR, RRE, Z, r1, r2, r1, 0, and, nz64)
60 C(0xb9e4, NGRK, RRF_a, DO, r2, r3, r1, 0, and, nz64)
61 C(0xe380, NG, RXY_a, Z, r1, m2_64, r1, 0, and, nz64)
62 C(0xd400, NC, SS_a, Z, la1, a2, 0, 0, nc, 0)
63 /* AND IMMEDIATE */
64 D(0xc00a, NIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, andi, 0, 0x2020)
65 D(0xc00b, NILF, RIL_a, EI, r1_o, i2_32u, r1, 0, andi, 0, 0x2000)
66 D(0xa504, NIHH, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1030)
67 D(0xa505, NIHL, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1020)
68 D(0xa506, NILH, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1010)
69 D(0xa507, NILL, RI_a, Z, r1_o, i2_16u, r1, 0, andi, 0, 0x1000)
70 C(0x9400, NI, SI, Z, m1_8u, i2_8u, new, m1_8, and, nz64)
71 C(0xeb54, NIY, SIY, LD, m1_8u, i2_8u, new, m1_8, and, nz64)
72
73 /* BRANCH AND SAVE */
74 C(0x0d00, BASR, RR_a, Z, 0, r2_nz, r1, 0, bas, 0)
75 C(0x4d00, BAS, RX_a, Z, 0, a2, r1, 0, bas, 0)
76 /* BRANCH RELATIVE AND SAVE */
77 C(0xa705, BRAS, RI_b, Z, 0, 0, r1, 0, basi, 0)
78 C(0xc005, BRASL, RIL_b, Z, 0, 0, r1, 0, basi, 0)
79 /* BRANCH ON CONDITION */
80 C(0x0700, BCR, RR_b, Z, 0, r2_nz, 0, 0, bc, 0)
81 C(0x4700, BC, RX_b, Z, 0, a2, 0, 0, bc, 0)
82 /* BRANCH RELATIVE ON CONDITION */
83 C(0xa704, BRC, RI_c, Z, 0, 0, 0, 0, bc, 0)
84 C(0xc004, BRCL, RIL_c, Z, 0, 0, 0, 0, bc, 0)
85 /* BRANCH ON COUNT */
86 C(0x0600, BCTR, RR_a, Z, 0, r2_nz, 0, 0, bct32, 0)
87 C(0xb946, BCTGR, RRE, Z, 0, r2_nz, 0, 0, bct64, 0)
88 C(0x4600, BCT, RX_a, Z, 0, a2, 0, 0, bct32, 0)
89 C(0xe346, BCTG, RXY_a, Z, 0, a2, 0, 0, bct64, 0)
90 /* BRANCH RELATIVE ON COUNT */
91 C(0xa706, BRCT, RI_b, Z, 0, 0, 0, 0, bct32, 0)
92 C(0xa707, BRCTG, RI_b, Z, 0, 0, 0, 0, bct64, 0)
93 /* BRANCH ON INDEX */
94 D(0x8600, BXH, RS_a, Z, 0, a2, 0, 0, bx32, 0, 0)
95 D(0x8700, BXLE, RS_a, Z, 0, a2, 0, 0, bx32, 0, 1)
96 D(0xeb44, BXHG, RSY_a, Z, 0, a2, 0, 0, bx64, 0, 0)
97 D(0xeb45, BXLEG, RSY_a, Z, 0, a2, 0, 0, bx64, 0, 1)
98 /* BRANCH RELATIVE ON INDEX */
99 D(0x8400, BRXH, RSI, Z, 0, 0, 0, 0, bx32, 0, 0)
100 D(0x8500, BRXLE, RSI, Z, 0, 0, 0, 0, bx32, 0, 1)
101 D(0xec44, BRXHG, RIE_e, Z, 0, 0, 0, 0, bx64, 0, 0)
102 D(0xec45, BRXHLE, RIE_e, Z, 0, 0, 0, 0, bx64, 0, 1)
103
104 /* CHECKSUM */
105 C(0xb241, CKSM, RRE, Z, r1_o, ra2, new, r1_32, cksm, 0)
106
107 /* COPY SIGN */
108 C(0xb372, CPSDR, RRF_b, FPSSH, f3_o, f2_o, f1, 0, cps, 0)
109
110 /* COMPARE */
111 C(0x1900, CR, RR_a, Z, r1_o, r2_o, 0, 0, 0, cmps32)
112 C(0x5900, C, RX_a, Z, r1_o, m2_32s, 0, 0, 0, cmps32)
113 C(0xe359, CY, RXY_a, LD, r1_o, m2_32s, 0, 0, 0, cmps32)
114 C(0xb920, CGR, RRE, Z, r1_o, r2_o, 0, 0, 0, cmps64)
115 C(0xb930, CGFR, RRE, Z, r1_o, r2_32s, 0, 0, 0, cmps64)
116 C(0xe320, CG, RXY_a, Z, r1_o, m2_64, 0, 0, 0, cmps64)
117 C(0xe330, CGF, RXY_a, Z, r1_o, m2_32s, 0, 0, 0, cmps64)
118 C(0xb309, CEBR, RRE, Z, e1, e2, 0, 0, ceb, 0)
119 C(0xb319, CDBR, RRE, Z, f1_o, f2_o, 0, 0, cdb, 0)
120 C(0xb349, CXBR, RRE, Z, x1_o, x2_o, 0, 0, cxb, 0)
121 C(0xed09, CEB, RXE, Z, e1, m2_32u, 0, 0, ceb, 0)
122 C(0xed19, CDB, RXE, Z, f1_o, m2_64, 0, 0, cdb, 0)
123 /* COMPARE IMMEDIATE */
124 C(0xc20d, CFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps32)
125 C(0xc20c, CGFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps64)
126 /* COMPARE RELATIVE LONG */
127 C(0xc60d, CRL, RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps32)
128 C(0xc608, CGRL, RIL_b, GIE, r1, mri2_64, 0, 0, 0, cmps64)
129 C(0xc60c, CGFRL, RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps64)
130 /* COMPARE HALFWORD */
131 C(0x4900, CH, RX_a, Z, r1_o, m2_16s, 0, 0, 0, cmps32)
132 C(0xe379, CHY, RXY_a, LD, r1_o, m2_16s, 0, 0, 0, cmps32)
133 C(0xe334, CGH, RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
134 /* COMPARE HALFWORD IMMEDIATE */
135 C(0xa70e, CHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps32)
136 C(0xa70f, CGHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps64)
137 C(0xe554, CHHSI, SIL, GIE, m1_16s, i2, 0, 0, 0, cmps64)
138 C(0xe55c, CHSI, SIL, GIE, m1_32s, i2, 0, 0, 0, cmps64)
139 C(0xe558, CGHSI, SIL, GIE, m1_64, i2, 0, 0, 0, cmps64)
140 /* COMPARE HALFWORD RELATIVE LONG */
141 C(0xc605, CHRL, RIL_a, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
142 C(0xc604, CGHRL, RIL_a, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
143
144 /* COMPARE LOGICAL */
145 C(0x1500, CLR, RR_a, Z, r1, r2, 0, 0, 0, cmpu32)
146 C(0x5500, CL, RX_a, Z, r1, m2_32s, 0, 0, 0, cmpu32)
147 C(0xe355, CLY, RXY_a, LD, r1, m2_32s, 0, 0, 0, cmpu32)
148 C(0xb921, CLGR, RRE, Z, r1, r2, 0, 0, 0, cmpu64)
149 C(0xb931, CLGFR, RRE, Z, r1, r2_32u, 0, 0, 0, cmpu64)
150 C(0xe321, CLG, RXY_a, Z, r1, m2_64, 0, 0, 0, cmpu64)
151 C(0xe331, CLGF, RXY_a, Z, r1, m2_32u, 0, 0, 0, cmpu64)
152 C(0xd500, CLC, SS_a, Z, la1, a2, 0, 0, clc, 0)
153 /* COMPARE LOGICAL IMMEDIATE */
154 C(0xc20f, CLFI, RIL_a, EI, r1, i2, 0, 0, 0, cmpu32)
155 C(0xc20e, CLGFI, RIL_a, EI, r1, i2_32u, 0, 0, 0, cmpu64)
156 C(0x9500, CLI, SI, Z, m1_8u, i2_8u, 0, 0, 0, cmpu64)
157 C(0xeb55, CLIY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, cmpu64)
158 C(0xe555, CLHHSI, SIL, GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
159 C(0xe55d, CLFHSI, SIL, GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
160 C(0xe559, CLGHSI, SIL, GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
161 /* COMPARE LOGICAL RELATIVE LONG */
162 C(0xc60f, CLRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
163 C(0xc60a, CLGRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
164 C(0xc60e, CLGFRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
165 C(0xc607, CLHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
166 C(0xc606, CLGHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
167 /* COMPARE LOGICAL LONG EXTENDED */
168 C(0xa900, CLCLE, RS_a, Z, 0, a2, 0, 0, clcle, 0)
169 /* COMPARE LOGICAL CHARACTERS UNDER MASK */
170 C(0xbd00, CLM, RS_b, Z, r1_o, a2, 0, 0, clm, 0)
171 C(0xeb21, CLMY, RSY_b, LD, r1_o, a2, 0, 0, clm, 0)
172 C(0xeb20, CLMH, RSY_b, Z, r1_sr32, a2, 0, 0, clm, 0)
173 /* COMPARE LOGICAL STRING */
174 C(0xb25d, CLST, RRE, Z, r1_o, r2_o, 0, 0, clst, 0)
175
176 /* COMPARE AND BRANCH */
177 D(0xecf6, CRB, RRS, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
178 D(0xece4, CGRB, RRS, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
179 D(0xec76, CRJ, RIE_b, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
180 D(0xec64, CGRJ, RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
181 D(0xecfe, CIB, RIS, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
182 D(0xecfc, CGIB, RIS, GIE, r1_o, i2, 0, 0, cj, 0, 0)
183 D(0xec7e, CIJ, RIE_c, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
184 D(0xec7c, CGIJ, RIE_c, GIE, r1_o, i2, 0, 0, cj, 0, 0)
185 /* COMPARE LOGICAL AND BRANCH */
186 D(0xecf7, CLRB, RRS, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
187 D(0xece5, CLGRB, RRS, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
188 D(0xec77, CLRJ, RIE_b, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
189 D(0xec65, CLGRJ, RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
190 D(0xecff, CLIB, RIS, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
191 D(0xecfd, CLGIB, RIS, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
192 D(0xec7f, CLIJ, RIE_c, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
193 D(0xec7d, CLGIJ, RIE_c, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
194
195 /* COMPARE AND SWAP */
196 D(0xba00, CS, RS_a, Z, r3_32u, r1_32u, new, r1_32, cs, 0, 0)
197 D(0xeb14, CSY, RSY_a, LD, r3_32u, r1_32u, new, r1_32, cs, 0, 0)
198 D(0xeb30, CSG, RSY_a, Z, r3_o, r1_o, new, r1, cs, 0, 1)
199 /* COMPARE DOUBLE AND SWAP */
200 D(0xbb00, CDS, RS_a, Z, r3_D32, r1_D32, new, r1_D32, cs, 0, 1)
201 D(0xeb31, CDSY, RSY_a, LD, r3_D32, r1_D32, new, r1_D32, cs, 0, 1)
202 C(0xeb3e, CDSG, RSY_a, Z, 0, 0, 0, 0, cdsg, 0)
203
204 /* COMPARE AND TRAP */
205 D(0xb972, CRT, RRF_c, GIE, r1_32s, r2_32s, 0, 0, ct, 0, 0)
206 D(0xb960, CGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 0)
207 D(0xec72, CIT, RIE_a, GIE, r1_32s, i2, 0, 0, ct, 0, 0)
208 D(0xec70, CGIT, RIE_a, GIE, r1_o, i2, 0, 0, ct, 0, 0)
209 /* COMPARE LOGICAL AND TRAP */
210 D(0xb973, CLRT, RRF_c, GIE, r1_32u, r2_32u, 0, 0, ct, 0, 1)
211 D(0xb961, CLGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
212 D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
213 D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 0)
214
215 /* CONVERT TO DECIMAL */
216 C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
217 C(0xe326, CVDY, RXY_a, LD, r1_o, a2, 0, 0, cvd, 0)
218 /* CONVERT TO FIXED */
219 C(0xb398, CFEBR, RRF_e, Z, 0, e2, new, r1_32, cfeb, 0)
220 C(0xb399, CFDBR, RRF_e, Z, 0, f2_o, new, r1_32, cfdb, 0)
221 C(0xb39a, CFXBR, RRF_e, Z, 0, x2_o, new, r1_32, cfxb, 0)
222 C(0xb3a8, CGEBR, RRF_e, Z, 0, e2, r1, 0, cgeb, 0)
223 C(0xb3a9, CGDBR, RRF_e, Z, 0, f2_o, r1, 0, cgdb, 0)
224 C(0xb3aa, CGXBR, RRF_e, Z, 0, x2_o, r1, 0, cgxb, 0)
225 /* CONVERT FROM FIXED */
226 C(0xb394, CEFBR, RRF_e, Z, 0, r2_32s, new, e1, cegb, 0)
227 C(0xb395, CDFBR, RRF_e, Z, 0, r2_32s, f1, 0, cdgb, 0)
228 C(0xb396, CXFBR, RRF_e, Z, 0, r2_32s, x1, 0, cxgb, 0)
229 C(0xb3a4, CEGBR, RRF_e, Z, 0, r2_o, new, e1, cegb, 0)
230 C(0xb3a5, CDGBR, RRF_e, Z, 0, r2_o, f1, 0, cdgb, 0)
231 C(0xb3a6, CXGBR, RRF_e, Z, 0, r2_o, x1, 0, cxgb, 0)
232 /* CONVERT TO LOGICAL */
233 C(0xb39c, CLFEBR, RRF_e, FPE, 0, e2, new, r1_32, clfeb, 0)
234 C(0xb39d, CLFDBR, RRF_e, FPE, 0, f2_o, new, r1_32, clfdb, 0)
235 C(0xb39e, CLFXBR, RRF_e, FPE, 0, x2_o, new, r1_32, clfxb, 0)
236 C(0xb3ac, CLGEBR, RRF_e, FPE, 0, e2, r1, 0, clgeb, 0)
237 C(0xb3ad, CLGDBR, RRF_e, FPE, 0, f2_o, r1, 0, clgdb, 0)
238 C(0xb3ae, CLGXBR, RRF_e, FPE, 0, x2_o, r1, 0, clgxb, 0)
239 /* CONVERT FROM LOGICAL */
240 C(0xb390, CELFBR, RRF_e, FPE, 0, r2_32u, new, e1, celgb, 0)
241 C(0xb391, CDLFBR, RRF_e, FPE, 0, r2_32u, f1, 0, cdlgb, 0)
242 C(0xb392, CXLFBR, RRF_e, FPE, 0, r2_32u, x1, 0, cxlgb, 0)
243 C(0xb3a0, CELGBR, RRF_e, FPE, 0, r2_o, new, e1, celgb, 0)
244 C(0xb3a1, CDLGBR, RRF_e, FPE, 0, r2_o, f1, 0, cdlgb, 0)
245 C(0xb3a2, CXLGBR, RRF_e, FPE, 0, r2_o, x1, 0, cxlgb, 0)
246
247 /* DIVIDE */
248 C(0x1d00, DR, RR_a, Z, r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
249 C(0x5d00, D, RX_a, Z, r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
250 C(0xb30d, DEBR, RRE, Z, e1, e2, new, e1, deb, 0)
251 C(0xb31d, DDBR, RRE, Z, f1_o, f2_o, f1, 0, ddb, 0)
252 C(0xb34d, DXBR, RRE, Z, 0, x2_o, x1, 0, dxb, 0)
253 C(0xed0d, DEB, RXE, Z, e1, m2_32u, new, e1, deb, 0)
254 C(0xed1d, DDB, RXE, Z, f1_o, m2_64, f1, 0, ddb, 0)
255 /* DIVIDE LOGICAL */
256 C(0xb997, DLR, RRE, Z, r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
257 C(0xe397, DL, RXY_a, Z, r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
258 C(0xb987, DLGR, RRE, Z, 0, r2_o, r1_P, 0, divu64, 0)
259 C(0xe387, DLG, RXY_a, Z, 0, m2_64, r1_P, 0, divu64, 0)
260 /* DIVIDE SINGLE */
261 C(0xb90d, DSGR, RRE, Z, r1p1, r2, r1_P, 0, divs64, 0)
262 C(0xb91d, DSGFR, RRE, Z, r1p1, r2_32s, r1_P, 0, divs64, 0)
263 C(0xe30d, DSG, RXY_a, Z, r1p1, m2_64, r1_P, 0, divs64, 0)
264 C(0xe31d, DSGF, RXY_a, Z, r1p1, m2_32s, r1_P, 0, divs64, 0)
265
266 /* EXCLUSIVE OR */
267 C(0x1700, XR, RR_a, Z, r1, r2, new, r1_32, xor, nz32)
268 C(0xb9f7, XRK, RRF_a, DO, r2, r3, new, r1_32, xor, nz32)
269 C(0x5700, X, RX_a, Z, r1, m2_32s, new, r1_32, xor, nz32)
270 C(0xe357, XY, RXY_a, LD, r1, m2_32s, new, r1_32, xor, nz32)
271 C(0xb982, XGR, RRE, Z, r1, r2, r1, 0, xor, nz64)
272 C(0xb9e7, XGRK, RRF_a, DO, r2, r3, r1, 0, xor, nz64)
273 C(0xe382, XG, RXY_a, Z, r1, m2_64, r1, 0, xor, nz64)
274 C(0xd700, XC, SS_a, Z, 0, 0, 0, 0, xc, 0)
275 /* EXCLUSIVE OR IMMEDIATE */
276 D(0xc006, XIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
277 D(0xc007, XILF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
278 C(0x9700, XI, SI, Z, m1_8u, i2_8u, new, m1_8, xor, nz64)
279 C(0xeb57, XIY, SIY, LD, m1_8u, i2_8u, new, m1_8, xor, nz64)
280
281 /* EXECUTE */
282 C(0x4400, EX, RX_a, Z, r1_o, a2, 0, 0, ex, 0)
283 /* EXECUTE RELATIVE LONG */
284 C(0xc600, EXRL, RIL_b, EE, r1_o, ri2, 0, 0, ex, 0)
285
286 /* EXTRACT ACCESS */
287 C(0xb24f, EAR, RRE, Z, 0, 0, new, r1_32, ear, 0)
288 /* EXTRACT CPU ATTRIBUTE */
289 C(0xeb4c, ECAG, RSY_a, GIE, 0, a2, r1, 0, ecag, 0)
290 /* EXTRACT FPC */
291 C(0xb38c, EFPC, RRE, Z, 0, 0, new, r1_32, efpc, 0)
292 /* EXTRACT PSW */
293 C(0xb98d, EPSW, RRE, Z, 0, 0, 0, 0, epsw, 0)
294
295 /* FIND LEFTMOST ONE */
296 C(0xb983, FLOGR, RRE, EI, 0, r2_o, r1_P, 0, flogr, 0)
297
298 /* INSERT CHARACTER */
299 C(0x4300, IC, RX_a, Z, 0, m2_8u, 0, r1_8, mov2, 0)
300 C(0xe373, ICY, RXY_a, LD, 0, m2_8u, 0, r1_8, mov2, 0)
301 /* INSERT CHARACTERS UNDER MASK */
302 D(0xbf00, ICM, RS_b, Z, 0, a2, r1, 0, icm, 0, 0)
303 D(0xeb81, ICMY, RSY_b, LD, 0, a2, r1, 0, icm, 0, 0)
304 D(0xeb80, ICMH, RSY_b, Z, 0, a2, r1, 0, icm, 0, 32)
305 /* INSERT IMMEDIATE */
306 D(0xc008, IIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
307 D(0xc009, IILF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
308 D(0xa500, IIHH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
309 D(0xa501, IIHL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
310 D(0xa502, IILH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
311 D(0xa503, IILL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
312 /* INSERT PROGRAM MASK */
313 C(0xb222, IPM, RRE, Z, 0, 0, r1, 0, ipm, 0)
314
315 /* LOAD */
316 C(0x1800, LR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, 0)
317 C(0x5800, L, RX_a, Z, 0, a2, new, r1_32, ld32s, 0)
318 C(0xe358, LY, RXY_a, Z, 0, a2, new, r1_32, ld32s, 0)
319 C(0xb904, LGR, RRE, Z, 0, r2_o, 0, r1, mov2, 0)
320 C(0xb914, LGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, 0)
321 C(0xe304, LG, RXY_a, Z, 0, a2, r1, 0, ld64, 0)
322 C(0xe314, LGF, RXY_a, Z, 0, a2, r1, 0, ld32s, 0)
323 C(0x2800, LDR, RR_a, Z, 0, f2_o, 0, f1, mov2, 0)
324 C(0x6800, LD, RX_a, Z, 0, m2_64, 0, f1, mov2, 0)
325 C(0xed65, LDY, RXY_a, LD, 0, m2_64, 0, f1, mov2, 0)
326 C(0x3800, LER, RR_a, Z, 0, e2, 0, cond_e1e2, mov2, 0)
327 C(0x7800, LE, RX_a, Z, 0, m2_32u, 0, e1, mov2, 0)
328 C(0xed64, LEY, RXY_a, LD, 0, m2_32u, 0, e1, mov2, 0)
329 C(0xb365, LXR, RRE, Z, 0, x2_o, 0, x1, movx, 0)
330 /* LOAD IMMEDIATE */
331 C(0xc001, LGFI, RIL_a, EI, 0, i2, 0, r1, mov2, 0)
332 /* LOAD RELATIVE LONG */
333 C(0xc40d, LRL, RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
334 C(0xc408, LGRL, RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
335 C(0xc40c, LGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
336 /* LOAD ADDRESS */
337 C(0x4100, LA, RX_a, Z, 0, a2, 0, r1, mov2, 0)
338 C(0xe371, LAY, RXY_a, LD, 0, a2, 0, r1, mov2, 0)
339 /* LOAD ADDRESS RELATIVE LONG */
340 C(0xc000, LARL, RIL_b, Z, 0, ri2, 0, r1, mov2, 0)
341 /* LOAD AND TEST */
342 C(0x1200, LTR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, s32)
343 C(0xb902, LTGR, RRE, Z, 0, r2_o, 0, r1, mov2, s64)
344 C(0xb912, LTGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, s64)
345 C(0xe312, LT, RXY_a, EI, 0, a2, new, r1_32, ld32s, s64)
346 C(0xe302, LTG, RXY_a, EI, 0, a2, r1, 0, ld64, s64)
347 C(0xe332, LTGF, RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
348 C(0xb302, LTEBR, RRE, Z, 0, e2, 0, cond_e1e2, mov2, f32)
349 C(0xb312, LTDBR, RRE, Z, 0, f2_o, 0, f1, mov2, f64)
350 C(0xb342, LTXBR, RRE, Z, 0, x2_o, 0, x1, movx, f128)
351 /* LOAD BYTE */
352 C(0xb926, LBR, RRE, EI, 0, r2_8s, 0, r1_32, mov2, 0)
353 C(0xb906, LGBR, RRE, EI, 0, r2_8s, 0, r1, mov2, 0)
354 C(0xe376, LB, RXY_a, LD, 0, a2, new, r1_32, ld8s, 0)
355 C(0xe377, LGB, RXY_a, LD, 0, a2, r1, 0, ld8s, 0)
356 /* LOAD COMPLEMENT */
357 C(0x1300, LCR, RR_a, Z, 0, r2, new, r1_32, neg, neg32)
358 C(0xb903, LCGR, RRE, Z, 0, r2, r1, 0, neg, neg64)
359 C(0xb913, LCGFR, RRE, Z, 0, r2_32s, r1, 0, neg, neg64)
360 C(0xb303, LCEBR, RRE, Z, 0, e2, new, e1, negf32, f32)
361 C(0xb313, LCDBR, RRE, Z, 0, f2_o, f1, 0, negf64, f64)
362 C(0xb343, LCXBR, RRE, Z, 0, x2_o, x1, 0, negf128, f128)
363 C(0xb373, LCDFR, RRE, FPSSH, 0, f2_o, f1, 0, negf64, 0)
364 /* LOAD HALFWORD */
365 C(0xb927, LHR, RRE, EI, 0, r2_16s, 0, r1_32, mov2, 0)
366 C(0xb907, LGHR, RRE, EI, 0, r2_16s, 0, r1, mov2, 0)
367 C(0x4800, LH, RX_a, Z, 0, a2, new, r1_32, ld16s, 0)
368 C(0xe378, LHY, RXY_a, LD, 0, a2, new, r1_32, ld16s, 0)
369 C(0xe315, LGH, RXY_a, Z, 0, a2, r1, 0, ld16s, 0)
370 /* LOAD HALFWORD IMMEDIATE */
371 C(0xa708, LHI, RI_a, Z, 0, i2, 0, r1_32, mov2, 0)
372 C(0xa709, LGHI, RI_a, Z, 0, i2, 0, r1, mov2, 0)
373 /* LOAD HALFWORD RELATIVE LONG */
374 C(0xc405, LHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
375 C(0xc404, LGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
376 /* LOAD LOGICAL */
377 C(0xb916, LLGFR, RRE, Z, 0, r2_32u, 0, r1, mov2, 0)
378 C(0xe316, LLGF, RXY_a, Z, 0, a2, r1, 0, ld32u, 0)
379 /* LOAD LOGICAL RELATIVE LONG */
380 C(0xc40e, LLGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
381 /* LOAD LOGICAL CHARACTER */
382 C(0xb994, LLCR, RRE, EI, 0, r2_8u, 0, r1_32, mov2, 0)
383 C(0xb984, LLGCR, RRE, EI, 0, r2_8u, 0, r1, mov2, 0)
384 C(0xe394, LLC, RXY_a, EI, 0, a2, new, r1_32, ld8u, 0)
385 C(0xe390, LLGC, RXY_a, Z, 0, a2, r1, 0, ld8u, 0)
386 /* LOAD LOGICAL HALFWORD */
387 C(0xb995, LLHR, RRE, EI, 0, r2_16u, 0, r1_32, mov2, 0)
388 C(0xb985, LLGHR, RRE, EI, 0, r2_16u, 0, r1, mov2, 0)
389 C(0xe395, LLH, RXY_a, EI, 0, a2, new, r1_32, ld16u, 0)
390 C(0xe391, LLGH, RXY_a, Z, 0, a2, r1, 0, ld16u, 0)
391 /* LOAD LOGICAL HALFWORD RELATIVE LONG */
392 C(0xc402, LLHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
393 C(0xc406, LLGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
394 /* LOAD LOGICAL IMMEDATE */
395 D(0xc00e, LLIHF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
396 D(0xc00f, LLILF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
397 D(0xa50c, LLIHH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 48)
398 D(0xa50d, LLIHL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 32)
399 D(0xa50e, LLILH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 16)
400 D(0xa50f, LLILL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 0)
401 /* LOAD LOGICAL THIRTY ONE BITS */
402 C(0xb917, LLGTR, RRE, Z, 0, r2_o, r1, 0, llgt, 0)
403 C(0xe317, LLGT, RXY_a, Z, 0, m2_32u, r1, 0, llgt, 0)
404 /* LOAD FPR FROM GR */
405 C(0xb3c1, LDGR, RRE, FPRGR, 0, r2_o, 0, f1, mov2, 0)
406 /* LOAD GR FROM FPR */
407 C(0xb3cd, LGDR, RRE, FPRGR, 0, f2_o, 0, r1, mov2, 0)
408 /* LOAD NEGATIVE */
409 C(0x1100, LNR, RR_a, Z, 0, r2_32s, new, r1_32, nabs, nabs32)
410 C(0xb901, LNGR, RRE, Z, 0, r2, r1, 0, nabs, nabs64)
411 C(0xb911, LNGFR, RRE, Z, 0, r2_32s, r1, 0, nabs, nabs64)
412 C(0xb301, LNEBR, RRE, Z, 0, e2, new, e1, nabsf32, f32)
413 C(0xb311, LNDBR, RRE, Z, 0, f2_o, f1, 0, nabsf64, f64)
414 C(0xb341, LNXBR, RRE, Z, 0, x2_o, x1, 0, nabsf128, f128)
415 /* LOAD ON CONDITION */
416 C(0xb9f2, LOCR, RRF_c, LOC, r1, r2, new, r1_32, loc, 0)
417 C(0xb9e2, LOCGR, RRF_c, LOC, r1, r2, r1, 0, loc, 0)
418 C(0xebf2, LOC, RSY_b, LOC, r1, m2_32u, new, r1_32, loc, 0)
419 C(0xebe2, LOCG, RSY_b, LOC, r1, m2_64, r1, 0, loc, 0)
420 /* LOAD POSITIVE */
421 C(0x1000, LPR, RR_a, Z, 0, r2_32s, new, r1_32, abs, abs32)
422 C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
423 C(0xb910, LPGFR, RRE, Z, 0, r2_32s, r1, 0, abs, abs64)
424 C(0xb300, LPEBR, RRE, Z, 0, e2, new, e1, absf32, f32)
425 C(0xb310, LPDBR, RRE, Z, 0, f2_o, f1, 0, absf64, f64)
426 C(0xb340, LPXBR, RRE, Z, 0, x2_o, x1, 0, absf128, f128)
427 /* LOAD REVERSED */
428 C(0xb91f, LRVR, RRE, Z, 0, r2_32u, new, r1_32, rev32, 0)
429 C(0xb90f, LRVGR, RRE, Z, 0, r2_o, r1, 0, rev64, 0)
430 C(0xe31f, LRVH, RXY_a, Z, 0, m2_16u, new, r1_16, rev16, 0)
431 C(0xe31e, LRV, RXY_a, Z, 0, m2_32u, new, r1_32, rev32, 0)
432 C(0xe30f, LRVG, RXY_a, Z, 0, m2_64, r1, 0, rev64, 0)
433 /* LOAD ZERO */
434 C(0xb374, LZER, RRE, Z, 0, 0, 0, e1, zero, 0)
435 C(0xb375, LZDR, RRE, Z, 0, 0, 0, f1, zero, 0)
436 C(0xb376, LZXR, RRE, Z, 0, 0, 0, x1, zero2, 0)
437
438 /* LOAD FPC */
439 C(0xb29d, LFPC, S, Z, 0, m2_32u, 0, 0, sfpc, 0)
440 /* LOAD FPC AND SIGNAL */
441 C(0xb2bd, LFAS, S, IEEEE_SIM, 0, m2_32u, 0, 0, sfas, 0)
442
443 /* LOAD LENGTHENED */
444 C(0xb304, LDEBR, RRE, Z, 0, e2, f1, 0, ldeb, 0)
445 C(0xb305, LXDBR, RRE, Z, 0, f2_o, x1, 0, lxdb, 0)
446 C(0xb306, LXEBR, RRE, Z, 0, e2, x1, 0, lxeb, 0)
447 C(0xed04, LDEB, RXE, Z, 0, m2_32u, f1, 0, ldeb, 0)
448 C(0xed05, LXDB, RXE, Z, 0, m2_64, x1, 0, lxdb, 0)
449 C(0xed06, LXEB, RXE, Z, 0, m2_32u, x1, 0, lxeb, 0)
450 /* LOAD ROUNDED */
451 C(0xb344, LEDBR, RRE, Z, 0, f2_o, new, e1, ledb, 0)
452 C(0xb345, LDXBR, RRE, Z, 0, x2_o, f1, 0, ldxb, 0)
453 C(0xb346, LEXBR, RRE, Z, 0, x2_o, new, e1, lexb, 0)
454
455 /* LOAD MULTIPLE */
456 C(0x9800, LM, RS_a, Z, 0, a2, 0, 0, lm32, 0)
457 C(0xeb98, LMY, RSY_a, LD, 0, a2, 0, 0, lm32, 0)
458 C(0xeb04, LMG, RSY_a, Z, 0, a2, 0, 0, lm64, 0)
459 /* LOAD MULTIPLE HIGH */
460 C(0xeb96, LMH, RSY_a, Z, 0, a2, 0, 0, lmh, 0)
461 /* LOAD ACCESS MULTIPLE */
462 C(0x9a00, LAM, RS_a, Z, 0, a2, 0, 0, lam, 0)
463 C(0xeb9a, LAMY, RSY_a, LD, 0, a2, 0, 0, lam, 0)
464
465 /* MOVE */
466 C(0xd200, MVC, SS_a, Z, la1, a2, 0, 0, mvc, 0)
467 C(0xe544, MVHHI, SIL, GIE, la1, i2, 0, m1_16, mov2, 0)
468 C(0xe54c, MVHI, SIL, GIE, la1, i2, 0, m1_32, mov2, 0)
469 C(0xe548, MVGHI, SIL, GIE, la1, i2, 0, m1_64, mov2, 0)
470 C(0x9200, MVI, SI, Z, la1, i2, 0, m1_8, mov2, 0)
471 C(0xeb52, MVIY, SIY, LD, la1, i2, 0, m1_8, mov2, 0)
472 /* MOVE LONG */
473 C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0)
474 /* MOVE LONG EXTENDED */
475 C(0xa800, MVCLE, RS_a, Z, 0, a2, 0, 0, mvcle, 0)
476 /* MOVE PAGE */
477 C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0)
478 /* MOVE STRING */
479 C(0xb255, MVST, RRE, Z, r1_o, r2_o, 0, 0, mvst, 0)
480
481 /* MULTIPLY */
482 C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0)
483 C(0x5c00, M, RX_a, Z, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
484 C(0xe35c, MFY, RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
485 C(0xb317, MEEBR, RRE, Z, e1, e2, new, e1, meeb, 0)
486 C(0xb31c, MDBR, RRE, Z, f1_o, f2_o, f1, 0, mdb, 0)
487 C(0xb34c, MXBR, RRE, Z, 0, x2_o, x1, 0, mxb, 0)
488 C(0xb30c, MDEBR, RRE, Z, f1_o, e2, f1, 0, mdeb, 0)
489 C(0xb307, MXDBR, RRE, Z, 0, f2_o, x1, 0, mxdb, 0)
490 C(0xed17, MEEB, RXE, Z, e1, m2_32u, new, e1, meeb, 0)
491 C(0xed1c, MDB, RXE, Z, f1_o, m2_64, f1, 0, mdb, 0)
492 C(0xed0c, MDEB, RXE, Z, f1_o, m2_32u, f1, 0, mdeb, 0)
493 C(0xed07, MXDB, RXE, Z, 0, m2_64, x1, 0, mxdb, 0)
494 /* MULTIPLY HALFWORD */
495 C(0x4c00, MH, RX_a, Z, r1_o, m2_16s, new, r1_32, mul, 0)
496 C(0xe37c, MHY, RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
497 /* MULTIPLY HALFWORD IMMEDIATE */
498 C(0xa70c, MHI, RI_a, Z, r1_o, i2, new, r1_32, mul, 0)
499 C(0xa70d, MGHI, RI_a, Z, r1_o, i2, r1, 0, mul, 0)
500 /* MULTIPLY LOGICAL */
501 C(0xb996, MLR, RRE, Z, r1p1_32u, r2_32u, new, r1_D32, mul, 0)
502 C(0xe396, ML, RXY_a, Z, r1p1_32u, m2_32u, new, r1_D32, mul, 0)
503 C(0xb986, MLGR, RRE, Z, r1p1, r2_o, r1_P, 0, mul128, 0)
504 C(0xe386, MLG, RXY_a, Z, r1p1, m2_64, r1_P, 0, mul128, 0)
505 /* MULTIPLY SINGLE */
506 C(0xb252, MSR, RRE, Z, r1_o, r2_o, new, r1_32, mul, 0)
507 C(0x7100, MS, RX_a, Z, r1_o, m2_32s, new, r1_32, mul, 0)
508 C(0xe351, MSY, RXY_a, LD, r1_o, m2_32s, new, r1_32, mul, 0)
509 C(0xb90c, MSGR, RRE, Z, r1_o, r2_o, r1, 0, mul, 0)
510 C(0xb91c, MSGFR, RRE, Z, r1_o, r2_32s, r1, 0, mul, 0)
511 C(0xe30c, MSG, RXY_a, Z, r1_o, m2_64, r1, 0, mul, 0)
512 C(0xe31c, MSGF, RXY_a, Z, r1_o, m2_32s, r1, 0, mul, 0)
513 /* MULTIPLY SINGLE IMMEDIATE */
514 C(0xc201, MSFI, RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
515 C(0xc200, MSGFI, RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
516
517 /* MULTIPLY AND ADD */
518 C(0xb30e, MAEBR, RRD, Z, e1, e2, new, e1, maeb, 0)
519 C(0xb31e, MADBR, RRD, Z, f1_o, f2_o, f1, 0, madb, 0)
520 C(0xed0e, MAEB, RXF, Z, e1, m2_32u, new, e1, maeb, 0)
521 C(0xed1e, MADB, RXF, Z, f1_o, m2_64, f1, 0, madb, 0)
522 /* MULTIPLY AND SUBTRACT */
523 C(0xb30f, MSEBR, RRD, Z, e1, e2, new, e1, mseb, 0)
524 C(0xb31f, MSDBR, RRD, Z, f1_o, f2_o, f1, 0, msdb, 0)
525 C(0xed0f, MSEB, RXF, Z, e1, m2_32u, new, e1, mseb, 0)
526 C(0xed1f, MSDB, RXF, Z, f1_o, m2_64, f1, 0, msdb, 0)
527
528 /* OR */
529 C(0x1600, OR, RR_a, Z, r1, r2, new, r1_32, or, nz32)
530 C(0xb9f6, ORK, RRF_a, DO, r2, r3, new, r1_32, or, nz32)
531 C(0x5600, O, RX_a, Z, r1, m2_32s, new, r1_32, or, nz32)
532 C(0xe356, OY, RXY_a, LD, r1, m2_32s, new, r1_32, or, nz32)
533 C(0xb981, OGR, RRE, Z, r1, r2, r1, 0, or, nz64)
534 C(0xb9e6, OGRK, RRF_a, DO, r2, r3, r1, 0, or, nz64)
535 C(0xe381, OG, RXY_a, Z, r1, m2_64, r1, 0, or, nz64)
536 C(0xd600, OC, SS_a, Z, la1, a2, 0, 0, oc, 0)
537 /* OR IMMEDIATE */
538 D(0xc00c, OIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
539 D(0xc00d, OILF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
540 D(0xa508, OIHH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
541 D(0xa509, OIHL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
542 D(0xa50a, OILH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
543 D(0xa50b, OILL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
544 C(0x9600, OI, SI, Z, m1_8u, i2_8u, new, m1_8, or, nz64)
545 C(0xeb56, OIY, SIY, LD, m1_8u, i2_8u, new, m1_8, or, nz64)
546
547 /* PREFETCH */
548 /* Implemented as nops of course. */
549 C(0xe336, PFD, RXY_b, GIE, 0, 0, 0, 0, 0, 0)
550 C(0xc602, PFDRL, RIL_c, GIE, 0, 0, 0, 0, 0, 0)
551
552 /* POPULATION COUNT */
553 C(0xb9e1, POPCNT, RRE, PC, 0, r2_o, r1, 0, popcnt, nz64)
554
555 /* ROTATE LEFT SINGLE LOGICAL */
556 C(0xeb1d, RLL, RSY_a, Z, r3_o, sh32, new, r1_32, rll32, 0)
557 C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh64, r1, 0, rll64, 0)
558
559 /* ROTATE THEN INSERT SELECTED BITS */
560 C(0xec55, RISBG, RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
561 C(0xec5d, RISBHG, RIE_f, GIE, 0, r2, r1, 0, risbg, 0)
562 C(0xec51, RISBLG, RIE_f, GIE, 0, r2, r1, 0, risbg, 0)
563 /* ROTATE_THEN <OP> SELECTED BITS */
564 C(0xec54, RNSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
565 C(0xec56, ROSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
566 C(0xec57, RXSBG, RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
567
568 /* SEARCH STRING */
569 C(0xb25e, SRST, RRE, Z, r1_o, r2_o, 0, 0, srst, 0)
570
571 /* SET ACCESS */
572 C(0xb24e, SAR, RRE, Z, 0, r2_o, 0, 0, sar, 0)
573 /* SET ADDRESSING MODE */
574 D(0x010c, SAM24, E, Z, 0, 0, 0, 0, sam, 0, 0)
575 D(0x010d, SAM31, E, Z, 0, 0, 0, 0, sam, 0, 1)
576 D(0x010e, SAM64, E, Z, 0, 0, 0, 0, sam, 0, 3)
577 /* SET FPC */
578 C(0xb384, SFPC, RRE, Z, 0, r1_o, 0, 0, sfpc, 0)
579 /* SET FPC AND SIGNAL */
580 C(0xb385, SFASR, RRE, IEEEE_SIM, 0, r1_o, 0, 0, sfas, 0)
581 /* SET BFP ROUNDING MODE */
582 C(0xb299, SRNM, S, Z, 0, 0, 0, 0, srnm, 0)
583 C(0xb2b8, SRNMB, S, FPE, 0, 0, 0, 0, srnm, 0)
584 /* SET DFP ROUNDING MODE */
585 C(0xb2b9, SRNMT, S, DFP, 0, 0, 0, 0, srnm, 0)
586
587 /* SHIFT LEFT SINGLE */
588 D(0x8b00, SLA, RS_a, Z, r1, sh32, new, r1_32, sla, 0, 31)
589 D(0xebdd, SLAK, RSY_a, DO, r3, sh32, new, r1_32, sla, 0, 31)
590 D(0xeb0b, SLAG, RSY_a, Z, r3, sh64, r1, 0, sla, 0, 63)
591 /* SHIFT LEFT SINGLE LOGICAL */
592 C(0x8900, SLL, RS_a, Z, r1_o, sh32, new, r1_32, sll, 0)
593 C(0xebdf, SLLK, RSY_a, DO, r3_o, sh32, new, r1_32, sll, 0)
594 C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh64, r1, 0, sll, 0)
595 /* SHIFT RIGHT SINGLE */
596 C(0x8a00, SRA, RS_a, Z, r1_32s, sh32, new, r1_32, sra, s32)
597 C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh32, new, r1_32, sra, s32)
598 C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh64, r1, 0, sra, s64)
599 /* SHIFT RIGHT SINGLE LOGICAL */
600 C(0x8800, SRL, RS_a, Z, r1_32u, sh32, new, r1_32, srl, 0)
601 C(0xebde, SRLK, RSY_a, DO, r3_32u, sh32, new, r1_32, srl, 0)
602 C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh64, r1, 0, srl, 0)
603 /* SHIFT LEFT DOUBLE */
604 D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 31)
605 /* SHIFT LEFT DOUBLE LOGICAL */
606 C(0x8d00, SLDL, RS_a, Z, r1_D32, sh64, new, r1_D32, sll, 0)
607 /* SHIFT RIGHT DOUBLE */
608 C(0x8e00, SRDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sra, s64)
609 /* SHIFT RIGHT DOUBLE LOGICAL */
610 C(0x8c00, SRDL, RS_a, Z, r1_D32, sh64, new, r1_D32, srl, 0)
611
612 /* SQUARE ROOT */
613 C(0xb314, SQEBR, RRE, Z, 0, e2, new, e1, sqeb, 0)
614 C(0xb315, SQDBR, RRE, Z, 0, f2_o, f1, 0, sqdb, 0)
615 C(0xb316, SQXBR, RRE, Z, 0, x2_o, x1, 0, sqxb, 0)
616 C(0xed14, SQEB, RXE, Z, 0, m2_32u, new, e1, sqeb, 0)
617 C(0xed15, SQDB, RXE, Z, 0, m2_64, f1, 0, sqdb, 0)
618
619 /* STORE */
620 C(0x5000, ST, RX_a, Z, r1_o, a2, 0, 0, st32, 0)
621 C(0xe350, STY, RXY_a, LD, r1_o, a2, 0, 0, st32, 0)
622 C(0xe324, STG, RXY_a, Z, r1_o, a2, 0, 0, st64, 0)
623 C(0x6000, STD, RX_a, Z, f1_o, a2, 0, 0, st64, 0)
624 C(0xed67, STDY, RXY_a, LD, f1_o, a2, 0, 0, st64, 0)
625 C(0x7000, STE, RX_a, Z, e1, a2, 0, 0, st32, 0)
626 C(0xed66, STEY, RXY_a, LD, e1, a2, 0, 0, st32, 0)
627 /* STORE RELATIVE LONG */
628 C(0xc40f, STRL, RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
629 C(0xc40b, STGRL, RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
630 /* STORE CHARACTER */
631 C(0x4200, STC, RX_a, Z, r1_o, a2, 0, 0, st8, 0)
632 C(0xe372, STCY, RXY_a, LD, r1_o, a2, 0, 0, st8, 0)
633 /* STORE CHARACTERS UNDER MASK */
634 D(0xbe00, STCM, RS_b, Z, r1_o, a2, 0, 0, stcm, 0, 0)
635 D(0xeb2d, STCMY, RSY_b, LD, r1_o, a2, 0, 0, stcm, 0, 0)
636 D(0xeb2c, STCMH, RSY_b, LD, r1_o, a2, 0, 0, stcm, 0, 32)
637 /* STORE HALFWORD */
638 C(0x4000, STH, RX_a, Z, r1_o, a2, 0, 0, st16, 0)
639 C(0xe370, STHY, RXY_a, LD, r1_o, a2, 0, 0, st16, 0)
640 /* STORE HALFWORD RELATIVE LONG */
641 C(0xc407, STHRL, RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
642 /* STORE ON CONDITION */
643 D(0xebf3, STOC, RSY_b, LOC, 0, 0, 0, 0, soc, 0, 0)
644 D(0xebe3, STOCG, RSY_b, LOC, 0, 0, 0, 0, soc, 0, 1)
645 /* STORE REVERSED */
646 C(0xe33f, STRVH, RXY_a, Z, la2, r1_16u, new, m1_16, rev16, 0)
647 C(0xe33e, STRV, RXY_a, Z, la2, r1_32u, new, m1_32, rev32, 0)
648 C(0xe32f, STRVG, RXY_a, Z, la2, r1_o, new, m1_64, rev64, 0)
649
650 /* STORE FPC */
651 C(0xb29c, STFPC, S, Z, 0, a2, new, m2_32, efpc, 0)
652
653 /* STORE MULTIPLE */
654 D(0x9000, STM, RS_a, Z, 0, a2, 0, 0, stm, 0, 4)
655 D(0xeb90, STMY, RSY_a, LD, 0, a2, 0, 0, stm, 0, 4)
656 D(0xeb24, STMG, RSY_a, Z, 0, a2, 0, 0, stm, 0, 8)
657 /* STORE MULTIPLE HIGH */
658 C(0xeb26, STMH, RSY_a, Z, 0, a2, 0, 0, stmh, 0)
659 /* STORE ACCESS MULTIPLE */
660 C(0x9b00, STAM, RS_a, Z, 0, a2, 0, 0, stam, 0)
661 C(0xeb9b, STAMY, RSY_a, LD, 0, a2, 0, 0, stam, 0)
662
663 /* SUBTRACT */
664 C(0x1b00, SR, RR_a, Z, r1, r2, new, r1_32, sub, subs32)
665 C(0xb9f9, SRK, RRF_a, DO, r2, r3, new, r1_32, sub, subs32)
666 C(0x5b00, S, RX_a, Z, r1, m2_32s, new, r1_32, sub, subs32)
667 C(0xe35b, SY, RXY_a, LD, r1, m2_32s, new, r1_32, sub, subs32)
668 C(0xb909, SGR, RRE, Z, r1, r2, r1, 0, sub, subs64)
669 C(0xb919, SGFR, RRE, Z, r1, r2_32s, r1, 0, sub, subs64)
670 C(0xb9e9, SGRK, RRF_a, DO, r2, r3, r1, 0, sub, subs64)
671 C(0xe309, SG, RXY_a, Z, r1, m2_64, r1, 0, sub, subs64)
672 C(0xe319, SGF, RXY_a, Z, r1, m2_32s, r1, 0, sub, subs64)
673 C(0xb30b, SEBR, RRE, Z, e1, e2, new, e1, seb, f32)
674 C(0xb31b, SDBR, RRE, Z, f1_o, f2_o, f1, 0, sdb, f64)
675 C(0xb34b, SXBR, RRE, Z, 0, x2_o, x1, 0, sxb, f128)
676 C(0xed0b, SEB, RXE, Z, e1, m2_32u, new, e1, seb, f32)
677 C(0xed1b, SDB, RXE, Z, f1_o, m2_64, f1, 0, sdb, f64)
678 /* SUBTRACT HALFWORD */
679 C(0x4b00, SH, RX_a, Z, r1, m2_16s, new, r1_32, sub, subs32)
680 C(0xe37b, SHY, RXY_a, LD, r1, m2_16s, new, r1_32, sub, subs32)
681 /* SUBTRACT LOGICAL */
682 C(0x1f00, SLR, RR_a, Z, r1, r2, new, r1_32, sub, subu32)
683 C(0xb9fb, SLRK, RRF_a, DO, r2, r3, new, r1_32, sub, subu32)
684 C(0x5f00, SL, RX_a, Z, r1, m2_32u, new, r1_32, sub, subu32)
685 C(0xe35f, SLY, RXY_a, LD, r1, m2_32u, new, r1_32, sub, subu32)
686 C(0xb90b, SLGR, RRE, Z, r1, r2, r1, 0, sub, subu64)
687 C(0xb91b, SLGFR, RRE, Z, r1, r2_32u, r1, 0, sub, subu64)
688 C(0xb9eb, SLGRK, RRF_a, DO, r2, r3, r1, 0, sub, subu64)
689 C(0xe30b, SLG, RXY_a, Z, r1, m2_64, r1, 0, sub, subu64)
690 C(0xe31b, SLGF, RXY_a, Z, r1, m2_32u, r1, 0, sub, subu64)
691 /* SUBTRACT LOGICAL IMMEDIATE */
692 C(0xc205, SLFI, RIL_a, EI, r1, i2_32u, new, r1_32, sub, subu32)
693 C(0xc204, SLGFI, RIL_a, EI, r1, i2_32u, r1, 0, sub, subu64)
694 /* SUBTRACT LOGICAL WITH BORROW */
695 C(0xb999, SLBR, RRE, Z, r1, r2, new, r1_32, subb, subb32)
696 C(0xb989, SLBGR, RRE, Z, r1, r2, r1, 0, subb, subb64)
697 C(0xe399, SLB, RXY_a, Z, r1, m2_32u, new, r1_32, subb, subb32)
698 C(0xe389, SLBG, RXY_a, Z, r1, m2_64, r1, 0, subb, subb64)
699
700 /* SUPERVISOR CALL */
701 C(0x0a00, SVC, I, Z, 0, 0, 0, 0, svc, 0)
702
703 /* TEST DATA CLASS */
704 C(0xed10, TCEB, RXE, Z, e1, a2, 0, 0, tceb, 0)
705 C(0xed11, TCDB, RXE, Z, f1_o, a2, 0, 0, tcdb, 0)
706 C(0xed12, TCXB, RXE, Z, x1_o, a2, 0, 0, tcxb, 0)
707
708 /* TEST UNDER MASK */
709 C(0x9100, TM, SI, Z, m1_8u, i2_8u, 0, 0, 0, tm32)
710 C(0xeb51, TMY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, tm32)
711 D(0xa702, TMHH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
712 D(0xa703, TMHL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
713 D(0xa700, TMLH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
714 D(0xa701, TMLL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
715
716 /* TRANSLATE */
717 C(0xdc00, TR, SS_a, Z, la1, a2, 0, 0, tr, 0)
718
719 /* UNPACK */
720 /* Really format SS_b, but we pack both lengths into one argument
721 for the helper call, so we might as well leave one 8-bit field. */
722 C(0xf300, UNPK, SS_a, Z, la1, a2, 0, 0, unpk, 0)
723
724 #ifndef CONFIG_USER_ONLY
725 /* COMPARE AND SWAP AND PURGE */
726 C(0xb250, CSP, RRE, Z, 0, ra2, 0, 0, csp, 0)
727 /* DIAGNOSE (KVM hypercall) */
728 C(0x8300, DIAG, RX_a, Z, 0, 0, 0, 0, diag, 0)
729 /* INSERT STORAGE KEY EXTENDED */
730 C(0xb229, ISKE, RRE, Z, 0, r2_o, new, r1_8, iske, 0)
731 /* INVALIDATE PAGE TABLE ENTRY */
732 C(0xb221, IPTE, RRF_a, Z, r1_o, r2_o, 0, 0, ipte, 0)
733 /* LOAD CONTROL */
734 C(0xb700, LCTL, RS_a, Z, 0, a2, 0, 0, lctl, 0)
735 C(0xeb2f, LCTLG, RSY_a, Z, 0, a2, 0, 0, lctlg, 0)
736 /* LOAD PSW */
737 C(0x8200, LPSW, S, Z, 0, a2, 0, 0, lpsw, 0)
738 /* LOAD PSW EXTENDED */
739 C(0xb2b2, LPSWE, S, Z, 0, a2, 0, 0, lpswe, 0)
740 /* LOAD REAL ADDRESS */
741 C(0xb100, LRA, RX_a, Z, 0, a2, r1, 0, lra, 0)
742 C(0xe313, LRAY, RXY_a, LD, 0, a2, r1, 0, lra, 0)
743 C(0xe303, LRAG, RXY_a, Z, 0, a2, r1, 0, lra, 0)
744 /* LOAD USING REAL ADDRESS */
745 C(0xb24b, LURA, RRE, Z, 0, r2, new, r1_32, lura, 0)
746 C(0xb905, LURAG, RRE, Z, 0, r2, r1, 0, lurag, 0)
747 /* MOVE TO PRIMARY */
748 C(0xda00, MVCP, SS_d, Z, la1, a2, 0, 0, mvcp, 0)
749 /* MOVE TO SECONDARY */
750 C(0xdb00, MVCS, SS_d, Z, la1, a2, 0, 0, mvcs, 0)
751 /* PURGE TLB */
752 C(0xb20d, PTLB, S, Z, 0, 0, 0, 0, ptlb, 0)
753 /* RESET REFERENCE BIT EXTENDED */
754 C(0xb22a, RRBE, RRE, Z, 0, r2_o, 0, 0, rrbe, 0)
755 /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
756 C(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0)
757 /* SET ADDRESS SPACE CONTROL FAST */
758 C(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0)
759 /* SET CLOCK */
760 /* ??? Not implemented - is it necessary? */
761 C(0xb204, SCK, S, Z, 0, 0, 0, 0, 0, 0)
762 /* SET CLOCK COMPARATOR */
763 C(0xb206, SCKC, S, Z, 0, m2_64, 0, 0, sckc, 0)
764 /* SET CPU TIMER */
765 C(0xb208, SPT, S, Z, 0, m2_64, 0, 0, spt, 0)
766 /* SET PREFIX */
767 C(0xb210, SPX, S, Z, 0, m2_32u, 0, 0, spx, 0)
768 /* SET PSW KEY FROM ADDRESS */
769 C(0xb20a, SPKA, S, Z, 0, a2, 0, 0, spka, 0)
770 /* SET STORAGE KEY EXTENDED */
771 C(0xb22b, SSKE, RRF_c, Z, r1_o, r2_o, 0, 0, sske, 0)
772 /* SET SYSTEM MASK */
773 C(0x8000, SSM, S, Z, 0, m2_8u, 0, 0, ssm, 0)
774 /* SIGNAL PROCESSOR */
775 C(0xae00, SIGP, RS_a, Z, r3_o, a2, 0, 0, sigp, 0)
776 /* STORE CLOCK */
777 C(0xb205, STCK, S, Z, la2, 0, new, m1_64, stck, 0)
778 C(0xb27c, STCKF, S, Z, la2, 0, new, m1_64, stck, 0)
779 /* STORE CLOCK EXTENDED */
780 C(0xb278, STCKE, S, Z, 0, a2, 0, 0, stcke, 0)
781 /* STORE CLOCK COMPARATOR */
782 C(0xb207, STCKC, S, Z, la2, 0, new, m1_64, stckc, 0)
783 /* STORE CONTROL */
784 C(0xb600, STCTL, RS_a, Z, 0, a2, 0, 0, stctl, 0)
785 C(0xeb25, STCTG, RSY_a, Z, 0, a2, 0, 0, stctg, 0)
786 /* STORE CPU ADDRESS */
787 C(0xb212, STAP, S, Z, la2, 0, new, m1_16, stap, 0)
788 /* STORE CPU ID */
789 C(0xb202, STIDP, S, Z, la2, 0, new, m1_64, stidp, 0)
790 /* STORE CPU TIMER */
791 C(0xb209, STPT, S, Z, la2, 0, new, m1_64, stpt, 0)
792 /* STORE FACILITY LIST */
793 C(0xb2b1, STFL, S, Z, 0, 0, 0, 0, stfl, 0)
794 /* STORE PREFIX */
795 C(0xb211, STPX, S, Z, la2, 0, new, m1_32, stpx, 0)
796 /* STORE SYSTEM INFORMATION */
797 C(0xb27d, STSI, S, Z, 0, a2, 0, 0, stsi, 0)
798 /* STORE THEN AND SYSTEM MASK */
799 C(0xac00, STNSM, SI, Z, la1, 0, 0, 0, stnosm, 0)
800 /* STORE THEN OR SYSTEM MASK */
801 C(0xad00, STOSM, SI, Z, la1, 0, 0, 0, stnosm, 0)
802 /* STORE USING REAL ADDRESS */
803 C(0xb246, STURA, RRE, Z, r1_o, r2_o, 0, 0, stura, 0)
804 C(0xb925, STURG, RRE, Z, r1_o, r2_o, 0, 0, sturg, 0)
805 /* TEST PROTECTION */
806 C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0)
807
808 /* I/O Instructions. For each we simply indicate non-operation. */
809 C(0xb276, XSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
810 C(0xb230, CSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
811 C(0xb231, HSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
812 C(0xb232, MSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
813 C(0xb23b, RCHP, S, Z, 0, 0, 0, 0, subchannel, 0)
814 C(0xb238, RSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
815 C(0xb233, SSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
816 C(0xb234, STSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
817 C(0xb235, TSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
818 /* ??? Not listed in PoO ninth edition, but there's a linux driver that
819 uses it: "A CHSC subchannel is usually present on LPAR only." */
820 C(0xb25f, CHSC, S, Z, 0, 0, 0, 0, subchannel, 0)
821 #endif /* CONFIG_USER_ONLY */