[sgen] Fix logging of major heap size with concurrent sweep
[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 typedef enum {
141         s390_VR0 = 0,
142         s390_VR1 = 1,
143         s390_VR2 = 2,
144         s390_VR3 = 3,
145         s390_VR4 = 4,
146         s390_VR5 = 5,
147         s390_VR6 = 6,
148         s390_VR7 = 7,
149         s390_VR8 = 8,
150         s390_VR9 = 9,
151         s390_VR10 = 10,
152         s390_VR11 = 11,
153         s390_VR12 = 12,
154         s390_VR13 = 13,
155         s390_VR14 = 14,
156         s390_VR15 = 15,
157         s390_VR16 = 16,
158         s390_VR17 = 17,
159         s390_VR18 = 18,
160         s390_VR19 = 19,
161         s390_VR20 = 20,
162         s390_VR21 = 21,
163         s390_VR22 = 22,
164         s390_VR23 = 23,
165         s390_VR24 = 24,
166         s390_VR25 = 25,
167         s390_VR26 = 26,
168         s390_VR27 = 27,
169         s390_VR28 = 28,
170         s390_VR29 = 29,
171         s390_VR30 = 30,
172         s390_VR31 = 31,
173         s390_VR_NREG = 32,
174 } s390_VR_Reg_No;
175
176 #define s390_is_imm16(val)              ((glong)val >= (glong) SHRT_MIN && \
177                                          (glong)val <= (glong) SHRT_MAX)
178 #define s390_is_imm32(val)              ((glong)val >= (glong) INT_MIN && \
179                                          (glong)val <= (glong) INT_MAX)
180 #define s390_is_uimm16(val)             ((glong)val >= 0 && (glong)val <= (glong) USHRT_MAX)
181 #define s390_is_uimm32(val)             ((glong)val >= 0 && (glong)val <= (glong) UINT_MAX)
182 #define s390_is_uimm20(val)             ((glong)val >= 0 && (glong)val <= 1048575)
183 #define s390_is_imm20(val)              ((glong)val >= -524288 && (glong)val <= 524287)
184 #define s390_is_imm12(val)              ((glong)val >= (glong)-4096 && \
185                                          (glong)val <= (glong)4095)
186 #define s390_is_uimm12(val)             ((glong)val >= 0 && (glong)val <= 4095)
187
188 #define STK_BASE                        s390_r15
189 #define S390_SP                         s390_r15
190 #define S390_FP                         s390_r11
191 #define S390_MINIMAL_STACK_SIZE         160
192 #define S390_REG_SAVE_OFFSET            48
193 #define S390_PARM_SAVE_OFFSET           16
194 #define S390_RET_ADDR_OFFSET            112
195 #define S390_FLOAT_SAVE_OFFSET          128
196
197 #define S390_CC_ZR                      8
198 #define S390_CC_NE                      7
199 #define S390_CC_NZ                      7
200 #define S390_CC_LT                      4
201 #define S390_CC_GT                      2
202 #define S390_CC_GE                      11
203 #define S390_CC_NM                      11
204 #define S390_CC_LE                      13
205 #define S390_CC_OV                      1
206 #define S390_CC_NO                      14
207 #define S390_CC_CY                      3
208 #define S390_CC_NC                      12
209 #define S390_CC_UN                      15
210
211 #define s390_word(addr, value) do               \
212 {                                               \
213         * (guint32 *) addr = (guint32) value;   \
214         addr += sizeof(guint32);                \
215 } while (0)
216
217 #define s390_float(addr, value) do              \
218 {                                               \
219         * (gfloat *) addr = (gfloat) value;     \
220         addr += sizeof(gfloat);                 \
221 } while (0)
222
223 #define s390_llong(addr, value) do              \
224 {                                               \
225         * (guint64 *) addr = (guint64) value;   \
226         addr += sizeof(guint64);                \
227 } while (0)
228
229 #define s390_double(addr, value) do             \
230 {                                               \
231         * (gdouble *) addr = (gdouble) value;   \
232         addr += sizeof(gdouble);                \
233 } while (0)
234
235 typedef struct {
236         short   op;
237 } E_Format;
238
239 typedef struct {
240         char    op;
241         int     im;
242 } I_Format;
243
244 typedef struct {
245         short   op;
246         char    xx;
247         char    ri1 : 4;
248         char    ri2 : 4;
249 } IE_Format;
250
251 typedef struct {
252         short   op;
253         short   m1 : 4;
254         short   ri2 : 12;
255         short   i3;     
256 } MII_Format;
257
258 typedef struct {
259         char    op;
260         char    r1 : 4;
261         char    r2 : 4;
262 } RR_Format;
263
264 typedef struct {
265         short   op;
266         char    r1 : 4;
267         char    xx : 4;
268         char    r3 : 4;
269         char    r4 : 4;
270 } __attribute__ ((packed)) RRD_Format;
271
272 typedef struct {
273         short   op;
274         char    xx;
275         char    r1 : 4;
276         char    r2 : 4;
277 } RRE_Format;
278
279 typedef struct {
280         short   op;
281         char    r1 : 4;
282         char    xx : 4;
283         char    r3 : 4;
284         char    r2 : 4;
285 } RRF_Format_1;
286
287 typedef struct {
288         short   op;
289         char    m3 : 4;
290         char    xx : 4;
291         char    r1 : 4;
292         char    r2 : 4;
293 } RRF_Format_2;
294
295 typedef struct {
296         short   op;
297         char    r3 : 4;
298         char    m4 : 4;
299         char    r1 : 4;
300         char    r2 : 4;
301 } RRF_Format_3;
302
303 typedef struct {
304         short   op;
305         char    m3 : 4;
306         char    m4 : 4;
307         char    r1 : 4;
308         char    r2 : 4;
309 } RRF_Format_4;
310
311 typedef struct {
312         char    op1;
313         char    r1 : 4;
314         char    r2 : 4;
315         short   b4 : 4;
316         short   d4 : 12;
317         char    m3 : 4;
318         char    xx : 4;
319         char    op2;
320 } RRS_Format;
321
322 typedef struct {
323         char    op;
324         char    r1 : 4;
325         char    x2 : 4;
326         short   b2 : 4;
327         short   d2 : 12;
328 } RX_Format;
329
330 typedef struct {
331         char    op1;
332         char    r3 : 4;
333         char    x2 : 4;
334         short   b2 : 4;
335         short   d2 : 12;
336         char    r1 : 4;
337         char    xx : 4;
338         char    op2;
339 } RXF_Format;
340
341 typedef struct {
342         char    op1;
343         char    r1 : 4;
344         char    x2 : 4;
345         int     b2 : 4;
346         int     d2 : 20;
347         char    op2;
348 } __attribute__ ((packed)) RXY_Format;
349
350 typedef struct {
351         char    op;
352         char    r1 : 4;
353         char    r3 : 4;
354         short   b2 : 4;
355         short   d2 : 12;
356 } RS_Format_1;
357
358 typedef struct {
359         char    op;
360         char    r1 : 4;
361         char    m3 : 4;
362         short   b2 : 4;
363         short   d2 : 12;
364 } RS_Format_2;
365
366 typedef struct {
367         char    op;
368         char    r1 : 4;
369         char    xx : 4;
370         short   b2 : 4;
371         short   dl2 : 12;
372         char    dh2;
373 } RS_Format_3;
374
375 typedef struct {
376         char    op1;
377         char    r1 : 4;
378         char    r3 : 4;
379         short   b2 : 4;
380         short   dl2 : 12;
381         char    dh2;
382         char    op2;
383 } __attribute__ ((packed)) RSY_Format_1;
384
385 typedef struct {
386         char    op1;
387         char    r1 : 4;
388         char    m3 : 4;
389         short   b2 : 4;
390         short   dl2 : 12;
391         char    dh2;
392         char    op2;
393 } __attribute__ ((packed)) RSY_Format_2;
394
395 typedef struct {
396         char    op1;
397         char    l1 : 4;
398         char    xx : 4;
399         short   b1 : 4;
400         short   d1 : 12;
401         char    yy;
402         char    op2;
403 } __attribute__ ((packed)) RSL_Format;
404
405 typedef struct {
406         char    op;
407         char    r1 : 4;
408         char    r3 : 4;
409         short   i2;
410 } __attribute__ ((packed)) RSI_Format;
411
412 typedef struct {
413         char    op1;
414         char    m1 : 4;
415         char    op2 : 4;
416         short   i2;
417 } __attribute__ ((packed)) RI_Format;
418
419 typedef struct {
420         char    op1;
421         char    r1 : 4;
422         char    r3 : 4;
423         short   i2;
424         char    xx;
425         char    op2;
426 } __attribute__ ((packed)) RIE_Format_1;
427
428 typedef struct {
429         char    op1;
430         char    r1 : 4;
431         char    r3 : 4;
432         short   i2;
433         char    m2 : 4;
434         char    xx : 4;
435         char    op2;
436 } __attribute__ ((packed)) RIE_Format_2;
437
438 typedef struct {
439         char    op1;
440         char    r1 : 4;
441         char    r3 : 4;
442         short   d;
443         char    i;
444         char    op2;
445 } __attribute__ ((packed)) RIE_Format_3;
446
447 typedef struct {
448         char    op1;
449         char    r1 : 4;
450         char    yy : 4;
451         short   i2;
452         char    m3 : 4;
453         char    xx : 4;
454         char    op2;
455 } __attribute__ ((packed)) RIE_Format_4;
456
457 typedef struct {
458         char    op1;
459         char    r1 : 4;
460         char    r3 : 4;
461         short   ri2;
462         char    xx;
463         char    op2;
464 } __attribute__ ((packed)) RIE_Format_5;
465
466 typedef struct {
467         char    op1;
468         char    r1 : 4;
469         char    r2 : 4;
470         char    i3;
471         char    i4;
472         char    i5;
473         char    op2;
474 } __attribute__ ((packed)) RIE_Format_6;
475
476 typedef struct {
477         char    op1;
478         char    r1 : 4;
479         char    m3 : 4;
480         short   i2;
481         char    xx;
482         char    op2;
483 } __attribute__ ((packed)) RIE_Format_7;
484
485 typedef struct {
486         char    op1;
487         char    r1 : 4;
488         char    m3 : 4;
489         int     b4 : 4;
490         int     d4 : 12;
491         char    i2;
492         char    op2;
493 } __attribute__ ((packed)) RIS_Format;
494
495 typedef struct {
496         char    op1;
497         char    r1 : 4;
498         char    op2 : 4;
499         int     i2;
500 } __attribute__ ((packed)) RIL_Format_1;
501
502 typedef struct {
503         char    op1;
504         char    m1 : 4;
505         char    op2 : 4;
506         int     i2;
507 } __attribute__ ((packed)) RIL_Format_2;
508
509 typedef struct {
510         short   op1;
511         char    r1 : 4;
512         char    x2 : 4;
513         short   b2 : 4;
514         short   d1 : 12;
515         char    m3 : 4;
516         char    xx : 4;
517         char    op2;
518 } __attribute__ ((packed)) RXE_Format;
519
520 typedef struct {
521         char    op;
522         char    i2;
523         short   b1 : 4;
524         short   d1 : 12;
525 } __attribute__ ((packed)) SI_Format;
526
527 typedef struct {
528         short   op;
529         char    b1 : 4;
530         short   d1 : 12;
531         short   i2;
532 } __attribute__ ((packed)) SIL_Format;
533
534 typedef struct {
535         char    op1;
536         char    i2;
537         char    b1 : 4;
538         int     d1 : 20;
539         char    op2;
540 } __attribute__ ((packed)) SIY_Format;
541
542 typedef struct {
543         char    op1;
544         char    m1 : 4;
545         char    xx : 4;
546         short   b3 : 4;
547         short   d3 : 12;
548         short   ri2;
549 } __attribute__ ((packed)) SMI_Format;
550
551 typedef struct {
552         short   op;
553         short   b2 : 4;
554         short   d2 : 12;
555 } __attribute__ ((packed)) S_Format;
556
557 typedef struct {
558         char    op;
559         char    ll;
560         short   b1 : 4;
561         short   d1 : 12;
562         short   b2 : 4;
563         short   d2 : 12;
564 } __attribute__ ((packed)) SS_Format_1;
565
566 typedef struct {
567         char    op;
568         char    l1 : 4;
569         char    l2 : 4;
570         short   b1 : 4; 
571         short   d1 : 12;
572         short   b2 : 4;
573         short   d2 : 12;
574 } __attribute__ ((packed)) SS_Format_2;
575
576 typedef struct {
577         char    op;
578         char    r1 : 4;
579         char    r3 : 4;
580         short   b1 : 4; 
581         short   d1 : 12;
582         short   b2 : 4;
583         short   d2 : 12;
584 } __attribute__ ((packed)) SS_Format_3; 
585
586 typedef struct {
587         char    op;
588         char    r1 : 4;
589         char    r3 : 4;
590         short   b2 : 4; 
591         short   d2 : 12;
592         short   b4 : 4;
593         short   d4 : 12;
594 } __attribute__ ((packed)) SS_Format_4; 
595
596 typedef struct {
597         short   op;
598         short   tb1 : 4;
599         short   d1 : 12;
600         short   b2 : 4;
601         short   d2 : 12;
602 } __attribute__ ((packed)) SSE_Format;
603
604 typedef struct {
605         short   op;
606         char    r3 : 4;
607         char    o2 : 4;
608         short   b1 : 4;
609         short   d1 : 12;
610         short   b2 : 4;
611         short   d2 : 12;
612 } __attribute__ ((packed)) SSF_Format;
613
614 typedef struct {
615         short   op1;
616         char    v1 : 4;
617         char    xx : 4;
618         short   i2;
619         char    m3 : 4;
620         char    rxb : 4;
621         char    op2;
622 } __attribute__ ((packed)) VRIa_Format;
623
624 typedef struct {
625         short   op1;
626         char    v1 : 4;
627         char    xx : 4;
628         char    i2;
629         char    i3;
630         char    m4 : 4;
631         char    rxb : 4;
632         char    op2;
633 } __attribute__ ((packed)) VRIb_Format;
634
635 typedef struct {
636         short   op1;
637         char    v1 : 4;
638         char    v3 : 4;
639         short   i2;
640         char    m4 : 4;
641         char    rxb : 4;
642         char    op2;
643 } __attribute__ ((packed)) VRIc_Format;
644
645 typedef struct {
646         short   op1;
647         char    v1 : 4;
648         char    v2 : 4;
649         char    v3 : 4;
650         char    xx : 4;
651         char    i4;
652         char    m5 : 4;
653         char    rxb : 4;
654         char    op2;
655 } __attribute__ ((packed)) VRId_Format;
656
657 typedef struct {
658         short   op1;
659         char    v1 : 4;
660         char    v2 : 4;
661         short   i3 : 12;
662         char    m5 : 4;
663         char    m4 : 4;
664         char    rxb : 4;
665         char    op2;
666 } __attribute__ ((packed)) VRIe_Format;
667
668 typedef struct {
669         short   op1;
670         char    v1 : 4;
671         char    v2 : 4;
672         char    xx;
673         char    m5 : 4;
674         char    m4 : 4;
675         char    m3 : 4;
676         char    rxb : 4;
677         char    op2;
678 } __attribute__ ((packed)) VRRa_Format;
679
680 typedef struct {
681         short   op1;
682         char    v1 : 4;
683         char    v2 : 4;
684         char    v3 : 4;
685         char    xx : 4;
686         char    m5 : 4;
687         char    yy : 4;
688         char    m4 : 4;
689         char    rxb : 4;
690         char    op2;
691 } __attribute__ ((packed)) VRRb_Format;
692
693 typedef struct {
694         short   op1;
695         char    v1 : 4;
696         char    v2 : 4;
697         char    v3 : 4;
698         char    xx : 4;
699         char    m5 : 4;
700         char    m4 : 4;
701         char    m3 : 4;
702         char    rxb : 4;
703         char    op2;
704 } __attribute__ ((packed)) VRRc_Format;
705
706 typedef struct {
707         short   op1;
708         char    v1 : 4;
709         char    v2 : 4;
710         char    v3 : 4;
711         char    m5 : 4;
712         char    m6 : 4;
713         char    xx : 4;
714         char    v4 : 4;
715         char    rxb : 4;
716         char    op2;
717 } __attribute__ ((packed)) VRRd_Format;
718
719 typedef struct {
720         short   op1;
721         char    v1 : 4;
722         char    v2 : 4;
723         char    v3 : 4;
724         char    m6 : 4;
725         char    xx : 4;
726         char    m5 : 4;
727         char    v4 : 4;
728         char    rxb : 4;
729         char    op2;
730 } __attribute__ ((packed)) VRRe_Format;
731
732 typedef struct {
733         short   op1;
734         char    v1 : 4;
735         char    r2 : 4;
736         char    r3 : 4;
737         short   xx;
738         char    rxb : 4;
739         char    op2;
740 } __attribute__ ((packed)) VRRf_Format;
741
742 typedef struct {
743         short   op1;
744         char    v1 : 4;
745         char    v3 : 4;
746         char    b2 : 4;
747         short   d2 : 12;
748         char    m4 : 4;
749         char    rxb : 4;
750         char    op2;
751 } __attribute__ ((packed)) VRSa_Format;
752
753 typedef struct {
754         short   op1;
755         char    v1 : 4;
756         char    r3 : 4;
757         char    b2 : 4;
758         short   d2 : 12;
759         char    m4 : 4;
760         char    rxb : 4;
761         char    op2;
762 } __attribute__ ((packed)) VRSb_Format;
763
764 typedef struct {
765         short   op1;
766         char    r1 : 4;
767         char    v3 : 4;
768         char    b2 : 4;
769         short   d2 : 12;
770         char    m4 : 4;
771         char    rxb : 4;
772         char    op2;
773 } __attribute__ ((packed)) VRSc_Format;
774
775 typedef struct {
776         short   op1;
777         char    v1 : 4;
778         char    v2 : 4;
779         char    b2 : 4;
780         short   d2 : 12;
781         char    m3 : 4;
782         char    rxb : 4;
783         char    op2;
784 } __attribute__ ((packed)) VRV_Format;
785
786 typedef struct {
787         short   op1;
788         char    v1 : 4;
789         char    x2 : 4;
790         char    b2 : 4;
791         short   d2 : 12;
792         char    m3 : 4;
793         char    rxb : 4;
794         char    op2;
795 } __attribute__ ((packed)) VRX_Format;
796
797 #define s390_emit16(c, x) do                    \
798 {                                               \
799         *((guint16 *) c) = (guint16) x;         \
800         c += sizeof(guint16);                   \
801 } while(0)
802
803 #define s390_emit32(c, x) do                    \
804 {                                               \
805         *((guint32 *) c) = (guint32) x;         \
806         c += sizeof(guint32);                   \
807 } while(0)
808
809 #define S390_E(c,opc)                   s390_emit16(c,opc)
810
811 #define S390_I(c,opc,imm)               s390_emit16(c, (opc << 8 | imm))
812
813 #define S390_RR(c,opc,g1,g2)            s390_emit16(c, (opc << 8 | (g1) << 4 | g2))
814
815 #define S390_RRE(c,opc,g1,g2)           s390_emit32(c, (opc << 16 | (g1) << 4 | g2)) 
816
817 #define S390_RRF_1(c,opc,g1,g2,g3)      s390_emit32(c, (opc << 16 | (g1) << 12 | (g3) << 4 | g2))
818
819 #define S390_RRF_2(c,opc,g1,k3,g2)      s390_emit32(c, (opc << 16 | (k3) << 12 | (g1) << 4 | g2))
820
821 #define S390_RRF_3(c,opc,g1,g2,k4,g3)   s390_emit32(c, (opc << 16 | (g3) << 12 | (k4) << 8 | (g1) << 4 | g2))
822
823 #define S390_RRF_4(c,opc,g1,m3,g2,m4)   s390_emit32(c, (opc << 16 | (m3) << 12 | (m4) << 8 | (g1) << 4 | g2))
824
825 #define S390_RX(c,opc,g1,n2,s2,p2)      s390_emit32(c, (opc << 24 | (g1) << 20 | (n2) << 16 | (s2) << 12 | ((p2) & 0xfff)))
826
827 #define S390_RXE(c,opc,g1,n2,s2,p2) do                          \
828 {                                                               \
829         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2));      \
830         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
831                         (opc & 0xff)));                         \
832 } while (0)
833
834 #define S390_RXY(c,opc,g1,n2,s2,p2) do                          \
835 {                                                               \
836         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | n2));      \
837         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
838                         ((((p2) & 0xff000) >> 12) << 8) |       \
839                         (opc & 0xff)));                         \
840 } while (0)
841
842 #define S390_RS_1(c,opc,g1,g3,s2,p2)    s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (s2) << 12 | ((p2) & 0xfff))) 
843
844 #define S390_RS_2(c,opc,g1,k3,s2,p2)    s390_emit32(c, (opc << 24 | (g1) << 20 | (k3) << 16 | (s2) << 12 | ((p2) & 0xfff)))
845
846 #define S390_RS_3(c,opc,g1,s2,p2)       s390_emit32(c, (opc << 24 | (g1) << 20 | (s2) << 12 | ((p2) & 0xfff)))
847
848 #define S390_RSY_1(c,opc,g1,g3,s2,p2) do                        \
849 {                                                               \
850         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
851         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
852                         ((((p2) & 0xff000) >> 12) << 8) |       \
853                         (opc & 0xff)));                         \
854 } while (0)
855
856 #define S390_RSY_2(c,opc,g1,k3,s2,p2) do                        \
857 {                                                               \
858         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | k3));      \
859         s390_emit32(c, ((s2) << 28 | (((p2) & 0xfff) << 16) |   \
860                         ((((p2) & 0xff000) >> 12) << 8) |       \
861                         (opc & 0xff)));                         \
862 } while (0)
863
864 #define S390_RSL(c,opc,ln,s1,p1) do                             \
865 {                                                               \
866         s390_emit16(c, ((opc & 0xff00) | (ln) << 4));           \
867         s390_emit32(c, ((s1) << 28 | ((s1 & 0xfff) << 16) |     \
868                         (opc & 0xff)));                         \
869 } while (0)
870
871 #define S390_RSI(c,opc,g1,g3,m2)        s390_emit32(c, (opc << 24 | (g1) << 20 | (g3) << 16 | (m2 & 0xffff)))
872
873 #define S390_RI(c,opc,g1,m2)            s390_emit32(c, ((opc >> 4) << 24 | (g1) << 20 | (opc & 0x0f) << 16 | (m2 & 0xffff)))
874
875 #define S390_RIE_1(c,opc,g1,g3,m2) do                           \
876 {                                                               \
877         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
878         s390_emit32(c, ((m2) << 16 | (opc & 0xff)));            \
879 } while (0)
880
881 #define S390_RIE_2(c,opc,g1,g2,m3,v) do                         \
882 {                                                               \
883         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | g3));      \
884         s390_emit16(c, (v));                                    \
885         s390_emit16(c, ((m2) << 12 | (opc & 0xff)));            \
886 } while (0)
887
888 #define S390_RIE_3(c,opc,g1,i,m3,d) do                          \
889 {                                                               \
890         s390_emit16(c, ((opc & 0xff00) | (g1) << 4 | m3));      \
891         s390_emit16(c, (d));                                    \
892         s390_emit16(c, ((i) << 8 | (opc & 0xff)));              \
893 } while (0)
894
895 #define S390_RIE_4(c,opc,g1,i2,m3) do                           \
896 {                                                               \
897         s390_emit16(c, ((opc & 0xff00) | (g1) << 4);            \
898         s390_emit16(c, (i2));                                   \
899         s390_emit16(c, ((m3) << 12 | (opc & 0xff)));            \
900 } while (0)
901
902 #define S390_RIL_1(c,opc,g1,m2) do                                      \
903 {                                                                       \
904         s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf)));    \
905         s390_emit32(c, m2);                                             \
906 } while (0)
907
908 #define S390_RIL_2(c,opc,k1,m2) do                                      \
909 {                                                                       \
910         s390_emit16(c, ((opc >> 4) << 8 | (k1) << 4 | (opc & 0xf)));    \
911         s390_emit32(c, m2);                                             \
912 } while (0)
913
914 #define S390_RIS(c,opc,r,i,m3,b,d) do                           \
915 {                                                               \
916         s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2));   \
917         s390_emit16(c, ((b) << 12) | (d));                      \
918         s390_emit16(c, ((i) << 4) | ((opc) & 0xff));            \
919 }
920
921 #define S390_RRS(c,opc,r1,r2,m3,b,d) do                         \
922 {                                                               \
923         s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2));   \
924         s390_emit16(c, ((b) << 12) | (d));                      \
925         s390_emit16(c, ((m3) << 12) | ((opc) & 0xff));          \
926 }
927
928 #define S390_SI(c,opc,s1,p1,m2)         s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff)));
929
930 #define S390_SIY(c,opc,s1,p1,m2) do                             \
931 {                                                               \
932         s390_emit16(c, ((opc & 0xff00) | m2));                  \
933         s390_emit32(c, ((s1) << 24 | (((p2) & 0xfffff) << 8) |  \
934                         (opc & 0xff)));                         \
935 } while (0)
936
937 #define S390_SIY_1(c,opc,d1,b1,i2) do                           \
938 {                                                               \
939         s390_emit16(c, ((opc & 0xff00) | i2));                  \
940         s390_emit32(c, ((b1) << 28 | (((d1) & 0xfff) << 16) |   \
941                         ((((d1) & 0xff000) >> 12) << 8) |       \
942                         (opc & 0xff)));                         \
943 } while (0)
944
945 #define S390_S(c,opc,s2,p2)     s390_emit32(c, (opc << 16 | (s2) << 12 | ((p2) & 0xfff)))
946
947 #define S390_SS_1(c,opc,ln,s1,p1,s2,p2) do                      \
948 {                                                               \
949         s390_emit32(c, (opc << 24 | ((ln-1) & 0xff) << 16 |     \
950                         (s1) << 12 | ((p1) & 0xfff)));          \
951         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
952 } while (0)
953
954 #define S390_SS_2(c,opc,n1,n2,s1,p1,s2,p2) do                   \
955 {                                                               \
956         s390_emit32(c, (opc << 24 | (n1) << 16 | (n2) << 12 |   \
957                         (s1) << 12 | ((p1) & 0xfff)));          \
958         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
959 } while (0)
960
961 #define S390_SS_3(c,opc,g1,g3,s1,p1,s2,p2) do                   \
962 {                                                               \
963         s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 |   \
964                         (s1) << 12 | ((p1) & 0xfff)));          \
965         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));          \
966 } while (0)
967
968 #define S390_SS_4(c,opc,g1,g3,s2,p2,s4,p4) do                   \
969 {                                                               \
970         s390_emit32(c, (opc << 24 | (g1) << 16 | (g3) << 12 |   \
971                         (s2) << 12 | ((p2) & 0xfff)));          \
972         s390_emit16(c, ((s4) << 12 | ((p4) & 0xfff)));          \
973 } while (0)
974
975 #define S390_SSE(c,opc,s1,p1,s2,p2) do                  \
976 {                                                       \
977         s390_emit16(c, opc);                            \
978         s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff)));  \
979         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));  \
980 } while (0)
981
982 #define S390_SSF(c,opc,r3,s1,p1,s2,p2) do                               \
983 {                                                                       \
984         s390_emit16(c, (((opc) & 0xff00) << 8) | ((r3) << 4) |          \
985                         ((opc) & 0xf));                                 \
986         s390_emit16(c, ((s1) << 12 | ((p1) & 0xfff)));                  \
987         s390_emit16(c, ((s2) << 12 | ((p2) & 0xfff)));                  \
988 } while (0)
989
990 #define S390_VRIa(c,opc,v1,i2,m3) do                            \
991 {                                                                       \
992         char rxb = (((v1) > 15) << 7);                                  \
993         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4));          \
994         s390_emit16(c, (i2));                                           \
995         s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
996 } while (0)
997
998 #define S390_VRIb(c,opc,v1,i2,i3,m4) do                         \
999 {                                                                       \
1000         char rxb = (((v1) > 15) << 7);                                  \
1001         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4));          \
1002         s390_emit16(c, (((i2) << 8) | (i3)));                           \
1003         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1004 } while (0)
1005
1006 #define S390_VRIc(c,opc,v1,v3,i2,m4) do                         \
1007 {                                                                       \
1008         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
1009                    (((v3) > 15) << 5);                                  \
1010         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1011         s390_emit16(c, (v4));                                           \
1012         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1013 } while (0)
1014
1015 #define S390_VRId(c,opc,v1,v2,v3,i4,m5) do                              \
1016 {                                                                       \
1017         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
1018                    (((v3) > 15) << 5);                                  \
1019         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1020         s390_emit16(c, ((v3) << 12) | (i2));                            \
1021         s390_emit16(c, (((m5) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1022 } while (0)
1023
1024 #define S390_VRIe(c,opc,v1,v2,i3,m4,m5) do                              \
1025 {                                                                       \
1026         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
1027         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1028         s390_emit16(c, ((i2) << 8) | (m5));                             \
1029         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1030 } while (0)
1031
1032 #define S390_VRRa(c,opc,v1,v2,m3,m4,m5) do                              \
1033 {                                                                       \
1034         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
1035         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1036         s390_emit16(c, ((m5) << 4) | (m4));                             \
1037         s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1038 } while (0)
1039
1040 #define S390_VRRb(c,opc,v1,v2,v3,m4,m5) do                              \
1041 {                                                                       \
1042         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
1043                    (((v3) > 15) << 5);                                  \
1044         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1045         s390_emit16(c, ((v3) << 12) | ((m5) << 4) | (m4));              \
1046         s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1047 } while (0)
1048
1049 #define S390_VRRc(c,opc,v1,v2,m3,m4,m5) do                              \
1050 {                                                                       \
1051         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
1052                    (((v3) > 15) << 5);                                  \
1053         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1054         s390_emit16(c, (((v3) << 12)| (m5) << 4));                      \
1055         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1056 } while (0)
1057
1058 #define S390_VRRd(c,opc,v1,v2,v3,v4,m5,m6) do                           \
1059 {                                                                       \
1060         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
1061                    (((v3) > 15) << 5) | (((v4) > 15) << 4);             \
1062         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1063         s390_emit16(c, (((v3) << 12)| ((m6) << 8)) | ((m5) << 4));      \
1064         s390_emit16(c, (((v4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1065 } while (0)
1066
1067 #define S390_VRRe(c,opc,v1,v2,v3,m4,m5,m6) do                           \
1068 {                                                                       \
1069         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6) |            \
1070                    (((v3) > 15) << 5);                                  \
1071         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1072         s390_emit16(c, (((v3) << 12)| ((m6) << 8)) | (m5));             \
1073         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1074 } while (0)
1075
1076 #define S390_VRRf(c,opc,v1,r2) do                                       \
1077 {                                                                       \
1078         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
1079         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1080         s390_emit16(c, ((r2) << 12)| ((r3) << r8) | (m5));              \
1081         s390_emit16(c, (((rxb) << 8) | ((opc) & 0xff)));                \
1082 } while (0)
1083
1084 #define S390_VRSa(c,opc,v1,v3,b2,d2,m4) do                              \
1085 {                                                                       \
1086         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
1087         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v3))); \
1088         s390_emit16(c, ((b2) << 12)| (d2));                             \
1089         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1090 } while (0)
1091
1092 #define S390_VRSb(c,opc,v1,r3,b2,d2,m4) do                              \
1093 {                                                                       \
1094         char rxb = (((v1) > 15) << 7);                                  \
1095         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((r3))); \
1096         s390_emit16(c, ((b2) << 12)| (d2));                             \
1097         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1098 } while (0)
1099
1100 #define S390_VRSc(c,opc,r1,v3,b2,d2,m4) do                              \
1101 {                                                                       \
1102         char rxb = (((v1) > 15) << 7);                                  \
1103         s390_emit16(c, (((opc) & 0xff00) << 8) | ((r1) << 4) | ((v3))); \
1104         s390_emit16(c, ((b2) << 12)| (d2));                             \
1105         s390_emit16(c, (((m4) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1106 } while (0)
1107
1108 #define S390_VRV(c,opc,v1,v2,b2,d2,m3) do                               \
1109 {                                                                       \
1110         char rxb = (((v1) > 15) << 7) | (((v2) > 15) << 6);             \
1111         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((v2))); \
1112         s390_emit16(c, ((b2) << 12)| (d2));                             \
1113         s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1114 } while (0)
1115
1116 #define S390_VRX(c,opc,v1,x2,b2,d2,m3) do                               \
1117 {                                                                       \
1118         char rxb = ((v1) > 15) << 7;                                    \
1119         s390_emit16(c, (((opc) & 0xff00) << 8) | ((v1) << 4) | ((x2))); \
1120         s390_emit16(c, ((b2) << 12)| (d2));                             \
1121         s390_emit16(c, (((m3) << 12) | ((rxb) << 8) | ((opc) & 0xff))); \
1122 } while (0)
1123
1124 #define s390_a(c, r, x, b, d)           S390_RX(c, 0x5a, r, x, b, d)
1125 #define s390_adb(c, r, x, b, d)         S390_RXE(c, 0xed1a, r, x, b, d)
1126 #define s390_adbr(c, r1, r2)            S390_RRE(c, 0xb31a, r1, r2)
1127 #define s390_aebr(c, r1, r2)            S390_RRE(c, 0xb30a, r1, r2)
1128 #define s390_afi(c, r, v)               S390_RIL_1(c, 0xc29, r, v);
1129 #define s390_ag(c, r, x, b, d)          S390_RXY(c, 0xe308, r, x, b, d)
1130 #define s390_agf(c, r, x, b, d)         S390_RXY(c, 0xe318, r, x, b, d)
1131 #define s390_agfi(c, r, v)              S390_RIL_1(c, 0xc28, r, v)
1132 #define s390_afgr(c, r1, r2)            S390_RRE(c, 0xb918, r1, r2)
1133 #define s390_aghi(c, r, v)              S390_RI(c, 0xa7b, r, v)
1134 #define s390_aghik(c, r, v)             S390_RIE_1(c, 0xecd9, r, v)
1135 #define s390_agr(c, r1, r2)             S390_RRE(c, 0xb908, r1, r2)
1136 #define s390_agrk(c, r1, r2, r3)        S390_RRF_1(c, 0xb9e8, r1, r2, r3)
1137 #define s390_agsi(c, r, v)              S390_SIY(c, 0xeb7a, r v)
1138 #define s390_ahhhr(c, r1, r2, r3)       S390_RRF_1(c, 0xb9c8, r1, r2, r3)
1139 #define s390_ahhlr(c, r1, r2, r3)       S390_RRF_1(c, 0xb9d8, r1, r2, r3)
1140 #define s390_ahi(c, r, v)               S390_RI(c, 0xa7a, r, v)
1141 #define s390_ahik(c, r, v)              S390_RIE_1(c, 0xecd8, r, v)
1142 #define s390_ahy(c, r, x, b, d)         S390_RXY(c, 0xe37a, r, b, d)
1143 #define s390_aih(c, r, v)               S390_RIL_1(c, 0xcc8, r, v)
1144 #define s390_al(c, r, x, b, d)          S390_RX(c, 0x5e, r, x, b, d)
1145 #define s390_alc(c, r, x, b, d)         S390_RXY(c, 0xe398, r, x, b, d)
1146 #define s390_alcg(c, r, x, b, d)        S390_RXY(c, 0xe388, r, x, b, d)
1147 #define s390_alcgr(c, r1, r2)           S390_RRE(c, 0xb988, r1, r2)
1148 #define s390_alcr(c, r1, r2)            S390_RRE(c, 0xb998, r1, r2)
1149 #define s390_alfi(c, r, v)              S390_RIL_1(c, 0xc2b, r, v)
1150 #define s390_alg(c, r, x, b, d)         S390_RXY(c, 0xe30a, r, x, b, d)
1151 #define s390_algf(c, r, x, b, d)        S390_RXY(c, 0xe31a, r, x, b, d)
1152 #define s390_algfi(c, r, v)             S390_RIL_1(c, 0xc2a, r, v)
1153 #define s390_algfr(c, r1, r2)           S390_RRE(c, 0xb91a, r1, r2)
1154 #define s390_alghsik(c, r, v)           S390_RIE_1(c, 0xecd8, r, v)
1155 #define s390_algr(c, r1, r2)            S390_RRE(c, 0xb90a, r1, r2)
1156 #define s390_algsi(c, d1, b1, i2)       S390_SIY_1(c, 0xeb7e, d1, b1, i2)
1157 #define s390_alhhhr(c, r1, r2, r3)      S390_RRF_1(c, 0xb9ca, r1, r2, r3)
1158 #define s390_alhhlr(c, r1, r2, r3)      S390_RRF_1(c, 0xb9da, r1, r2, r3)
1159 #define s390_alhsik(c, r, v)            S390_RIE_1(c, 0xecda, r, v)
1160 #define s390_alr(c, r1, r2)             S390_RR(c, 0x1e, r1, r2)
1161 #define s390_alrk(c, r1, r2)            S390_RRF(c, 0xb9fa, r1, r2)
1162 #define s390_alsi(c, d1, b1, i2)        S390_SIY_1(c, 0xeb6e, d1, b1, i2)
1163 #define s390_alsih(c, r, v)             S390_RIL_1(c, 0xcca, r, v)
1164 #define s390_alsihn(c, r, v)            S390_RIL_1(c, 0xccb, r, v)
1165 #define s390_aly(c, r, x, b, d)         S390_RXY(c, 0xe35e, r, x, b, d)
1166 #define s390_ar(c, r1, r2)              S390_RR(c, 0x1a, r1, r2)
1167 #define s390_ark(c, r1, r2, r3)         S390_RRF_1(c, 0xb9f8, r1, r2, r3)
1168 #define s390_asi(c, r, v)               S390_SIY(c, 0xeb6a, r, v)
1169 #define s390_axbr(c, r1, r2)            S390_RRE(c, 0xb34a, r1, r2)
1170 #define s390_ay(c, r, x, b, d)          S390_RXY(c, 0xe35a, r, x, b, d)
1171 #define s390_basr(c, r1, r2)            S390_RR(c, 0x0d, r1, r2)
1172 #define s390_bctr(c, r1, r2)            S390_RR(c, 0x06, r1, r2)
1173 #define s390_bctrg(c, r1, r2)           S390_RRE(c, 0xb946, r1, r2)
1174 #define s390_bnzr(c, r)                 S390_RR(c, 0x07, 0x07, r)
1175 #define s390_bras(c, r, o)              S390_RI(c, 0xa75, r, o)
1176 #define s390_brasl(c, r, o)             S390_RIL_1(c, 0xc05, r, o)
1177 #define s390_brc(c, m, d)               S390_RI(c, 0xa74, m, d)
1178 #define s390_brcl(c, m, d)              S390_RIL_2(c, 0xc04, m, d)
1179 #define s390_br(c, r)                   S390_RR(c, 0x07, 0xf, r)
1180 #define s390_break(c)                   S390_RR(c, 0, 0, 0)
1181 #define s390_bzr(c, r)                  S390_RR(c, 0x07, 0x08, r)
1182 #define s390_c(c, r, x, b, d)           S390_RX(c, 0x59, r, x, b, d)
1183 #define s390_cdb(c, r, x, b, d)         S390_RXE(c, 0xed19, r, x, b, d)
1184 #define s390_cdbr(c, r1, r2)            S390_RRE(c, 0xb319, r1, r2)
1185 #define s390_cdfbr(c, r1, r2)           S390_RRE(c, 0xb395, r1, r2)
1186 #define s390_cdgbr(c, r1, r2)           S390_RRE(c, 0xb3a5, r1, r2)
1187 #define s390_cdlfbr(c, r1, m3, r2, m4)  S390_RRF_4(c, 0xb391, r1, m3, r2, m4)
1188 #define s390_cdlgbr(c, r1, m3, r2, m4)  S390_RRF_4(c, 0xb3a1, r1, m3, r2, m4)
1189 #define s390_cds(c, r1, r2, b, d)       S390_RX(c, 0xbb, r1, r2, b, d)
1190 #define s390_cdsg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb3e, r1, r2, b, d)
1191 #define s390_cdsy(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb31, r1, r2, b, d)
1192 #define s390_cebr(c, r1, r2)            S390_RRE(c, 0xb309, r1, r2)
1193 #define s390_cegbr(c, r1, r2)           S390_RRE(c, 0xb3a4, r1, r2)
1194 #define s390_cfdbr(c, r1, m, r2)        S390_RRF_2(c, 0xb399, r1, m, r2)
1195 #define s390_cfi(c, r, v)               S390_RIL_1(c, 0xc2d, r, v)
1196 #define s390_cgdbr(c, r1, m, r2)        S390_RRF_2(c, 0xb3a9, r1, m, r2)
1197 #define s390_cg(c, r, x, b, d)          S390_RXY(c, 0xe320, r, x, b, d)
1198 #define s390_cgfi(c, r, v)              S390_RIL_1(c, 0xc2c, r, v)
1199 #define s390_cgfrl(c, r, v)             S390_RIL_1(c, 0xc6c, r, v)
1200 #define s390_cghi(c, r, i)              S390_RI(c, 0xa7f, r, i)
1201 #define s390_cgib(c, r, i, m, b, d)     S390_RIS(c, 0xecfc, r, i, m, b, d)
1202 #define s390_cgij(c, r, i, m, d)        S390_RIE_3(c, 0xec7c, r, i, m, d)
1203 #define s390_cgit(c, r, i, m)           S390_RIE_4(c, 0xec70, r, i m);
1204 #define s390_cgr(c, r1, r2)             S390_RRE(c, 0xb920, r1, r2)
1205 #define s390_cgrb(c, r1, r2, m3, b, d)  S390_RRS(c, 0xece4, r1, r2, m3, b, d)
1206 #define s390_cgrj(c, r1, r2, m3, v)     S390_RIE_2(c, 0xec64, r1, r2, m3, v)
1207 #define s390_cgrl(c, r, v)              S390_RIL_1(c, 0xc68, r, v)
1208 #define s390_chi(c, r, i)               S390_RI(c, 0xa7e, r, i)
1209 #define s390_cib(c, r, i, m, b, d)      S390_RIS(c, 0xecfe, r, i, m, b, d)
1210 #define s390_cij(c, r, i, m, d)         S390_RIE_3(c, 0xec7e, r, i, m, d)
1211 #define s390_cit(c, r, i, m)            S390_RIE_4(c, 0xec72, r, i m);
1212 #define s390_cl(c, r, x, b, d)          S390_RX(c, 0x55, r, x, b, d)
1213 #define s390_clfdbr(c, r1, m3, r2, m4)  S390_RRF_4(c, 0xb39d, r1, m3, r2, m4)
1214 #define s390_clg(c, r, x, b, d)         S390_RXY(c, 0xe321, r, x, b, d)
1215 #define s390_clgib(c, r, i, m, b, d)    S390_RIS(c, 0xecfd, r, i, m, b, d)
1216 #define s390_clgij(c, r, i, b)          S390_RIE_3(c, 0xec7d, r, i, m, d)
1217 #define s390_clgr(c, r1, r2)            S390_RRE(c, 0xb921, r1, r2)
1218 #define s390_clgdbr(c, r1, m3, r2, m4)  S390_RRF_4(c, 0xb3ad, r1, m3, r2, m4)
1219 #define s390_clgrj(c, r1, r2, m, v)     S390_RIE_2(c, 0xec65, r1, r2, m, v)
1220 #define s390_clgrb(c, r1, r2, m3, b, d) S390_RRS(c, 0xece5, r1, r2, m3, b, d)
1221 #define s390_cli(c, b, d, v)            S390_SI(c, 0x95, b, d, v)
1222 #define s390_clib(c, r, i, m, b, d)     S390_RIS(c, 0xecff, r, i, m, b, d)
1223 #define s390_clij(c, r, i, b)           S390_RIE_3(c, 0xec7f, r, i, m, d)
1224 #define s390_clr(c, r1, r2)             S390_RR(c, 0x15, r1, r2)
1225 #define s390_clrb(c, r1, r2, m3, b, d)  S390_RRS(c, 0xecf7, r1, r2, m3, b, d)
1226 #define s390_clrj(c, r1, r2, m, v)      S390_RIE_2(c, 0xec77, r1, r2, m, v)
1227 #define s390_cr(c, r1, r2)              S390_RR(c, 0x19, r1, r2)
1228 #define s390_crb(c, r1, r2, m3, b, d)   S390_RRS(c, 0xecf6, r1, r2, m3, b, d)
1229 #define s390_crj(c, r1, r2, m3, v)      S390_RIE_2(c, 0xec76, r1, r2, m3, v)
1230 #define s390_crl(c, r, v)               S390_RIL_1(c, 0xc6d, r, v)
1231 #define s390_crt(c, r1, r2, m3)         S390_RRF_2(c, 0xb972, r1, r2, m3);
1232 #define s390_cgrt(c, r1, r2, m3)        S390_RRF_2(c, 0xb960, r1, r2, m3);
1233 #define s390_cs(c, r1, r2, b, d)        S390_RX(c, 0xba, r1, r2, b, d)
1234 #define s390_csg(c, r1, r2, b, d)       S390_RSY_1(c, 0xeb30, r1, r2, b, d)
1235 #define s390_csst(c, d1, b1, d2, b2, r) S390_SSF(c, 0xc82, b1, d1, b2, d2, r)
1236 #define s390_csy(c, r1, r2, b, d)       S390_RSY_1(c, 0xeb14, r1, r2, b, d)
1237 #define s390_cxgbr(c, r1, r2)           S390_RRE(c, 0xb3a6, r1, r2)
1238 #define s390_ddbr(c, r1, r2)            S390_RRE(c, 0xb31d, r1, r2)
1239 #define s390_debr(c, r1, r2)            S390_RRE(c, 0xb30d, r1, r2)
1240 #define s390_didbr(c, r1, r2, m, r3)    S390_RRF_3(c, 0xb35b, r1, r2, m, r3)
1241 #define s390_dlgr(c, r1, r2)            S390_RRE(c, 0xb987, r1, r2)
1242 #define s390_dlr(c, r1, r2)             S390_RRE(c, 0xb997, r1, r2)
1243 #define s390_dr(c, r1, r2)              S390_RR(c, 0x1d, r1, r2)
1244 #define s390_dsgfr(c, r1, r2)           S390_RRE(c, 0xb91d, r1, r2)
1245 #define s390_dsgr(c, r1, r2)            S390_RRE(c, 0xb90d, r1, r2)
1246 #define s390_ear(c, r1, r2)             S390_RRE(c, 0xb24f, r1, r2)
1247 #define s390_ic(c, r, x, b, d)          S390_RX(c, 0x43, r, x, b, d)
1248 #define s390_icm(c, r, m, b, d)         S390_RX(c, 0xbf, r, m, b, d)
1249 #define s390_icmy(c, r, x, b, d)        S390_RXY(c, 0xeb81, r, x, b, d)
1250 #define s390_icy(c, r, x, b, d)         S390_RXY(c, 0xe373, r, x, b, d)
1251 #define s390_iihf(c, r, v)              S390_RIL_1(c, 0xc08, r, v)
1252 #define s390_iihh(c, r, v)              S390_RI(c, 0xa50, r, v)
1253 #define s390_iihl(c, r, v)              S390_RI(c, 0xa51, r, v)
1254 #define s390_iilf(c, r, v)              S390_RIL_1(c, 0xc09, r, v)
1255 #define s390_iilh(c, r, v)              S390_RI(c, 0xa52, r, v)
1256 #define s390_iill(c, r, v)              S390_RI(c, 0xa53, r, v)
1257 #define s390_j(c,d)                     s390_brc(c, S390_CC_UN, d)
1258 #define s390_jc(c, m, d)                s390_brc(c, m, d)
1259 #define s390_jcl(c, m, d)               s390_brcl(c, m, d)
1260 #define s390_jcy(c, d)                  s390_brc(c, S390_CC_CY, d)
1261 #define s390_je(c, d)                   s390_brc(c, S390_CC_EQ, d)
1262 #define s390_jeo(c, d)                  s390_brc(c, S390_CC_ZR|S390_CC_OV, d)
1263 #define s390_jh(c, d)                   s390_brc(c, S390_CC_GT, d)
1264 #define s390_jho(c, d)                  s390_brc(c, S390_CC_GT|S390_CC_OV, d)
1265 #define s390_jl(c, d)                   s390_brc(c, S390_CC_LT, d)
1266 #define s390_jlo(c, d)                  s390_brc(c, S390_CC_LT|S390_CC_OV, d)
1267 #define s390_jm(c, d)                   s390_brc(c, S390_CC_LT, d)
1268 #define s390_jnc(c, d)                  s390_brc(c, S390_CC_NC, d)
1269 #define s390_jne(c, d)                  s390_brc(c, S390_CC_NZ, d)
1270 #define s390_jnh(c, d)                  s390_brc(c, S390_CC_LE, d)
1271 #define s390_jnl(c, d)                  s390_brc(c, S390_CC_GE, d)
1272 #define s390_jnz(c, d)                  s390_brc(c, S390_CC_NZ, d)
1273 #define s390_jo(c, d)                   s390_brc(c, S390_CC_OV, d)
1274 #define s390_jno(c, d)                  s390_brc(c, S390_CC_NO, d)
1275 #define s390_jp(c, d)                   s390_brc(c, S390_CC_GT, d)
1276 #define s390_jz(c, d)                   s390_brc(c, S390_CC_ZR, d)
1277 #define s390_jg(c,d)                    s390_brcl(c, S390_CC_UN, d)
1278 #define s390_jgcy(c, d)                 s390_brcl(c, S390_CC_CY, d)
1279 #define s390_jge(c, d)                  s390_brcl(c, S390_CC_EQ, d)
1280 #define s390_jgeo(c, d)                 s390_brcl(c, S390_CC_ZR|S390_CC_OV, d)
1281 #define s390_jgh(c, d)                  s390_brcl(c, S390_CC_GT, d)
1282 #define s390_jgho(c, d)                 s390_brcl(c, S390_CC_GT|S390_CC_OV, d)
1283 #define s390_jgl(c, d)                  s390_brcl(c, S390_CC_LT, d)
1284 #define s390_jglo(c, d)                 s390_brcl(c, S390_CC_LT|S390_CC_OV, d)
1285 #define s390_jgm(c, d)                  s390_brcl(c, S390_CC_LT, d)
1286 #define s390_jgnc(c, d)                 s390_brcl(c, S390_CC_NC, d)
1287 #define s390_jgne(c, d)                 s390_brcl(c, S390_CC_NZ, d)
1288 #define s390_jgnh(c, d)                 s390_brcl(c, S390_CC_LE, d)
1289 #define s390_jgnl(c, d)                 s390_brcl(c, S390_CC_GE, d)
1290 #define s390_jgnz(c, d)                 s390_brcl(c, S390_CC_NZ, d)
1291 #define s390_jgo(c, d)                  s390_brcl(c, S390_CC_OV, d)
1292 #define s390_jgno(c, d)                 s390_brcl(c, S390_CC_NO, d)
1293 #define s390_jgp(c, d)                  s390_brcl(c, S390_CC_GT, d)
1294 #define s390_jgz(c, d)                  s390_brcl(c, S390_CC_ZR, d)
1295 #define s390_l(c, r, x, b, d)           S390_RX(c, 0x58, r, x, b, d)
1296 #define s390_ly(c, r, x, b, d)          S390_RXY(c, 0xe358, r, x, b, d)
1297 #define s390_la(c, r, x, b, d)          S390_RX(c, 0x41, r, x, b, d)
1298 #define s390_lay(c, r, x, b, d)         S390_RXY(c, 0xe371, r, x, b, d)
1299 #define s390_lam(c, r1, r2, b, d)       S390_RS_1(c, 0x9a, r1, r2, b, d)
1300 #define s390_larl(c, r, o)              S390_RIL_1(c, 0xc00, r, o)
1301 #define s390_lb(c, r, x, b, d)          S390_RXY(c, 0xe376, r, x, b, d)
1302 #define s390_lbr(c, r1, r2)             S390_RRE(c, 0xb926, r1, r2)
1303 #define s390_lcdbr(c, r1, r2)           S390_RRE(c, 0xb313, r1, r2)
1304 #define s390_lcgr(c, r1, r2)            S390_RRE(c, 0xb903, r1, r2)
1305 #define s390_lcr(c, r1, r2)             S390_RR(c, 0x13, r1, r2)
1306 #define s390_ld(c, f, x, b, d)          S390_RX(c, 0x68, f, x, b, d)
1307 #define s390_ldy(c, r, x, b, d)         S390_RXY(c, 0xed65, r, x, b, d)
1308 #define s390_ldeb(c, r, x, b, d)        S390_RXE(c, 0xed04, r, x, b, d)
1309 #define s390_ldebr(c, r1, r2)           S390_RRE(c, 0xb304, r1, r2)
1310 #define s390_ldgr(c, r1, r2)            S390_RRE(c, 0xb3c1, r1, r2)
1311 #define s390_ldxbr(c, r1, r2)           S390_RRE(c, 0xb345, r1, r2)
1312 #define s390_ldr(c, r1, r2)             S390_RR(c, 0x28, r1, r2)
1313 #define s390_le(c, f, x, b, d)          S390_RX(c, 0x78, f, x, b, d)
1314 #define s390_ledbr(c, r1, r2)           S390_RRE(c, 0xb344, r1, r2)
1315 #define s390_ler(c, r1, r2)             S390_RR(c, 0x38, r1, r2)
1316 #define s390_ley(c, r, x, b, d)         S390_RXY(c, 0xed64, r, x, b, d)
1317 #define s390_lg(c, r, x, b, d)          S390_RXY(c, 0xe304, r, x, b, d)
1318 #define s390_lgb(c, r, x, b, d)         S390_RXY(c, 0xe377, r, x, b, d)
1319 #define s390_lgbr(c, r1, r2)            S390_RRE(c, 0xb906, r1, r2)
1320 #define s390_lgdr(c, r1, r2)            S390_RRE(c, 0xb3cd, r1, r2)
1321 #define s390_lgf(c, r, x, b, d)         S390_RXY(c, 0xe314, r, x, b, d)
1322 #define s390_lgfi(c, r, v)              S390_RIL_1(c, 0xc01, r, v)
1323 #define s390_lgfrl(c, r1, d)            S390_RIL_1(c, 0xc4c, r1, d)
1324 #define s390_lgfr(c, r1, r2)            S390_RRE(c, 0xb914, r1, r2)
1325 #define s390_lgh(c, r, x, b, d)         S390_RXY(c, 0xe315, r, x, b, d)
1326 #define s390_lghi(c, r, v)              S390_RI(c, 0xa79, r, v)
1327 #define s390_lghr(c, r1, r2)            S390_RRE(c, 0xb907, r1, r2)
1328 #define s390_lgr(c, r1, r2)             S390_RRE(c, 0xb904, r1, r2)
1329 #define s390_lgrl(c, r1, d)             S390_RIL_1(c, 0xc48, r1, d)
1330 #define s390_lh(c, r, x, b, d)          S390_RX(c, 0x48, r, x, b, d)
1331 #define s390_lhr(c, r1, r2)             S390_RRE(c, 0xb927, r1, r2)
1332 #define s390_lhg(c, r, x, b, d)         S390_RXY(c, 0xe315, r, x, b, d)
1333 #define s390_lhi(c, r, v)               S390_RI(c, 0xa78, r, v)
1334 #define s390_lhy(c, r, x, b, d)         S390_RXY(c, 0xe378, r, x, b, d)
1335 #define s390_llcr(c, r1, r2)            S390_RRE(c, 0xb994, r1, r2)
1336 #define s390_llgc(c, r, x, b, d)        S390_RXY(c, 0xe390, r, x, b, d)
1337 #define s390_llgcr(c, r1, r2)           S390_RRE(c, 0xb984, r1, r2)
1338 #define s390_llgf(c, r, x, b, d)        S390_RXY(c, 0xe316, r, x, b, d)
1339 #define s390_llgfr(c, r1, r2)           S390_RRE(c, 0xb916, r1, r2)
1340 #define s390_llgh(c, r, x, b, d)        S390_RXY(c, 0xe391, r, x, b, d)
1341 #define s390_llghr(c, r1, r2)           S390_RRE(c, 0xb985, r1, r2)
1342 #define s390_llhr(c, r1, r2)            S390_RRE(c, 0xb995, r1, r2)
1343 #define s390_llihf(c, r, v)             S390_RIL_1(c, 0xc0e, r, v)
1344 #define s390_llihh(c, r, v)             S390_RI(c, 0xa5c, r, v)
1345 #define s390_llihl(c, r, v)             S390_RI(c, 0xa5d, r, v)
1346 #define s390_llilf(c, r, v)             S390_RIL_1(c, 0xc0f, r, v)
1347 #define s390_llilh(c, r, v)             S390_RI(c, 0xa5e, r, v)
1348 #define s390_llill(c, r, v)             S390_RI(c, 0xa5f, r, v)
1349 #define s390_lm(c, r1, r2, b, d)        S390_RS_1(c, 0x98, r1, r2, b, d)
1350 #define s390_lmg(c, r1, r2, b, d)       S390_RSY_1(c, 0xeb04, r1, r2, b, d)
1351 #define s390_lndbr(c, r1, r2)           S390_RRE(c, 0xb311, r1, r2)
1352 #define s390_lngr(c, r1, r2)            S390_RRE(c, 0xb901, r1, r2)
1353 #define s390_lnr(c, r1, r2)             S390_RR(c, 0x11, r1, r2)
1354 #define s390_lpdbr(c, r1, r2)           S390_RRE(c, 0xb310, r1, r2)
1355 #define s390_lpgr(c, r1, r2)            S390_RRE(c, 0xb900, r1, r2)
1356 #define s390_lpr(c, r1, r2)             S390_RR(c, 0x10, r1, r2)
1357 #define s390_lr(c, r1, r2)              S390_RR(c, 0x18, r1, r2)
1358 #define s390_lrl(c, r1, d)              S390_RIL_1(c, 0xc4d, r1, d)
1359 #define s390_ltgfr(c, r1, r2)           S390_RRE(c, 0xb912, r1, r2)
1360 #define s390_ltgr(c, r1, r2)            S390_RRE(c, 0xb902, r1, r2)
1361 #define s390_ltr(c, r1, r2)             S390_RR(c, 0x12, r1, r2)
1362 #define s390_lzdr(c, r)                 S390_RRE(c, 0xb375, r, 0)
1363 #define s390_lzer(c, r)                 S390_RRE(c, 0xb374, r, 0)
1364 #define s390_m(c, r, x, b, d)           S390_RX(c, 0x5c, r, x, b, d)
1365 #define s390_mdbr(c, r1, r2)            S390_RRE(c, 0xb31c, r1, r2)
1366 #define s390_meebr(c, r1, r2)           S390_RRE(c, 0xb317, r1, r2)
1367 #define s390_mfy(c, r, x, b, d)         S390_RXY(c, 0xe35c, r, x, b, d)
1368 #define s390_mlgr(c, r1, r2)            S390_RRE(c, 0xb986, r1, r2)
1369 #define s390_mlr(c, r1, r2)             S390_RRE(c, 0xb996, r1, r2)
1370 #define s390_mr(c, r1, r2)              S390_RR(c, 0x1c, r1, r2)
1371 #define s390_ms(c, r, x, b, d)          S390_RX(c, 0x71, r, x, b, d)
1372 #define s390_msi(c, r, v)               S390_RIL_1(c, 0xc21, r, v)
1373 #define s390_msgfr(c, r1, r2)           S390_RRE(c, 0xb91c, r1, r2)
1374 #define s390_msgi(c, r, v)              S390_RIL_1(c, 0xc20, r, v)
1375 #define s390_msgr(c, r1, r2)            S390_RRE(c, 0xb90c, r1, r2)
1376 #define s390_msr(c, r1, r2)             S390_RRE(c, 0xb252, r1, r2)
1377 #define s390_mvc(c, l, b1, d1, b2, d2)  S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
1378 #define s390_mvcl(c, r1, r2)            S390_RR(c, 0x0e, r1, r2)
1379 #define s390_mvcle(c, r1, r3, d2, b2)   S390_RS_1(c, 0xa8, r1, r3, d2, b2)
1380 #define s390_mvi(c, b, d, v)            S390_SI(c, 0x92, b, d, v)
1381 #define s390_n(c, r, x, b, d)           S390_RX(c, 0x54, r, x, b, d)
1382 #define s390_nc(c, l, b1, d1, b2, d2)   S390_SS_1(c, 0xd4, l, b1, d1, b2, d2)
1383 #define s390_ng(c, r, x, b, d)          S390_RXY(c, 0xe380, r, x, b, d)
1384 #define s390_ngr(c, r1, r2)             S390_RRE(c, 0xb980, r1, r2)
1385 #define s390_ngrk(c, r1, r2, r3)        S390_RRF_1(c, 0xb9e4, r1, r2, r3)
1386 #define s390_ni(c, b, d, v)             S390_SI(c, 0x94, b, d, v) 
1387 #define s390_nihf(c, r, v)              S390_RIL_1(c, 0xc0a, r, v)
1388 #define s390_nihh(c, r, v)              S390_RI(c, 0xa54, r, v)
1389 #define s390_nihl(c, r, v)              S390_RI(c, 0xa55, r, v)
1390 #define s390_nilf(c, r, v)              S390_RIL_1(c, 0xc0b, r, v)
1391 #define s390_nilh(c, r, v)              S390_RI(c, 0xa56, r, v)
1392 #define s390_nill(c, r, v)              S390_RI(c, 0xa57, r, v)
1393 #define s390_niy(c, b, d, v)            S390_SIY(c, 0xeb54, b, d, v) 
1394 #define s390_nop(c)                     S390_RR(c, 0x07, 0x0, 0)
1395 #define s390_mem(c)                     S390_RR(c, 0x07, 0xe, 0)
1396 #define s390_nr(c, r1, r2)              S390_RR(c, 0x14, r1, r2)
1397 #define s390_nrk(c, r1, r2)             S390_RRF_1(c, 0xb9f4, r1, r2)
1398 #define s390_ny(c, r, x, b, d)          S390_RRY(c, 0xe354, r1, r2)
1399 #define s390_o(c, r, x, b, d)           S390_RX(c, 0x56, r, x, b, d)
1400 #define s390_oihf(c, r, v)              S390_RIL_1(c, 0xc0c, r, v)
1401 #define s390_oihh(c, r, v)              S390_RI(c, 0xa58, r, v)
1402 #define s390_oihl(c, r, v)              S390_RI(c, 0xa59, r, v)
1403 #define s390_oilf(c, r, v)              S390_RIL_1(c, 0xc0d, r, v)
1404 #define s390_oilh(c, r, v)              S390_RI(c, 0xa5a, r, v)
1405 #define s390_oill(c, r, v)              S390_RI(c, 0xa5b, r, v)
1406 #define s390_oiy(c, b, d, v)            S390_SIY(c, 0xeb56 b, d, v) 
1407 #define s390_og(c, r, x, b, d)          S390_RXY(c, 0xe381, r, x, b, d)
1408 #define s390_ogr(c, r1, r2)             S390_RRE(c, 0xb981, r1, r2)
1409 #define s390_or(c, r1, r2)              S390_RR(c, 0x16, r1, r2)
1410 #define s390_s(c, r, x, b, d)           S390_RX(c, 0x5b, r, x, b, d)
1411 #define s390_sdb(c, r, x, b, d)         S390_RXE(c, 0xed1b, r, x, b, d)
1412 #define s390_sdbr(c, r1, r2)            S390_RRE(c, 0xb31b, r1, r2)
1413 #define s390_sebr(c, r1, r2)            S390_RRE(c, 0xb30b, r1, r2)
1414 #define s390_sg(c, r, x, b, d)          S390_RXY(c, 0xe309, r, x, b, d)
1415 #define s390_sgf(c, r, x, b, d)         S390_RXY(c, 0xe319, r, x, b, d)
1416 #define s390_sgr(c, r1, r2)             S390_RRE(c, 0xb909, r1, r2)
1417 #define s390_sl(c, r, x, b, d)          S390_RX(c, 0x5f, r, x, b, d)
1418 #define s390_sla(c, r, b, d)            S390_RS_3(c, 0x8b, r, b, d) 
1419 #define s390_slag(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0b, r1, r2, b, d) 
1420 #define s390_slbg(c, r, x, b, d)        S390_RXY(c, 0xe389, r, x, b, d)
1421 #define s390_slbgr(c, r1, r2)           S390_RRE(c, 0xb989, r1, r2)
1422 #define s390_slbr(c, r1, r2)            S390_RRE(c, 0xb999, r1, r2)
1423 #define s390_slda(c, r, b, d)           S390_RS_3(c, 0x8f, r, b, d) 
1424 #define s390_sldl(c, r, b, d)           S390_RS_3(c, 0x8d, r, b, d) 
1425 #define s390_slfi(c, r, v)              S390_RIL_1(c, 0xc25, r, v)
1426 #define s390_slg(c, r, x, b, d)         S390_RXY(c, 0xe30b, r, x, b, d)
1427 #define s390_slgf(c, r, x, b, d)        S390_RXY(c, 0xe31b, r, x, b, d)
1428 #define s390_slgfr(c, r1, r2)           S390_RRE(c, 0xb91b, r1, r2)
1429 #define s390_slgfi(c, r, v)             S390_RIL_1(c, 0xc24, r, v)
1430 #define s390_slgr(c, r1, r2)            S390_RRE(c, 0xb90b, r1, r2)
1431 #define s390_sll(c, r, b, d)            S390_RS_3(c, 0x89, r, b, d) 
1432 #define s390_sllg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0d, r1, r2, b, d) 
1433 #define s390_slr(c, r1, r2)             S390_RR(c, 0x1f, r1, r2)
1434 #define s390_sqdbr(c, r1, r2)           S390_RRE(c, 0xb315, r1, r2)
1435 #define s390_sqebr(c, r1, r2)           S390_RRE(c, 0xb314, r1, r2)
1436 #define s390_sra(c, r, b, d)            S390_RS_3(c, 0x8a, r, b, d) 
1437 #define s390_srag(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0a, r1, r2, b, d) 
1438 #define s390_sr(c, r1, r2)              S390_RR(c, 0x1b, r1, r2)
1439 #define s390_srda(c, r, b, d)           S390_RS_3(c, 0x8e, r, b, d) 
1440 #define s390_srdl(c, r, b, d)           S390_RS_3(c, 0x8c, r, b, d) 
1441 #define s390_srl(c, r, b, d)            S390_RS_3(c, 0x88, r, b, d) 
1442 #define s390_srlg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb0c, r1, r2, b, d) 
1443 #define s390_st(c, r, x, b, d)          S390_RX(c, 0x50, r, x, b, d)
1444 #define s390_stam(c, r1, r2, b, d)      S390_RS_1(c, 0x9b, r1, r2, b, d)
1445 #define s390_stc(c, r, x, b, d)         S390_RX(c, 0x42, r, x, b, d)
1446 #define s390_stcm(c, r, m, b, d)        S390_RX(c, 0xbe, r, m, b, d)
1447 #define s390_stcmy(c, r, x, b, d)       S390_RXY(c, 0xeb2d, r, x, b, d)
1448 #define s390_stcy(c, r, x, b, d)        S390_RXY(c, 0xe372, r, x, b, d)
1449 #define s390_std(c, f, x, b, d)         S390_RX(c, 0x60, f, x, b, d)
1450 #define s390_stdy(c, r, x, b, d)        S390_RXY(c, 0xed67, r, x, b, d)
1451 #define s390_ste(c, f, x, b, d)         S390_RX(c, 0x70, f, x, b, d)
1452 #define s390_stey(c, r, x, b, d)        S390_RXY(c, 0xed66, r, x, b, d)
1453 #define s390_stfpc(c, b, d)             S390_S(c, 0xb29c, b, d)
1454 #define s390_stg(c, r, x, b, d)         S390_RXY(c, 0xe324, r, x, b, d)
1455 #define s390_sth(c, r, x, b, d)         S390_RX(c, 0x40, r, x, b, d)
1456 #define s390_sthy(c, r, x, b, d)        S390_RXY(c, 0xe370, r, x, b, d)
1457 #define s390_stm(c, r1, r2, b, d)       S390_RS_1(c, 0x90, r1, r2, b, d)
1458 #define s390_stmg(c, r1, r2, b, d)      S390_RSY_1(c, 0xeb24, r1, r2, b, d)
1459 #define s390_sty(c, r, x, b, d)         S390_RXY(c, 0xe350, r, x, b, d)
1460 #define s390_tcdb(c, r, x, b, d)        S390_RXE(c, 0xed11, r, x, b, d)
1461 #define s390_tceb(c, r, x, b, d)        S390_RXE(c, 0xed10, r, x, b, d)
1462 #define s390_tmhh(c, r, m)              S390_RI(c, 0xa73, r, m)
1463 #define s390_tmhl(c, r, m)              S390_RI(c, 0xa72, r, m)
1464 #define s390_tmlh(c, r, m)              S390_RI(c, 0xa70, r, m)
1465 #define s390_tmll(c, r, m)              S390_RI(c, 0xa71, r, m)
1466 #define s390_tm(c, b, d, v)             S390_SI(c, 0x91, b, d, v)
1467 #define s390_x(c, r, x, b, d)           S390_RX(c, 0x57, r, x, b, d)
1468 #define s390_xihf(c, r, v)              S390_RIL_1(c, 0xc06, r, v)
1469 #define s390_xilf(c, r, v)              S390_RIL_1(c, 0xc07, r, v)
1470 #define s390_xg(c, r, x, b, d)          S390_RXY(c, 0xe382, r, x, b, d)
1471 #define s390_xgr(c, r1, r2)             S390_RRE(c, 0xb982, r1, r2)
1472 #define s390_xr(c, r1, r2)              S390_RR(c, 0x17, r1, r2)
1473 #define s390_xy(c, r, x, b, d)          S390_RXY(c, 0xe357, r, x, b, d)
1474 #endif