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