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