]> Git Repo - qemu.git/blob - target/s390x/insn-data.def
s390x/tcg: add instruction flags for floating point instructions
[qemu.git] / target / s390x / insn-data.def
1 /*
2  *  Arguments to the opcode prototypes
3  *
4  *  C(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC)
5  *  D(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, DATA)
6  *  E(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, DATA, FLAGS)
7  *  F(OPC,    NAME,    FMT,   FAC, I1, I2, P, W, OP, CC, FLAGS)
8  *
9  *  OPC  = (op << 8) | op2 where op is the major, op2 the minor opcode
10  *  NAME = name of the opcode, used internally
11  *  FMT  = format of the opcode (defined in insn-format.def)
12  *  FAC  = facility the opcode is available in (defined in DisasFacility)
13  *  I1   = func in1_xx fills o->in1
14  *  I2   = func in2_xx fills o->in2
15  *  P    = func prep_xx initializes o->*out*
16  *  W    = func wout_xx writes o->*out* somewhere
17  *  OP   = func op_xx does the bulk of the operation
18  *  CC   = func cout_xx defines how cc should get set
19  *  DATA = immediate argument to op_xx function
20  *  FLAGS = categorize the type of instruction (e.g. for advanced checks)
21  *
22  *  The helpers get called in order: I1, I2, P, OP, W, CC
23  */
24
25 /* ADD */
26     C(0x1a00, AR,      RR_a,  Z,   r1, r2, new, r1_32, add, adds32)
27     C(0xb9f8, ARK,     RRF_a, DO,  r2, r3, new, r1_32, add, adds32)
28     C(0x5a00, A,       RX_a,  Z,   r1, m2_32s, new, r1_32, add, adds32)
29     C(0xe35a, AY,      RXY_a, LD,  r1, m2_32s, new, r1_32, add, adds32)
30     C(0xb908, AGR,     RRE,   Z,   r1, r2, r1, 0, add, adds64)
31     C(0xb918, AGFR,    RRE,   Z,   r1, r2_32s, r1, 0, add, adds64)
32     C(0xb9e8, AGRK,    RRF_a, DO,  r2, r3, r1, 0, add, adds64)
33     C(0xe308, AG,      RXY_a, Z,   r1, m2_64, r1, 0, add, adds64)
34     C(0xe318, AGF,     RXY_a, Z,   r1, m2_32s, r1, 0, add, adds64)
35     F(0xb30a, AEBR,    RRE,   Z,   e1, e2, new, e1, aeb, f32, IF_BFP)
36     F(0xb31a, ADBR,    RRE,   Z,   f1_o, f2_o, f1, 0, adb, f64, IF_BFP)
37     F(0xb34a, AXBR,    RRE,   Z,   0, x2_o, x1, 0, axb, f128, IF_BFP)
38     F(0xed0a, AEB,     RXE,   Z,   e1, m2_32u, new, e1, aeb, f32, IF_BFP)
39     F(0xed1a, ADB,     RXE,   Z,   f1_o, m2_64, f1, 0, adb, f64, IF_BFP)
40 /* ADD HIGH */
41     C(0xb9c8, AHHHR,   RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, add, adds32)
42     C(0xb9d8, AHHLR,   RRF_a, HW,  r2_sr32, r3, new, r1_32h, add, adds32)
43 /* ADD IMMEDIATE */
44     C(0xc209, AFI,     RIL_a, EI,  r1, i2, new, r1_32, add, adds32)
45     D(0xeb6a, ASI,     SIY,   GIE, la1, i2, new, 0, asi, adds32, MO_TESL)
46     C(0xecd8, AHIK,    RIE_d, DO,  r3, i2, new, r1_32, add, adds32)
47     C(0xc208, AGFI,    RIL_a, EI,  r1, i2, r1, 0, add, adds64)
48     D(0xeb7a, AGSI,    SIY,   GIE, la1, i2, new, 0, asi, adds64, MO_TEQ)
49     C(0xecd9, AGHIK,   RIE_d, DO,  r3, i2, r1, 0, add, adds64)
50 /* ADD IMMEDIATE HIGH */
51     C(0xcc08, AIH,     RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, adds32)
52 /* ADD HALFWORD */
53     C(0x4a00, AH,      RX_a,  Z,   r1, m2_16s, new, r1_32, add, adds32)
54     C(0xe37a, AHY,     RXY_a, LD,  r1, m2_16s, new, r1_32, add, adds32)
55 /* ADD HALFWORD IMMEDIATE */
56     C(0xa70a, AHI,     RI_a,  Z,   r1, i2, new, r1_32, add, adds32)
57     C(0xa70b, AGHI,    RI_a,  Z,   r1, i2, r1, 0, add, adds64)
58
59 /* ADD LOGICAL */
60     C(0x1e00, ALR,     RR_a,  Z,   r1, r2, new, r1_32, add, addu32)
61     C(0xb9fa, ALRK,    RRF_a, DO,  r2, r3, new, r1_32, add, addu32)
62     C(0x5e00, AL,      RX_a,  Z,   r1, m2_32u, new, r1_32, add, addu32)
63     C(0xe35e, ALY,     RXY_a, LD,  r1, m2_32u, new, r1_32, add, addu32)
64     C(0xb90a, ALGR,    RRE,   Z,   r1, r2, r1, 0, add, addu64)
65     C(0xb91a, ALGFR,   RRE,   Z,   r1, r2_32u, r1, 0, add, addu64)
66     C(0xb9ea, ALGRK,   RRF_a, DO,  r2, r3, r1, 0, add, addu64)
67     C(0xe30a, ALG,     RXY_a, Z,   r1, m2_64, r1, 0, add, addu64)
68     C(0xe31a, ALGF,    RXY_a, Z,   r1, m2_32u, r1, 0, add, addu64)
69 /* ADD LOGICAL HIGH */
70     C(0xb9ca, ALHHHR,  RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, add, addu32)
71     C(0xb9da, ALHHLR,  RRF_a, HW,  r2_sr32, r3, new, r1_32h, add, addu32)
72 /* ADD LOGICAL IMMEDIATE */
73     C(0xc20b, ALFI,    RIL_a, EI,  r1, i2_32u, new, r1_32, add, addu32)
74     C(0xc20a, ALGFI,   RIL_a, EI,  r1, i2_32u, r1, 0, add, addu64)
75 /* ADD LOGICAL WITH SIGNED IMMEDIATE */
76     D(0xeb6e, ALSI,    SIY,   GIE, la1, i2, new, 0, asi, addu32, MO_TEUL)
77     C(0xecda, ALHSIK,  RIE_d, DO,  r3, i2, new, r1_32, add, addu32)
78     D(0xeb7e, ALGSI,   SIY,   GIE, la1, i2, new, 0, asi, addu64, MO_TEQ)
79     C(0xecdb, ALGHSIK, RIE_d, DO,  r3, i2, r1, 0, add, addu64)
80 /* ADD LOGICAL WITH SIGNED IMMEDIATE HIGH */
81     C(0xcc0a, ALSIH,   RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, addu32)
82     C(0xcc0b, ALSIHN,  RIL_a, HW,  r1_sr32, i2, new, r1_32h, add, 0)
83 /* ADD LOGICAL WITH CARRY */
84     C(0xb998, ALCR,    RRE,   Z,   r1, r2, new, r1_32, addc, addc32)
85     C(0xb988, ALCGR,   RRE,   Z,   r1, r2, r1, 0, addc, addc64)
86     C(0xe398, ALC,     RXY_a, Z,   r1, m2_32u, new, r1_32, addc, addc32)
87     C(0xe388, ALCG,    RXY_a, Z,   r1, m2_64, r1, 0, addc, addc64)
88
89 /* AND */
90     C(0x1400, NR,      RR_a,  Z,   r1, r2, new, r1_32, and, nz32)
91     C(0xb9f4, NRK,     RRF_a, DO,  r2, r3, new, r1_32, and, nz32)
92     C(0x5400, N,       RX_a,  Z,   r1, m2_32s, new, r1_32, and, nz32)
93     C(0xe354, NY,      RXY_a, LD,  r1, m2_32s, new, r1_32, and, nz32)
94     C(0xb980, NGR,     RRE,   Z,   r1, r2, r1, 0, and, nz64)
95     C(0xb9e4, NGRK,    RRF_a, DO,  r2, r3, r1, 0, and, nz64)
96     C(0xe380, NG,      RXY_a, Z,   r1, m2_64, r1, 0, and, nz64)
97     C(0xd400, NC,      SS_a,  Z,   la1, a2, 0, 0, nc, 0)
98 /* AND IMMEDIATE */
99     D(0xc00a, NIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, andi, 0, 0x2020)
100     D(0xc00b, NILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, andi, 0, 0x2000)
101     D(0xa504, NIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1030)
102     D(0xa505, NIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1020)
103     D(0xa506, NILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1010)
104     D(0xa507, NILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, andi, 0, 0x1000)
105     D(0x9400, NI,      SI,    Z,   la1, i2_8u, new, 0, ni, nz64, MO_UB)
106     D(0xeb54, NIY,     SIY,   LD,  la1, i2_8u, new, 0, ni, nz64, MO_UB)
107
108 /* BRANCH AND LINK */
109     C(0x0500, BALR,    RR_a,  Z,   0, r2_nz, r1, 0, bal, 0)
110     C(0x4500, BAL,     RX_a,  Z,   0, a2, r1, 0, bal, 0)
111 /* BRANCH AND SAVE */
112     C(0x0d00, BASR,    RR_a,  Z,   0, r2_nz, r1, 0, bas, 0)
113     C(0x4d00, BAS,     RX_a,  Z,   0, a2, r1, 0, bas, 0)
114 /* BRANCH RELATIVE AND SAVE */
115     C(0xa705, BRAS,    RI_b,  Z,   0, 0, r1, 0, basi, 0)
116     C(0xc005, BRASL,   RIL_b, Z,   0, 0, r1, 0, basi, 0)
117 /* BRANCH ON CONDITION */
118     C(0x0700, BCR,     RR_b,  Z,   0, r2_nz, 0, 0, bc, 0)
119     C(0x4700, BC,      RX_b,  Z,   0, a2, 0, 0, bc, 0)
120 /* BRANCH RELATIVE ON CONDITION */
121     C(0xa704, BRC,     RI_c,  Z,   0, 0, 0, 0, bc, 0)
122     C(0xc004, BRCL,    RIL_c, Z,   0, 0, 0, 0, bc, 0)
123 /* BRANCH ON COUNT */
124     C(0x0600, BCTR,    RR_a,  Z,   0, r2_nz, 0, 0, bct32, 0)
125     C(0xb946, BCTGR,   RRE,   Z,   0, r2_nz, 0, 0, bct64, 0)
126     C(0x4600, BCT,     RX_a,  Z,   0, a2, 0, 0, bct32, 0)
127     C(0xe346, BCTG,    RXY_a, Z,   0, a2, 0, 0, bct64, 0)
128 /* BRANCH RELATIVE ON COUNT */
129     C(0xa706, BRCT,    RI_b,  Z,   0, 0, 0, 0, bct32, 0)
130     C(0xa707, BRCTG,   RI_b,  Z,   0, 0, 0, 0, bct64, 0)
131 /* BRANCH RELATIVE ON COUNT HIGH */
132     C(0xcc06, BRCTH,   RIL_b, HW,  0, 0, 0, 0, bcth, 0)
133 /* BRANCH ON INDEX */
134     D(0x8600, BXH,     RS_a,  Z,   0, a2, 0, 0, bx32, 0, 0)
135     D(0x8700, BXLE,    RS_a,  Z,   0, a2, 0, 0, bx32, 0, 1)
136     D(0xeb44, BXHG,    RSY_a, Z,   0, a2, 0, 0, bx64, 0, 0)
137     D(0xeb45, BXLEG,   RSY_a, Z,   0, a2, 0, 0, bx64, 0, 1)
138 /* BRANCH RELATIVE ON INDEX */
139     D(0x8400, BRXH,    RSI,   Z,   0, 0, 0, 0, bx32, 0, 0)
140     D(0x8500, BRXLE,   RSI,   Z,   0, 0, 0, 0, bx32, 0, 1)
141     D(0xec44, BRXHG,   RIE_e, Z,   0, 0, 0, 0, bx64, 0, 0)
142     D(0xec45, BRXHLE,  RIE_e, Z,   0, 0, 0, 0, bx64, 0, 1)
143 /* BRANCH PREDICTION PRELOAD */
144     /* ??? Format is SMI, but implemented as NOP, so we need no fields.  */
145     C(0xc700, BPP,     E,     EH,  0, 0, 0, 0, 0, 0)
146 /* BRANCH PREDICTION RELATIVE PRELOAD */
147     /* ??? Format is MII, but implemented as NOP, so we need no fields.  */
148     C(0xc500, BPRP,    E,     EH,  0, 0, 0, 0, 0, 0)
149 /* NEXT INSTRUCTION ACCESS INTENT */
150     /* ??? Format is IE, but implemented as NOP, so we need no fields.  */
151     C(0xb2fa, NIAI,    E,     EH,  0, 0, 0, 0, 0, 0)
152
153 /* CHECKSUM */
154     C(0xb241, CKSM,    RRE,   Z,   r1_o, ra2, new, r1_32, cksm, 0)
155
156 /* COPY SIGN */
157     F(0xb372, CPSDR,   RRF_b, FPSSH, f3_o, f2_o, f1, 0, cps, 0, IF_AFP1 | IF_AFP2 | IF_AFP3)
158
159 /* COMPARE */
160     C(0x1900, CR,      RR_a,  Z,   r1_o, r2_o, 0, 0, 0, cmps32)
161     C(0x5900, C,       RX_a,  Z,   r1_o, m2_32s, 0, 0, 0, cmps32)
162     C(0xe359, CY,      RXY_a, LD,  r1_o, m2_32s, 0, 0, 0, cmps32)
163     C(0xb920, CGR,     RRE,   Z,   r1_o, r2_o, 0, 0, 0, cmps64)
164     C(0xb930, CGFR,    RRE,   Z,   r1_o, r2_32s, 0, 0, 0, cmps64)
165     C(0xe320, CG,      RXY_a, Z,   r1_o, m2_64, 0, 0, 0, cmps64)
166     C(0xe330, CGF,     RXY_a, Z,   r1_o, m2_32s, 0, 0, 0, cmps64)
167     F(0xb309, CEBR,    RRE,   Z,   e1, e2, 0, 0, ceb, 0, IF_BFP)
168     F(0xb319, CDBR,    RRE,   Z,   f1_o, f2_o, 0, 0, cdb, 0, IF_BFP)
169     F(0xb349, CXBR,    RRE,   Z,   x1_o, x2_o, 0, 0, cxb, 0, IF_BFP)
170     F(0xed09, CEB,     RXE,   Z,   e1, m2_32u, 0, 0, ceb, 0, IF_BFP)
171     F(0xed19, CDB,     RXE,   Z,   f1_o, m2_64, 0, 0, cdb, 0, IF_BFP)
172 /* COMPARE AND SIGNAL */
173     F(0xb308, KEBR,    RRE,   Z,   e1, e2, 0, 0, keb, 0, IF_BFP)
174     F(0xb318, KDBR,    RRE,   Z,   f1_o, f2_o, 0, 0, kdb, 0, IF_BFP)
175     F(0xb348, KXBR,    RRE,   Z,   x1_o, x2_o, 0, 0, kxb, 0, IF_BFP)
176     F(0xed08, KEB,     RXE,   Z,   e1, m2_32u, 0, 0, keb, 0, IF_BFP)
177     F(0xed18, KDB,     RXE,   Z,   f1_o, m2_64, 0, 0, kdb, 0, IF_BFP)
178 /* COMPARE IMMEDIATE */
179     C(0xc20d, CFI,     RIL_a, EI,  r1, i2, 0, 0, 0, cmps32)
180     C(0xc20c, CGFI,    RIL_a, EI,  r1, i2, 0, 0, 0, cmps64)
181 /* COMPARE RELATIVE LONG */
182     C(0xc60d, CRL,     RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps32)
183     C(0xc608, CGRL,    RIL_b, GIE, r1, mri2_64, 0, 0, 0, cmps64)
184     C(0xc60c, CGFRL,   RIL_b, GIE, r1, mri2_32s, 0, 0, 0, cmps64)
185 /* COMPARE HALFWORD */
186     C(0x4900, CH,      RX_a,  Z,   r1_o, m2_16s, 0, 0, 0, cmps32)
187     C(0xe379, CHY,     RXY_a, LD,  r1_o, m2_16s, 0, 0, 0, cmps32)
188     C(0xe334, CGH,     RXY_a, GIE, r1_o, m2_16s, 0, 0, 0, cmps64)
189 /* COMPARE HALFWORD IMMEDIATE */
190     C(0xa70e, CHI,     RI_a,  Z,   r1_o, i2, 0, 0, 0, cmps32)
191     C(0xa70f, CGHI,    RI_a,  Z,   r1_o, i2, 0, 0, 0, cmps64)
192     C(0xe554, CHHSI,   SIL,   GIE, m1_16s, i2, 0, 0, 0, cmps64)
193     C(0xe55c, CHSI,    SIL,   GIE, m1_32s, i2, 0, 0, 0, cmps64)
194     C(0xe558, CGHSI,   SIL,   GIE, m1_64, i2, 0, 0, 0, cmps64)
195 /* COMPARE HALFWORD RELATIVE LONG */
196     C(0xc605, CHRL,    RIL_b, GIE, r1_o, mri2_32s, 0, 0, 0, cmps32)
197     C(0xc604, CGHRL,   RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmps64)
198 /* COMPARE HIGH */
199     C(0xb9cd, CHHR,    RRE,   HW,  r1_sr32, r2_sr32, 0, 0, 0, cmps32)
200     C(0xb9dd, CHLR,    RRE,   HW,  r1_sr32, r2_o, 0, 0, 0, cmps32)
201     C(0xe3cd, CHF,     RXY_a, HW,  r1_sr32, m2_32s, 0, 0, 0, cmps32)
202 /* COMPARE IMMEDIATE HIGH */
203     C(0xcc0d, CIH,     RIL_a, HW,  r1_sr32, i2, 0, 0, 0, cmps32)
204
205 /* COMPARE LOGICAL */
206     C(0x1500, CLR,     RR_a,  Z,   r1, r2, 0, 0, 0, cmpu32)
207     C(0x5500, CL,      RX_a,  Z,   r1, m2_32s, 0, 0, 0, cmpu32)
208     C(0xe355, CLY,     RXY_a, LD,  r1, m2_32s, 0, 0, 0, cmpu32)
209     C(0xb921, CLGR,    RRE,   Z,   r1, r2, 0, 0, 0, cmpu64)
210     C(0xb931, CLGFR,   RRE,   Z,   r1, r2_32u, 0, 0, 0, cmpu64)
211     C(0xe321, CLG,     RXY_a, Z,   r1, m2_64, 0, 0, 0, cmpu64)
212     C(0xe331, CLGF,    RXY_a, Z,   r1, m2_32u, 0, 0, 0, cmpu64)
213     C(0xd500, CLC,     SS_a,  Z,   la1, a2, 0, 0, clc, 0)
214 /* COMPARE LOGICAL HIGH */
215     C(0xb9cf, CLHHR,   RRE,   HW,  r1_sr32, r2_sr32, 0, 0, 0, cmpu32)
216     C(0xb9df, CLHLR,   RRE,   HW,  r1_sr32, r2_o, 0, 0, 0, cmpu32)
217     C(0xe3cf, CLHF,    RXY_a, HW,  r1_sr32, m2_32s, 0, 0, 0, cmpu32)
218 /* COMPARE LOGICAL IMMEDIATE */
219     C(0xc20f, CLFI,    RIL_a, EI,  r1, i2, 0, 0, 0, cmpu32)
220     C(0xc20e, CLGFI,   RIL_a, EI,  r1, i2_32u, 0, 0, 0, cmpu64)
221     C(0x9500, CLI,     SI,    Z,   m1_8u, i2_8u, 0, 0, 0, cmpu64)
222     C(0xeb55, CLIY,    SIY,   LD,  m1_8u, i2_8u, 0, 0, 0, cmpu64)
223     C(0xe555, CLHHSI,  SIL,   GIE, m1_16u, i2_16u, 0, 0, 0, cmpu64)
224     C(0xe55d, CLFHSI,  SIL,   GIE, m1_32u, i2_16u, 0, 0, 0, cmpu64)
225     C(0xe559, CLGHSI,  SIL,   GIE, m1_64, i2_16u, 0, 0, 0, cmpu64)
226 /* COMPARE LOGICAL IMMEDIATE HIGH */
227     C(0xcc0f, CLIH,    RIL_a, HW,  r1_sr32, i2, 0, 0, 0, cmpu32)
228 /* COMPARE LOGICAL RELATIVE LONG */
229     C(0xc60f, CLRL,    RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu32)
230     C(0xc60a, CLGRL,   RIL_b, GIE, r1_o, mri2_64, 0, 0, 0, cmpu64)
231     C(0xc60e, CLGFRL,  RIL_b, GIE, r1_o, mri2_32u, 0, 0, 0, cmpu64)
232     C(0xc607, CLHRL,   RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu32)
233     C(0xc606, CLGHRL,  RIL_b, GIE, r1_o, mri2_16u, 0, 0, 0, cmpu64)
234 /* COMPARE LOGICAL LONG */
235     C(0x0f00, CLCL,    RR_a,  Z,   0, 0, 0, 0, clcl, 0)
236 /* COMPARE LOGICAL LONG EXTENDED */
237     C(0xa900, CLCLE,   RS_a,  Z,   0, a2, 0, 0, clcle, 0)
238 /* COMPARE LOGICAL LONG UNICODE */
239     C(0xeb8f, CLCLU,   RSY_a, E2,  0, a2, 0, 0, clclu, 0)
240 /* COMPARE LOGICAL CHARACTERS UNDER MASK */
241     C(0xbd00, CLM,     RS_b,  Z,   r1_o, a2, 0, 0, clm, 0)
242     C(0xeb21, CLMY,    RSY_b, LD,  r1_o, a2, 0, 0, clm, 0)
243     C(0xeb20, CLMH,    RSY_b, Z,   r1_sr32, a2, 0, 0, clm, 0)
244 /* COMPARE LOGICAL STRING */
245     C(0xb25d, CLST,    RRE,   Z,   r1_o, r2_o, 0, 0, clst, 0)
246
247 /* COMPARE AND BRANCH */
248     D(0xecf6, CRB,     RRS,   GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
249     D(0xece4, CGRB,    RRS,   GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
250     D(0xec76, CRJ,     RIE_b, GIE, r1_32s, r2_32s, 0, 0, cj, 0, 0)
251     D(0xec64, CGRJ,    RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 0)
252     D(0xecfe, CIB,     RIS,   GIE, r1_32s, i2, 0, 0, cj, 0, 0)
253     D(0xecfc, CGIB,    RIS,   GIE, r1_o, i2, 0, 0, cj, 0, 0)
254     D(0xec7e, CIJ,     RIE_c, GIE, r1_32s, i2, 0, 0, cj, 0, 0)
255     D(0xec7c, CGIJ,    RIE_c, GIE, r1_o, i2, 0, 0, cj, 0, 0)
256 /* COMPARE LOGICAL AND BRANCH */
257     D(0xecf7, CLRB,    RRS,   GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
258     D(0xece5, CLGRB,   RRS,   GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
259     D(0xec77, CLRJ,    RIE_b, GIE, r1_32u, r2_32u, 0, 0, cj, 0, 1)
260     D(0xec65, CLGRJ,   RIE_b, GIE, r1_o, r2_o, 0, 0, cj, 0, 1)
261     D(0xecff, CLIB,    RIS,   GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
262     D(0xecfd, CLGIB,   RIS,   GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
263     D(0xec7f, CLIJ,    RIE_c, GIE, r1_32u, i2_8u, 0, 0, cj, 0, 1)
264     D(0xec7d, CLGIJ,   RIE_c, GIE, r1_o, i2_8u, 0, 0, cj, 0, 1)
265
266 /* COMPARE AND SWAP */
267     D(0xba00, CS,      RS_a,  Z,   r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
268     D(0xeb14, CSY,     RSY_a, LD,  r3_32u, r1_32u, new, r1_32, cs, 0, MO_TEUL)
269     D(0xeb30, CSG,     RSY_a, Z,   r3_o, r1_o, new, r1, cs, 0, MO_TEQ)
270 /* COMPARE DOUBLE AND SWAP */
271     D(0xbb00, CDS,     RS_a,  Z,   r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
272     D(0xeb31, CDSY,    RSY_a, LD,  r3_D32, r1_D32, new, r1_D32, cs, 0, MO_TEQ)
273     C(0xeb3e, CDSG,    RSY_a, Z,   0, 0, 0, 0, cdsg, 0)
274 /* COMPARE AND SWAP AND STORE */
275     C(0xc802, CSST,    SSF,   CASS, la1, a2, 0, 0, csst, 0)
276
277 /* COMPARE AND TRAP */
278     D(0xb972, CRT,     RRF_c, GIE, r1_32s, r2_32s, 0, 0, ct, 0, 0)
279     D(0xb960, CGRT,    RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 0)
280     D(0xec72, CIT,     RIE_a, GIE, r1_32s, i2, 0, 0, ct, 0, 0)
281     D(0xec70, CGIT,    RIE_a, GIE, r1_o, i2, 0, 0, ct, 0, 0)
282 /* COMPARE LOGICAL AND TRAP */
283     D(0xb973, CLRT,    RRF_c, GIE, r1_32u, r2_32u, 0, 0, ct, 0, 1)
284     D(0xb961, CLGRT,   RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
285     D(0xeb23, CLT,     RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
286     D(0xeb2b, CLGT,    RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
287     D(0xec73, CLFIT,   RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
288     D(0xec71, CLGIT,   RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1)
289
290 /* CONVERT TO DECIMAL */
291     C(0x4e00, CVD,     RX_a,  Z,   r1_o, a2, 0, 0, cvd, 0)
292     C(0xe326, CVDY,    RXY_a, LD,  r1_o, a2, 0, 0, cvd, 0)
293 /* CONVERT TO FIXED */
294     F(0xb398, CFEBR,   RRF_e, Z,   0, e2, new, r1_32, cfeb, 0, IF_BFP)
295     F(0xb399, CFDBR,   RRF_e, Z,   0, f2_o, new, r1_32, cfdb, 0, IF_BFP)
296     F(0xb39a, CFXBR,   RRF_e, Z,   0, x2_o, new, r1_32, cfxb, 0, IF_BFP)
297     F(0xb3a8, CGEBR,   RRF_e, Z,   0, e2, r1, 0, cgeb, 0, IF_BFP)
298     F(0xb3a9, CGDBR,   RRF_e, Z,   0, f2_o, r1, 0, cgdb, 0, IF_BFP)
299     F(0xb3aa, CGXBR,   RRF_e, Z,   0, x2_o, r1, 0, cgxb, 0, IF_BFP)
300 /* CONVERT FROM FIXED */
301     F(0xb394, CEFBR,   RRF_e, Z,   0, r2_32s, new, e1, cegb, 0, IF_BFP)
302     F(0xb395, CDFBR,   RRF_e, Z,   0, r2_32s, f1, 0, cdgb, 0, IF_BFP)
303     F(0xb396, CXFBR,   RRF_e, Z,   0, r2_32s, x1, 0, cxgb, 0, IF_BFP)
304     F(0xb3a4, CEGBR,   RRF_e, Z,   0, r2_o, new, e1, cegb, 0, IF_BFP)
305     F(0xb3a5, CDGBR,   RRF_e, Z,   0, r2_o, f1, 0, cdgb, 0, IF_BFP)
306     F(0xb3a6, CXGBR,   RRF_e, Z,   0, r2_o, x1, 0, cxgb, 0, IF_BFP)
307 /* CONVERT TO LOGICAL */
308     F(0xb39c, CLFEBR,  RRF_e, FPE, 0, e2, new, r1_32, clfeb, 0, IF_BFP)
309     F(0xb39d, CLFDBR,  RRF_e, FPE, 0, f2_o, new, r1_32, clfdb, 0, IF_BFP)
310     F(0xb39e, CLFXBR,  RRF_e, FPE, 0, x2_o, new, r1_32, clfxb, 0, IF_BFP)
311     F(0xb3ac, CLGEBR,  RRF_e, FPE, 0, e2, r1, 0, clgeb, 0, IF_BFP)
312     F(0xb3ad, CLGDBR,  RRF_e, FPE, 0, f2_o, r1, 0, clgdb, 0, IF_BFP)
313     F(0xb3ae, CLGXBR,  RRF_e, FPE, 0, x2_o, r1, 0, clgxb, 0, IF_BFP)
314 /* CONVERT FROM LOGICAL */
315     F(0xb390, CELFBR,  RRF_e, FPE, 0, r2_32u, new, e1, celgb, 0, IF_BFP)
316     F(0xb391, CDLFBR,  RRF_e, FPE, 0, r2_32u, f1, 0, cdlgb, 0, IF_BFP)
317     F(0xb392, CXLFBR,  RRF_e, FPE, 0, r2_32u, x1, 0, cxlgb, 0, IF_BFP)
318     F(0xb3a0, CELGBR,  RRF_e, FPE, 0, r2_o, new, e1, celgb, 0, IF_BFP)
319     F(0xb3a1, CDLGBR,  RRF_e, FPE, 0, r2_o, f1, 0, cdlgb, 0, IF_BFP)
320     F(0xb3a2, CXLGBR,  RRF_e, FPE, 0, r2_o, x1, 0, cxlgb, 0, IF_BFP)
321
322 /* CONVERT UTF-8 TO UTF-16 */
323     D(0xb2a7, CU12,    RRF_c, Z,   0, 0, 0, 0, cuXX, 0, 12)
324 /* CONVERT UTF-8 TO UTF-32 */
325     D(0xb9b0, CU14,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 14)
326 /* CONVERT UTF-16 to UTF-8 */
327     D(0xb2a6, CU21,    RRF_c, Z,   0, 0, 0, 0, cuXX, 0, 21)
328 /* CONVERT UTF-16 to UTF-32 */
329     D(0xb9b1, CU24,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 24)
330 /* CONVERT UTF-32 to UTF-8 */
331     D(0xb9b2, CU41,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 41)
332 /* CONVERT UTF-32 to UTF-16 */
333     D(0xb9b3, CU42,    RRF_c, ETF3, 0, 0, 0, 0, cuXX, 0, 42)
334
335 /* DIVIDE */
336     C(0x1d00, DR,      RR_a,  Z,   r1_D32, r2_32s, new_P, r1_P32, divs32, 0)
337     C(0x5d00, D,       RX_a,  Z,   r1_D32, m2_32s, new_P, r1_P32, divs32, 0)
338     F(0xb30d, DEBR,    RRE,   Z,   e1, e2, new, e1, deb, 0, IF_BFP)
339     F(0xb31d, DDBR,    RRE,   Z,   f1_o, f2_o, f1, 0, ddb, 0, IF_BFP)
340     F(0xb34d, DXBR,    RRE,   Z,   0, x2_o, x1, 0, dxb, 0, IF_BFP)
341     F(0xed0d, DEB,     RXE,   Z,   e1, m2_32u, new, e1, deb, 0, IF_BFP)
342     F(0xed1d, DDB,     RXE,   Z,   f1_o, m2_64, f1, 0, ddb, 0, IF_BFP)
343 /* DIVIDE LOGICAL */
344     C(0xb997, DLR,     RRE,   Z,   r1_D32, r2_32u, new_P, r1_P32, divu32, 0)
345     C(0xe397, DL,      RXY_a, Z,   r1_D32, m2_32u, new_P, r1_P32, divu32, 0)
346     C(0xb987, DLGR,    RRE,   Z,   0, r2_o, r1_P, 0, divu64, 0)
347     C(0xe387, DLG,     RXY_a, Z,   0, m2_64, r1_P, 0, divu64, 0)
348 /* DIVIDE SINGLE */
349     C(0xb90d, DSGR,    RRE,   Z,   r1p1, r2, r1_P, 0, divs64, 0)
350     C(0xb91d, DSGFR,   RRE,   Z,   r1p1, r2_32s, r1_P, 0, divs64, 0)
351     C(0xe30d, DSG,     RXY_a, Z,   r1p1, m2_64, r1_P, 0, divs64, 0)
352     C(0xe31d, DSGF,    RXY_a, Z,   r1p1, m2_32s, r1_P, 0, divs64, 0)
353
354 /* EXCLUSIVE OR */
355     C(0x1700, XR,      RR_a,  Z,   r1, r2, new, r1_32, xor, nz32)
356     C(0xb9f7, XRK,     RRF_a, DO,  r2, r3, new, r1_32, xor, nz32)
357     C(0x5700, X,       RX_a,  Z,   r1, m2_32s, new, r1_32, xor, nz32)
358     C(0xe357, XY,      RXY_a, LD,  r1, m2_32s, new, r1_32, xor, nz32)
359     C(0xb982, XGR,     RRE,   Z,   r1, r2, r1, 0, xor, nz64)
360     C(0xb9e7, XGRK,    RRF_a, DO,  r2, r3, r1, 0, xor, nz64)
361     C(0xe382, XG,      RXY_a, Z,   r1, m2_64, r1, 0, xor, nz64)
362     C(0xd700, XC,      SS_a,  Z,   0, 0, 0, 0, xc, 0)
363 /* EXCLUSIVE OR IMMEDIATE */
364     D(0xc006, XIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, xori, 0, 0x2020)
365     D(0xc007, XILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, xori, 0, 0x2000)
366     D(0x9700, XI,      SI,    Z,   la1, i2_8u, new, 0, xi, nz64, MO_UB)
367     D(0xeb57, XIY,     SIY,   LD,  la1, i2_8u, new, 0, xi, nz64, MO_UB)
368
369 /* EXECUTE */
370     C(0x4400, EX,      RX_a,  Z,   0, a2, 0, 0, ex, 0)
371 /* EXECUTE RELATIVE LONG */
372     C(0xc600, EXRL,    RIL_b, EE,  0, ri2, 0, 0, ex, 0)
373
374 /* EXTRACT ACCESS */
375     C(0xb24f, EAR,     RRE,   Z,   0, 0, new, r1_32, ear, 0)
376 /* EXTRACT CPU ATTRIBUTE */
377     C(0xeb4c, ECAG,    RSY_a, GIE, 0, a2, r1, 0, ecag, 0)
378 /* EXTRACT CPU TIME */
379     C(0xc801, ECTG,    SSF,   ECT, 0, 0, 0, 0, ectg, 0)
380 /* EXTRACT FPC */
381     F(0xb38c, EFPC,    RRE,   Z,   0, 0, new, r1_32, efpc, 0, IF_BFP)
382 /* EXTRACT PSW */
383     C(0xb98d, EPSW,    RRE,   Z,   0, 0, 0, 0, epsw, 0)
384
385 /* FIND LEFTMOST ONE */
386     C(0xb983, FLOGR,   RRE,   EI,  0, r2_o, r1_P, 0, flogr, 0)
387
388 /* INSERT CHARACTER */
389     C(0x4300, IC,      RX_a,  Z,   0, m2_8u, 0, r1_8, mov2, 0)
390     C(0xe373, ICY,     RXY_a, LD,  0, m2_8u, 0, r1_8, mov2, 0)
391 /* INSERT CHARACTERS UNDER MASK */
392     D(0xbf00, ICM,     RS_b,  Z,   0, a2, r1, 0, icm, 0, 0)
393     D(0xeb81, ICMY,    RSY_b, LD,  0, a2, r1, 0, icm, 0, 0)
394     D(0xeb80, ICMH,    RSY_b, Z,   0, a2, r1, 0, icm, 0, 32)
395 /* INSERT IMMEDIATE */
396     D(0xc008, IIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, insi, 0, 0x2020)
397     D(0xc009, IILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, insi, 0, 0x2000)
398     D(0xa500, IIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1030)
399     D(0xa501, IIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1020)
400     D(0xa502, IILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1010)
401     D(0xa503, IILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, insi, 0, 0x1000)
402 /* INSERT PROGRAM MASK */
403     C(0xb222, IPM,     RRE,   Z,   0, 0, r1, 0, ipm, 0)
404
405 /* LOAD */
406     C(0x1800, LR,      RR_a,  Z,   0, r2_o, 0, cond_r1r2_32, mov2, 0)
407     C(0x5800, L,       RX_a,  Z,   0, a2, new, r1_32, ld32s, 0)
408     C(0xe358, LY,      RXY_a, LD,  0, a2, new, r1_32, ld32s, 0)
409     C(0xb904, LGR,     RRE,   Z,   0, r2_o, 0, r1, mov2, 0)
410     C(0xb914, LGFR,    RRE,   Z,   0, r2_32s, 0, r1, mov2, 0)
411     C(0xe304, LG,      RXY_a, Z,   0, a2, r1, 0, ld64, 0)
412     C(0xe314, LGF,     RXY_a, Z,   0, a2, r1, 0, ld32s, 0)
413     F(0x2800, LDR,     RR_a,  Z,   0, f2_o, 0, f1, mov2, 0, IF_AFP1 | IF_AFP2)
414     F(0x6800, LD,      RX_a,  Z,   0, m2_64, 0, f1, mov2, 0, IF_AFP1)
415     F(0xed65, LDY,     RXY_a, LD,  0, m2_64, 0, f1, mov2, 0, IF_AFP1)
416     F(0x3800, LER,     RR_a,  Z,   0, e2, 0, cond_e1e2, mov2, 0, IF_AFP1 | IF_AFP2)
417     F(0x7800, LE,      RX_a,  Z,   0, m2_32u, 0, e1, mov2, 0, IF_AFP1)
418     F(0xed64, LEY,     RXY_a, LD,  0, m2_32u, 0, e1, mov2, 0, IF_AFP1)
419     F(0xb365, LXR,     RRE,   Z,   0, x2_o, 0, x1, movx, 0, IF_AFP1)
420 /* LOAD IMMEDIATE */
421     C(0xc001, LGFI,    RIL_a, EI,  0, i2, 0, r1, mov2, 0)
422 /* LOAD RELATIVE LONG */
423     C(0xc40d, LRL,     RIL_b, GIE, 0, ri2, new, r1_32, ld32s, 0)
424     C(0xc408, LGRL,    RIL_b, GIE, 0, ri2, r1, 0, ld64, 0)
425     C(0xc40c, LGFRL,   RIL_b, GIE, 0, ri2, r1, 0, ld32s, 0)
426 /* LOAD ADDRESS */
427     C(0x4100, LA,      RX_a,  Z,   0, a2, 0, r1, mov2, 0)
428     C(0xe371, LAY,     RXY_a, LD,  0, a2, 0, r1, mov2, 0)
429 /* LOAD ADDRESS EXTENDED */
430     C(0x5100, LAE,     RX_a,  Z,   0, a2, 0, r1, mov2e, 0)
431     C(0xe375, LAEY,    RXY_a, GIE, 0, a2, 0, r1, mov2e, 0)
432 /* LOAD ADDRESS RELATIVE LONG */
433     C(0xc000, LARL,    RIL_b, Z,   0, ri2, 0, r1, mov2, 0)
434 /* LOAD AND ADD */
435     D(0xebf8, LAA,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, laa, adds32, MO_TESL)
436     D(0xebe8, LAAG,    RSY_a, ILA, r3, a2, new, in2_r1, laa, adds64, MO_TEQ)
437 /* LOAD AND ADD LOGICAL */
438     D(0xebfa, LAAL,    RSY_a, ILA, r3_32u, a2, new, in2_r1_32, laa, addu32, MO_TEUL)
439     D(0xebea, LAALG,   RSY_a, ILA, r3, a2, new, in2_r1, laa, addu64, MO_TEQ)
440 /* LOAD AND AND */
441     D(0xebf4, LAN,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lan, nz32, MO_TESL)
442     D(0xebe4, LANG,    RSY_a, ILA, r3, a2, new, in2_r1, lan, nz64, MO_TEQ)
443 /* LOAD AND EXCLUSIVE OR */
444     D(0xebf7, LAX,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lax, nz32, MO_TESL)
445     D(0xebe7, LAXG,    RSY_a, ILA, r3, a2, new, in2_r1, lax, nz64, MO_TEQ)
446 /* LOAD AND OR */
447     D(0xebf6, LAO,     RSY_a, ILA, r3_32s, a2, new, in2_r1_32, lao, nz32, MO_TESL)
448     D(0xebe6, LAOG,    RSY_a, ILA, r3, a2, new, in2_r1, lao, nz64, MO_TEQ)
449 /* LOAD AND TEST */
450     C(0x1200, LTR,     RR_a,  Z,   0, r2_o, 0, cond_r1r2_32, mov2, s32)
451     C(0xb902, LTGR,    RRE,   Z,   0, r2_o, 0, r1, mov2, s64)
452     C(0xb912, LTGFR,   RRE,   Z,   0, r2_32s, 0, r1, mov2, s64)
453     C(0xe312, LT,      RXY_a, EI,  0, a2, new, r1_32, ld32s, s64)
454     C(0xe302, LTG,     RXY_a, EI,  0, a2, r1, 0, ld64, s64)
455     C(0xe332, LTGF,    RXY_a, GIE, 0, a2, r1, 0, ld32s, s64)
456     F(0xb302, LTEBR,   RRE,   Z,   0, e2, 0, cond_e1e2, mov2, f32, IF_BFP)
457     F(0xb312, LTDBR,   RRE,   Z,   0, f2_o, 0, f1, mov2, f64, IF_BFP)
458     F(0xb342, LTXBR,   RRE,   Z,   0, x2_o, 0, x1, movx, f128, IF_BFP)
459 /* LOAD AND TRAP */
460     C(0xe39f, LAT,     RXY_a, LAT, 0, m2_32u, r1, 0, lat, 0)
461     C(0xe385, LGAT,    RXY_a, LAT, 0, a2, r1, 0, lgat, 0)
462 /* LOAD AND ZERO RIGHTMOST BYTE */
463     C(0xe3eb, LZRF,    RXY_a, LZRB, 0, m2_32u, new, r1_32, lzrb, 0)
464     C(0xe32a, LZRG,    RXY_a, LZRB, 0, m2_64, r1, 0, lzrb, 0)
465 /* LOAD LOGICAL AND ZERO RIGHTMOST BYTE */
466     C(0xe33a, LLZRGF,  RXY_a, LZRB, 0, m2_32u, r1, 0, lzrb, 0)
467 /* LOAD BYTE */
468     C(0xb926, LBR,     RRE,   EI,  0, r2_8s, 0, r1_32, mov2, 0)
469     C(0xb906, LGBR,    RRE,   EI,  0, r2_8s, 0, r1, mov2, 0)
470     C(0xe376, LB,      RXY_a, LD,  0, a2, new, r1_32, ld8s, 0)
471     C(0xe377, LGB,     RXY_a, LD,  0, a2, r1, 0, ld8s, 0)
472 /* LOAD BYTE HIGH */
473     C(0xe3c0, LBH,     RXY_a, HW,  0, a2, new, r1_32h, ld8s, 0)
474 /* LOAD COMPLEMENT */
475     C(0x1300, LCR,     RR_a,  Z,   0, r2, new, r1_32, neg, neg32)
476     C(0xb903, LCGR,    RRE,   Z,   0, r2, r1, 0, neg, neg64)
477     C(0xb913, LCGFR,   RRE,   Z,   0, r2_32s, r1, 0, neg, neg64)
478     F(0xb303, LCEBR,   RRE,   Z,   0, e2, new, e1, negf32, f32, IF_BFP)
479     F(0xb313, LCDBR,   RRE,   Z,   0, f2_o, f1, 0, negf64, f64, IF_BFP)
480     F(0xb343, LCXBR,   RRE,   Z,   0, x2_o, x1, 0, negf128, f128, IF_BFP)
481     F(0xb373, LCDFR,   RRE,   FPSSH, 0, f2_o, f1, 0, negf64, 0, IF_AFP1 | IF_AFP2)
482 /* LOAD HALFWORD */
483     C(0xb927, LHR,     RRE,   EI,  0, r2_16s, 0, r1_32, mov2, 0)
484     C(0xb907, LGHR,    RRE,   EI,  0, r2_16s, 0, r1, mov2, 0)
485     C(0x4800, LH,      RX_a,  Z,   0, a2, new, r1_32, ld16s, 0)
486     C(0xe378, LHY,     RXY_a, LD,  0, a2, new, r1_32, ld16s, 0)
487     C(0xe315, LGH,     RXY_a, Z,   0, a2, r1, 0, ld16s, 0)
488 /* LOAD HALFWORD HIGH */
489     C(0xe3c4, LHH,     RXY_a, HW,  0, a2, new, r1_32h, ld16s, 0)
490 /* LOAD HALFWORD IMMEDIATE */
491     C(0xa708, LHI,     RI_a,  Z,   0, i2, 0, r1_32, mov2, 0)
492     C(0xa709, LGHI,    RI_a,  Z,   0, i2, 0, r1, mov2, 0)
493 /* LOAD HALFWORD RELATIVE LONG */
494     C(0xc405, LHRL,    RIL_b, GIE, 0, ri2, new, r1_32, ld16s, 0)
495     C(0xc404, LGHRL,   RIL_b, GIE, 0, ri2, r1, 0, ld16s, 0)
496 /* LOAD HIGH */
497     C(0xe3ca, LFH,     RXY_a, HW,  0, a2, new, r1_32h, ld32u, 0)
498 /* LOAG HIGH AND TRAP */
499     C(0xe3c8, LFHAT,   RXY_a, LAT, 0, m2_32u, r1, 0, lfhat, 0)
500 /* LOAD LOGICAL */
501     C(0xb916, LLGFR,   RRE,   Z,   0, r2_32u, 0, r1, mov2, 0)
502     C(0xe316, LLGF,    RXY_a, Z,   0, a2, r1, 0, ld32u, 0)
503 /* LOAD LOGICAL AND TRAP */
504     C(0xe39d, LLGFAT,  RXY_a, LAT, 0, a2, r1, 0, llgfat, 0)
505 /* LOAD LOGICAL RELATIVE LONG */
506     C(0xc40e, LLGFRL,  RIL_b, GIE, 0, ri2, r1, 0, ld32u, 0)
507 /* LOAD LOGICAL CHARACTER */
508     C(0xb994, LLCR,    RRE,   EI,  0, r2_8u, 0, r1_32, mov2, 0)
509     C(0xb984, LLGCR,   RRE,   EI,  0, r2_8u, 0, r1, mov2, 0)
510     C(0xe394, LLC,     RXY_a, EI,  0, a2, new, r1_32, ld8u, 0)
511     C(0xe390, LLGC,    RXY_a, Z,   0, a2, r1, 0, ld8u, 0)
512 /* LOAD LOGICAL CHARACTER HIGH */
513     C(0xe3c2, LLCH,    RXY_a, HW,  0, a2, new, r1_32h, ld8u, 0)
514 /* LOAD LOGICAL HALFWORD */
515     C(0xb995, LLHR,    RRE,   EI,  0, r2_16u, 0, r1_32, mov2, 0)
516     C(0xb985, LLGHR,   RRE,   EI,  0, r2_16u, 0, r1, mov2, 0)
517     C(0xe395, LLH,     RXY_a, EI,  0, a2, new, r1_32, ld16u, 0)
518     C(0xe391, LLGH,    RXY_a, Z,   0, a2, r1, 0, ld16u, 0)
519 /* LOAD LOGICAL HALFWORD HIGH */
520     C(0xe3c6, LLHH,    RXY_a, HW,  0, a2, new, r1_32h, ld16u, 0)
521 /* LOAD LOGICAL HALFWORD RELATIVE LONG */
522     C(0xc402, LLHRL,   RIL_b, GIE, 0, ri2, new, r1_32, ld16u, 0)
523     C(0xc406, LLGHRL,  RIL_b, GIE, 0, ri2, r1, 0, ld16u, 0)
524 /* LOAD LOGICAL IMMEDATE */
525     D(0xc00e, LLIHF,   RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 32)
526     D(0xc00f, LLILF,   RIL_a, EI, 0, i2_32u_shl, 0, r1, mov2, 0, 0)
527     D(0xa50c, LLIHH,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 48)
528     D(0xa50d, LLIHL,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 32)
529     D(0xa50e, LLILH,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 16)
530     D(0xa50f, LLILL,   RI_a,  Z,  0, i2_16u_shl, 0, r1, mov2, 0, 0)
531 /* LOAD LOGICAL THIRTY ONE BITS */
532     C(0xb917, LLGTR,   RRE,   Z,  0, r2_o, r1, 0, llgt, 0)
533     C(0xe317, LLGT,    RXY_a, Z,  0, m2_32u, r1, 0, llgt, 0)
534 /* LOAD LOGICAL THIRTY ONE BITS AND TRAP */
535     C(0xe39c, LLGTAT,  RXY_a, LAT, 0, m2_32u, r1, 0, llgtat, 0)
536
537 /* LOAD FPR FROM GR */
538     F(0xb3c1, LDGR,    RRE,   FPRGR, 0, r2_o, 0, f1, mov2, 0, IF_AFP1)
539 /* LOAD GR FROM FPR */
540     F(0xb3cd, LGDR,    RRE,   FPRGR, 0, f2_o, 0, r1, mov2, 0, IF_AFP2)
541 /* LOAD NEGATIVE */
542     C(0x1100, LNR,     RR_a,  Z,   0, r2_32s, new, r1_32, nabs, nabs32)
543     C(0xb901, LNGR,    RRE,   Z,   0, r2, r1, 0, nabs, nabs64)
544     C(0xb911, LNGFR,   RRE,   Z,   0, r2_32s, r1, 0, nabs, nabs64)
545     F(0xb301, LNEBR,   RRE,   Z,   0, e2, new, e1, nabsf32, f32, IF_BFP)
546     F(0xb311, LNDBR,   RRE,   Z,   0, f2_o, f1, 0, nabsf64, f64, IF_BFP)
547     F(0xb341, LNXBR,   RRE,   Z,   0, x2_o, x1, 0, nabsf128, f128, IF_BFP)
548     F(0xb371, LNDFR,   RRE,   FPSSH, 0, f2_o, f1, 0, nabsf64, 0, IF_AFP1 | IF_AFP2)
549 /* LOAD ON CONDITION */
550     C(0xb9f2, LOCR,    RRF_c, LOC, r1, r2, new, r1_32, loc, 0)
551     C(0xb9e2, LOCGR,   RRF_c, LOC, r1, r2, r1, 0, loc, 0)
552     C(0xebf2, LOC,     RSY_b, LOC, r1, m2_32u, new, r1_32, loc, 0)
553     C(0xebe2, LOCG,    RSY_b, LOC, r1, m2_64, r1, 0, loc, 0)
554 /* LOAD HALFWORD IMMEDIATE ON CONDITION */
555     C(0xec42, LOCHI,   RIE_g, LOC2, r1, i2, new, r1_32, loc, 0)
556     C(0xec46, LOCGHI,  RIE_g, LOC2, r1, i2, r1, 0, loc, 0)
557     C(0xec4e, LOCHHI,  RIE_g, LOC2, r1_sr32, i2, new, r1_32h, loc, 0)
558 /* LOAD HIGH ON CONDITION */
559     C(0xb9e0, LOCFHR,  RRF_c, LOC2, r1_sr32, r2, new, r1_32h, loc, 0)
560     C(0xebe0, LOCFH,   RSY_b, LOC2, r1_sr32, m2_32u, new, r1_32h, loc, 0)
561 /* LOAD PAIR DISJOINT */
562     D(0xc804, LPD,     SSF,   ILA, 0, 0, new_P, r3_P32, lpd, 0, MO_TEUL)
563     D(0xc805, LPDG,    SSF,   ILA, 0, 0, new_P, r3_P64, lpd, 0, MO_TEQ)
564 /* LOAD PAIR FROM QUADWORD */
565     C(0xe38f, LPQ,     RXY_a, Z,   0, a2, r1_P, 0, lpq, 0)
566 /* LOAD POSITIVE */
567     C(0x1000, LPR,     RR_a,  Z,   0, r2_32s, new, r1_32, abs, abs32)
568     C(0xb900, LPGR,    RRE,   Z,   0, r2, r1, 0, abs, abs64)
569     C(0xb910, LPGFR,   RRE,   Z,   0, r2_32s, r1, 0, abs, abs64)
570     F(0xb300, LPEBR,   RRE,   Z,   0, e2, new, e1, absf32, f32, IF_BFP)
571     F(0xb310, LPDBR,   RRE,   Z,   0, f2_o, f1, 0, absf64, f64, IF_BFP)
572     F(0xb340, LPXBR,   RRE,   Z,   0, x2_o, x1, 0, absf128, f128, IF_BFP)
573     F(0xb370, LPDFR,   RRE,   FPSSH, 0, f2_o, f1, 0, absf64, 0, IF_AFP1 | IF_AFP2)
574 /* LOAD REVERSED */
575     C(0xb91f, LRVR,    RRE,   Z,   0, r2_32u, new, r1_32, rev32, 0)
576     C(0xb90f, LRVGR,   RRE,   Z,   0, r2_o, r1, 0, rev64, 0)
577     C(0xe31f, LRVH,    RXY_a, Z,   0, m2_16u, new, r1_16, rev16, 0)
578     C(0xe31e, LRV,     RXY_a, Z,   0, m2_32u, new, r1_32, rev32, 0)
579     C(0xe30f, LRVG,    RXY_a, Z,   0, m2_64, r1, 0, rev64, 0)
580 /* LOAD ZERO */
581     F(0xb374, LZER,    RRE,   Z,   0, 0, 0, e1, zero, 0, IF_AFP1)
582     F(0xb375, LZDR,    RRE,   Z,   0, 0, 0, f1, zero, 0, IF_AFP1)
583     F(0xb376, LZXR,    RRE,   Z,   0, 0, 0, x1, zero2, 0, IF_AFP1)
584
585 /* LOAD FPC */
586     F(0xb29d, LFPC,    S,     Z,   0, m2_32u, 0, 0, sfpc, 0, IF_BFP)
587 /* LOAD FPC AND SIGNAL */
588     F(0xb2bd, LFAS,    S,     IEEEE_SIM, 0, m2_32u, 0, 0, sfas, 0, IF_DFP)
589 /* LOAD FP INTEGER */
590     F(0xb357, FIEBR,   RRF_e, Z,   0, e2, new, e1, fieb, 0, IF_BFP)
591     F(0xb35f, FIDBR,   RRF_e, Z,   0, f2_o, f1, 0, fidb, 0, IF_BFP)
592     F(0xb347, FIXBR,   RRF_e, Z,   0, x2_o, x1, 0, fixb, 0, IF_BFP)
593
594 /* LOAD LENGTHENED */
595     F(0xb304, LDEBR,   RRE,   Z,   0, e2, f1, 0, ldeb, 0, IF_BFP)
596     F(0xb305, LXDBR,   RRE,   Z,   0, f2_o, x1, 0, lxdb, 0, IF_BFP)
597     F(0xb306, LXEBR,   RRE,   Z,   0, e2, x1, 0, lxeb, 0, IF_BFP)
598     F(0xed04, LDEB,    RXE,   Z,   0, m2_32u, f1, 0, ldeb, 0, IF_BFP)
599     F(0xed05, LXDB,    RXE,   Z,   0, m2_64, x1, 0, lxdb, 0, IF_BFP)
600     F(0xed06, LXEB,    RXE,   Z,   0, m2_32u, x1, 0, lxeb, 0, IF_BFP)
601 /* LOAD ROUNDED */
602     F(0xb344, LEDBR,   RRE,   Z,   0, f2_o, new, e1, ledb, 0, IF_BFP)
603     F(0xb345, LDXBR,   RRE,   Z,   0, x2_o, f1, 0, ldxb, 0, IF_BFP)
604     F(0xb346, LEXBR,   RRE,   Z,   0, x2_o, new, e1, lexb, 0, IF_BFP)
605
606 /* LOAD MULTIPLE */
607     C(0x9800, LM,      RS_a,  Z,   0, a2, 0, 0, lm32, 0)
608     C(0xeb98, LMY,     RSY_a, LD,  0, a2, 0, 0, lm32, 0)
609     C(0xeb04, LMG,     RSY_a, Z,   0, a2, 0, 0, lm64, 0)
610 /* LOAD MULTIPLE HIGH */
611     C(0xeb96, LMH,     RSY_a, Z,   0, a2, 0, 0, lmh, 0)
612 /* LOAD ACCESS MULTIPLE */
613     C(0x9a00, LAM,     RS_a,  Z,   0, a2, 0, 0, lam, 0)
614     C(0xeb9a, LAMY,    RSY_a, LD,  0, a2, 0, 0, lam, 0)
615
616 /* MOVE */
617     C(0xd200, MVC,     SS_a,  Z,   la1, a2, 0, 0, mvc, 0)
618     C(0xe544, MVHHI,   SIL,   GIE, la1, i2, 0, m1_16, mov2, 0)
619     C(0xe54c, MVHI,    SIL,   GIE, la1, i2, 0, m1_32, mov2, 0)
620     C(0xe548, MVGHI,   SIL,   GIE, la1, i2, 0, m1_64, mov2, 0)
621     C(0x9200, MVI,     SI,    Z,   la1, i2, 0, m1_8, mov2, 0)
622     C(0xeb52, MVIY,    SIY,   LD,  la1, i2, 0, m1_8, mov2, 0)
623 /* MOVE INVERSE */
624     C(0xe800, MVCIN,   SS_a,  Z,   la1, a2, 0, 0, mvcin, 0)
625 /* MOVE LONG */
626     C(0x0e00, MVCL,    RR_a,  Z,   0, 0, 0, 0, mvcl, 0)
627 /* MOVE LONG EXTENDED */
628     C(0xa800, MVCLE,   RS_a,  Z,   0, a2, 0, 0, mvcle, 0)
629 /* MOVE LONG UNICODE */
630     C(0xeb8e, MVCLU,   RSY_a, E2,  0, a2, 0, 0, mvclu, 0)
631 /* MOVE NUMERICS */
632     C(0xd100, MVN,     SS_a,  Z,   la1, a2, 0, 0, mvn, 0)
633 /* MOVE PAGE */
634     C(0xb254, MVPG,    RRE,   Z,   r1_o, r2_o, 0, 0, mvpg, 0)
635 /* MOVE STRING */
636     C(0xb255, MVST,    RRE,   Z,   r1_o, r2_o, 0, 0, mvst, 0)
637 /* MOVE WITH OPTIONAL SPECIFICATION */
638     C(0xc800, MVCOS,   SSF,   MVCOS, la1, a2, 0, 0, mvcos, 0)
639 /* MOVE WITH OFFSET */
640     /* Really format SS_b, but we pack both lengths into one argument
641        for the helper call, so we might as well leave one 8-bit field.  */
642     C(0xf100, MVO,     SS_a,  Z,   la1, a2, 0, 0, mvo, 0)
643 /* MOVE ZONES */
644     C(0xd300, MVZ,     SS_a,  Z,   la1, a2, 0, 0, mvz, 0)
645
646 /* MULTIPLY */
647     C(0x1c00, MR,      RR_a,  Z,   r1p1_32s, r2_32s, new, r1_D32, mul, 0)
648     C(0x5c00, M,       RX_a,  Z,   r1p1_32s, m2_32s, new, r1_D32, mul, 0)
649     C(0xe35c, MFY,     RXY_a, GIE, r1p1_32s, m2_32s, new, r1_D32, mul, 0)
650     F(0xb317, MEEBR,   RRE,   Z,   e1, e2, new, e1, meeb, 0, IF_BFP)
651     F(0xb31c, MDBR,    RRE,   Z,   f1_o, f2_o, f1, 0, mdb, 0, IF_BFP)
652     F(0xb34c, MXBR,    RRE,   Z,   0, x2_o, x1, 0, mxb, 0, IF_BFP)
653     F(0xb30c, MDEBR,   RRE,   Z,   f1_o, e2, f1, 0, mdeb, 0, IF_BFP)
654     F(0xb307, MXDBR,   RRE,   Z,   0, f2_o, x1, 0, mxdb, 0, IF_BFP)
655     F(0xed17, MEEB,    RXE,   Z,   e1, m2_32u, new, e1, meeb, 0, IF_BFP)
656     F(0xed1c, MDB,     RXE,   Z,   f1_o, m2_64, f1, 0, mdb, 0, IF_BFP)
657     F(0xed0c, MDEB,    RXE,   Z,   f1_o, m2_32u, f1, 0, mdeb, 0, IF_BFP)
658     F(0xed07, MXDB,    RXE,   Z,   0, m2_64, x1, 0, mxdb, 0, IF_BFP)
659 /* MULTIPLY HALFWORD */
660     C(0x4c00, MH,      RX_a,  Z,   r1_o, m2_16s, new, r1_32, mul, 0)
661     C(0xe37c, MHY,     RXY_a, GIE, r1_o, m2_16s, new, r1_32, mul, 0)
662 /* MULTIPLY HALFWORD IMMEDIATE */
663     C(0xa70c, MHI,     RI_a,  Z,   r1_o, i2, new, r1_32, mul, 0)
664     C(0xa70d, MGHI,    RI_a,  Z,   r1_o, i2, r1, 0, mul, 0)
665 /* MULTIPLY LOGICAL */
666     C(0xb996, MLR,     RRE,   Z,   r1p1_32u, r2_32u, new, r1_D32, mul, 0)
667     C(0xe396, ML,      RXY_a, Z,   r1p1_32u, m2_32u, new, r1_D32, mul, 0)
668     C(0xb986, MLGR,    RRE,   Z,   r1p1, r2_o, r1_P, 0, mul128, 0)
669     C(0xe386, MLG,     RXY_a, Z,   r1p1, m2_64, r1_P, 0, mul128, 0)
670 /* MULTIPLY SINGLE */
671     C(0xb252, MSR,     RRE,   Z,   r1_o, r2_o, new, r1_32, mul, 0)
672     C(0x7100, MS,      RX_a,  Z,   r1_o, m2_32s, new, r1_32, mul, 0)
673     C(0xe351, MSY,     RXY_a, LD,  r1_o, m2_32s, new, r1_32, mul, 0)
674     C(0xb90c, MSGR,    RRE,   Z,   r1_o, r2_o, r1, 0, mul, 0)
675     C(0xb91c, MSGFR,   RRE,   Z,   r1_o, r2_32s, r1, 0, mul, 0)
676     C(0xe30c, MSG,     RXY_a, Z,   r1_o, m2_64, r1, 0, mul, 0)
677     C(0xe31c, MSGF,    RXY_a, Z,   r1_o, m2_32s, r1, 0, mul, 0)
678 /* MULTIPLY SINGLE IMMEDIATE */
679     C(0xc201, MSFI,    RIL_a, GIE, r1_o, i2, new, r1_32, mul, 0)
680     C(0xc200, MSGFI,   RIL_a, GIE, r1_o, i2, r1, 0, mul, 0)
681
682 /* MULTIPLY AND ADD */
683     F(0xb30e, MAEBR,   RRD,   Z,   e1, e2, new, e1, maeb, 0, IF_BFP)
684     F(0xb31e, MADBR,   RRD,   Z,   f1_o, f2_o, f1, 0, madb, 0, IF_BFP)
685     F(0xed0e, MAEB,    RXF,   Z,   e1, m2_32u, new, e1, maeb, 0, IF_BFP)
686     F(0xed1e, MADB,    RXF,   Z,   f1_o, m2_64, f1, 0, madb, 0, IF_BFP)
687 /* MULTIPLY AND SUBTRACT */
688     F(0xb30f, MSEBR,   RRD,   Z,   e1, e2, new, e1, mseb, 0, IF_BFP)
689     F(0xb31f, MSDBR,   RRD,   Z,   f1_o, f2_o, f1, 0, msdb, 0, IF_BFP)
690     F(0xed0f, MSEB,    RXF,   Z,   e1, m2_32u, new, e1, mseb, 0, IF_BFP)
691     F(0xed1f, MSDB,    RXF,   Z,   f1_o, m2_64, f1, 0, msdb, 0, IF_BFP)
692
693 /* OR */
694     C(0x1600, OR,      RR_a,  Z,   r1, r2, new, r1_32, or, nz32)
695     C(0xb9f6, ORK,     RRF_a, DO,  r2, r3, new, r1_32, or, nz32)
696     C(0x5600, O,       RX_a,  Z,   r1, m2_32s, new, r1_32, or, nz32)
697     C(0xe356, OY,      RXY_a, LD,  r1, m2_32s, new, r1_32, or, nz32)
698     C(0xb981, OGR,     RRE,   Z,   r1, r2, r1, 0, or, nz64)
699     C(0xb9e6, OGRK,    RRF_a, DO,  r2, r3, r1, 0, or, nz64)
700     C(0xe381, OG,      RXY_a, Z,   r1, m2_64, r1, 0, or, nz64)
701     C(0xd600, OC,      SS_a,  Z,   la1, a2, 0, 0, oc, 0)
702 /* OR IMMEDIATE */
703     D(0xc00c, OIHF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, ori, 0, 0x2020)
704     D(0xc00d, OILF,    RIL_a, EI,  r1_o, i2_32u, r1, 0, ori, 0, 0x2000)
705     D(0xa508, OIHH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1030)
706     D(0xa509, OIHL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1020)
707     D(0xa50a, OILH,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1010)
708     D(0xa50b, OILL,    RI_a,  Z,   r1_o, i2_16u, r1, 0, ori, 0, 0x1000)
709     D(0x9600, OI,      SI,    Z,   la1, i2_8u, new, 0, oi, nz64, MO_UB)
710     D(0xeb56, OIY,     SIY,   LD,  la1, i2_8u, new, 0, oi, nz64, MO_UB)
711
712 /* PACK */
713     /* Really format SS_b, but we pack both lengths into one argument
714        for the helper call, so we might as well leave one 8-bit field.  */
715     C(0xf200, PACK,    SS_a,  Z,   la1, a2, 0, 0, pack, 0)
716 /* PACK ASCII */
717     C(0xe900, PKA,     SS_f,  E2,  la1, a2, 0, 0, pka, 0)
718 /* PACK UNICODE */
719     C(0xe100, PKU,     SS_f,  E2,  la1, a2, 0, 0, pku, 0)
720
721 /* PREFETCH */
722     /* Implemented as nops of course.  */
723     C(0xe336, PFD,     RXY_b, GIE, 0, 0, 0, 0, 0, 0)
724     C(0xc602, PFDRL,   RIL_c, GIE, 0, 0, 0, 0, 0, 0)
725 /* PERFORM PROCESSOR ASSIST */
726     /* Implemented as nop of course.  */
727     C(0xb2e8, PPA,     RRF_c, PPA, 0, 0, 0, 0, 0, 0)
728
729 /* POPULATION COUNT */
730     C(0xb9e1, POPCNT,  RRE,   PC,  0, r2_o, r1, 0, popcnt, nz64)
731
732 /* ROTATE LEFT SINGLE LOGICAL */
733     C(0xeb1d, RLL,     RSY_a, Z,   r3_o, sh32, new, r1_32, rll32, 0)
734     C(0xeb1c, RLLG,    RSY_a, Z,   r3_o, sh64, r1, 0, rll64, 0)
735
736 /* ROTATE THEN INSERT SELECTED BITS */
737     C(0xec55, RISBG,   RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
738     C(0xec59, RISBGN,  RIE_f, MIE, 0, r2, r1, 0, risbg, 0)
739     C(0xec5d, RISBHG,  RIE_f, HW,  0, r2, r1, 0, risbg, 0)
740     C(0xec51, RISBLG,  RIE_f, HW,  0, r2, r1, 0, risbg, 0)
741 /* ROTATE_THEN <OP> SELECTED BITS */
742     C(0xec54, RNSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
743     C(0xec56, ROSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
744     C(0xec57, RXSBG,   RIE_f, GIE, 0, r2, r1, 0, rosbg, 0)
745
746 /* SEARCH STRING */
747     C(0xb25e, SRST,    RRE,   Z,   0, 0, 0, 0, srst, 0)
748 /* SEARCH STRING UNICODE */
749     C(0xb9be, SRSTU,   RRE,   ETF3, 0, 0, 0, 0, srstu, 0)
750
751 /* SET ACCESS */
752     C(0xb24e, SAR,     RRE,   Z,   0, r2_o, 0, 0, sar, 0)
753 /* SET ADDRESSING MODE */
754     D(0x010c, SAM24,   E,     Z,   0, 0, 0, 0, sam, 0, 0)
755     D(0x010d, SAM31,   E,     Z,   0, 0, 0, 0, sam, 0, 1)
756     D(0x010e, SAM64,   E,     Z,   0, 0, 0, 0, sam, 0, 3)
757 /* SET FPC */
758     F(0xb384, SFPC,    RRE,   Z,   0, r1_o, 0, 0, sfpc, 0, IF_BFP)
759 /* SET FPC AND SIGNAL */
760     F(0xb385, SFASR,   RRE,   IEEEE_SIM, 0, r1_o, 0, 0, sfas, 0, IF_DFP)
761 /* SET BFP ROUNDING MODE */
762     F(0xb299, SRNM,    S,     Z,   0, 0, 0, 0, srnm, 0, IF_BFP)
763     F(0xb2b8, SRNMB,   S,     FPE, 0, 0, 0, 0, srnm, 0, IF_BFP)
764 /* SET DFP ROUNDING MODE */
765     F(0xb2b9, SRNMT,   S,     DFPR, 0, 0, 0, 0, srnm, 0, IF_DFP)
766 /* SET PROGRAM MASK */
767     C(0x0400, SPM,     RR_a,  Z,   r1, 0, 0, 0, spm, 0)
768
769 /* SHIFT LEFT SINGLE */
770     D(0x8b00, SLA,     RS_a,  Z,   r1, sh32, new, r1_32, sla, 0, 31)
771     D(0xebdd, SLAK,    RSY_a, DO,  r3, sh32, new, r1_32, sla, 0, 31)
772     D(0xeb0b, SLAG,    RSY_a, Z,   r3, sh64, r1, 0, sla, 0, 63)
773 /* SHIFT LEFT SINGLE LOGICAL */
774     C(0x8900, SLL,     RS_a,  Z,   r1_o, sh32, new, r1_32, sll, 0)
775     C(0xebdf, SLLK,    RSY_a, DO,  r3_o, sh32, new, r1_32, sll, 0)
776     C(0xeb0d, SLLG,    RSY_a, Z,   r3_o, sh64, r1, 0, sll, 0)
777 /* SHIFT RIGHT SINGLE */
778     C(0x8a00, SRA,     RS_a,  Z,   r1_32s, sh32, new, r1_32, sra, s32)
779     C(0xebdc, SRAK,    RSY_a, DO,  r3_32s, sh32, new, r1_32, sra, s32)
780     C(0xeb0a, SRAG,    RSY_a, Z,   r3_o, sh64, r1, 0, sra, s64)
781 /* SHIFT RIGHT SINGLE LOGICAL */
782     C(0x8800, SRL,     RS_a,  Z,   r1_32u, sh32, new, r1_32, srl, 0)
783     C(0xebde, SRLK,    RSY_a, DO,  r3_32u, sh32, new, r1_32, srl, 0)
784     C(0xeb0c, SRLG,    RSY_a, Z,   r3_o, sh64, r1, 0, srl, 0)
785 /* SHIFT LEFT DOUBLE */
786     D(0x8f00, SLDA,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, sla, 0, 31)
787 /* SHIFT LEFT DOUBLE LOGICAL */
788     C(0x8d00, SLDL,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, sll, 0)
789 /* SHIFT RIGHT DOUBLE */
790     C(0x8e00, SRDA,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, sra, s64)
791 /* SHIFT RIGHT DOUBLE LOGICAL */
792     C(0x8c00, SRDL,    RS_a,  Z,   r1_D32, sh64, new, r1_D32, srl, 0)
793
794 /* SQUARE ROOT */
795     F(0xb314, SQEBR,   RRE,   Z,   0, e2, new, e1, sqeb, 0, IF_BFP)
796     F(0xb315, SQDBR,   RRE,   Z,   0, f2_o, f1, 0, sqdb, 0, IF_BFP)
797     F(0xb316, SQXBR,   RRE,   Z,   0, x2_o, x1, 0, sqxb, 0, IF_BFP)
798     F(0xed14, SQEB,    RXE,   Z,   0, m2_32u, new, e1, sqeb, 0, IF_BFP)
799     F(0xed15, SQDB,    RXE,   Z,   0, m2_64, f1, 0, sqdb, 0, IF_BFP)
800
801 /* STORE */
802     C(0x5000, ST,      RX_a,  Z,   r1_o, a2, 0, 0, st32, 0)
803     C(0xe350, STY,     RXY_a, LD,  r1_o, a2, 0, 0, st32, 0)
804     C(0xe324, STG,     RXY_a, Z,   r1_o, a2, 0, 0, st64, 0)
805     F(0x6000, STD,     RX_a,  Z,   f1_o, a2, 0, 0, st64, 0, IF_AFP1)
806     F(0xed67, STDY,    RXY_a, LD,  f1_o, a2, 0, 0, st64, 0, IF_AFP1)
807     F(0x7000, STE,     RX_a,  Z,   e1, a2, 0, 0, st32, 0, IF_AFP1)
808     F(0xed66, STEY,    RXY_a, LD,  e1, a2, 0, 0, st32, 0, IF_AFP1)
809 /* STORE RELATIVE LONG */
810     C(0xc40f, STRL,    RIL_b, GIE, r1_o, ri2, 0, 0, st32, 0)
811     C(0xc40b, STGRL,   RIL_b, GIE, r1_o, ri2, 0, 0, st64, 0)
812 /* STORE CHARACTER */
813     C(0x4200, STC,     RX_a,  Z,   r1_o, a2, 0, 0, st8, 0)
814     C(0xe372, STCY,    RXY_a, LD,  r1_o, a2, 0, 0, st8, 0)
815 /* STORE CHARACTER HIGH */
816     C(0xe3c3, STCH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st8, 0)
817 /* STORE CHARACTERS UNDER MASK */
818     D(0xbe00, STCM,    RS_b,  Z,   r1_o, a2, 0, 0, stcm, 0, 0)
819     D(0xeb2d, STCMY,   RSY_b, LD,  r1_o, a2, 0, 0, stcm, 0, 0)
820     D(0xeb2c, STCMH,   RSY_b, Z,   r1_o, a2, 0, 0, stcm, 0, 32)
821 /* STORE HALFWORD */
822     C(0x4000, STH,     RX_a,  Z,   r1_o, a2, 0, 0, st16, 0)
823     C(0xe370, STHY,    RXY_a, LD,  r1_o, a2, 0, 0, st16, 0)
824 /* STORE HALFWORD HIGH */
825     C(0xe3c7, STHH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st16, 0)
826 /* STORE HALFWORD RELATIVE LONG */
827     C(0xc407, STHRL,   RIL_b, GIE, r1_o, ri2, 0, 0, st16, 0)
828 /* STORE HIGH */
829     C(0xe3cb, STFH,    RXY_a, HW,  r1_sr32, a2, 0, 0, st32, 0)
830 /* STORE ON CONDITION */
831     D(0xebf3, STOC,    RSY_b, LOC, 0, 0, 0, 0, soc, 0, 0)
832     D(0xebe3, STOCG,   RSY_b, LOC, 0, 0, 0, 0, soc, 0, 1)
833 /* STORE HIGH ON CONDITION */
834     D(0xebe1, STOCFH,  RSY_b, LOC2, 0, 0, 0, 0, soc, 0, 2)
835 /* STORE REVERSED */
836     C(0xe33f, STRVH,   RXY_a, Z,   la2, r1_16u, new, m1_16, rev16, 0)
837     C(0xe33e, STRV,    RXY_a, Z,   la2, r1_32u, new, m1_32, rev32, 0)
838     C(0xe32f, STRVG,   RXY_a, Z,   la2, r1_o, new, m1_64, rev64, 0)
839
840 /* STORE FACILITY LIST EXTENDED */
841     C(0xb2b0, STFLE,   S,  SFLE,   0, a2, 0, 0, stfle, 0)
842 /* STORE FPC */
843     F(0xb29c, STFPC,   S,     Z,   0, a2, new, m2_32, efpc, 0, IF_BFP)
844
845 /* STORE MULTIPLE */
846     D(0x9000, STM,     RS_a,  Z,   0, a2, 0, 0, stm, 0, 4)
847     D(0xeb90, STMY,    RSY_a, LD,  0, a2, 0, 0, stm, 0, 4)
848     D(0xeb24, STMG,    RSY_a, Z,   0, a2, 0, 0, stm, 0, 8)
849 /* STORE MULTIPLE HIGH */
850     C(0xeb26, STMH,    RSY_a, Z,   0, a2, 0, 0, stmh, 0)
851 /* STORE ACCESS MULTIPLE */
852     C(0x9b00, STAM,    RS_a,  Z,   0, a2, 0, 0, stam, 0)
853     C(0xeb9b, STAMY,   RSY_a, LD,  0, a2, 0, 0, stam, 0)
854 /* STORE PAIR TO QUADWORD */
855     C(0xe38e, STPQ,    RXY_a, Z,   0, a2, r1_P, 0, stpq, 0)
856
857 /* SUBTRACT */
858     C(0x1b00, SR,      RR_a,  Z,   r1, r2, new, r1_32, sub, subs32)
859     C(0xb9f9, SRK,     RRF_a, DO,  r2, r3, new, r1_32, sub, subs32)
860     C(0x5b00, S,       RX_a,  Z,   r1, m2_32s, new, r1_32, sub, subs32)
861     C(0xe35b, SY,      RXY_a, LD,  r1, m2_32s, new, r1_32, sub, subs32)
862     C(0xb909, SGR,     RRE,   Z,   r1, r2, r1, 0, sub, subs64)
863     C(0xb919, SGFR,    RRE,   Z,   r1, r2_32s, r1, 0, sub, subs64)
864     C(0xb9e9, SGRK,    RRF_a, DO,  r2, r3, r1, 0, sub, subs64)
865     C(0xe309, SG,      RXY_a, Z,   r1, m2_64, r1, 0, sub, subs64)
866     C(0xe319, SGF,     RXY_a, Z,   r1, m2_32s, r1, 0, sub, subs64)
867     F(0xb30b, SEBR,    RRE,   Z,   e1, e2, new, e1, seb, f32, IF_BFP)
868     F(0xb31b, SDBR,    RRE,   Z,   f1_o, f2_o, f1, 0, sdb, f64, IF_BFP)
869     F(0xb34b, SXBR,    RRE,   Z,   0, x2_o, x1, 0, sxb, f128, IF_BFP)
870     F(0xed0b, SEB,     RXE,   Z,   e1, m2_32u, new, e1, seb, f32, IF_BFP)
871     F(0xed1b, SDB,     RXE,   Z,   f1_o, m2_64, f1, 0, sdb, f64, IF_BFP)
872 /* SUBTRACT HALFWORD */
873     C(0x4b00, SH,      RX_a,  Z,   r1, m2_16s, new, r1_32, sub, subs32)
874     C(0xe37b, SHY,     RXY_a, LD,  r1, m2_16s, new, r1_32, sub, subs32)
875 /* SUBTRACT HIGH */
876     C(0xb9c9, SHHHR,   RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, sub, subs32)
877     C(0xb9d9, SHHLR,   RRF_a, HW,  r2_sr32, r3, new, r1_32h, sub, subs32)
878 /* SUBTRACT LOGICAL */
879     C(0x1f00, SLR,     RR_a,  Z,   r1, r2, new, r1_32, sub, subu32)
880     C(0xb9fb, SLRK,    RRF_a, DO,  r2, r3, new, r1_32, sub, subu32)
881     C(0x5f00, SL,      RX_a,  Z,   r1, m2_32u, new, r1_32, sub, subu32)
882     C(0xe35f, SLY,     RXY_a, LD,  r1, m2_32u, new, r1_32, sub, subu32)
883     C(0xb90b, SLGR,    RRE,   Z,   r1, r2, r1, 0, sub, subu64)
884     C(0xb91b, SLGFR,   RRE,   Z,   r1, r2_32u, r1, 0, sub, subu64)
885     C(0xb9eb, SLGRK,   RRF_a, DO,  r2, r3, r1, 0, sub, subu64)
886     C(0xe30b, SLG,     RXY_a, Z,   r1, m2_64, r1, 0, sub, subu64)
887     C(0xe31b, SLGF,    RXY_a, Z,   r1, m2_32u, r1, 0, sub, subu64)
888 /* SUBTRACT LOCICAL HIGH */
889     C(0xb9cb, SLHHHR,  RRF_a, HW,  r2_sr32, r3_sr32, new, r1_32h, sub, subu32)
890     C(0xb9db, SLHHLR,  RRF_a, HW,  r2_sr32, r3, new, r1_32h, sub, subu32)
891 /* SUBTRACT LOGICAL IMMEDIATE */
892     C(0xc205, SLFI,    RIL_a, EI,  r1, i2_32u, new, r1_32, sub, subu32)
893     C(0xc204, SLGFI,   RIL_a, EI,  r1, i2_32u, r1, 0, sub, subu64)
894 /* SUBTRACT LOGICAL WITH BORROW */
895     C(0xb999, SLBR,    RRE,   Z,   r1, r2, new, r1_32, subb, subb32)
896     C(0xb989, SLBGR,   RRE,   Z,   r1, r2, r1, 0, subb, subb64)
897     C(0xe399, SLB,     RXY_a, Z,   r1, m2_32u, new, r1_32, subb, subb32)
898     C(0xe389, SLBG,    RXY_a, Z,   r1, m2_64, r1, 0, subb, subb64)
899
900 /* SUPERVISOR CALL */
901     C(0x0a00, SVC,     I,     Z,   0, 0, 0, 0, svc, 0)
902
903 /* TEST ADDRESSING MODE */
904     C(0x010b, TAM,     E,     Z,   0, 0, 0, 0, tam, 0)
905
906 /* TEST AND SET */
907     C(0x9300, TS,      S,     Z,   0, a2, 0, 0, ts, 0)
908
909 /* TEST DATA CLASS */
910     F(0xed10, TCEB,    RXE,   Z,   e1, a2, 0, 0, tceb, 0, IF_BFP)
911     F(0xed11, TCDB,    RXE,   Z,   f1_o, a2, 0, 0, tcdb, 0, IF_BFP)
912     F(0xed12, TCXB,    RXE,   Z,   x1_o, a2, 0, 0, tcxb, 0, IF_BFP)
913
914 /* TEST DECIMAL */
915     C(0xebc0, TP,      RSL,   E2,  la1, 0, 0, 0, tp, 0)
916
917 /* TEST UNDER MASK */
918     C(0x9100, TM,      SI,    Z,   m1_8u, i2_8u, 0, 0, 0, tm32)
919     C(0xeb51, TMY,     SIY,   LD,  m1_8u, i2_8u, 0, 0, 0, tm32)
920     D(0xa702, TMHH,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 48)
921     D(0xa703, TMHL,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 32)
922     D(0xa700, TMLH,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 16)
923     D(0xa701, TMLL,    RI_a,  Z,   r1_o, i2_16u_shl, 0, 0, 0, tm64, 0)
924
925 /* TRANSLATE */
926     C(0xdc00, TR,      SS_a,  Z,   la1, a2, 0, 0, tr, 0)
927 /* TRANSLATE AND TEST */
928     C(0xdd00, TRT,     SS_a,  Z,   la1, a2, 0, 0, trt, 0)
929 /* TRANSLATE AND TEST REVERSE */
930     C(0xd000, TRTR,    SS_a,  ETF3, la1, a2, 0, 0, trtr, 0)
931 /* TRANSLATE EXTENDED */
932     C(0xb2a5, TRE,     RRE,   Z,   0, r2, r1_P, 0, tre, 0)
933
934 /* TRANSLATE ONE TO ONE */
935     C(0xb993, TROO,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
936 /* TRANSLATE ONE TO TWO */
937     C(0xb992, TROT,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
938 /* TRANSLATE TWO TO ONE */
939     C(0xb991, TRTO,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
940 /* TRANSLATE TWO TO TWO */
941     C(0xb990, TRTT,    RRF_c, E2,  0, 0, 0, 0, trXX, 0)
942
943 /* UNPACK */
944     /* Really format SS_b, but we pack both lengths into one argument
945        for the helper call, so we might as well leave one 8-bit field.  */
946     C(0xf300, UNPK,    SS_a,  Z,   la1, a2, 0, 0, unpk, 0)
947 /* UNPACK ASCII */
948     C(0xea00, UNPKA,   SS_a,  E2,  la1, a2, 0, 0, unpka, 0)
949 /* UNPACK UNICODE */
950     C(0xe200, UNPKU,   SS_a,  E2,  la1, a2, 0, 0, unpku, 0)
951
952 /* MSA Instructions */
953     D(0xb91e, KMAC,    RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMAC)
954     D(0xb928, PCKMO,   RRE,   MSA3, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PCKMO)
955     D(0xb92a, KMF,     RRE,   MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMF)
956     D(0xb92b, KMO,     RRE,   MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMO)
957     D(0xb92c, PCC,     RRE,   MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PCC)
958     D(0xb92d, KMCTR,   RRF_b, MSA4, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMCTR)
959     D(0xb92e, KM,      RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KM)
960     D(0xb92f, KMC,     RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KMC)
961     D(0xb93c, PPNO,    RRE,   MSA5, 0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_PPNO)
962     D(0xb93e, KIMD,    RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KIMD)
963     D(0xb93f, KLMD,    RRE,   MSA,  0, 0, 0, 0, msa, 0, S390_FEAT_TYPE_KLMD)
964
965 #ifndef CONFIG_USER_ONLY
966 /* COMPARE AND SWAP AND PURGE */
967     D(0xb250, CSP,     RRE,   Z,   r1_32u, ra2, r1_P, 0, csp, 0, MO_TEUL)
968     D(0xb98a, CSPG,    RRE, DAT_ENH, r1_o, ra2, r1_P, 0, csp, 0, MO_TEQ)
969 /* DIAGNOSE (KVM hypercall) */
970     C(0x8300, DIAG,    RSI,   Z,   0, 0, 0, 0, diag, 0)
971 /* INSERT STORAGE KEY EXTENDED */
972     C(0xb229, ISKE,    RRE,   Z,   0, r2_o, new, r1_8, iske, 0)
973 /* INVALIDATE DAT TABLE ENTRY */
974     C(0xb98e, IPDE,    RRF_b, Z,   r1_o, r2_o, 0, 0, idte, 0)
975 /* INVALIDATE PAGE TABLE ENTRY */
976     C(0xb221, IPTE,    RRF_a, Z,   r1_o, r2_o, 0, 0, ipte, 0)
977 /* LOAD CONTROL */
978     C(0xb700, LCTL,    RS_a,  Z,   0, a2, 0, 0, lctl, 0)
979     C(0xeb2f, LCTLG,   RSY_a, Z,   0, a2, 0, 0, lctlg, 0)
980 /* LOAD PROGRAM PARAMETER */
981     C(0xb280, LPP,     S,   LPP,   0, m2_64, 0, 0, lpp, 0)
982 /* LOAD PSW */
983     C(0x8200, LPSW,    S,     Z,   0, a2, 0, 0, lpsw, 0)
984 /* LOAD PSW EXTENDED */
985     C(0xb2b2, LPSWE,   S,     Z,   0, a2, 0, 0, lpswe, 0)
986 /* LOAD REAL ADDRESS */
987     C(0xb100, LRA,     RX_a,  Z,   0, a2, r1, 0, lra, 0)
988     C(0xe313, LRAY,    RXY_a, LD,  0, a2, r1, 0, lra, 0)
989     C(0xe303, LRAG,    RXY_a, Z,   0, a2, r1, 0, lra, 0)
990 /* LOAD USING REAL ADDRESS */
991     C(0xb24b, LURA,    RRE,   Z,   0, r2, new, r1_32, lura, 0)
992     C(0xb905, LURAG,   RRE,   Z,   0, r2, r1, 0, lurag, 0)
993 /* MOVE TO PRIMARY */
994     C(0xda00, MVCP,    SS_d,  Z,   la1, a2, 0, 0, mvcp, 0)
995 /* MOVE TO SECONDARY */
996     C(0xdb00, MVCS,    SS_d,  Z,   la1, a2, 0, 0, mvcs, 0)
997 /* PURGE TLB */
998     C(0xb20d, PTLB,    S,     Z,   0, 0, 0, 0, ptlb, 0)
999 /* RESET REFERENCE BIT EXTENDED */
1000     C(0xb22a, RRBE,    RRE,   Z,   0, r2_o, 0, 0, rrbe, 0)
1001 /* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
1002     C(0xb220, SERVC,   RRE,   Z,   r1_o, r2_o, 0, 0, servc, 0)
1003 /* SET ADDRESS SPACE CONTROL FAST */
1004     C(0xb279, SACF,    S,     Z,   0, a2, 0, 0, sacf, 0)
1005 /* SET CLOCK */
1006     C(0xb204, SCK,     S,     Z,   la2, 0, 0, 0, sck, 0)
1007 /* SET CLOCK COMPARATOR */
1008     C(0xb206, SCKC,    S,     Z,   0, m2_64a, 0, 0, sckc, 0)
1009 /* SET CLOCK PROGRAMMABLE FIELD */
1010     C(0x0107, SCKPF,   E,     Z,   0, 0, 0, 0, sckpf, 0)
1011 /* SET CPU TIMER */
1012     C(0xb208, SPT,     S,     Z,   0, m2_64a, 0, 0, spt, 0)
1013 /* SET PREFIX */
1014     C(0xb210, SPX,     S,     Z,   0, m2_32ua, 0, 0, spx, 0)
1015 /* SET PSW KEY FROM ADDRESS */
1016     C(0xb20a, SPKA,    S,     Z,   0, a2, 0, 0, spka, 0)
1017 /* SET STORAGE KEY EXTENDED */
1018     C(0xb22b, SSKE,    RRF_c, Z,   r1_o, r2_o, 0, 0, sske, 0)
1019 /* SET SYSTEM MASK */
1020     C(0x8000, SSM,     S,     Z,   0, m2_8u, 0, 0, ssm, 0)
1021 /* SIGNAL PROCESSOR */
1022     C(0xae00, SIGP,    RS_a,  Z,   0, a2, 0, 0, sigp, 0)
1023 /* STORE CLOCK */
1024     C(0xb205, STCK,    S,     Z,   la2, 0, new, m1_64, stck, 0)
1025     C(0xb27c, STCKF,   S,     SCF, la2, 0, new, m1_64, stck, 0)
1026 /* STORE CLOCK EXTENDED */
1027     C(0xb278, STCKE,   S,     Z,   0, a2, 0, 0, stcke, 0)
1028 /* STORE CLOCK COMPARATOR */
1029     C(0xb207, STCKC,   S,     Z,   la2, 0, new, m1_64a, stckc, 0)
1030 /* STORE CONTROL */
1031     C(0xb600, STCTL,   RS_a,  Z,   0, a2, 0, 0, stctl, 0)
1032     C(0xeb25, STCTG,   RSY_a, Z,   0, a2, 0, 0, stctg, 0)
1033 /* STORE CPU ADDRESS */
1034     C(0xb212, STAP,    S,     Z,   la2, 0, new, m1_16a, stap, 0)
1035 /* STORE CPU ID */
1036     C(0xb202, STIDP,   S,     Z,   la2, 0, new, m1_64a, stidp, 0)
1037 /* STORE CPU TIMER */
1038     C(0xb209, STPT,    S,     Z,   la2, 0, new, m1_64a, stpt, 0)
1039 /* STORE FACILITY LIST */
1040     C(0xb2b1, STFL,    S,     Z,   0, 0, 0, 0, stfl, 0)
1041 /* STORE PREFIX */
1042     C(0xb211, STPX,    S,     Z,   la2, 0, new, m1_32a, stpx, 0)
1043 /* STORE SYSTEM INFORMATION */
1044     C(0xb27d, STSI,    S,     Z,   0, a2, 0, 0, stsi, 0)
1045 /* STORE THEN AND SYSTEM MASK */
1046     C(0xac00, STNSM,   SI,    Z,   la1, 0, 0, 0, stnosm, 0)
1047 /* STORE THEN OR SYSTEM MASK */
1048     C(0xad00, STOSM,   SI,    Z,   la1, 0, 0, 0, stnosm, 0)
1049 /* STORE USING REAL ADDRESS */
1050     C(0xb246, STURA,   RRE,   Z,   r1_o, r2_o, 0, 0, stura, 0)
1051     C(0xb925, STURG,   RRE,   Z,   r1_o, r2_o, 0, 0, sturg, 0)
1052 /* TEST BLOCK */
1053     C(0xb22c, TB,      RRE,   Z,   0, r2_o, 0, 0, testblock, 0)
1054 /* TEST PROTECTION */
1055     C(0xe501, TPROT,   SSE,   Z,   la1, a2, 0, 0, tprot, 0)
1056
1057 /* CCW I/O Instructions */
1058     C(0xb276, XSCH,    S,     Z,   0, 0, 0, 0, xsch, 0)
1059     C(0xb230, CSCH,    S,     Z,   0, 0, 0, 0, csch, 0)
1060     C(0xb231, HSCH,    S,     Z,   0, 0, 0, 0, hsch, 0)
1061     C(0xb232, MSCH,    S,     Z,   0, insn, 0, 0, msch, 0)
1062     C(0xb23b, RCHP,    S,     Z,   0, 0, 0, 0, rchp, 0)
1063     C(0xb238, RSCH,    S,     Z,   0, 0, 0, 0, rsch, 0)
1064     C(0xb237, SAL,     S,     Z,   0, 0, 0, 0, sal, 0)
1065     C(0xb23c, SCHM,    S,     Z,   0, insn, 0, 0, schm, 0)
1066     C(0xb274, SIGA,    S,     Z,   0, 0, 0, 0, siga, 0)
1067     C(0xb23a, STCPS,   S,     Z,   0, 0, 0, 0, stcps, 0)
1068     C(0xb233, SSCH,    S,     Z,   0, insn, 0, 0, ssch, 0)
1069     C(0xb239, STCRW,   S,     Z,   0, insn, 0, 0, stcrw, 0)
1070     C(0xb234, STSCH,   S,     Z,   0, insn, 0, 0, stsch, 0)
1071     C(0xb236, TPI ,    S,     Z,   la2, 0, 0, 0, tpi, 0)
1072     C(0xb235, TSCH,    S,     Z,   0, insn, 0, 0, tsch, 0)
1073     /* ??? Not listed in PoO ninth edition, but there's a linux driver that
1074        uses it: "A CHSC subchannel is usually present on LPAR only."  */
1075     C(0xb25f, CHSC,  RRE,     Z,   0, insn, 0, 0, chsc, 0)
1076
1077 /* zPCI Instructions */
1078     /* None of these instructions are documented in the PoP, so this is all
1079        based upon target/s390x/kvm.c and Linux code and likely incomplete */
1080     C(0xebd0, PCISTB, RSY_a, PCI, la2, 0, 0, 0, pcistb, 0)
1081     C(0xebd1, SIC, RSY_a, AIS, r1, r3, 0, 0, sic, 0)
1082     C(0xb9a0, CLP, RRF_c, PCI, 0, 0, 0, 0, clp, 0)
1083     C(0xb9d0, PCISTG, RRE, PCI, 0, 0, 0, 0, pcistg, 0)
1084     C(0xb9d2, PCILG, RRE, PCI, 0, 0, 0, 0, pcilg, 0)
1085     C(0xb9d3, RPCIT, RRE, PCI, 0, 0, 0, 0, rpcit, 0)
1086     C(0xe3d0, MPCIFC, RXY_a, PCI, la2, 0, 0, 0, mpcifc, 0)
1087     C(0xe3d4, STPCIFC, RXY_a, PCI, la2, 0, 0, 0, stpcifc, 0)
1088
1089 #endif /* CONFIG_USER_ONLY */
This page took 0.085231 seconds and 4 git commands to generate.