Merge pull request #1624 from esdrubal/getprocesstimes
[mono.git] / mono / arch / s390x / s390x-codegen.h
1 /*
2    Copyright (C)  2001 Radek Doulik
3 */
4
5 #ifndef S390X_H
6 #define S390X_H
7 #include <glib.h>
8 #include <assert.h>
9 #include <limits.h>
10
11 #define FLOAT_REGS      2       /* No. float registers for parms    */
12 #define GENERAL_REGS    5       /* No. general registers for parms  */
13
14 #define ARG_BASE s390_r10       /* Register for addressing arguments*/
15 #define STKARG \
16         (i*(sizeof(stackval)))  /* Displacement of ith argument     */
17
18 #define MINV_POS        160     /* MonoInvocation stack offset      */
19 #define STACK_POS       (MINV_POS - sizeof (stackval) * sig->param_count)
20 #define OBJ_POS         8
21 #define TYPE_OFFSET     (G_STRUCT_OFFSET (stackval, type))
22
23 #define MIN_CACHE_LINE 256
24
25 /*------------------------------------------------------------------*/
26 /* Sequence to add an int/long long to parameters to stack_from_data*/
27 /*------------------------------------------------------------------*/
28 #define ADD_ISTACK_PARM(r, i) \
29         if (reg_param < GENERAL_REGS-(r)) { \
30                 s390_lay (p, s390_r4, 0, STK_BASE, \
31                           local_start + (reg_param - this_flag) * sizeof(long)); \
32                 reg_param += (i); \
33         } else { \
34                 s390_lay (p, s390_r4, 0, STK_BASE, \
35                           sz.stack_size + MINV_POS + stack_param * sizeof(long)); \
36                 stack_param += (i); \
37         }
38
39 /*------------------------------------------------------------------*/
40 /* Sequence to add a float/double to parameters to stack_from_data  */
41 /*------------------------------------------------------------------*/
42 #define ADD_RSTACK_PARM(i) \
43         if (fpr_param < FLOAT_REGS) { \
44                 s390_lay (p, s390_r4, 0, STK_BASE, \
45                           float_pos + (fpr_param * sizeof(float) * (i))); \
46                 fpr_param++; \
47         } else { \
48                 stack_param += (stack_param % (i)); \
49                 s390_lay (p, s390_r4, 0, STK_BASE, \
50                           sz.stack_size + MINV_POS + stack_param * sizeof(float) * (i)); \
51                 stack_param += (i); \
52         }
53
54 /*------------------------------------------------------------------*/
55 /* Sequence to add a structure ptr to parameters to stack_from_data */
56 /*------------------------------------------------------------------*/
57 #define ADD_TSTACK_PARM \
58         if (reg_param < GENERAL_REGS) { \
59                 s390_ly (p, s390_r4, 0, STK_BASE, \
60                         local_start + (reg_param - this_flag) * sizeof(long)); \
61                 reg_param++; \
62         } else { \
63                 s390_ly (p, s390_r4, 0, STK_BASE, \
64                          sz.stack_size + MINV_POS + stack_param * sizeof(long)); \
65                 stack_param++; \
66         }
67
68 #define ADD_PSTACK_PARM(r, i) \
69         if (reg_param < GENERAL_REGS-(r)) { \
70                 s390_lay (p, s390_r4, 0, STK_BASE, \
71                           local_start + (reg_param - this_flag) * sizeof(long)); \
72                 reg_param += (i); \
73         } else { \
74                 s390_ly (p, s390_r4, 0, STK_BASE, \
75                          sz.stack_size + MINV_POS + stack_param * sizeof(long)); \
76                 stack_param++; \
77         }
78
79 typedef enum {
80         s390_r0 = 0,
81         s390_r1,
82         s390_r2,
83         s390_r3,
84         s390_r4,
85         s390_r5,
86         s390_r6,
87         s390_r7,
88         s390_r8,
89         s390_r9,
90         s390_r10,
91         s390_r11,
92         s390_r12,
93         s390_r13,
94         s390_r14,
95         s390_r15,
96 } S390IntRegister;
97
98 typedef enum {
99         s390_f0 = 0,
100         s390_f1,
101         s390_f2,
102         s390_f3,
103         s390_f4,
104         s390_f5,
105         s390_f6,
106         s390_f7,
107         s390_f8,
108         s390_f9,
109         s390_f10,
110         s390_f11,
111         s390_f12,
112         s390_f13,
113         s390_f14,
114         s390_f15,
115 } S390FloatRegister;
116
117 typedef enum {
118         s390_a0 = 0,
119         s390_a1,
120         s390_a2,
121         s390_a3,
122         s390_a4,
123         s390_a5,
124         s390_a6,
125         s390_a7,
126         s390_a8,
127         s390_a9,
128         s390_a10,
129         s390_a11,
130         s390_a12,
131         s390_a13,
132         s390_a14,
133         s390_a15,
134 } S390AccRegister;
135
136 typedef enum {
137         s390_fpc = 256,
138 } S390SpecialRegister;
139
140 #define s390_is_imm16(val)              ((glong)val >= (glong) SHRT_MIN && \
141                                          (glong)val <= (glong) SHRT_MAX)
142 #define s390_is_imm32(val)              ((glong)val >= (glong) INT_MIN && \
143                                          (glong)val <= (glong) INT_MAX)
144 #define s390_is_uimm16(val)             ((glong)val >= 0 && (glong)val <= (glong) USHRT_MAX)
145 #define s390_is_uimm32(val)             ((glong)val >= 0 && (glong)val <= (glong) UINT_MAX)
146 #define s390_is_uimm20(val)             ((glong)val >= 0 && (glong)val <= 1048575)
147 #define s390_is_imm20(val)              ((glong)val >= -524288 && (glong)val <= 524287)
148 #define s390_is_imm12(val)              ((glong)val >= (glong)-4096 && \
149                                          (glong)val <= (glong)4095)
150 #define s390_is_uimm12(val)             ((glong)val >= 0 && (glong)val <= 4095)
151
152 #define STK_BASE                        s390_r15
153 #define S390_SP                         s390_r15
154 #define S390_FP                         s390_r11
155 #define S390_MINIMAL_STACK_SIZE         160
156 #define S390_REG_SAVE_OFFSET            48
157 #define S390_PARM_SAVE_OFFSET           16
158 #define S390_RET_ADDR_OFFSET            112
159 #define S390_FLOAT_SAVE_OFFSET          128
160
161 #define S390_CC_ZR                      8
162 #define S390_CC_NE                      7
163 #define S390_CC_NZ                      7
164 #define S390_CC_LT                      4
165 #define S390_CC_GT                      2
166 #define S390_CC_GE                      11
167 #define S390_CC_NM                      11
168 #define S390_CC_LE                      13
169 #define S390_CC_OV                      1
170 #define S390_CC_NO                      14
171 #define S390_CC_CY                      3
172 #define S390_CC_NC                      12
173 #define S390_CC_UN                      15
174
175 #define s390_word(addr, value) do               \
176 {                                               \
177         * (guint32 *) addr = (guint32) value;   \
178         addr += sizeof(guint32);                \
179 } while (0)
180
181 #define s390_float(addr, value) do              \
182 {                                               \
183         * (gfloat *) addr = (gfloat) value;     \
184         addr += sizeof(gfloat);                 \
185 } while (0)
186
187 #define s390_llong(addr, value) do              \
188 {                                               \
189         * (guint64 *) addr = (guint64) value;   \
190         addr += sizeof(guint64);                \
191 } while (0)
192
193 #define s390_double(addr, value) do             \
194 {                                               \
195         * (gdouble *) addr = (gdouble) value;   \
196         addr += sizeof(gdouble);                \
197 } while (0)
198
199 typedef struct {
200         short   op;
201 } E_Format;
202
203 typedef struct {
204         char    op;
205         int     im;
206 } I_Format;
207
208 typedef struct {
209         char    op;
210         char    r1 : 4;
211         char    r2 : 4;
212 } RR_Format;
213
214 typedef struct {
215         short   op;
216         char    xx;
217         char    r1 : 4;
218         char    r2 : 4;
219 } RRE_Format;
220
221 typedef struct {
222         short   op;
223         char    r1 : 4;
224         char    xx : 4;
225         char    r3 : 4;
226         char    r2 : 4;
227 } RRF_Format_1;
228
229 typedef struct {
230         short   op;
231         char    m3 : 4;
232         char    xx : 4;
233         char    r1 : 4;
234         char    r2 : 4;
235 } RRF_Format_2;
236
237 typedef struct {
238         short   op;
239         char    r3 : 4;
240         char    m4 : 4;
241         char    r1 : 4;
242         char    r2 : 4;
243 } RRF_Format_3;
244
245 typedef struct {
246         char    op;
247         char    r1 : 4;
248         char    x2 : 4;
249         char    b2 : 4;
250         short   d2 : 12;
251 } RX_Format;
252
253 typedef struct {
254         char    op1;
255         char    r1 : 4;
256         char    x2 : 4;
257         char    b2 : 4;
258         int     d2 : 12;
259         char    xx;
260         char    op2;
261 } RXE_Format;
262
263 typedef struct {
264         char    op1;
265         char    r3 : 4;
266         char    x2 : 4;
267         char    b2 : 4;
268         int     d2 : 12;
269         char    r1 : 4;
270         char    xx : 4;
271         char    op2;
272 } RXF_Format;
273
274 typedef struct {
275         char    op1;
276         char    r1 : 4;
277         char    x2 : 4;
278         char    b2 : 4;
279         int     d2 : 20;
280         char    op2;
281 } __attribute__ ((packed)) RXY_Format;
282
283 typedef struct {
284         char    op;
285         char    r1 : 4;
286         char    r3 : 4;
287         char    b2 : 4;
288         int     d2 : 12;
289 } RS_Format_1;
290
291 typedef struct {
292         char    op;
293         char    r1 : 4;
294         char    m3 : 4;
295         char    b2 : 4;
296         int     d2 : 12;
297 } RS_Format_2;
298
299 typedef struct {
300         char    op;
301         char    r1 : 4;
302         char    xx : 4;
303         char    b2 : 4;
304         int     d2 : 12;
305 } RS_Format_3;
306
307 typedef struct {
308         char    op1;
309         char    r1 : 4;
310         char    r3 : 4;
311         char    b2 : 4;
312         int     d2 : 20;
313         char    op2;
314 } __attribute__ ((packed)) RSY_Format_1;
315
316 typedef struct {
317         char    op1;
318         char    r1 : 4;
319         char    m3 : 4;
320         char    b2 : 4;
321         int     d2 : 20;
322         char    op2;
323 } __attribute__ ((packed)) RSY_Format_2;
324
325 typedef struct {
326         char    op1;
327         char    l1 : 4;
328         char    xx : 4;
329         char    b1 : 4;
330         int     d1 : 12;
331         char    yy;
332         char    op2;
333 } RSL_Format;
334
335 typedef struct {
336         char    op;
337         char    r1 : 4;
338         char    r3 : 4;
339         short   i2;
340 } RSI_Format;
341
342 typedef struct {
343         char    op1;
344         char    m1 : 4;
345         char    op2 : 4;
346         short   i2;
347 } RI_Format;
348
349 typedef struct {
350         char    op1;
351         char    r1 : 4;
352         char    r3 : 4;
353         short   i2;
354         char    xx;
355         char    op2;
356 } RIE_Format_1;
357
358 typedef struct {
359         char    op1;
360         char    r1 : 4;
361         char    r3 : 4;
362         short   i2;
363         char    m2 : 4;
364         char    xx : 4;
365         char    op2;
366 } RIE_Format_2;
367
368 typedef struct {
369         char    op1;
370         char    r1 : 4;
371         char    r3 : 4;
372         short   d;
373         char    i;
374         char    op2;
375 } RIE_Format_3;
376
377 typedef struct {
378         char    op1;
379         char    r1 : 4;
380         char    yy : 4;
381         short   i2;
382         char    m3 : 4;
383         char    xx : 4;
384         char    op2;
385 } RIE_Format_4;
386
387 typedef struct {
388         char    op1;
389         char    r1 : 4;
390         char    op2 : 4;
391         int     i2;
392 } __attribute__ ((packed)) RIL_Format_1;
393
394 typedef struct {
395         char    op1;
396         char    m1 : 4;
397         char    op2 : 4;
398         int     i2;
399 } __attribute__ ((packed)) RIL_Format_2;
400
401 typedef struct {
402         char    op;
403         char    i2;
404         char    b1 : 4;
405         short   d1 : 12;
406 } SI_Format;
407
408 typedef struct {
409         char    op1;
410         char    i2;
411         char    b1 : 4;
412         int     d1 : 20;
413         char    op2;
414 } __attribute__ ((packed)) SIY_Format;
415
416 typedef struct {
417         short   op;
418         char    b2 : 4;
419         short   d2 : 12;
420 } S_Format;
421
422 typedef struct {
423         char    op;
424         char    ll;
425         char    b1 : 4;
426         short   d1 : 12;
427         char    b2 : 4;
428         short   d2 : 12;
429 } SS_Format_1;
430
431 typedef struct {
432         char    op;
433         char    l1 : 4;
434         char    l2 : 4;
435         char    b1 : 4; 
436         short   d1 : 12;
437         char    b2 : 4;
438         short   d2 : 12;
439 } SS_Format_2;
440
441 typedef struct {
442         char    op;
443         char    r1 : 4;
444         char    r3 : 4;
445         char    b1 : 4; 
446         short   d1 : 12;
447         char    b2 : 4;
448         short   d2 : 12;
449 } SS_Format_3;  
450
451 typedef struct {
452         char    op;
453         char    r1 : 4;
454         char    r3 : 4;
455         char    b2 : 4; 
456         short   d2 : 12;
457         char    b4 : 4;
458         short   d4 : 12;
459 } SS_Format_4;  
460
461 typedef struct {
462         short   op;
463         short   tb1 : 4;
464         short   d1 : 12;
465         short   b2 : 4;
466         short   d2 : 12;
467 } __attribute__ ((packed)) SSE_Format;
468
469 typedef struct {
470         short   op;
471         char    r3 : 4;
472         char    o2 : 4;
473         short   b1 : 4;
474         short   d1 : 12;
475         short   b2 : 4;
476         short   d2 : 12;
477 } __attribute__ ((packed)) SSF_Format;
478
479 #define s390_emit16(c, x) do                    \
480 {                                               \
481         *((guint16 *) c) = (guint16) x;         \
482         c += sizeof(guint16);                   \
483 } while(0)
484
485 #define s390_emit32(c, x) do                    \
486 {                                               \
487         *((guint32 *) c) = (guint32) x;         \
488         c += sizeof(guint32);                   \
489 } while(0)
490
491 #define S390_E(c,opc)                   s390_emit16(c,opc)
492
493 #define S390_I(c,opc,imm)               s390_emit16(c, (opc << 8 | imm))
494
495 #define S390_RR(c,opc,g1,g2)            s390_emit16(c, (opc << 8 | (g1) << 4 | g2))
496
497 #define S390_RRE(c,opc,g1,g2)           s390_emit32(c, (opc << 16 | (g1) << 4 | g2)) 
498
499 #define S390_RRF_1(c,opc,g1,g2,g3)      s390_emit32(c, (opc << 16 | (g1) << 12 | (g3) << 4 | g2))
500
501 #define S390_RRF_2(c,opc,g1,k3,g2)      s390_emit32(c, (opc << 16 | (k3) << 12 | (g1) << 4 | g2))
502
503 #define S390_RRF_3(c,opc,g1,g2,k4,g3)   s390_emit32(c, (opc << 16 | (g3) << 12 | (k4) << 8 | (g1) << 4 | g2))
504
505 #define S390_RX(c,opc,g1,n2,s2,p2)      s390_emit32(c, (opc << 24 | (g1) << 20 | (n2) << 16 | (s2) << 12 | ((p2) & 0xfff)))
506
507 #define S390_RXE(c,opc,g1,n2,s2,p2) do                          \
508 {                                                               \
509         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2));      \
510         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
511                         (opc & 0xff)));                         \
512 } while (0)
513
514 #define S390_RXY(c,opc,g1,n2,s2,p2) do                          \
515 {                                                               \
516         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2));      \
517         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
518                         ((((p2) & 0xff000) >> 12) << 8) |       \
519                         (opc & 0xff)));                         \
520 } while (0)
521
522 #define S390_RS_1(c,opc,g1,g3,s2,p2)    s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (s2) << 12 | ((p2) & 0xfff))) 
523
524 #define S390_RS_2(c,opc,g1,k3,s2,p2)    s390_emit32(c, (opc << 24 | (g1) << 20 | (k3) << 16 | (s2) << 12 | ((p2) & 0xfff)))
525
526 #define S390_RS_3(c,opc,g1,s2,p2)       s390_emit32(c, (opc << 24 | (g1) << 20 | (s2) << 12 | ((p2) & 0xfff)))
527
528 #define S390_RSY_1(c,opc,g1,g3,s2,p2) do                        \
529 {                                                               \
530         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
531         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
532                         ((((p2) & 0xff000) >> 12) << 8) |       \
533                         (opc & 0xff)));                         \
534 } while (0)
535
536 #define S390_RSY_2(c,opc,g1,k3,s2,p2) do                        \
537 {                                                               \
538         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | k3));      \
539         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
540                         ((((p2) & 0xff000) >> 12) << 8) |       \
541                         (opc & 0xff)));                         \
542 } while (0)
543
544 #define S390_RSL(c,opc,ln,s1,p1) do                             \
545 {                                                               \
546         s390_emit16(c, ((opc & 0xff00) | (ln) << 4));           \
547         s390_emit32(c, ((s1) << 28 | ((s1 & 0xfff) << 16) |     \
548                         (opc & 0xff)));                         \
549 } while (0)
550
551 #define S390_RSI(c,opc,g1,g3,m2)        s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (m2 & 0xffff)))
552
553 #define S390_RI(c,opc,g1,m2)            s390_emit32(c, ((opc >> 4) << 24 | (g1) << 20 | (opc & 0x0f) << 16 | (m2 & 0xffff)))
554
555 #define S390_RIE_1(c,opc,g1,g3,m2) do                           \
556 {                                                               \
557         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
558         s390_emit32(c, ((m2) << 16 | (opc & 0xff)));            \
559 } while (0)
560
561 #define S390_RIE_2(c,opc,g1,g2,m3,v) do                         \
562 {                                                               \
563         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
564         s390_emit16(c, (v));                                    \
565         s390_emit16(c, ((m2) << 12 | (opc & 0xff)));            \
566 } while (0)
567
568 #define S390_RIE_3(c,opc,g1,i,m3,d) do                          \
569 {                                                               \
570         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | m3));      \
571         s390_emit16(c, (d));                                    \
572         s390_emit16(c, ((i) << 8 | (opc & 0xff)));              \
573 } while (0)
574
575 #define S390_RIE_4(c,opc,g1,i2,m3) do                           \
576 {                                                               \
577         s390_emit16(c, ((opc & 0xff00) | (g1) << 4);            \
578         s390_emit16(c, (i2));                                   \
579         s390_emit16(c, ((m3) << 12 | (opc & 0xff)));            \
580 } while (0)
581
582 #define S390_RIL_1(c,opc,g1,m2) do                                      \
583 {                                                                       \
584         s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf)));    \
585         s390_emit32(c, m2);                                             \
586 } while (0)
587
588 #define S390_RIL_2(c,opc,k1,m2) do                                      \
589 {                                                                       \
590         s390_emit16(c, ((opc >> 4) << 8 | (k1) << 4 | (opc & 0xf)));    \
591         s390_emit32(c, m2);                                             \
592 } while (0)
593
594 #define S390_RIS(c,opc,r,i,m3,b,d) do                           \
595 {                                                               \
596         s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2));   \
597         s390_emit16(c, ((b) << 12) | (d));                      \
598         s390_emit16(c, ((i) << 4) | ((opc) & 0xff));            \
599 }
600
601 #define S390_RRS(c,opc,r1,r2,m3,b,d) do                         \
602 {                                                               \
603         s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2));   \
604         s390_emit16(c, ((b) << 12) | (d));                      \
605         s390_emit16(c, ((m3) << 12) | ((opc) & 0xff));          \
606 }
607
608 #define S390_SI(c,opc,s1,p1,m2)         s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff)));
609
610 #define S390_SIY(c,opc,s1,p1,m2) do                             \
611 {                                                               \
612         s390_emit16(c, ((opc & 0xff00) | m2));                  \
613         s390_emit32(c, ((s1) << 24 | (((p2) & 0xfffff) << 8) |  \
614                         (opc & 0xff)));                         \
615 } while (0)
616
617 #define S390_SIY_1(c,opc,d1,b1,i2) do                           \
618 {                                                               \
619         s390_emit16(c, ((opc & 0xff00) | i2));                  \
620         s390_emit32(c, ((b1) << 28 | (((d1) & 0xfff) << 16) |   \
621                         ((((d1) & 0xff000) >> 12) << 8) |       \
622                         (opc & 0xff)));                         \
623 } while (0)
624
625 #define S390_S(c,opc,s2,p2)     s390_emit32(c, (opc << 16 | (s2) << 12 | ((p2) & 0xfff)))
626
627 #define S390_SS_1(c,opc,ln,s1,p1,s2,p2) do                      \
628 {                                                               \
629         s390_emit32(c, (opc << 24 | ((ln-1) & 0xff) << 16 |     \
630                         (s1) << 12 | ((p1) & 0xfff)));          \
631         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
632 } while (0)
633
634 #define S390_SS_2(c,opc,n1,n2,s1,p1,s2,p2) do                   \
635 {                                                               \
636         s390_emit32(c, (opc << 24 | (n1) << 16 | (n2) << 12 |   \
637                         (s1) << 12 | ((p1) & 0xfff)));          \
638         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
639 } while (0)
640
641 #define S390_SS_3(c,opc,g1,g3,s1,p1,s2,p2) do                   \
642 {                                                               \
643         s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 |   \
644                         (s1) << 12 | ((p1) & 0xfff)));          \
645         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
646 } while (0)
647
648 #define S390_SS_4(c,opc,g1,g3,s2,p2,s4,p4) do                   \
649 {                                                               \
650         s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 |   \
651                         (s2) << 12 | ((p2) & 0xfff)));          \
652         s390_emit16(c, ((s4) << 12 | ((p4) & 0xfff)));          \
653 } while (0)
654
655 #define S390_SSE(c,opc,s1,p1,s2,p2) do                  \
656 {                                                       \
657         s390_emit16(c, opc);                            \
658         s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff)));  \
659         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));  \
660 } while (0)
661
662 #define S390_SSF(c,opc,r3,s1,p1,s2,p2) do                               \
663 {                                                                       \
664         s390_emit16(c, (((opc) & 0xff00) << 8) | ((r3) << 4) |          \
665                         ((opc) & 0xf));                                 \
666         s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff)));                  \
667         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));                  \
668 } while (0)
669
670 #define s390_a(c, r, x, b, d)           S390_RX(c, 0x5a, r, x, b, d)
671 #define s390_adb(c, r, x, b, d)         S390_RXE(c, 0xed1a, r, x, b, d)
672 #define s390_adbr(c, r1, r2)            S390_RRE(c, 0xb31a, r1, r2)
673 #define s390_aebr(c, r1, r2)            S390_RRE(c, 0xb30a, r1, r2)
674 #define s390_afi(c, r, v)               S390_RIL_1(c, 0xc29, r, v);
675 #define s390_ag(c, r, x, b, d)          S390_RXY(c, 0xe308, r, x, b, d)
676 #define s390_agf(c, r, x, b, d)         S390_RXY(c, 0xe318, r, x, b, d)
677 #define s390_agfi(c, r, v)              S390_RIL_1(c, 0xc28, r, v)
678 #define s390_afgr(c, r1, r2)            S390_RRE(c, 0xb918, r1, r2)
679 #define s390_aghi(c, r, v)              S390_RI(c, 0xa7b, r, v)
680 #define s390_aghik(c, r, v)             S390_RIE_1(c, 0xecd9, r, v)
681 #define s390_agr(c, r1, r2)             S390_RRE(c, 0xb908, r1, r2)
682 #define s390_agrk(c, r1, r2, r3)        S390_RRF_1(c, 0xb9e8, r1, r2, r3)
683 #define s390_agsi(c, r, v)              S390_SIY(c, 0xeb7a, r v)
684 #define s390_ahhhr(c, r1, r2, r3)       S390_RRF_1(c, 0xb9c8, r1, r2, r3)
685 #define s390_ahhlr(c, r1, r2, r3)       S390_RRF_1(c, 0xb9d8, r1, r2, r3)
686 #define s390_ahi(c, r, v)               S390_RI(c, 0xa7a, r, v)
687 #define s390_ahik(c, r, v)              S390_RIE_1(c, 0xecd8, r, v)
688 #define s390_ahy(c, r, x, b, d)         S390_RXY(c, 0xe37a, r, b, d)
689 #define s390_aih(c, r, v)               S390_RIL_1(c, 0xcc8, r, v)
690 #define s390_al(c, r, x, b, d)          S390_RX(c, 0x5e, r, x, b, d)
691 #define s390_alc(c, r, x, b, d)         S390_RXY(c, 0xe398, r, x, b, d)
692 #define s390_alcg(c, r, x, b, d)        S390_RXY(c, 0xe388, r, x, b, d)
693 #define s390_alcgr(c, r1, r2)           S390_RRE(c, 0xb988, r1, r2)
694 #define s390_alcr(c, r1, r2)            S390_RRE(c, 0xb998, r1, r2)
695 #define s390_alfi(c, r, v)              S390_RIL_1(c, 0xc2b, r, v)
696 #define s390_alg(c, r, x, b, d)         S390_RXY(c, 0xe30a, r, x, b, d)
697 #define s390_algf(c, r, x, b, d)        S390_RXY(c, 0xe31a, r, x, b, d)
698 #define s390_algfi(c, r, v)             S390_RIL_1(c, 0xc2a, r, v)
699 #define s390_algfr(c, r1, r2)           S390_RRE(c, 0xb91a, r1, r2)
700 #define s390_alghsik(c, r, v)           S390_RIE_1(c, 0xecd8, r, v)
701 #define s390_algr(c, r1, r2)            S390_RRE(c, 0xb90a, r1, r2)
702 #define s390_algsi(c, d1, b1, i2)       S390_SIY_1(c, 0xeb7e, d1, b1, i2)
703 #define s390_alhhhr(c, r1, r2, r3)      S390_RRF_1(c, 0xb9ca, r1, r2, r3)
704 #define s390_alhhlr(c, r1, r2, r3)      S390_RRF_1(c, 0xb9da, r1, r2, r3)
705 #define s390_alhsik(c, r, v)            S390_RIE_1(c, 0xecda, r, v)
706 #define s390_alr(c, r1, r2)             S390_RR(c, 0x1e, r1, r2)
707 #define s390_alrk(c, r1, r2)            S390_RRF(c, 0xb9fa, r1, r2)
708 #define s390_alsi(c, d1, b1, i2)        S390_SIY_1(c, 0xeb6e, d1, b1, i2)
709 #define s390_alsih(c, r, v)             S390_RIL_1(c, 0xcca, r, v)
710 #define s390_alsihn(c, r, v)            S390_RIL_1(c, 0xccb, r, v)
711 #define s390_aly(c, r, x, b, d)         S390_RXY(c, 0xe35e, r, x, b, d)
712 #define s390_ar(c, r1, r2)              S390_RR(c, 0x1a, r1, r2)
713 #define s390_ark(c, r1, r2, r3)         S390_RRF_1(c, 0xb9f8, r1, r2, r3)
714 #define s390_asi(c, r, v)               S390_SIY(c, 0xeb6a, r, v)
715 #define s390_ay(c, r, x, b, d)          S390_RXY(c, 0xe35a, r, x, b, d)
716 #define s390_basr(c, r1, r2)            S390_RR(c, 0x0d, r1, r2)
717 #define s390_bctr(c, r1, r2)            S390_RR(c, 0x06, r1, r2)
718 #define s390_bctrg(c, r1, r2)           S390_RRE(c, 0xb946, r1, r2)
719 #define s390_bnzr(c, r)                 S390_RR(c, 0x07, 0x07, r)
720 #define s390_bras(c, r, o)              S390_RI(c, 0xa75, r, o)
721 #define s390_brasl(c, r, o)             S390_RIL_1(c, 0xc05, r, o)
722 #define s390_brc(c, m, d)               S390_RI(c, 0xa74, m, d)
723 #define s390_brcl(c, m, d)              S390_RIL_2(c, 0xc04, m, d)
724 #define s390_br(c, r)                   S390_RR(c, 0x07, 0xf, r)
725 #define s390_break(c)                   S390_RR(c, 0, 0, 0)
726 #define s390_bzr(c, r)                  S390_RR(c, 0x07, 0x08, r)
727 #define s390_c(c, r, x, b, d)           S390_RX(c, 0x59, r, x, b, d)
728 #define s390_cdb(c, r, x, b, d)         S390_RXE(c, 0xed19, r, x, b, d)
729 #define s390_cdbr(c, r1, r2)            S390_RRE(c, 0xb319, r1, r2)
730 #define s390_cdfbr(c, r1, r2)           S390_RRE(c, 0xb395, r1, r2)
731 #define s390_cdgbr(c, r1, r2)           S390_RRE(c, 0xb3a5, r1, r2)
732 #define s390_cds(c, r1, r2, b, d)       S390_RX(c, 0xbb, r1, r2, b, d)
733 #define s390_cdsg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb3e, r1, r2, b, d)
734 #define s390_cdsy(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb31, r1, r2, b, d)
735 #define s390_cebr(c, r1, r2)            S390_RRE(c, 0xb309, r1, r2)
736 #define s390_cegbr(c, r1, r2)           S390_RRE(c, 0xb3a4, r1, r2)
737 #define s390_cfdbr(c, r1, m, r2)        S390_RRF_2(c, 0xb399, r1, m, r2)
738 #define s390_cfi(c, r, v)               S390_RIL_1(c, 0xc2d, r, v)
739 #define s390_cgdbr(c, r1, m, r2)        S390_RRF_2(c, 0xb3a9, r1, m, r2)
740 #define s390_cg(c, r, x, b, d)          S390_RXY(c, 0xe320, r, x, b, d)
741 #define s390_cgfi(c, r, v)              S390_RIL_1(c, 0xc2c, r, v)
742 #define s390_cgfrl(c, r, v)             S390_RIL_1(c, 0xc6c, r, v)
743 #define s390_cghi(c, r, i)              S390_RI(c, 0xa7f, r, i)
744 #define s390_cgib(c, r, i, m, b, d)     S390_RIS(c, 0xecfc, r, i, m, b, d)
745 #define s390_cgij(c, r, i, m, d)        S390_RIE_3(c, 0xec7c, r, i, m, d)
746 #define s390_cgit(c, r, i, m)           S390_RIE_4(c, 0xec70, r, i m);
747 #define s390_cgr(c, r1, r2)             S390_RRE(c, 0xb920, r1, r2)
748 #define s390_cgrb(c, r1, r2, m3, b, d)  S390_RRS(c, 0xece4, r1, r2, m3, b, d)
749 #define s390_cgrj(c, r1, r2, m3, v)     S390_RIE_2(c, 0xec64, r1, r2, m3, v)
750 #define s390_cgrl(c, r, v)              S390_RIL_1(c, 0xc68, r, v)
751 #define s390_chi(c, r, i)               S390_RI(c, 0xa7e, r, i)
752 #define s390_cib(c, r, i, m, b, d)      S390_RIS(c, 0xecfe, r, i, m, b, d)
753 #define s390_cij(c, r, i, m, d)         S390_RIE_3(c, 0xec7e, r, i, m, d)
754 #define s390_cit(c, r, i, m)            S390_RIE_4(c, 0xec72, r, i m);
755 #define s390_cl(c, r, x, b, d)          S390_RX(c, 0x55, r, x, b, d)
756 #define s390_clg(c, r, x, b, d)         S390_RXY(c, 0xe321, r, x, b, d)
757 #define s390_clgib(c, r, i, m, b, d)    S390_RIS(c, 0xecfd, r, i, m, b, d)
758 #define s390_clgij(c, r, i, b)          S390_RIE_3(c, 0xec7d, r, i, m, d)
759 #define s390_clgr(c, r1, r2)            S390_RRE(c, 0xb921, r1, r2)
760 #define s390_clgrj(c, r1, r2, m, v)     S390_RIE_2(c, 0xec65, r1, r2, m, v)
761 #define s390_clgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece5, r1, r2, m3, b, d)
762 #define s390_clib(c, r, i, m, b, d)     S390_RIS(c, 0xecff, r, i, m, b, d)
763 #define s390_clij(c, r, i, b)           S390_RIE_3(c, 0xec7f, r, i, m, d)
764 #define s390_clr(c, r1, r2)             S390_RR(c, 0x15, r1, r2)
765 #define s390_clrb(c, r1, r2, m3, b, d)  S390_RRS(c, 0xecf7, r1, r2, m3, b, d)
766 #define s390_clrj(c, r1, r2, m, v)      S390_RIE_2(c, 0xec77, r1, r2, m, v)
767 #define s390_cr(c, r1, r2)              S390_RR(c, 0x19, r1, r2)
768 #define s390_crb(c, r1, r2, m3, b, d)   S390_RRS(c, 0xecf6, r1, r2, m3, b, d)
769 #define s390_crj(c, r1, r2, m3, v)      S390_RIE_2(c, 0xec76, r1, r2, m3, v)
770 #define s390_crl(c, r, v)               S390_RIL_1(c, 0xc6d, r, v)
771 #define s390_crt(c, r1, r2, m3)         S390_RRF_2(c, 0xb972, r1, r2, m3);
772 #define s390_cgrt(c, r1, r2, m3)        S390_RRF_2(c, 0xb960, r1, r2, m3);
773 #define s390_cs(c, r1, r2, b, d)        S390_RX(c, 0xba, r1, r2, b, d)
774 #define s390_csg(c, r1, r2, b, d)       S390_RSY_1(c, 0xeb30, r1, r2, b, d)
775 #define s390_csst(c, d1, b1, d2, b2, r) S390_SSF(c, 0xc82, b1, d1, b2, d2, r)
776 #define s390_csy(c, r1, r2, b, d)       S390_RSY_1(c, 0xeb14, r1, r2, b, d)
777 #define s390_ddbr(c, r1, r2)            S390_RRE(c, 0xb31d, r1, r2)
778 #define s390_debr(c, r1, r2)            S390_RRE(c, 0xb30d, r1, r2)
779 #define s390_didbr(c, r1, r2, m, r3)    S390_RRF_3(c, 0xb35b, r1, r2, m, r3)
780 #define s390_dlgr(c, r1, r2)            S390_RRE(c, 0xb987, r1, r2)
781 #define s390_dlr(c, r1, r2)             S390_RRE(c, 0xb997, r1, r2)
782 #define s390_dr(c, r1, r2)              S390_RR(c, 0x1d, r1, r2)
783 #define s390_dsgfr(c, r1, r2)           S390_RRE(c, 0xb91d, r1, r2)
784 #define s390_dsgr(c, r1, r2)            S390_RRE(c, 0xb90d, r1, r2)
785 #define s390_ear(c, r1, r2)             S390_RRE(c, 0xb24f, r1, r2)
786 #define s390_ic(c, r, x, b, d)          S390_RX(c, 0x43, r, x, b, d)
787 #define s390_icm(c, r, m, b, d)         S390_RX(c, 0xbf, r, m, b, d)
788 #define s390_icmy(c, r, x, b, d)        S390_RXY(c, 0xeb81, r, x, b, d)
789 #define s390_icy(c, r, x, b, d)         S390_RXY(c, 0xe373, r, x, b, d)
790 #define s390_iihf(c, r, v)              S390_RIL_1(c, 0xc08, r, v)
791 #define s390_iihh(c, r, v)              S390_RI(c, 0xa50, r, v)
792 #define s390_iihl(c, r, v)              S390_RI(c, 0xa51, r, v)
793 #define s390_iilf(c, r, v)              S390_RIL_1(c, 0xc09, r, v)
794 #define s390_iilh(c, r, v)              S390_RI(c, 0xa52, r, v)
795 #define s390_iill(c, r, v)              S390_RI(c, 0xa53, r, v)
796 #define s390_j(c,d)                     s390_brc(c, S390_CC_UN, d)
797 #define s390_jc(c, m, d)                s390_brc(c, m, d)
798 #define s390_jcl(c, m, d)               s390_brcl(c, m, d)
799 #define s390_jcy(c, d)                  s390_brc(c, S390_CC_CY, d)
800 #define s390_je(c, d)                   s390_brc(c, S390_CC_EQ, d)
801 #define s390_jeo(c, d)                  s390_brc(c, S390_CC_ZR|S390_CC_OV, d)
802 #define s390_jh(c, d)                   s390_brc(c, S390_CC_GT, d)
803 #define s390_jho(c, d)                  s390_brc(c, S390_CC_GT|S390_CC_OV, d)
804 #define s390_jl(c, d)                   s390_brc(c, S390_CC_LT, d)
805 #define s390_jlo(c, d)                  s390_brc(c, S390_CC_LT|S390_CC_OV, d)
806 #define s390_jm(c, d)                   s390_brc(c, S390_CC_LT, d)
807 #define s390_jnc(c, d)                  s390_brc(c, S390_CC_NC, d)
808 #define s390_jne(c, d)                  s390_brc(c, S390_CC_NZ, d)
809 #define s390_jnh(c, d)                  s390_brc(c, S390_CC_LE, d)
810 #define s390_jnl(c, d)                  s390_brc(c, S390_CC_GE, d)
811 #define s390_jnz(c, d)                  s390_brc(c, S390_CC_NZ, d)
812 #define s390_jo(c, d)                   s390_brc(c, S390_CC_OV, d)
813 #define s390_jno(c, d)                  s390_brc(c, S390_CC_NO, d)
814 #define s390_jp(c, d)                   s390_brc(c, S390_CC_GT, d)
815 #define s390_jz(c, d)                   s390_brc(c, S390_CC_ZR, d)
816 #define s390_jg(c,d)                    s390_brcl(c, S390_CC_UN, d)
817 #define s390_jgcy(c, d)                 s390_brcl(c, S390_CC_CY, d)
818 #define s390_jge(c, d)                  s390_brcl(c, S390_CC_EQ, d)
819 #define s390_jgeo(c, d)                 s390_brcl(c, S390_CC_ZR|S390_CC_OV, d)
820 #define s390_jgh(c, d)                  s390_brcl(c, S390_CC_GT, d)
821 #define s390_jgho(c, d)                 s390_brcl(c, S390_CC_GT|S390_CC_OV, d)
822 #define s390_jgl(c, d)                  s390_brcl(c, S390_CC_LT, d)
823 #define s390_jglo(c, d)                 s390_brcl(c, S390_CC_LT|S390_CC_OV, d)
824 #define s390_jgm(c, d)                  s390_brcl(c, S390_CC_LT, d)
825 #define s390_jgnc(c, d)                 s390_brcl(c, S390_CC_NC, d)
826 #define s390_jgne(c, d)                 s390_brcl(c, S390_CC_NZ, d)
827 #define s390_jgnh(c, d)                 s390_brcl(c, S390_CC_LE, d)
828 #define s390_jgnl(c, d)                 s390_brcl(c, S390_CC_GE, d)
829 #define s390_jgnz(c, d)                 s390_brcl(c, S390_CC_NZ, d)
830 #define s390_jgo(c, d)                  s390_brcl(c, S390_CC_OV, d)
831 #define s390_jgno(c, d)                 s390_brcl(c, S390_CC_NO, d)
832 #define s390_jgp(c, d)                  s390_brcl(c, S390_CC_GT, d)
833 #define s390_jgz(c, d)                  s390_brcl(c, S390_CC_ZR, d)
834 #define s390_l(c, r, x, b, d)           S390_RX(c, 0x58, r, x, b, d)
835 #define s390_ly(c, r, x, b, d)          S390_RXY(c, 0xe358, r, x, b, d)
836 #define s390_la(c, r, x, b, d)          S390_RX(c, 0x41, r, x, b, d)
837 #define s390_lay(c, r, x, b, d)         S390_RXY(c, 0xe371, r, x, b, d)
838 #define s390_lam(c, r1, r2, b, d)       S390_RS_1(c, 0x9a, r1, r2, b, d)
839 #define s390_larl(c, r, o)              S390_RIL_1(c, 0xc00, r, o)
840 #define s390_lb(c, r, x, b, d)          S390_RXY(c, 0xe376, r, x, b, d)
841 #define s390_lbr(c, r1, r2)             S390_RRE(c, 0xb926, r1, r2)
842 #define s390_lcdbr(c, r1, r2)           S390_RRE(c, 0xb313, r1, r2)
843 #define s390_lcgr(c, r1, r2)            S390_RRE(c, 0xb903, r1, r2)
844 #define s390_lcr(c, r1, r2)             S390_RR(c, 0x13, r1, r2)
845 #define s390_ld(c, f, x, b, d)          S390_RX(c, 0x68, f, x, b, d)
846 #define s390_ldy(c, r, x, b, d)         S390_RXY(c, 0xed65, r, x, b, d)
847 #define s390_ldeb(c, r, x, b, d)        S390_RXE(c, 0xed04, r, x, b, d)
848 #define s390_ldebr(c, r1, r2)           S390_RRE(c, 0xb304, r1, r2)
849 #define s390_ldgr(c, r1, r2)            S390_RRE(c, 0xb3c1, r1, r2)
850 #define s390_ldr(c, r1, r2)             S390_RR(c, 0x28, r1, r2)
851 #define s390_le(c, f, x, b, d)          S390_RX(c, 0x78, f, x, b, d)
852 #define s390_ledbr(c, r1, r2)           S390_RRE(c, 0xb344, r1, r2)
853 #define s390_ler(c, r1, r2)             S390_RR(c, 0x38, r1, r2)
854 #define s390_ley(c, r, x, b, d)         S390_RXY(c, 0xed64, r, x, b, d)
855 #define s390_lg(c, r, x, b, d)          S390_RXY(c, 0xe304, r, x, b, d)
856 #define s390_lgb(c, r, x, b, d)         S390_RXY(c, 0xe377, r, x, b, d)
857 #define s390_lgbr(c, r1, r2)            S390_RRE(c, 0xb906, r1, r2)
858 #define s390_lgdr(c, r1, r2)            S390_RRE(c, 0xb3cd, r1, r2)
859 #define s390_lgf(c, r, x, b, d)         S390_RXY(c, 0xe314, r, x, b, d)
860 #define s390_lgfi(c, r, v)              S390_RIL_1(c, 0xc01, r, v)
861 #define s390_lgfrl(c, r1, d)            S390_RIL_1(c, 0xc4c, r1, d)
862 #define s390_lgfr(c, r1, r2)            S390_RRE(c, 0xb914, r1, r2)
863 #define s390_lgh(c, r, x, b, d)         S390_RXY(c, 0xe315, r, x, b, d)
864 #define s390_lghi(c, r, v)              S390_RI(c, 0xa79, r, v)
865 #define s390_lghr(c, r1, r2)            S390_RRE(c, 0xb907, r1, r2)
866 #define s390_lgr(c, r1, r2)             S390_RRE(c, 0xb904, r1, r2)
867 #define s390_lgrl(c, r1, d)             S390_RIL_1(c, 0xc48, r1, d)
868 #define s390_lh(c, r, x, b, d)          S390_RX(c, 0x48, r, x, b, d)
869 #define s390_lhr(c, r1, r2)             S390_RRE(c, 0xb927, r1, r2)
870 #define s390_lhg(c, r, x, b, d)         S390_RXY(c, 0xe315, r, x, b, d)
871 #define s390_lhi(c, r, v)               S390_RI(c, 0xa78, r, v)
872 #define s390_lhy(c, r, x, b, d)         S390_RXY(c, 0xe378, r, x, b, d)
873 #define s390_llcr(c, r1, r2)            S390_RRE(c, 0xb994, r1, r2)
874 #define s390_llgc(c, r, x, b, d)        S390_RXY(c, 0xe390, r, x, b, d)
875 #define s390_llgcr(c, r1, r2)           S390_RRE(c, 0xb984, r1, r2)
876 #define s390_llgf(c, r, x, b, d)        S390_RXY(c, 0xe316, r, x, b, d)
877 #define s390_llgfr(c, r1, r2)           S390_RRE(c, 0xb916, r1, r2)
878 #define s390_llgh(c, r, x, b, d)        S390_RXY(c, 0xe391, r, x, b, d)
879 #define s390_llghr(c, r1, r2)           S390_RRE(c, 0xb985, r1, r2)
880 #define s390_llhr(c, r1, r2)            S390_RRE(c, 0xb995, r1, r2)
881 #define s390_llihf(c, r, v)             S390_RIL_1(c, 0xc0e, r, v)
882 #define s390_llihh(c, r, v)             S390_RI(c, 0xa5c, r, v)
883 #define s390_llihl(c, r, v)             S390_RI(c, 0xa5d, r, v)
884 #define s390_llilf(c, r, v)             S390_RIL_1(c, 0xc0f, r, v)
885 #define s390_llilh(c, r, v)             S390_RI(c, 0xa5e, r, v)
886 #define s390_llill(c, r, v)             S390_RI(c, 0xa5f, r, v)
887 #define s390_lm(c, r1, r2, b, d)        S390_RS_1(c, 0x98, r1, r2, b, d)
888 #define s390_lmg(c, r1, r2, b, d)       S390_RSY_1(c, 0xeb04, r1, r2, b, d)
889 #define s390_lndbr(c, r1, r2)           S390_RRE(c, 0xb311, r1, r2)
890 #define s390_lngr(c, r1, r2)            S390_RRE(c, 0xb901, r1, r2)
891 #define s390_lnr(c, r1, r2)             S390_RR(c, 0x11, r1, r2)
892 #define s390_lpdbr(c, r1, r2)           S390_RRE(c, 0xb310, r1, r2)
893 #define s390_lpgr(c, r1, r2)            S390_RRE(c, 0xb900, r1, r2)
894 #define s390_lpr(c, r1, r2)             S390_RR(c, 0x10, r1, r2)
895 #define s390_lr(c, r1, r2)              S390_RR(c, 0x18, r1, r2)
896 #define s390_lrl(c, r1, d)              S390_RIL_1(c, 0xc4d, r1, d)
897 #define s390_ltgfr(c, r1, r2)           S390_RRE(c, 0xb912, r1, r2)
898 #define s390_ltgr(c, r1, r2)            S390_RRE(c, 0xb902, r1, r2)
899 #define s390_ltr(c, r1, r2)             S390_RR(c, 0x12, r1, r2)
900 #define s390_lzdr(c, r)                 S390_RRE(c, 0xb375, r, 0)
901 #define s390_lzer(c, r)                 S390_RRE(c, 0xb374, r, 0)
902 #define s390_m(c, r, x, b, d)           S390_RX(c, 0x5c, r, x, b, d)
903 #define s390_mdbr(c, r1, r2)            S390_RRE(c, 0xb31c, r1, r2)
904 #define s390_meebr(c, r1, r2)           S390_RRE(c, 0xb317, r1, r2)
905 #define s390_mfy(c, r, x, b, d)         S390_RXY(c, 0xe35c, r, x, b, d)
906 #define s390_mlgr(c, r1, r2)            S390_RRE(c, 0xb986, r1, r2)
907 #define s390_mlr(c, r1, r2)             S390_RRE(c, 0xb996, r1, r2)
908 #define s390_mr(c, r1, r2)              S390_RR(c, 0x1c, r1, r2)
909 #define s390_ms(c, r, x, b, d)          S390_RX(c, 0x71, r, x, b, d)
910 #define s390_msi(c, r, v)               S390_RIL_1(c, 0xc21, r, v)
911 #define s390_msgfr(c, r1, r2)           S390_RRE(c, 0xb91c, r1, r2)
912 #define s390_msgi(c, r, v)              S390_RIL_1(c, 0xc20, r, v)
913 #define s390_msgr(c, r1, r2)            S390_RRE(c, 0xb90c, r1, r2)
914 #define s390_msr(c, r1, r2)             S390_RRE(c, 0xb252, r1, r2)
915 #define s390_mvc(c, l, b1, d1, b2, d2)  S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
916 #define s390_mvcl(c, r1, r2)            S390_RR(c, 0x0e, r1, r2)
917 #define s390_mvcle(c, r1, r3, d2, b2)   S390_RS_1(c, 0xa8, r1, r3, d2, b2)
918 #define s390_n(c, r, x, b, d)           S390_RX(c, 0x54, r, x, b, d)
919 #define s390_nc(c, l, b1, d1, b2, d2)   S390_SS_1(c, 0xd4, l, b1, d1, b2, d2)
920 #define s390_ng(c, r, x, b, d)          S390_RXY(c, 0xe380, r, x, b, d)
921 #define s390_ngr(c, r1, r2)             S390_RRE(c, 0xb980, r1, r2)
922 #define s390_ngrk(c, r1, r2, r3)        S390_RRF_1(c, 0xb9e4, r1, r2, r3)
923 #define s390_ni(c, b, d, v)             S390_SI(c, 0x94, b, d, v) 
924 #define s390_nihf(c, r, v)              S390_RIL_1(c, 0xc0a, r, v)
925 #define s390_nihh(c, r, v)              S390_RI(c, 0xa54, r, v)
926 #define s390_nihl(c, r, v)              S390_RI(c, 0xa55, r, v)
927 #define s390_nilf(c, r, v)              S390_RIL_1(c, 0xc0b, r, v)
928 #define s390_nilh(c, r, v)              S390_RI(c, 0xa56, r, v)
929 #define s390_nill(c, r, v)              S390_RI(c, 0xa57, r, v)
930 #define s390_niy(c, b, d, v)            S390_SIY(c, 0xeb54, b, d, v) 
931 #define s390_nop(c)                     S390_RR(c, 0x07, 0x0, 0)
932 #define s390_mem(c)                     S390_RR(c, 0x07, 0xe, 0)
933 #define s390_nr(c, r1, r2)              S390_RR(c, 0x14, r1, r2)
934 #define s390_nrk(c, r1, r2)             S390_RRF_1(c, 0xb9f4, r1, r2)
935 #define s390_ny(c, r, x, b, d)          S390_RRY(c, 0xe354, r1, r2)
936 #define s390_o(c, r, x, b, d)           S390_RX(c, 0x56, r, x, b, d)
937 #define s390_oihf(c, r, v)              S390_RIL_1(c, 0xc0c, r, v)
938 #define s390_oihh(c, r, v)              S390_RI(c, 0xa58, r, v)
939 #define s390_oihl(c, r, v)              S390_RI(c, 0xa59, r, v)
940 #define s390_oilf(c, r, v)              S390_RIL_1(c, 0xc0d, r, v)
941 #define s390_oilh(c, r, v)              S390_RI(c, 0xa5a, r, v)
942 #define s390_oill(c, r, v)              S390_RI(c, 0xa5b` r, v)
943 #define s390_oiy(c, b, d, v)            S390_SIY(c, 0xeb56 b, d, v) 
944 #define s390_og(c, r, x, b, d)          S390_RXY(c, 0xe381, r, x, b, d)
945 #define s390_ogr(c, r1, r2)             S390_RRE(c, 0xb981, r1, r2)
946 #define s390_or(c, r1, r2)              S390_RR(c, 0x16, r1, r2)
947 #define s390_s(c, r, x, b, d)           S390_RX(c, 0x5b, r, x, b, d)
948 #define s390_sdb(c, r, x, b, d)         S390_RXE(c, 0xed1b, r, x, b, d)
949 #define s390_sdbr(c, r1, r2)            S390_RRE(c, 0xb31b, r1, r2)
950 #define s390_sebr(c, r1, r2)            S390_RRE(c, 0xb30b, r1, r2)
951 #define s390_sg(c, r, x, b, d)          S390_RXY(c, 0xe309, r, x, b, d)
952 #define s390_sgf(c, r, x, b, d)         S390_RXY(c, 0xe319, r, x, b, d)
953 #define s390_sgr(c, r1, r2)             S390_RRE(c, 0xb909, r1, r2)
954 #define s390_sl(c, r, x, b, d)          S390_RX(c, 0x5f, r, x, b, d)
955 #define s390_sla(c, r, b, d)            S390_RS_3(c, 0x8b, r, b, d) 
956 #define s390_slag(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0b, r1, r2, b, d) 
957 #define s390_slbg(c, r, x, b, d)        S390_RXY(c, 0xe389, r, x, b, d)
958 #define s390_slbgr(c, r1, r2)           S390_RRE(c, 0xb989, r1, r2)
959 #define s390_slbr(c, r1, r2)            S390_RRE(c, 0xb999, r1, r2)
960 #define s390_slda(c, r, b, d)           S390_RS_3(c, 0x8f, r, b, d) 
961 #define s390_sldl(c, r, b, d)           S390_RS_3(c, 0x8d, r, b, d) 
962 #define s390_slfi(c, r, v)              S390_RIL_1(c, 0xc25, r, v)
963 #define s390_slg(c, r, x, b, d)         S390_RXY(c, 0xe30b, r, x, b, d)
964 #define s390_slgf(c, r, x, b, d)        S390_RXY(c, 0xe31b, r, x, b, d)
965 #define s390_slgfr(c, r1, r2)           S390_RRE(c, 0xb91b, r1, r2)
966 #define s390_slgfi(c, r, v)             S390_RIL_1(c, 0xc24, r, v)
967 #define s390_slgr(c, r1, r2)            S390_RRE(c, 0xb90b, r1, r2)
968 #define s390_sll(c, r, b, d)            S390_RS_3(c, 0x89, r, b, d) 
969 #define s390_sllg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0d, r1, r2, b, d) 
970 #define s390_slr(c, r1, r2)             S390_RR(c, 0x1f, r1, r2)
971 #define s390_sqdbr(c, r1, r2)           S390_RRE(c, 0xb315, r1, r2)
972 #define s390_sqebr(c, r1, r2)           S390_RRE(c, 0xb314, r1, r2)
973 #define s390_sra(c, r, b, d)            S390_RS_3(c, 0x8a, r, b, d) 
974 #define s390_srag(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0a, r1, r2, b, d) 
975 #define s390_sr(c, r1, r2)              S390_RR(c, 0x1b, r1, r2)
976 #define s390_srda(c, r, b, d)           S390_RS_3(c, 0x8e, r, b, d) 
977 #define s390_srdl(c, r, b, d)           S390_RS_3(c, 0x8c, r, b, d) 
978 #define s390_srl(c, r, b, d)            S390_RS_3(c, 0x88, r, b, d) 
979 #define s390_srlg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0c, r1, r2, b, d) 
980 #define s390_st(c, r, x, b, d)          S390_RX(c, 0x50, r, x, b, d)
981 #define s390_stam(c, r1, r2, b, d)      S390_RS_1(c, 0x9b, r1, r2, b, d)
982 #define s390_stc(c, r, x, b, d)         S390_RX(c, 0x42, r, x, b, d)
983 #define s390_stcm(c, r, m, b, d)        S390_RX(c, 0xbe, r, m, b, d)
984 #define s390_stcmy(c, r, x, b, d)       S390_RXY(c, 0xeb2d, r, x, b, d)
985 #define s390_stcy(c, r, x, b, d)        S390_RXY(c, 0xe372, r, x, b, d)
986 #define s390_std(c, f, x, b, d)         S390_RX(c, 0x60, f, x, b, d)
987 #define s390_stdy(c, r, x, b, d)        S390_RXY(c, 0xed67, r, x, b, d)
988 #define s390_ste(c, f, x, b, d)         S390_RX(c, 0x70, f, x, b, d)
989 #define s390_stey(c, r, x, b, d)        S390_RXY(c, 0xed66, r, x, b, d)
990 #define s390_stfpc(c, b, d)             S390_S(c, 0xb29c, b, d)
991 #define s390_stg(c, r, x, b, d)         S390_RXY(c, 0xe324, r, x, b, d)
992 #define s390_sth(c, r, x, b, d)         S390_RX(c, 0x40, r, x, b, d)
993 #define s390_sthy(c, r, x, b, d)        S390_RXY(c, 0xe370, r, x, b, d)
994 #define s390_stm(c, r1, r2, b, d)       S390_RS_1(c, 0x90, r1, r2, b, d)
995 #define s390_stmg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb24, r1, r2, b, d)
996 #define s390_sty(c, r, x, b, d)         S390_RXY(c, 0xe350, r, x, b, d)
997 #define s390_tcdb(c, r, x, b, d)        S390_RXE(c, 0xed11, r, x, b, d)
998 #define s390_tceb(c, r, x, b, d)        S390_RXE(c, 0xed10, r, x, b, d)
999 #define s390_x(c, r, x, b, d)           S390_RX(c, 0x57, r, x, b, d)
1000 #define s390_xihf(c, r, v)              S390_RIL_1(c, 0xc06, r, v)
1001 #define s390_xilf(c, r, v)              S390_RIL_1(c, 0xc07, r, v)
1002 #define s390_xg(c, r, x, b, d)          S390_RXY(c, 0xe382, r, x, b, d)
1003 #define s390_xgr(c, r1, r2)             S390_RRE(c, 0xb982, r1, r2)
1004 #define s390_xr(c, r1, r2)              S390_RR(c, 0x17, r1, r2)
1005 #define s390_xy(c, r, x, b, d)          S390_RXY(c, 0xe357, r, x, b, d)
1006 #endif