]> git.proxmox.com Git - qemu.git/blob - target-s390x/insn-data.def
b0cf90880a68b2f1eca732859073b899907f1224
[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
94 /* CHECKSUM */
95 C(0xb241, CKSM, RRE, Z, r1_o, ra2, new, r1_32, cksm, 0)
96
97 /* COMPARE */
98 C(0x1900, CR, RR_a, Z, r1_o, r2_o, 0, 0, 0, cmps32)
99 C(0x5900, C, RX_a, Z, r1_o, m2_32s, 0, 0, 0, cmps32)
100 C(0xe359, CY, RXY_a, LD, r1_o, m2_32s, 0, 0, 0, cmps32)
101 C(0xb920, CGR, RRE, Z, r1_o, r2_o, 0, 0, 0, cmps64)
102 C(0xb930, CGFR, RRE, Z, r1_o, r2_32s, 0, 0, 0, cmps64)
103 C(0xe320, CG, RXY_a, Z, r1_o, m2_64, 0, 0, 0, cmps64)
104 C(0xe330, CGF, RXY_a, Z, r1_o, m2_32s, 0, 0, 0, cmps64)
105 C(0xb309, CEBR, RRE, Z, e1, e2, 0, 0, ceb, 0)
106 C(0xb319, CDBR, RRE, Z, f1_o, f2_o, 0, 0, cdb, 0)
107 C(0xb349, CXBR, RRE, Z, x1_o, x2_o, 0, 0, cxb, 0)
108 C(0xed09, CEB, RXE, Z, e1, m2_32u, 0, 0, ceb, 0)
109 C(0xed19, CDB, RXE, Z, f1_o, m2_64, 0, 0, cdb, 0)
110 /* COMPARE IMMEDIATE */
111 C(0xc20d, CFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps32)
112 C(0xc20c, CGFI, RIL_a, EI, r1, i2, 0, 0, 0, cmps64)
113 /* COMPARE HALFWORD */
114 C(0x4900, CH, RX_a, Z, r1_o, m2_16s, 0, 0, 0, cmps32)
115 C(0xe379, CHY, RXY_a, LD, r1_o, m2_16s, 0, 0, 0, cmps32)
116 C(0xe334, CGH, RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
117 /* COMPARE HALFWORD IMMEDIATE */
118 C(0xa70e, CHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps32)
119 C(0xa70f, CGHI, RI_a, Z, r1_o, i2, 0, 0, 0, cmps64)
120 C(0xe554, CHHSI, SIL, GIE, m1_16s, i2, 0, 0, 0, cmps64)
121 C(0xe55c, CHSI, SIL, GIE, m1_32s, i2, 0, 0, 0, cmps64)
122 C(0xe558, CGHSI, SIL, GIE, m1_64, i2, 0, 0, 0, cmps64)
123 /* COMPARE HALFWORD RELATIVE LONG */
124 C(0xc605, CHRL, RIL_a, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
125 C(0xc604, CGHRL, RIL_a, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
126
127 /* COMPARE LOGICAL */
128 C(0x1500, CLR, RR_a, Z, r1, r2, 0, 0, 0, cmpu32)
129 C(0x5500, CL, RX_a, Z, r1, m2_32s, 0, 0, 0, cmpu32)
130 C(0xe355, CLY, RXY_a, LD, r1, m2_32s, 0, 0, 0, cmpu32)
131 C(0xb921, CLGR, RRE, Z, r1, r2, 0, 0, 0, cmpu64)
132 C(0xb931, CLGFR, RRE, Z, r1, r2_32u, 0, 0, 0, cmpu64)
133 C(0xe321, CLG, RXY_a, Z, r1, m2_64, 0, 0, 0, cmpu64)
134 C(0xe331, CLGF, RXY_a, Z, r1, m2_32u, 0, 0, 0, cmpu64)
135 C(0xd500, CLC, SS_a, Z, la1, a2, 0, 0, clc, 0)
136 /* COMPARE LOGICAL IMMEDIATE */
137 C(0xc20f, CLFI, RIL_a, EI, r1, i2, 0, 0, 0, cmpu32)
138 C(0xc20e, CLGFI, RIL_a, EI, r1, i2_32u, 0, 0, 0, cmpu64)
139 C(0x9500, CLI, SI, Z, m1_8u, i2_8u, 0, 0, 0, cmpu64)
140 C(0xeb55, CLIY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, cmpu64)
141 C(0xe555, CLHHSI, SIL, GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
142 C(0xe55d, CLFHSI, SIL, GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
143 C(0xe559, CLGHSI, SIL, GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
144 /* COMPARE LOGICAL RELATIVE LONG */
145 C(0xc60f, CLRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
146 C(0xc60a, CLGRL, RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
147 C(0xc60e, CLGFRL, RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
148 C(0xc607, CLHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
149 C(0xc606, CLGHRL, RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
150 /* COMPARE LOGICAL LONG EXTENDED */
151 C(0xa900, CLCLE, RS_a, Z, 0, a2, 0, 0, clcle, 0)
152 /* COMPARE LOGICAL CHARACTERS UNDER MASK */
153 C(0xbd00, CLM, RS_b, Z, r1_o, a2, 0, 0, clm, 0)
154 C(0xeb21, CLMY, RSY_b, LD, r1_o, a2, 0, 0, clm, 0)
155 C(0xeb20, CLMH, RSY_b, Z, r1_sr32, a2, 0, 0, clm, 0)
156 /* COMPARE LOGICAL STRING */
157 C(0xb25d, CLST, RRE, Z, r1_o, r2_o, 0, 0, clst, 0)
158
159 /* COMPARE AND SWAP */
160 C(0xba00, CS, RS_a, Z, r1_o, a2, new, r1_32, cs, 0)
161 C(0xeb14, CSY, RSY_a, LD, r1_o, a2, new, r1_32, cs, 0)
162 C(0xeb30, CSG, RSY_a, Z, r1_o, a2, r1, 0, csg, 0)
163 /* COMPARE DOUBLE AND SWAP */
164 C(0xbb00, CDS, RS_a, Z, r1_D32, a2, new, r1_D32, cds, 0)
165 C(0xeb31, CDSY, RSY_a, LD, r1_D32, a2, new, r1_D32, cds, 0)
166 C(0xeb3e, CDSG, RSY_a, Z, 0, a2, 0, 0, cdsg, 0)
167
168 /* CONVERT TO DECIMAL */
169 C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
170 C(0xe326, CVDY, RXY_a, LD, r1_o, a2, 0, 0, cvd, 0)
171 /* CONVERT TO FIXED */
172 C(0xb398, CFEBR, RRF_e, Z, 0, e2, new, r1_32, cfeb, 0)
173 C(0xb399, CFDBR, RRF_e, Z, 0, f2_o, new, r1_32, cfdb, 0)
174 C(0xb39a, CFXBR, RRF_e, Z, 0, x2_o, new, r1_32, cfxb, 0)
175 C(0xb3a8, CGEBR, RRF_e, Z, 0, e2, r1, 0, cgeb, 0)
176 C(0xb3a9, CGDBR, RRF_e, Z, 0, f2_o, r1, 0, cgdb, 0)
177 C(0xb3aa, CGXBR, RRF_e, Z, 0, x2_o, r1, 0, cgxb, 0)
178 /* CONVERT FROM FIXED */
179 C(0xb394, CEFBR, RRF_e, Z, 0, r2_32s, new, e1, cegb, 0)
180 C(0xb395, CDFBR, RRF_e, Z, 0, r2_32s, f1, 0, cdgb, 0)
181 C(0xb396, CXFBR, RRF_e, Z, 0, r2_32s, x1, 0, cxgb, 0)
182 C(0xb3a4, CEGBR, RRF_e, Z, 0, r2_o, new, e1, cegb, 0)
183 C(0xb3a5, CDGBR, RRF_e, Z, 0, r2_o, f1, 0, cdgb, 0)
184 C(0xb3a6, CXGBR, RRF_e, Z, 0, r2_o, x1, 0, cxgb, 0)
185
186 /* DIVIDE */
187 C(0x1d00, DR, RR_a, Z, r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
188 C(0x5d00, D, RX_a, Z, r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
189 C(0xb30d, DEBR, RRE, Z, e1, e2, new, e1, deb, 0)
190 C(0xb31d, DDBR, RRE, Z, f1_o, f2_o, f1, 0, ddb, 0)
191 C(0xb34d, DXBR, RRE, Z, 0, x2_o, x1, 0, dxb, 0)
192 C(0xed0d, DEB, RXE, Z, e1, m2_32u, new, e1, deb, 0)
193 C(0xed1d, DDB, RXE, Z, f1_o, m2_64, f1, 0, ddb, 0)
194 /* DIVIDE LOGICAL */
195 C(0xb997, DLR, RRE, Z, r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
196 C(0xe397, DL, RXY_a, Z, r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
197 C(0xb987, DLGR, RRE, Z, 0, r2_o, r1_P, 0, divu64, 0)
198 C(0xe387, DLG, RXY_a, Z, 0, m2_64, r1_P, 0, divu64, 0)
199 /* DIVIDE SINGLE */
200 C(0xb90d, DSGR, RRE, Z, r1p1, r2, r1_P, 0, divs64, 0)
201 C(0xb91d, DSGFR, RRE, Z, r1p1, r2_32s, r1_P, 0, divs64, 0)
202 C(0xe30d, DSG, RXY_a, Z, r1p1, m2_64, r1_P, 0, divs64, 0)
203 C(0xe31d, DSGF, RXY_a, Z, r1p1, m2_32s, r1_P, 0, divs64, 0)
204
205 /* EXCLUSIVE OR */
206 C(0x1700, XR, RR_a, Z, r1, r2, new, r1_32, xor, nz32)
207 C(0xb9f7, XRK, RRF_a, DO, r2, r3, new, r1_32, xor, nz32)
208 C(0x5700, X, RX_a, Z, r1, m2_32s, new, r1_32, xor, nz32)
209 C(0xe357, XY, RXY_a, LD, r1, m2_32s, new, r1_32, xor, nz32)
210 C(0xb982, XGR, RRE, Z, r1, r2, r1, 0, xor, nz64)
211 C(0xb9e7, XGRK, RRF_a, DO, r2, r3, r1, 0, xor, nz64)
212 C(0xe382, XG, RXY_a, Z, r1, m2_64, r1, 0, xor, nz64)
213 C(0xd700, XC, SS_a, Z, la1, a2, 0, 0, xc, 0)
214 /* EXCLUSIVE OR IMMEDIATE */
215 D(0xc006, XIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
216 D(0xc007, XILF, RIL_a, EI, r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
217 C(0x9700, XI, SI, Z, m1_8u, i2_8u, new, m1_8, xor, nz64)
218 C(0xeb57, XIY, SIY, LD, m1_8u, i2_8u, new, m1_8, xor, nz64)
219
220 /* EXECUTE */
221 C(0x4400, EX, RX_a, Z, r1_o, a2, 0, 0, ex, 0)
222 /* EXECUTE RELATIVE LONG */
223 C(0xc600, EXRL, RIL_b, EE, r1_o, ri2, 0, 0, ex, 0)
224
225 /* EXTRACT ACCESS */
226 C(0xb24f, EAR, RRE, Z, 0, 0, new, r1_32, ear, 0)
227 /* EXTRACT FPC */
228 C(0xb38c, EFPC, RRE, Z, 0, 0, new, r1_32, efpc, 0)
229
230 /* FIND LEFTMOST ONE */
231 C(0xb983, FLOGR, RRE, EI, 0, r2_o, r1_P, 0, flogr, 0)
232
233 /* INSERT CHARACTER */
234 C(0x4300, IC, RX_a, Z, 0, m2_8u, 0, r1_8, mov2, 0)
235 C(0xe373, ICY, RXY_a, LD, 0, m2_8u, 0, r1_8, mov2, 0)
236 /* INSERT CHARACTERS UNDER MASK */
237 D(0xbf00, ICM, RS_b, Z, 0, a2, r1, 0, icm, 0, 0)
238 D(0xeb81, ICMY, RSY_b, LD, 0, a2, r1, 0, icm, 0, 0)
239 D(0xeb80, ICMH, RSY_b, Z, 0, a2, r1, 0, icm, 0, 32)
240 /* INSERT IMMEDIATE */
241 D(0xc008, IIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
242 D(0xc009, IILF, RIL_a, EI, r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
243 D(0xa500, IIHH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
244 D(0xa501, IIHL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
245 D(0xa502, IILH, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
246 D(0xa503, IILL, RI_a, Z, r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
247 /* INSERT PROGRAM MASK */
248 C(0xb222, IPM, RRE, Z, 0, 0, r1, 0, ipm, 0)
249
250 /* LOAD */
251 C(0x1800, LR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, 0)
252 C(0x5800, L, RX_a, Z, 0, a2, new, r1_32, ld32s, 0)
253 C(0xe358, LY, RXY_a, Z, 0, a2, new, r1_32, ld32s, 0)
254 C(0xb904, LGR, RRE, Z, 0, r2_o, 0, r1, mov2, 0)
255 C(0xb914, LGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, 0)
256 C(0xe304, LG, RXY_a, Z, 0, a2, r1, 0, ld64, 0)
257 C(0xe314, LGF, RXY_a, Z, 0, a2, r1, 0, ld32s, 0)
258 C(0x2800, LDR, RR_a, Z, 0, f2_o, 0, f1, mov2, 0)
259 C(0x6800, LD, RX_a, Z, 0, m2_64, 0, f1, mov2, 0)
260 C(0xed65, LDY, RXY_a, LD, 0, m2_64, 0, f1, mov2, 0)
261 C(0x3800, LER, RR_a, Z, 0, e2, 0, cond_e1e2, mov2, 0)
262 C(0x7800, LE, RX_a, Z, 0, m2_32u, 0, e1, mov2, 0)
263 C(0xed64, LEY, RXY_a, LD, 0, m2_32u, 0, e1, mov2, 0)
264 C(0xb365, LXR, RRE, Z, 0, x2_o, 0, x1, movx, 0)
265 /* LOAD IMMEDIATE */
266 C(0xc001, LGFI, RIL_a, EI, 0, i2, 0, r1, mov2, 0)
267 /* LOAD RELATIVE LONG */
268 C(0xc40d, LRL, RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
269 C(0xc408, LGRL, RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
270 C(0xc40c, LGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
271 /* LOAD ADDRESS */
272 C(0x4100, LA, RX_a, Z, 0, a2, 0, r1, mov2, 0)
273 C(0xe371, LAY, RXY_a, LD, 0, a2, 0, r1, mov2, 0)
274 /* LOAD ADDRESS RELATIVE LONG */
275 C(0xc000, LARL, RIL_b, Z, 0, ri2, 0, r1, mov2, 0)
276 /* LOAD AND TEST */
277 C(0x1200, LTR, RR_a, Z, 0, r2_o, 0, cond_r1r2_32, mov2, s32)
278 C(0xb902, LTGR, RRE, Z, 0, r2_o, 0, r1, mov2, s64)
279 C(0xb912, LTGFR, RRE, Z, 0, r2_32s, 0, r1, mov2, s64)
280 C(0xe312, LT, RXY_a, EI, 0, a2, new, r1_32, ld32s, s64)
281 C(0xe302, LTG, RXY_a, EI, 0, a2, r1, 0, ld64, s64)
282 C(0xe332, LTGF, RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
283 C(0xb302, LTEBR, RRE, Z, 0, e2, 0, cond_e1e2, mov2, f32)
284 C(0xb312, LTDBR, RRE, Z, 0, f2_o, 0, f1, mov2, f64)
285 C(0xb342, LTXBR, RRE, Z, 0, x2_o, 0, x1, movx, f128)
286 /* LOAD BYTE */
287 C(0xb926, LBR, RRE, EI, 0, r2_8s, 0, r1_32, mov2, 0)
288 C(0xb906, LGBR, RRE, EI, 0, r2_8s, 0, r1, mov2, 0)
289 C(0xe376, LB, RXY_a, LD, 0, a2, new, r1_32, ld8s, 0)
290 C(0xe377, LGB, RXY_a, LD, 0, a2, r1, 0, ld8s, 0)
291 /* LOAD COMPLEMENT */
292 C(0x1300, LCR, RR_a, Z, 0, r2, new, r1_32, neg, neg32)
293 C(0xb903, LCGR, RRE, Z, 0, r2, r1, 0, neg, neg64)
294 C(0xb913, LCGFR, RRE, Z, 0, r2_32s, r1, 0, neg, neg64)
295 C(0xb303, LCEBR, RRE, Z, 0, e2, new, e1, negf32, f32)
296 C(0xb313, LCDBR, RRE, Z, 0, f2_o, f1, 0, negf64, f64)
297 C(0xb343, LCXBR, RRE, Z, 0, x2_o, x1, 0, negf128, f128)
298 /* LOAD HALFWORD */
299 C(0xb927, LHR, RRE, EI, 0, r2_16s, 0, r1_32, mov2, 0)
300 C(0xb907, LGHR, RRE, EI, 0, r2_16s, 0, r1, mov2, 0)
301 C(0x4800, LH, RX_a, Z, 0, a2, new, r1_32, ld16s, 0)
302 C(0xe378, LHY, RXY_a, LD, 0, a2, new, r1_32, ld16s, 0)
303 C(0xe315, LGH, RXY_a, Z, 0, a2, r1, 0, ld16s, 0)
304 /* LOAD HALFWORD IMMEDIATE */
305 C(0xa708, LHI, RI_a, Z, 0, i2, 0, r1_32, mov2, 0)
306 C(0xa709, LGHI, RI_a, Z, 0, i2, 0, r1, mov2, 0)
307 /* LOAD HALFWORD RELATIVE LONG */
308 C(0xc405, LHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
309 C(0xc404, LGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
310 /* LOAD LOGICAL */
311 C(0xb916, LLGFR, RRE, Z, 0, r2_32u, 0, r1, mov2, 0)
312 C(0xe316, LLGF, RXY_a, Z, 0, a2, r1, 0, ld32u, 0)
313 /* LOAD LOGICAL RELATIVE LONG */
314 C(0xc40e, LLGFRL, RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
315 /* LOAD LOGICAL CHARACTER */
316 C(0xb994, LLCR, RRE, EI, 0, r2_8u, 0, r1_32, mov2, 0)
317 C(0xb984, LLGCR, RRE, EI, 0, r2_8u, 0, r1, mov2, 0)
318 C(0xe394, LLC, RXY_a, EI, 0, a2, new, r1_32, ld8u, 0)
319 C(0xe390, LLGC, RXY_a, Z, 0, a2, r1, 0, ld8u, 0)
320 /* LOAD LOGICAL HALFWORD */
321 C(0xb995, LLHR, RRE, EI, 0, r2_16u, 0, r1_32, mov2, 0)
322 C(0xb985, LLGHR, RRE, EI, 0, r2_16u, 0, r1, mov2, 0)
323 C(0xe395, LLH, RXY_a, EI, 0, a2, new, r1_32, ld16u, 0)
324 C(0xe391, LLGH, RXY_a, Z, 0, a2, r1, 0, ld16u, 0)
325 /* LOAD LOGICAL HALFWORD RELATIVE LONG */
326 C(0xc402, LLHRL, RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
327 C(0xc406, LLGHRL, RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
328 /* LOAD LOGICAL IMMEDATE */
329 D(0xc00e, LLIHF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
330 D(0xc00f, LLILF, RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
331 D(0xa50c, LLIHH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 48)
332 D(0xa50d, LLIHL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 32)
333 D(0xa50e, LLILH, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 16)
334 D(0xa50f, LLILL, RI_a, Z, 0, i2_16u_shl, 0, r1, mov2, 0, 0)
335 /* LOAD LOGICAL THIRTY ONE BITS */
336 C(0xb917, LLGTR, RRE, Z, 0, r2_o, r1, 0, llgt, 0)
337 C(0xe317, LLGT, RXY_a, Z, 0, m2_32u, r1, 0, llgt, 0)
338 /* LOAD NEGATIVE */
339 C(0x1100, LNR, RR_a, Z, 0, r2_32s, new, r1_32, nabs, nabs32)
340 C(0xb901, LNGR, RRE, Z, 0, r2, r1, 0, nabs, nabs64)
341 C(0xb911, LNGFR, RRE, Z, 0, r2_32s, r1, 0, nabs, nabs64)
342 C(0xb301, LNEBR, RRE, Z, 0, e2, new, e1, nabsf32, f32)
343 C(0xb311, LNDBR, RRE, Z, 0, f2_o, f1, 0, nabsf64, f64)
344 C(0xb341, LNXBR, RRE, Z, 0, x2_o, x1, 0, nabsf128, f128)
345 /* LOAD POSITIVE */
346 C(0x1000, LPR, RR_a, Z, 0, r2_32s, new, r1_32, abs, abs32)
347 C(0xb900, LPGR, RRE, Z, 0, r2, r1, 0, abs, abs64)
348 C(0xb910, LPGFR, RRE, Z, 0, r2_32s, r1, 0, abs, abs64)
349 C(0xb300, LPEBR, RRE, Z, 0, e2, new, e1, absf32, f32)
350 C(0xb310, LPDBR, RRE, Z, 0, f2_o, f1, 0, absf64, f64)
351 C(0xb340, LPXBR, RRE, Z, 0, x2_o, x1, 0, absf128, f128)
352 /* LOAD REVERSED */
353 C(0xb91f, LRVR, RRE, Z, 0, r2_32u, new, r1_32, rev32, 0)
354 C(0xb90f, LRVGR, RRE, Z, 0, r2_o, r1, 0, rev64, 0)
355 C(0xe31f, LRVH, RXY_a, Z, 0, m2_16u, new, r1_16, rev16, 0)
356 C(0xe31e, LRV, RXY_a, Z, 0, m2_32u, new, r1_32, rev32, 0)
357 C(0xe30f, LRVG, RXY_a, Z, 0, m2_64, r1, 0, rev64, 0)
358 /* LOAD ZERO */
359 C(0xb374, LZER, RRE, Z, 0, 0, 0, e1, zero, 0)
360 C(0xb375, LZDR, RRE, Z, 0, 0, 0, f1, zero, 0)
361 C(0xb376, LZXR, RRE, Z, 0, 0, 0, x1, zero2, 0)
362
363 /* LOAD FPC */
364 C(0xb29d, LFPC, S, Z, 0, m2_32u, 0, 0, sfpc, 0)
365
366 /* LOAD LENGTHENED */
367 C(0xb304, LDEBR, RRE, Z, 0, e2, f1, 0, ldeb, 0)
368 C(0xb305, LXDBR, RRE, Z, 0, f2_o, x1, 0, lxdb, 0)
369 C(0xb306, LXEBR, RRE, Z, 0, e2, x1, 0, lxeb, 0)
370 C(0xed04, LDEB, RXE, Z, 0, m2_32u, f1, 0, ldeb, 0)
371 C(0xed05, LXDB, RXE, Z, 0, m2_64, x1, 0, lxdb, 0)
372 C(0xed06, LXEB, RXE, Z, 0, m2_32u, x1, 0, lxeb, 0)
373 /* LOAD ROUNDED */
374 C(0xb344, LEDBR, RRE, Z, 0, f2_o, new, e1, ledb, 0)
375 C(0xb345, LDXBR, RRE, Z, 0, x2_o, f1, 0, ldxb, 0)
376 C(0xb346, LEXBR, RRE, Z, 0, x2_o, new, e1, lexb, 0)
377
378 /* LOAD MULTIPLE */
379 C(0x9800, LM, RS_a, Z, 0, a2, 0, 0, lm32, 0)
380 C(0xeb98, LMY, RSY_a, LD, 0, a2, 0, 0, lm32, 0)
381 C(0xeb04, LMG, RSY_a, Z, 0, a2, 0, 0, lm64, 0)
382 /* LOAD MULTIPLE HIGH */
383 C(0xeb96, LMH, RSY_a, Z, 0, a2, 0, 0, lmh, 0)
384 /* LOAD ACCESS MULTIPLE */
385 C(0x9a00, LAM, RS_a, Z, 0, a2, 0, 0, lam, 0)
386 C(0xeb9a, LAMY, RSY_a, LD, 0, a2, 0, 0, lam, 0)
387
388 /* MOVE */
389 C(0xd200, MVC, SS_a, Z, la1, a2, 0, 0, mvc, 0)
390 C(0xe544, MVHHI, SIL, GIE, la1, i2, 0, m1_16, mov2, 0)
391 C(0xe54c, MVHI, SIL, GIE, la1, i2, 0, m1_32, mov2, 0)
392 C(0xe548, MVGHI, SIL, GIE, la1, i2, 0, m1_64, mov2, 0)
393 C(0x9200, MVI, SI, Z, la1, i2, 0, m1_8, mov2, 0)
394 C(0xeb52, MVIY, SIY, LD, la1, i2, 0, m1_8, mov2, 0)
395 /* MOVE LONG */
396 C(0x0e00, MVCL, RR_a, Z, 0, 0, 0, 0, mvcl, 0)
397 /* MOVE LONG EXTENDED */
398 C(0xa800, MVCLE, RS_a, Z, 0, a2, 0, 0, mvcle, 0)
399 /* MOVE PAGE */
400 C(0xb254, MVPG, RRE, Z, r1_o, r2_o, 0, 0, mvpg, 0)
401 /* MOVE STRING */
402 C(0xb255, MVST, RRE, Z, r1_o, r2_o, 0, 0, mvst, 0)
403
404 /* MULTIPLY */
405 C(0x1c00, MR, RR_a, Z, r1p1_32s, r2_32s, new, r1_D32, mul, 0)
406 C(0x5c00, M, RX_a, Z, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
407 C(0xe35c, MFY, RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
408 C(0xb317, MEEBR, RRE, Z, e1, e2, new, e1, meeb, 0)
409 C(0xb31c, MDBR, RRE, Z, f1_o, f2_o, f1, 0, mdb, 0)
410 C(0xb34c, MXBR, RRE, Z, 0, x2_o, x1, 0, mxb, 0)
411 C(0xb30c, MDEBR, RRE, Z, f1_o, e2, f1, 0, mdeb, 0)
412 C(0xb307, MXDBR, RRE, Z, 0, f2_o, x1, 0, mxdb, 0)
413 C(0xed17, MEEB, RXE, Z, e1, m2_32u, new, e1, meeb, 0)
414 C(0xed1c, MDB, RXE, Z, f1_o, m2_64, f1, 0, mdb, 0)
415 C(0xed0c, MDEB, RXE, Z, f1_o, m2_32u, f1, 0, mdeb, 0)
416 C(0xed07, MXDB, RXE, Z, 0, m2_64, x1, 0, mxdb, 0)
417 /* MULTIPLY HALFWORD */
418 C(0x4c00, MH, RX_a, Z, r1_o, m2_16s, new, r1_32, mul, 0)
419 C(0xe37c, MHY, RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
420 /* MULTIPLY HALFWORD IMMEDIATE */
421 C(0xa70c, MHI, RI_a, Z, r1_o, i2, new, r1_32, mul, 0)
422 C(0xa70d, MGHI, RI_a, Z, r1_o, i2, r1, 0, mul, 0)
423 /* MULTIPLY LOGICAL */
424 C(0xb996, MLR, RRE, Z, r1p1_32u, r2_32u, new, r1_D32, mul, 0)
425 C(0xe396, ML, RXY_a, Z, r1p1_32u, m2_32u, new, r1_D32, mul, 0)
426 C(0xb986, MLGR, RRE, Z, r1p1, r2_o, r1_P, 0, mul128, 0)
427 C(0xe386, MLG, RXY_a, Z, r1p1, m2_64, r1_P, 0, mul128, 0)
428 /* MULTIPLY SINGLE */
429 C(0xb252, MSR, RRE, Z, r1_o, r2_o, new, r1_32, mul, 0)
430 C(0x7100, MS, RX_a, Z, r1_o, m2_32s, new, r1_32, mul, 0)
431 C(0xe351, MSY, RXY_a, LD, r1_o, m2_32s, new, r1_32, mul, 0)
432 C(0xb90c, MSGR, RRE, Z, r1_o, r2_o, r1, 0, mul, 0)
433 C(0xb91c, MSGFR, RRE, Z, r1_o, r2_32s, r1, 0, mul, 0)
434 C(0xe30c, MSG, RXY_a, Z, r1_o, m2_64, r1, 0, mul, 0)
435 C(0xe31c, MSGF, RXY_a, Z, r1_o, m2_32s, r1, 0, mul, 0)
436 /* MULTIPLY SINGLE IMMEDIATE */
437 C(0xc201, MSFI, RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
438 C(0xc200, MSGFI, RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
439
440 /* MULTIPLY AND ADD */
441 C(0xb30e, MAEBR, RRD, Z, e1, e2, new, e1, maeb, 0)
442 C(0xb31e, MADBR, RRD, Z, f1_o, f2_o, f1, 0, madb, 0)
443 C(0xed0e, MAEB, RXF, Z, e1, m2_32u, new, e1, maeb, 0)
444 C(0xed1e, MADB, RXF, Z, f1_o, m2_64, f1, 0, madb, 0)
445 /* MULTIPLY AND SUBTRACT */
446 C(0xb30f, MSEBR, RRD, Z, e1, e2, new, e1, mseb, 0)
447 C(0xb31f, MSDBR, RRD, Z, f1_o, f2_o, f1, 0, msdb, 0)
448 C(0xed0f, MSEB, RXF, Z, e1, m2_32u, new, e1, mseb, 0)
449 C(0xed1f, MSDB, RXF, Z, f1_o, m2_64, f1, 0, msdb, 0)
450
451 /* OR */
452 C(0x1600, OR, RR_a, Z, r1, r2, new, r1_32, or, nz32)
453 C(0xb9f6, ORK, RRF_a, DO, r2, r3, new, r1_32, or, nz32)
454 C(0x5600, O, RX_a, Z, r1, m2_32s, new, r1_32, or, nz32)
455 C(0xe356, OY, RXY_a, LD, r1, m2_32s, new, r1_32, or, nz32)
456 C(0xb981, OGR, RRE, Z, r1, r2, r1, 0, or, nz64)
457 C(0xb9e6, OGRK, RRF_a, DO, r2, r3, r1, 0, or, nz64)
458 C(0xe381, OG, RXY_a, Z, r1, m2_64, r1, 0, or, nz64)
459 C(0xd600, OC, SS_a, Z, la1, a2, 0, 0, oc, 0)
460 /* OR IMMEDIATE */
461 D(0xc00c, OIHF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
462 D(0xc00d, OILF, RIL_a, EI, r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
463 D(0xa508, OIHH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
464 D(0xa509, OIHL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
465 D(0xa50a, OILH, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
466 D(0xa50b, OILL, RI_a, Z, r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
467 C(0x9600, OI, SI, Z, m1_8u, i2_8u, new, m1_8, or, nz64)
468 C(0xeb56, OIY, SIY, LD, m1_8u, i2_8u, new, m1_8, or, nz64)
469
470 /* ROTATE LEFT SINGLE LOGICAL */
471 C(0xeb1d, RLL, RSY_a, Z, r3_o, sh32, new, r1_32, rll32, 0)
472 C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh64, r1, 0, rll64, 0)
473
474 /* SEARCH STRING */
475 C(0xb25e, SRST, RRE, Z, r1_o, r2_o, 0, 0, srst, 0)
476
477 /* SET ACCESS */
478 C(0xb24e, SAR, RRE, Z, 0, r2_o, 0, 0, sar, 0)
479 /* SET FPC */
480 C(0xb384, SFPC, RRE, Z, 0, r1_o, 0, 0, sfpc, 0)
481
482 /* SHIFT LEFT SINGLE */
483 D(0x8b00, SLA, RS_a, Z, r1, sh32, new, r1_32, sla, 0, 31)
484 D(0xebdd, SLAK, RSY_a, DO, r3, sh32, new, r1_32, sla, 0, 31)
485 D(0xeb0b, SLAG, RSY_a, Z, r3, sh64, r1, 0, sla, 0, 63)
486 /* SHIFT LEFT SINGLE LOGICAL */
487 C(0x8900, SLL, RS_a, Z, r1_o, sh32, new, r1_32, sll, 0)
488 C(0xebdf, SLLK, RSY_a, DO, r3_o, sh32, new, r1_32, sll, 0)
489 C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh64, r1, 0, sll, 0)
490 /* SHIFT RIGHT SINGLE */
491 C(0x8a00, SRA, RS_a, Z, r1_32s, sh32, new, r1_32, sra, s32)
492 C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh32, new, r1_32, sra, s32)
493 C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh64, r1, 0, sra, s64)
494 /* SHIFT RIGHT SINGLE LOGICAL */
495 C(0x8800, SRL, RS_a, Z, r1_32u, sh32, new, r1_32, srl, 0)
496 C(0xebde, SRLK, RSY_a, DO, r3_32u, sh32, new, r1_32, srl, 0)
497 C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh64, r1, 0, srl, 0)
498 /* SHIFT LEFT DOUBLE */
499 D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 31)
500 /* SHIFT LEFT DOUBLE LOGICAL */
501 C(0x8d00, SLDL, RS_a, Z, r1_D32, sh64, new, r1_D32, sll, 0)
502 /* SHIFT RIGHT DOUBLE */
503 C(0x8e00, SRDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sra, s64)
504 /* SHIFT RIGHT DOUBLE LOGICAL */
505 C(0x8c00, SRDL, RS_a, Z, r1_D32, sh64, new, r1_D32, srl, 0)
506
507 /* SQUARE ROOT */
508 C(0xb314, SQEBR, RRE, Z, 0, e2, new, e1, sqeb, 0)
509 C(0xb315, SQDBR, RRE, Z, 0, f2_o, f1, 0, sqdb, 0)
510 C(0xb316, SQXBR, RRE, Z, 0, x2_o, x1, 0, sqxb, 0)
511 C(0xed14, SQEB, RXE, Z, 0, m2_32u, new, e1, sqeb, 0)
512 C(0xed15, SQDB, RXE, Z, 0, m2_64, f1, 0, sqdb, 0)
513
514 /* STORE */
515 C(0x5000, ST, RX_a, Z, r1_o, a2, 0, 0, st32, 0)
516 C(0xe350, STY, RXY_a, LD, r1_o, a2, 0, 0, st32, 0)
517 C(0xe324, STG, RXY_a, Z, r1_o, a2, 0, 0, st64, 0)
518 C(0x6000, STD, RX_a, Z, f1_o, a2, 0, 0, st64, 0)
519 C(0xed67, STDY, RXY_a, LD, f1_o, a2, 0, 0, st64, 0)
520 C(0x7000, STE, RX_a, Z, e1, a2, 0, 0, st32, 0)
521 C(0xed66, STEY, RXY_a, LD, e1, a2, 0, 0, st32, 0)
522 /* STORE RELATIVE LONG */
523 C(0xc40f, STRL, RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
524 C(0xc40b, STGRL, RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
525 /* STORE CHARACTER */
526 C(0x4200, STC, RX_a, Z, r1_o, a2, 0, 0, st8, 0)
527 C(0xe372, STCY, RXY_a, LD, r1_o, a2, 0, 0, st8, 0)
528 /* STORE CHARACTERS UNDER MASK */
529 D(0xbe00, STCM, RS_b, Z, r1_o, a2, 0, 0, stcm, 0, 0)
530 D(0xeb2d, STCMY, RSY_b, LD, r1_o, a2, 0, 0, stcm, 0, 0)
531 D(0xeb2c, STCMH, RSY_b, LD, r1_o, a2, 0, 0, stcm, 0, 32)
532 /* STORE HALFWORD */
533 C(0x4000, STH, RX_a, Z, r1_o, a2, 0, 0, st16, 0)
534 C(0xe370, STHY, RXY_a, LD, r1_o, a2, 0, 0, st16, 0)
535 /* STORE HALFWORD RELATIVE LONG */
536 C(0xc407, STHRL, RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
537 /* STORE REVERSED */
538 C(0xe33f, STRVH, RXY_a, Z, la2, r1_16u, new, m1_16, rev16, 0)
539 C(0xe33e, STRV, RXY_a, Z, la2, r1_32u, new, m1_32, rev32, 0)
540 C(0xe32f, STRVG, RXY_a, Z, la2, r1_o, new, m1_64, rev64, 0)
541
542 /* STORE FPC */
543 C(0xb29c, STFPC, S, Z, 0, a2, new, m2_32, efpc, 0)
544
545 /* STORE MULTIPLE */
546 D(0x9000, STM, RS_a, Z, 0, a2, 0, 0, stm, 0, 4)
547 D(0xeb90, STMY, RSY_a, LD, 0, a2, 0, 0, stm, 0, 4)
548 D(0xeb24, STMG, RSY_a, Z, 0, a2, 0, 0, stm, 0, 8)
549 /* STORE MULTIPLE HIGH */
550 C(0xeb26, STMH, RSY_a, Z, 0, a2, 0, 0, stmh, 0)
551 /* STORE ACCESS MULTIPLE */
552 C(0x9b00, STAM, RS_a, Z, 0, a2, 0, 0, stam, 0)
553 C(0xeb9b, STAMY, RSY_a, LD, 0, a2, 0, 0, stam, 0)
554
555 /* SUBTRACT */
556 C(0x1b00, SR, RR_a, Z, r1, r2, new, r1_32, sub, subs32)
557 C(0xb9f9, SRK, RRF_a, DO, r2, r3, new, r1_32, sub, subs32)
558 C(0x5b00, S, RX_a, Z, r1, m2_32s, new, r1_32, sub, subs32)
559 C(0xe35b, SY, RXY_a, LD, r1, m2_32s, new, r1_32, sub, subs32)
560 C(0xb909, SGR, RRE, Z, r1, r2, r1, 0, sub, subs64)
561 C(0xb919, SGFR, RRE, Z, r1, r2_32s, r1, 0, sub, subs64)
562 C(0xb9e9, SGRK, RRF_a, DO, r2, r3, r1, 0, sub, subs64)
563 C(0xe309, SG, RXY_a, Z, r1, m2_64, r1, 0, sub, subs64)
564 C(0xe319, SGF, RXY_a, Z, r1, m2_32s, r1, 0, sub, subs64)
565 C(0xb30b, SEBR, RRE, Z, e1, e2, new, e1, seb, f32)
566 C(0xb31b, SDBR, RRE, Z, f1_o, f2_o, f1, 0, sdb, f64)
567 C(0xb34b, SXBR, RRE, Z, 0, x2_o, x1, 0, sxb, f128)
568 C(0xed0b, SEB, RXE, Z, e1, m2_32u, new, e1, seb, f32)
569 C(0xed1b, SDB, RXE, Z, f1_o, m2_64, f1, 0, sdb, f64)
570 /* SUBTRACT HALFWORD */
571 C(0x4b00, SH, RX_a, Z, r1, m2_16s, new, r1_32, sub, subs32)
572 C(0xe37b, SHY, RXY_a, LD, r1, m2_16s, new, r1_32, sub, subs32)
573 /* SUBTRACT LOGICAL */
574 C(0x1f00, SLR, RR_a, Z, r1, r2, new, r1_32, sub, subu32)
575 C(0xb9fb, SLRK, RRF_a, DO, r2, r3, new, r1_32, sub, subu32)
576 C(0x5f00, SL, RX_a, Z, r1, m2_32u, new, r1_32, sub, subu32)
577 C(0xe35f, SLY, RXY_a, LD, r1, m2_32u, new, r1_32, sub, subu32)
578 C(0xb90b, SLGR, RRE, Z, r1, r2, r1, 0, sub, subu64)
579 C(0xb91b, SLGFR, RRE, Z, r1, r2_32u, r1, 0, sub, subu64)
580 C(0xb9eb, SLGRK, RRF_a, DO, r2, r3, r1, 0, sub, subu64)
581 C(0xe30b, SLG, RXY_a, Z, r1, m2_64, r1, 0, sub, subu64)
582 C(0xe31b, SLGF, RXY_a, Z, r1, m2_32u, r1, 0, sub, subu64)
583 /* SUBTRACT LOGICAL IMMEDIATE */
584 C(0xc205, SLFI, RIL_a, EI, r1, i2_32u, new, r1_32, sub, subu32)
585 C(0xc204, SLGFI, RIL_a, EI, r1, i2_32u, r1, 0, sub, subu64)
586 /* SUBTRACT LOGICAL WITH BORROW */
587 C(0xb999, SLBR, RRE, Z, r1, r2, new, r1_32, subb, subb32)
588 C(0xb989, SLBGR, RRE, Z, r1, r2, r1, 0, subb, subb64)
589 C(0xe399, SLB, RXY_a, Z, r1, m2_32u, new, r1_32, subb, subb32)
590 C(0xe389, SLBG, RXY_a, Z, r1, m2_64, r1, 0, subb, subb64)
591
592 /* SUPERVISOR CALL */
593 C(0x0a00, SVC, I, Z, 0, 0, 0, 0, svc, 0)
594
595 /* TEST DATA CLASS */
596 C(0xed10, TCEB, RXE, Z, e1, a2, 0, 0, tceb, 0)
597 C(0xed11, TCDB, RXE, Z, f1_o, a2, 0, 0, tcdb, 0)
598 C(0xed12, TCXB, RXE, Z, x1_o, a2, 0, 0, tcxb, 0)
599
600 /* TEST UNDER MASK */
601 C(0x9100, TM, SI, Z, m1_8u, i2_8u, 0, 0, 0, tm32)
602 C(0xeb51, TMY, SIY, LD, m1_8u, i2_8u, 0, 0, 0, tm32)
603 D(0xa702, TMHH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
604 D(0xa703, TMHL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
605 D(0xa700, TMLH, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
606 D(0xa701, TMLL, RI_a, Z, r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
607
608 /* TRANSLATE */
609 C(0xdc00, TR, SS_a, Z, la1, a2, 0, 0, tr, 0)
610
611 /* UNPACK */
612 /* Really format SS_b, but we pack both lengths into one argument
613 for the helper call, so we might as well leave one 8-bit field. */
614 C(0xf300, UNPK, SS_a, Z, la1, a2, 0, 0, unpk, 0)
615
616 #ifndef CONFIG_USER_ONLY
617 /* COMPARE AND SWAP AND PURGE */
618 C(0xb250, CSP, RRE, Z, 0, ra2, 0, 0, csp, 0)
619 /* DIAGNOSE (KVM hypercall) */
620 C(0x8300, DIAG, RX_a, Z, 0, 0, 0, 0, diag, 0)
621 /* INSERT STORAGE KEY EXTENDED */
622 C(0xb229, ISKE, RRE, Z, 0, r2_o, new, r1_8, iske, 0)
623 /* INVALIDATE PAGE TABLE ENTRY */
624 C(0xb221, IPTE, RRF_a, Z, r1_o, r2_o, 0, 0, ipte, 0)
625 /* LOAD CONTROL */
626 C(0xb700, LCTL, RS_a, Z, 0, a2, 0, 0, lctl, 0)
627 C(0xeb2f, LCTLG, RSY_a, Z, 0, a2, 0, 0, lctlg, 0)
628 /* LOAD PSW */
629 C(0x8200, LPSW, S, Z, 0, a2, 0, 0, lpsw, 0)
630 /* LOAD PSW EXTENDED */
631 C(0xb2b2, LPSWE, S, Z, 0, a2, 0, 0, lpswe, 0)
632 /* LOAD REAL ADDRESS */
633 C(0xb100, LRA, RX_a, Z, 0, a2, r1, 0, lra, 0)
634 C(0xe313, LRAY, RXY_a, LD, 0, a2, r1, 0, lra, 0)
635 C(0xe303, LRAG, RXY_a, Z, 0, a2, r1, 0, lra, 0)
636 /* MOVE TO PRIMARY */
637 C(0xda00, MVCP, SS_d, Z, la1, a2, 0, 0, mvcp, 0)
638 /* MOVE TO SECONDARY */
639 C(0xdb00, MVCS, SS_d, Z, la1, a2, 0, 0, mvcs, 0)
640 /* PURGE TLB */
641 C(0xb20d, PTLB, S, Z, 0, 0, 0, 0, ptlb, 0)
642 /* RESET REFERENCE BIT EXTENDED */
643 C(0xb22a, RRBE, RRE, Z, 0, r2_o, 0, 0, rrbe, 0)
644 /* SET ADDRESSING MODE */
645 /* We only do 64-bit, so accept this as a no-op.
646 Let SAM24 and SAM31 signal illegal instruction. */
647 C(0x010e, SAM64, E, Z, 0, 0, 0, 0, 0, 0)
648 /* SET ADDRESS SPACE CONTROL FAST */
649 C(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0)
650 /* SET CLOCK */
651 /* ??? Not implemented - is it necessary? */
652 C(0xb204, SCK, S, Z, 0, 0, 0, 0, 0, 0)
653 /* SET CLOCK COMPARATOR */
654 C(0xb206, SCKC, S, Z, 0, m2_64, 0, 0, sckc, 0)
655 /* SET CPU TIMER */
656 C(0xb208, SPT, S, Z, 0, m2_64, 0, 0, spt, 0)
657 /* SET PREFIX */
658 C(0xb210, SPX, S, Z, 0, m2_32u, 0, 0, spx, 0)
659 /* SET PSW KEY FROM ADDRESS */
660 C(0xb20a, SPKA, S, Z, 0, a2, 0, 0, spka, 0)
661 /* SET STORAGE KEY EXTENDED */
662 C(0xb22b, SSKE, RRF_c, Z, r1_o, r2_o, 0, 0, sske, 0)
663 /* SET SYSTEM MASK */
664 C(0x8000, SSM, S, Z, 0, m2_8u, 0, 0, ssm, 0)
665 /* SIGNAL PROCESSOR */
666 C(0xae00, SIGP, RS_a, Z, r3_o, a2, 0, 0, sigp, 0)
667 /* STORE CLOCK */
668 C(0xb205, STCK, S, Z, la2, 0, new, m1_64, stck, 0)
669 C(0xb27c, STCKF, S, Z, la2, 0, new, m1_64, stck, 0)
670 /* STORE CLOCK EXTENDED */
671 C(0xb278, STCKE, S, Z, 0, a2, 0, 0, stcke, 0)
672 /* STORE CLOCK COMPARATOR */
673 C(0xb207, STCKC, S, Z, la2, 0, new, m1_64, stckc, 0)
674 /* STORE CONTROL */
675 C(0xb600, STCTL, RS_a, Z, 0, a2, 0, 0, stctl, 0)
676 C(0xeb25, STCTG, RSY_a, Z, 0, a2, 0, 0, stctg, 0)
677 /* STORE CPU ADDRESS */
678 C(0xb212, STAP, S, Z, la2, 0, new, m1_16, stap, 0)
679 /* STORE CPU ID */
680 C(0xb202, STIDP, S, Z, la2, 0, new, m1_64, stidp, 0)
681 /* STORE CPU TIMER */
682 C(0xb209, STPT, S, Z, la2, 0, new, m1_64, stpt, 0)
683 /* STORE FACILITY LIST */
684 C(0xb2b1, STFL, S, Z, 0, 0, 0, 0, stfl, 0)
685 /* STORE PREFIX */
686 C(0xb211, STPX, S, Z, la2, 0, new, m1_32, stpx, 0)
687 /* STORE SYSTEM INFORMATION */
688 C(0xb27d, STSI, S, Z, 0, a2, 0, 0, stsi, 0)
689 /* STORE THEN AND SYSTEM MASK */
690 C(0xac00, STNSM, SI, Z, la1, 0, 0, 0, stnosm, 0)
691 /* STORE THEN OR SYSTEM MASK */
692 C(0xad00, STOSM, SI, Z, la1, 0, 0, 0, stnosm, 0)
693 /* STORE USING REAL ADDRESS */
694 C(0xb246, STURA, RRE, Z, r1_o, r2_o, 0, 0, stura, 0)
695 /* TEST PROTECTION */
696 C(0xe501, TPROT, SSE, Z, la1, a2, 0, 0, tprot, 0)
697
698 /* I/O Instructions. For each we simply indicate non-operation. */
699 C(0xb276, XSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
700 C(0xb230, CSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
701 C(0xb231, HSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
702 C(0xb232, MSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
703 C(0xb23b, RCHP, S, Z, 0, 0, 0, 0, subchannel, 0)
704 C(0xb238, RSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
705 C(0xb233, SSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
706 C(0xb234, STSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
707 C(0xb235, TSCH, S, Z, 0, 0, 0, 0, subchannel, 0)
708 /* ??? Not listed in PoO ninth edition, but there's a linux driver that
709 uses it: "A CHSC subchannel is usually present on LPAR only." */
710 C(0xb25f, CHSC, S, Z, 0, 0, 0, 0, subchannel, 0)
711 #endif /* CONFIG_USER_ONLY */