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