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