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 | (g3) << 12 | (g1) << 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 | g2));	\
885 	s390_emit16(c, (v));					\
886 	s390_emit16(c, ((m3) << 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_agh(c, r, x, b, d)		S390_RXY(c, 0xe338, r, b, d)
1135 #define s390_aghi(c, r, v)		S390_RI(c, 0xa7b, r, v)
1136 #define s390_aghik(c, r1, r3, v)	S390_RIE_1(c, 0xecd9, r1, r3, v)
1137 #define s390_agr(c, r1, r2)		S390_RRE(c, 0xb908, r1, r2)
1138 #define s390_agrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9e8, r1, r2, r3)
1139 #define s390_agsi(c, r, v)		S390_SIY(c, 0xeb7a, r v)
1140 #define s390_ahhhr(c, r1, r2, r3)	S390_RRF_1(c, 0xb9c8, r1, r2, r3)
1141 #define s390_ahhlr(c, r1, r2, r3)	S390_RRF_1(c, 0xb9d8, r1, r2, r3)
1142 #define s390_ahi(c, r, v)		S390_RI(c, 0xa7a, r, v)
1143 #define s390_ahik(c, r1, r3, v)		S390_RIE_1(c, 0xecd8, r1, r3, v)
1144 #define s390_ahy(c, r, x, b, d)		S390_RXY(c, 0xe37a, r, b, d)
1145 #define s390_aih(c, r, v)		S390_RIL_1(c, 0xcc8, r, v)
1146 #define s390_al(c, r, x, b, d)		S390_RX(c, 0x5e, r, x, b, d)
1147 #define s390_alc(c, r, x, b, d)		S390_RXY(c, 0xe398, r, x, b, d)
1148 #define s390_alcg(c, r, x, b, d)	S390_RXY(c, 0xe388, r, x, b, d)
1149 #define s390_alcgr(c, r1, r2)		S390_RRE(c, 0xb988, r1, r2)
1150 #define s390_alcr(c, r1, r2)		S390_RRE(c, 0xb998, r1, r2)
1151 #define s390_alfi(c, r, v)		S390_RIL_1(c, 0xc2b, r, v)
1152 #define s390_alg(c, r, x, b, d)		S390_RXY(c, 0xe30a, r, x, b, d)
1153 #define s390_algf(c, r, x, b, d)	S390_RXY(c, 0xe31a, r, x, b, d)
1154 #define s390_algfi(c, r, v)		S390_RIL_1(c, 0xc2a, r, v)
1155 #define s390_algfr(c, r1, r2)		S390_RRE(c, 0xb91a, r1, r2)
1156 #define s390_alghsik(c, r1, r3, v)	S390_RIE_1(c, 0xecdb, r1, r3, v)
1157 #define s390_algr(c, r1, r2)		S390_RRE(c, 0xb90a, r1, r2)
1158 #define s390_algrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9ea, r1, r2, r3)
1159 #define s390_algsi(c, d1, b1, i2)	S390_SIY_1(c, 0xeb7e, d1, b1, i2)
1160 #define s390_alhhhr(c, r1, r2, r3)	S390_RRF_1(c, 0xb9ca, r1, r2, r3)
1161 #define s390_alhhlr(c, r1, r2, r3)	S390_RRF_1(c, 0xb9da, r1, r2, r3)
1162 #define s390_alhsik(c, r1, r3, v)	S390_RIE_1(c, 0xecda, r1, r3, v)
1163 #define s390_alr(c, r1, r2)		S390_RR(c, 0x1e, r1, r2)
1164 #define s390_alrk(c, r1, r2)		S390_RRF(c, 0xb9fa, r1, r2)
1165 #define s390_alsi(c, d1, b1, i2)	S390_SIY_1(c, 0xeb6e, d1, b1, i2)
1166 #define s390_alsih(c, r, v)		S390_RIL_1(c, 0xcca, r, v)
1167 #define s390_alsihn(c, r, v)		S390_RIL_1(c, 0xccb, r, v)
1168 #define s390_aly(c, r, x, b, d)		S390_RXY(c, 0xe35e, r, x, b, d)
1169 #define s390_ar(c, r1, r2)		S390_RR(c, 0x1a, r1, r2)
1170 #define s390_ark(c, r1, r2, r3)		S390_RRF_1(c, 0xb9f8, r1, r2, r3)
1171 #define s390_asi(c, r, v)		S390_SIY(c, 0xeb6a, r, v)
1172 #define s390_axbr(c, r1, r2)		S390_RRE(c, 0xb34a, r1, r2)
1173 #define s390_ay(c, r, x, b, d)		S390_RXY(c, 0xe35a, r, x, b, d)
1174 #define s390_basr(c, r1, r2)		S390_RR(c, 0x0d, r1, r2)
1175 #define s390_bctr(c, r1, r2)		S390_RR(c, 0x06, r1, r2)
1176 #define s390_bctrg(c, r1, r2)		S390_RRE(c, 0xb946, r1, r2)
1177 #define s390_bi(c, x, b, d)		S390_RXY(c, 0xe347, S390_CC_UN, x, b, d)
1178 #define s390_bic(c, m, x, b, d)		S390_RXY(c, 0xe347, m, x, b, d)
1179 #define s390_bnzr(c, r)			S390_RR(c, 0x07, 0x07, r)
1180 #define s390_bras(c, r, o)		S390_RI(c, 0xa75, r, o)
1181 #define s390_brasl(c, r, o)		S390_RIL_1(c, 0xc05, r, o)
1182 #define s390_brc(c, m, d)		S390_RI(c, 0xa74, m, d)
1183 #define s390_brcl(c, m, d)		S390_RIL_2(c, 0xc04, m, d)
1184 #define s390_br(c, r)			S390_RR(c, 0x07, 0xf, r)
1185 #define s390_break(c)			S390_RR(c, 0, 0, 0)
1186 #define s390_bzr(c, r)			S390_RR(c, 0x07, 0x08, r)
1187 #define s390_c(c, r, x, b, d)		S390_RX(c, 0x59, r, x, b, d)
1188 #define s390_cdb(c, r, x, b, d)		S390_RXE(c, 0xed19, r, x, b, d)
1189 #define s390_cdbr(c, r1, r2)		S390_RRE(c, 0xb319, r1, r2)
1190 #define s390_cdfbr(c, r1, r2)		S390_RRE(c, 0xb395, r1, r2)
1191 #define s390_cdgbr(c, r1, r2)		S390_RRE(c, 0xb3a5, r1, r2)
1192 #define s390_cdlfbr(c, r1, m3, r2, m4)	S390_RRF_4(c, 0xb391, r1, m3, r2, m4)
1193 #define s390_cdlgbr(c, r1, m3, r2, m4)	S390_RRF_4(c, 0xb3a1, r1, m3, r2, m4)
1194 #define s390_cds(c, r1, r2, b, d)	S390_RX(c, 0xbb, r1, r2, b, d)
1195 #define s390_cdsg(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb3e, r1, r2, b, d)
1196 #define s390_cdsy(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb31, r1, r2, b, d)
1197 #define s390_cebr(c, r1, r2)		S390_RRE(c, 0xb309, r1, r2)
1198 #define s390_cegbr(c, r1, r2)		S390_RRE(c, 0xb3a4, r1, r2)
1199 #define s390_cfdbr(c, r1, m, r2)	S390_RRF_2(c, 0xb399, r1, m, r2)
1200 #define s390_cfi(c, r, v)		S390_RIL_1(c, 0xc2d, r, v)
1201 #define s390_cgdbr(c, r1, m, r2)	S390_RRF_2(c, 0xb3a9, r1, m, r2)
1202 #define s390_cg(c, r, x, b, d)		S390_RXY(c, 0xe320, r, x, b, d)
1203 #define s390_cgfi(c, r, v)		S390_RIL_1(c, 0xc2c, r, v)
1204 #define s390_cgfrl(c, r, v)		S390_RIL_1(c, 0xc6c, r, v)
1205 #define s390_cghi(c, r, i)		S390_RI(c, 0xa7f, r, i)
1206 #define s390_cgib(c, r, i, m, b, d)	S390_RIS(c, 0xecfc, r, i, m, b, d)
1207 #define s390_cgij(c, r, i, m, d)	S390_RIE_3(c, 0xec7c, r, i, m, d)
1208 #define s390_cgit(c, r, i, m)		S390_RIE_4(c, 0xec70, r, i m);
1209 #define s390_cgr(c, r1, r2)		S390_RRE(c, 0xb920, r1, r2)
1210 #define s390_cgrb(c, r1, r2, m3, b, d)	S390_RRS(c, 0xece4, r1, r2, m3, b, d)
1211 #define s390_cgrj(c, r1, r2, m3, v)	S390_RIE_2(c, 0xec64, r1, r2, m3, v)
1212 #define s390_cgrl(c, r, v)		S390_RIL_1(c, 0xc68, r, v)
1213 #define s390_chi(c, r, i)		S390_RI(c, 0xa7e, r, i)
1214 #define s390_cib(c, r, i, m, b, d)	S390_RIS(c, 0xecfe, r, i, m, b, d)
1215 #define s390_cij(c, r, i, m, d)		S390_RIE_3(c, 0xec7e, r, i, m, d)
1216 #define s390_cit(c, r, i, m)		S390_RIE_4(c, 0xec72, r, i m);
1217 #define s390_cl(c, r, x, b, d)		S390_RX(c, 0x55, r, x, b, d)
1218 #define s390_clfdbr(c, r1, m3, r2, m4)	S390_RRF_4(c, 0xb39d, r1, m3, r2, m4)
1219 #define s390_clg(c, r, x, b, d)		S390_RXY(c, 0xe321, r, x, b, d)
1220 #define s390_clgib(c, r, i, m, b, d)	S390_RIS(c, 0xecfd, r, i, m, b, d)
1221 #define s390_clgij(c, r, i, b)		S390_RIE_3(c, 0xec7d, r, i, m, d)
1222 #define s390_clgr(c, r1, r2)		S390_RRE(c, 0xb921, r1, r2)
1223 #define s390_clgdbr(c, r1, m3, r2, m4)	S390_RRF_4(c, 0xb3ad, r1, m3, r2, m4)
1224 #define s390_clgrj(c, r1, r2, m, v)	S390_RIE_2(c, 0xec65, r1, r2, m, v)
1225 #define s390_clgrb(c, r1, r2, m3, b, d)	S390_RRS(c, 0xece5, r1, r2, m3, b, d)
1226 #define s390_cli(c, b, d, v)		S390_SI(c, 0x95, b, d, v)
1227 #define s390_clib(c, r, i, m, b, d)	S390_RIS(c, 0xecff, r, i, m, b, d)
1228 #define s390_clij(c, r, i, b)		S390_RIE_3(c, 0xec7f, r, i, m, d)
1229 #define s390_clr(c, r1, r2)		S390_RR(c, 0x15, r1, r2)
1230 #define s390_clrb(c, r1, r2, m3, b, d)	S390_RRS(c, 0xecf7, r1, r2, m3, b, d)
1231 #define s390_clrj(c, r1, r2, m, v)	S390_RIE_2(c, 0xec77, r1, r2, m, v)
1232 #define s390_cr(c, r1, r2)		S390_RR(c, 0x19, r1, r2)
1233 #define s390_crb(c, r1, r2, m3, b, d)	S390_RRS(c, 0xecf6, r1, r2, m3, b, d)
1234 #define s390_crj(c, r1, r2, m3, v)	S390_RIE_2(c, 0xec76, r1, r2, m3, v)
1235 #define s390_crl(c, r, v)		S390_RIL_1(c, 0xc6d, r, v)
1236 #define s390_crt(c, r1, r2, m3)		S390_RRF_2(c, 0xb972, r1, r2, m3);
1237 #define s390_cgrt(c, r1, r2, m3)	S390_RRF_2(c, 0xb960, r1, r2, m3);
1238 #define s390_cs(c, r1, r2, b, d)	S390_RX(c, 0xba, r1, r2, b, d)
1239 #define s390_csg(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb30, r1, r2, b, d)
1240 #define s390_csst(c, d1, b1, d2, b2, r)	S390_SSF(c, 0xc82, b1, d1, b2, d2, r)
1241 #define s390_csy(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb14, r1, r2, b, d)
1242 #define s390_cxgbr(c, r1, r2)		S390_RRE(c, 0xb3a6, r1, r2)
1243 #define s390_ddbr(c, r1, r2)		S390_RRE(c, 0xb31d, r1, r2)
1244 #define s390_debr(c, r1, r2)		S390_RRE(c, 0xb30d, r1, r2)
1245 #define s390_didbr(c, r1, r2, m, r3)    S390_RRF_3(c, 0xb35b, r1, r2, m, r3)
1246 #define s390_dlgr(c, r1, r2)		S390_RRE(c, 0xb987, r1, r2)
1247 #define s390_dlr(c, r1, r2)		S390_RRE(c, 0xb997, r1, r2)
1248 #define s390_dr(c, r1, r2)		S390_RR(c, 0x1d, r1, r2)
1249 #define s390_dsgfr(c, r1, r2)		S390_RRE(c, 0xb91d, r1, r2)
1250 #define s390_dsgr(c, r1, r2)		S390_RRE(c, 0xb90d, r1, r2)
1251 #define s390_ear(c, r1, r2)		S390_RRE(c, 0xb24f, r1, r2)
1252 #define s390_ic(c, r, x, b, d)		S390_RX(c, 0x43, r, x, b, d)
1253 #define s390_icm(c, r, m, b, d)		S390_RX(c, 0xbf, r, m, b, d)
1254 #define s390_icmy(c, r, x, b, d)	S390_RXY(c, 0xeb81, r, x, b, d)
1255 #define s390_icy(c, r, x, b, d)		S390_RXY(c, 0xe373, r, x, b, d)
1256 #define s390_iihf(c, r, v)		S390_RIL_1(c, 0xc08, r, v)
1257 #define s390_iihh(c, r, v)		S390_RI(c, 0xa50, r, v)
1258 #define s390_iihl(c, r, v)		S390_RI(c, 0xa51, r, v)
1259 #define s390_iilf(c, r, v)		S390_RIL_1(c, 0xc09, r, v)
1260 #define s390_iilh(c, r, v)		S390_RI(c, 0xa52, r, v)
1261 #define s390_iill(c, r, v)		S390_RI(c, 0xa53, r, v)
1262 #define s390_j(c,d)			s390_brc(c, S390_CC_UN, d)
1263 #define s390_jc(c, m, d)		s390_brc(c, m, d)
1264 #define s390_jcl(c, m, d)		s390_brcl(c, m, d)
1265 #define s390_jcy(c, d)			s390_brc(c, S390_CC_CY, d)
1266 #define s390_je(c, d)			s390_brc(c, S390_CC_EQ, d)
1267 #define s390_jeo(c, d)			s390_brc(c, S390_CC_ZR|S390_CC_OV, d)
1268 #define s390_jh(c, d)			s390_brc(c, S390_CC_GT, d)
1269 #define s390_jhe(c, d)			s390_brc(c, S390_CC_GT|S390_CC_EQ, d)
1270 #define s390_jho(c, d)			s390_brc(c, S390_CC_GT|S390_CC_OV, d)
1271 #define s390_jl(c, d)			s390_brc(c, S390_CC_LT, d)
1272 #define s390_jle(c, d)			s390_brc(c, S390_CC_LT|S390_CC_EQ, d)
1273 #define s390_jlo(c, d)			s390_brc(c, S390_CC_LT|S390_CC_OV, d)
1274 #define s390_jm(c, d)			s390_brc(c, S390_CC_LT, d)
1275 #define s390_jnc(c, d)			s390_brc(c, S390_CC_NC, d)
1276 #define s390_jne(c, d)			s390_brc(c, S390_CC_NZ, d)
1277 #define s390_jnh(c, d)			s390_brc(c, S390_CC_LE, d)
1278 #define s390_jnl(c, d)			s390_brc(c, S390_CC_GE, d)
1279 #define s390_jnz(c, d)			s390_brc(c, S390_CC_NZ, d)
1280 #define s390_jo(c, d)			s390_brc(c, S390_CC_OV, d)
1281 #define s390_jno(c, d)			s390_brc(c, S390_CC_NO, d)
1282 #define s390_jp(c, d)			s390_brc(c, S390_CC_GT, d)
1283 #define s390_jz(c, d)			s390_brc(c, S390_CC_ZR, d)
1284 #define s390_jg(c,d)			s390_brcl(c, S390_CC_UN, d)
1285 #define s390_jgcy(c, d)			s390_brcl(c, S390_CC_CY, d)
1286 #define s390_jge(c, d)			s390_brcl(c, S390_CC_EQ, d)
1287 #define s390_jgeo(c, d)			s390_brcl(c, S390_CC_ZR|S390_CC_OV, d)
1288 #define s390_jgh(c, d)			s390_brcl(c, S390_CC_GT, d)
1289 #define s390_jgho(c, d)			s390_brcl(c, S390_CC_GT|S390_CC_OV, d)
1290 #define s390_jgl(c, d)			s390_brcl(c, S390_CC_LT, d)
1291 #define s390_jglo(c, d)			s390_brcl(c, S390_CC_LT|S390_CC_OV, d)
1292 #define s390_jgm(c, d)			s390_brcl(c, S390_CC_LT, d)
1293 #define s390_jgnc(c, d)			s390_brcl(c, S390_CC_NC, d)
1294 #define s390_jgne(c, d)			s390_brcl(c, S390_CC_NZ, d)
1295 #define s390_jgnh(c, d)			s390_brcl(c, S390_CC_LE, d)
1296 #define s390_jgnl(c, d)			s390_brcl(c, S390_CC_GE, d)
1297 #define s390_jgnz(c, d)			s390_brcl(c, S390_CC_NZ, d)
1298 #define s390_jgo(c, d)			s390_brcl(c, S390_CC_OV, d)
1299 #define s390_jgno(c, d)			s390_brcl(c, S390_CC_NO, d)
1300 #define s390_jgp(c, d)			s390_brcl(c, S390_CC_GT, d)
1301 #define s390_jgz(c, d)			s390_brcl(c, S390_CC_ZR, d)
1302 #define s390_l(c, r, x, b, d)		S390_RX(c, 0x58, r, x, b, d)
1303 #define s390_ly(c, r, x, b, d)		S390_RXY(c, 0xe358, r, x, b, d)
1304 #define s390_la(c, r, x, b, d)		S390_RX(c, 0x41, r, x, b, d)
1305 #define s390_laa(c, r1, r3, b, d)	S390_RSY_1(c, 0xebf8, r1, r3, b, d)
1306 #define s390_laag(c, r1, r3, b, d)	S390_RSY_1(c, 0xebe8, r1, r3, b, d)
1307 #define s390_lay(c, r, x, b, d)		S390_RXY(c, 0xe371, r, x, b, d)
1308 #define s390_lam(c, r1, r2, b, d)	S390_RS_1(c, 0x9a, r1, r2, b, d)
1309 #define s390_larl(c, r, o)		S390_RIL_1(c, 0xc00, r, o)
1310 #define s390_lb(c, r, x, b, d)		S390_RXY(c, 0xe376, r, x, b, d)
1311 #define s390_lbr(c, r1, r2)		S390_RRE(c, 0xb926, r1, r2)
1312 #define s390_lcdbr(c, r1, r2)		S390_RRE(c, 0xb313, r1, r2)
1313 #define s390_lcgr(c, r1, r2)		S390_RRE(c, 0xb903, r1, r2)
1314 #define s390_lcr(c, r1, r2)		S390_RR(c, 0x13, r1, r2)
1315 #define s390_ld(c, f, x, b, d)		S390_RX(c, 0x68, f, x, b, d)
1316 #define s390_ldy(c, r, x, b, d)		S390_RXY(c, 0xed65, r, x, b, d)
1317 #define s390_ldeb(c, r, x, b, d)	S390_RXE(c, 0xed04, r, x, b, d)
1318 #define s390_ldebr(c, r1, r2)		S390_RRE(c, 0xb304, r1, r2)
1319 #define s390_ldgr(c, r1, r2)		S390_RRE(c, 0xb3c1, r1, r2)
1320 #define s390_ldxbr(c, r1, r2)		S390_RRE(c, 0xb345, r1, r2)
1321 #define s390_ldr(c, r1, r2)		S390_RR(c, 0x28, r1, r2)
1322 #define s390_le(c, f, x, b, d)		S390_RX(c, 0x78, f, x, b, d)
1323 #define s390_ledbr(c, r1, r2)		S390_RRE(c, 0xb344, r1, r2)
1324 #define s390_ler(c, r1, r2)		S390_RR(c, 0x38, r1, r2)
1325 #define s390_ley(c, r, x, b, d)		S390_RXY(c, 0xed64, r, x, b, d)
1326 #define s390_lg(c, r, x, b, d)		S390_RXY(c, 0xe304, r, x, b, d)
1327 #define s390_lgb(c, r, x, b, d)		S390_RXY(c, 0xe377, r, x, b, d)
1328 #define s390_lgbr(c, r1, r2)		S390_RRE(c, 0xb906, r1, r2)
1329 #define s390_lgdr(c, r1, r2)		S390_RRE(c, 0xb3cd, r1, r2)
1330 #define s390_lgf(c, r, x, b, d)		S390_RXY(c, 0xe314, r, x, b, d)
1331 #define s390_lgfi(c, r, v)		S390_RIL_1(c, 0xc01, r, v)
1332 #define s390_lgfrl(c, r1, d)		S390_RIL_1(c, 0xc4c, r1, d)
1333 #define s390_lgfr(c, r1, r2)		S390_RRE(c, 0xb914, r1, r2)
1334 #define s390_lgg(c, r, x, b, d)		S390_RXY(c, 0xe34c, r, x, b, d)
1335 #define s390_lgh(c, r, x, b, d)		S390_RXY(c, 0xe315, r, x, b, d)
1336 #define s390_lghi(c, r, v)		S390_RI(c, 0xa79, r, v)
1337 #define s390_lghr(c, r1, r2)		S390_RRE(c, 0xb907, r1, r2)
1338 #define s390_lgr(c, r1, r2)		S390_RRE(c, 0xb904, r1, r2)
1339 #define s390_lgrl(c, r1, d)		S390_RIL_1(c, 0xc48, r1, d)
1340 #define s390_lgsc(c, r, x, b, d)	S390_RXY(c, 0xe34d, r, x, b, d)
1341 #define s390_lh(c, r, x, b, d)		S390_RX(c, 0x48, r, x, b, d)
1342 #define s390_lhr(c, r1, r2)		S390_RRE(c, 0xb927, r1, r2)
1343 #define s390_lhg(c, r, x, b, d)		S390_RXY(c, 0xe315, r, x, b, d)
1344 #define s390_lhi(c, r, v)		S390_RI(c, 0xa78, r, v)
1345 #define s390_lhy(c, r, x, b, d)		S390_RXY(c, 0xe378, r, x, b, d)
1346 #define s390_llcr(c, r1, r2)		S390_RRE(c, 0xb994, r1, r2)
1347 #define s390_llgc(c, r, x, b, d)	S390_RXY(c, 0xe390, r, x, b, d)
1348 #define s390_llgcr(c, r1, r2)		S390_RRE(c, 0xb984, r1, r2)
1349 #define s390_llgf(c, r, x, b, d)	S390_RXY(c, 0xe316, r, x, b, d)
1350 #define s390_llgfr(c, r1, r2)		S390_RRE(c, 0xb916, r1, r2)
1351 #define s390_llgh(c, r, x, b, d)	S390_RXY(c, 0xe391, r, x, b, d)
1352 #define s390_llghr(c, r1, r2)		S390_RRE(c, 0xb985, r1, r2)
1353 #define s390_llgfsg(c, r, x, b, d)	S390_RXY(c, 0xe348, r, x, b, d)
1354 #define s390_llhr(c, r1, r2)		S390_RRE(c, 0xb995, r1, r2)
1355 #define s390_llihf(c, r, v)		S390_RIL_1(c, 0xc0e, r, v)
1356 #define s390_llihh(c, r, v)		S390_RI(c, 0xa5c, r, v)
1357 #define s390_llihl(c, r, v)		S390_RI(c, 0xa5d, r, v)
1358 #define s390_llilf(c, r, v)		S390_RIL_1(c, 0xc0f, r, v)
1359 #define s390_llilh(c, r, v)		S390_RI(c, 0xa5e, r, v)
1360 #define s390_llill(c, r, v)		S390_RI(c, 0xa5f, r, v)
1361 #define s390_lm(c, r1, r2, b, d)	S390_RS_1(c, 0x98, r1, r2, b, d)
1362 #define s390_lmg(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb04, r1, r2, b, d)
1363 #define s390_lndbr(c, r1, r2)		S390_RRE(c, 0xb311, r1, r2)
1364 #define s390_lngr(c, r1, r2)		S390_RRE(c, 0xb901, r1, r2)
1365 #define s390_lnr(c, r1, r2)		S390_RR(c, 0x11, r1, r2)
1366 #define s390_lpdbr(c, r1, r2)		S390_RRE(c, 0xb310, r1, r2)
1367 #define s390_lpgr(c, r1, r2)		S390_RRE(c, 0xb900, r1, r2)
1368 #define s390_lpr(c, r1, r2)		S390_RR(c, 0x10, r1, r2)
1369 #define s390_lr(c, r1, r2)		S390_RR(c, 0x18, r1, r2)
1370 #define s390_lrl(c, r1, d)		S390_RIL_1(c, 0xc4d, r1, d)
1371 #define s390_lt(c, r, x, b, d)		S390_RXY(c, 0xe312, r, x, b, d)
1372 #define s390_ltg(c, r, x, b, d)		S390_RXY(c, 0xe302, r, x, b, d)
1373 #define s390_ltgfr(c, r1, r2)		S390_RRE(c, 0xb912, r1, r2)
1374 #define s390_ltgr(c, r1, r2)		S390_RRE(c, 0xb902, r1, r2)
1375 #define s390_ltr(c, r1, r2)		S390_RR(c, 0x12, r1, r2)
1376 #define s390_lzdr(c, r)    		S390_RRE(c, 0xb375, r, 0)
1377 #define s390_lzer(c, r)    		S390_RRE(c, 0xb374, r, 0)
1378 #define s390_m(c, r, x, b, d)		S390_RX(c, 0x5c, r, x, b, d)
1379 #define s390_mdbr(c, r1, r2)		S390_RRE(c, 0xb31c, r1, r2)
1380 #define s390_meebr(c, r1, r2)		S390_RRE(c, 0xb317, r1, r2)
1381 #define s390_mg(c, r, x, b, d)		S390_RXY(c, 0xe384, r, x, b, d)
1382 #define s390_mgh(c, r, x, b, d)		S390_RXY(c, 0xe33c, r, x, b, d)
1383 #define s390_mgrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9ec, r1, r2, r3)
1384 #define s390_mfy(c, r, x, b, d)		S390_RXY(c, 0xe35c, r, x, b, d)
1385 #define s390_mlgr(c, r1, r2)		S390_RRE(c, 0xb986, r1, r2)
1386 #define s390_mlr(c, r1, r2)		S390_RRE(c, 0xb996, r1, r2)
1387 #define s390_mr(c, r1, r2)		S390_RR(c, 0x1c, r1, r2)
1388 #define s390_ms(c, r, x, b, d)		S390_RX(c, 0x71, r, x, b, d)
1389 #define s390_msfi(c, r, v)		S390_RIL_1(c, 0xc20, r, v)
1390 #define s390_msgfi(c, r, v)		S390_RIL_1(c, 0xc21, r, v)
1391 #define s390_msgfr(c, r1, r2)		S390_RRE(c, 0xb91c, r1, r2)
1392 #define s390_msgr(c, r1, r2)		S390_RRE(c, 0xb90c, r1, r2)
1393 #define s390_msgrkc(c, r1, r2, r3)	S390_RRF_1(c, 0xb9ed, r1, r2, r3)
1394 #define s390_msr(c, r1, r2)		S390_RRE(c, 0xb252, r1, r2)
1395 #define s390_mvc(c, l, b1, d1, b2, d2)	S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
1396 #define s390_mvcl(c, r1, r2)		S390_RR(c, 0x0e, r1, r2)
1397 #define s390_mvcle(c, r1, r3, d2, b2)	S390_RS_1(c, 0xa8, r1, r3, d2, b2)
1398 #define s390_mvi(c, b, d, v)		S390_SI(c, 0x92, b, d, v)
1399 #define s390_n(c, r, x, b, d)		S390_RX(c, 0x54, r, x, b, d)
1400 #define s390_nc(c, l, b1, d1, b2, d2)	S390_SS_1(c, 0xd4, l, b1, d1, b2, d2)
1401 #define s390_ng(c, r, x, b, d)		S390_RXY(c, 0xe380, r, x, b, d)
1402 #define s390_ngr(c, r1, r2)		S390_RRE(c, 0xb980, r1, r2)
1403 #define s390_ngrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9e4, r1, r2, r3)
1404 #define s390_ni(c, b, d, v)		S390_SI(c, 0x94, b, d, v)
1405 #define s390_nihf(c, r, v)		S390_RIL_1(c, 0xc0a, r, v)
1406 #define s390_nihh(c, r, v)		S390_RI(c, 0xa54, r, v)
1407 #define s390_nihl(c, r, v)		S390_RI(c, 0xa55, r, v)
1408 #define s390_nilf(c, r, v)		S390_RIL_1(c, 0xc0b, r, v)
1409 #define s390_nilh(c, r, v)		S390_RI(c, 0xa56, r, v)
1410 #define s390_nill(c, r, v)		S390_RI(c, 0xa57, r, v)
1411 #define s390_niy(c, b, d, v)		S390_SIY(c, 0xeb54, b, d, v)
1412 #define s390_nop(c)  			S390_RR(c, 0x07, 0x0, 0)
1413 #define s390_mem(c)  			S390_RR(c, 0x07, 0xe, 0)
1414 #define s390_nr(c, r1, r2)		S390_RR(c, 0x14, r1, r2)
1415 #define s390_nrk(c, r1, r2)		S390_RRF_1(c, 0xb9f4, r1, r2)
1416 #define s390_ny(c, r, x, b, d)		S390_RRY(c, 0xe354, r1, r2)
1417 #define s390_o(c, r, x, b, d)		S390_RX(c, 0x56, r, x, b, d)
1418 #define s390_oihf(c, r, v)		S390_RIL_1(c, 0xc0c, r, v)
1419 #define s390_oihh(c, r, v)		S390_RI(c, 0xa58, r, v)
1420 #define s390_oihl(c, r, v)		S390_RI(c, 0xa59, r, v)
1421 #define s390_oilf(c, r, v)		S390_RIL_1(c, 0xc0d, r, v)
1422 #define s390_oilh(c, r, v)		S390_RI(c, 0xa5a, r, v)
1423 #define s390_oill(c, r, v)		S390_RI(c, 0xa5b, r, v)
1424 #define s390_oiy(c, b, d, v)		S390_SIY(c, 0xeb56 b, d, v)
1425 #define s390_og(c, r, x, b, d)		S390_RXY(c, 0xe381, r, x, b, d)
1426 #define s390_ogr(c, r1, r2)		S390_RRE(c, 0xb981, r1, r2)
1427 #define s390_ogrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9e6, r1, r2, r3)
1428 #define s390_or(c, r1, r2)		S390_RR(c, 0x16, r1, r2)
1429 #define s390_s(c, r, x, b, d)		S390_RX(c, 0x5b, r, x, b, d)
1430 #define s390_sdb(c, r, x, b, d)		S390_RXE(c, 0xed1b, r, x, b, d)
1431 #define s390_sdbr(c, r1, r2)		S390_RRE(c, 0xb31b, r1, r2)
1432 #define s390_sebr(c, r1, r2)		S390_RRE(c, 0xb30b, r1, r2)
1433 #define s390_sg(c, r, x, b, d)		S390_RXY(c, 0xe309, r, x, b, d)
1434 #define s390_sgf(c, r, x, b, d)		S390_RXY(c, 0xe319, r, x, b, d)
1435 #define s390_sgh(c, r, x, b, d)		S390_RXY(c, 0xe339, r, x, b, d)
1436 #define s390_sgr(c, r1, r2)		S390_RRE(c, 0xb909, r1, r2)
1437 #define s390_sgrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9e9, r1, r2, r3)
1438 #define s390_sl(c, r, x, b, d)		S390_RX(c, 0x5f, r, x, b, d)
1439 #define s390_sla(c, r, b, d)		S390_RS_3(c, 0x8b, r, b, d)
1440 #define s390_slag(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb0b, r1, r2, b, d)
1441 #define s390_slbg(c, r, x, b, d)	S390_RXY(c, 0xe389, r, x, b, d)
1442 #define s390_slbgr(c, r1, r2)		S390_RRE(c, 0xb989, r1, r2)
1443 #define s390_slbr(c, r1, r2)		S390_RRE(c, 0xb999, r1, r2)
1444 #define s390_slda(c, r, b, d)		S390_RS_3(c, 0x8f, r, b, d)
1445 #define s390_sldl(c, r, b, d)		S390_RS_3(c, 0x8d, r, b, d)
1446 #define s390_slfi(c, r, v)		S390_RIL_1(c, 0xc25, r, v)
1447 #define s390_slg(c, r, x, b, d)		S390_RXY(c, 0xe30b, r, x, b, d)
1448 #define s390_slgf(c, r, x, b, d)	S390_RXY(c, 0xe31b, r, x, b, d)
1449 #define s390_slgfr(c, r1, r2)		S390_RRE(c, 0xb91b, r1, r2)
1450 #define s390_slgfi(c, r, v)		S390_RIL_1(c, 0xc24, r, v)
1451 #define s390_slgr(c, r1, r2)		S390_RRE(c, 0xb90b, r1, r2)
1452 #define s390_slgrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9eb, r1, r2, r3)
1453 #define s390_sll(c, r, b, d)		S390_RS_3(c, 0x89, r, b, d)
1454 #define s390_sllg(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb0d, r1, r2, b, d)
1455 #define s390_slr(c, r1, r2)		S390_RR(c, 0x1f, r1, r2)
1456 #define s390_slrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9fb, r1, r2, r3)
1457 #define s390_sqdbr(c, r1, r2)		S390_RRE(c, 0xb315, r1, r2)
1458 #define s390_sqebr(c, r1, r2)		S390_RRE(c, 0xb314, r1, r2)
1459 #define s390_sra(c, r, b, d)		S390_RS_3(c, 0x8a, r, b, d)
1460 #define s390_srag(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb0a, r1, r2, b, d)
1461 #define s390_sr(c, r1, r2)		S390_RR(c, 0x1b, r1, r2)
1462 #define s390_srda(c, r, b, d)		S390_RS_3(c, 0x8e, r, b, d)
1463 #define s390_srdl(c, r, b, d)		S390_RS_3(c, 0x8c, r, b, d)
1464 #define s390_srk(c, r1, r2, r3)		S390_RRF_1(c, 0xb9f9, r1, r2, r3)
1465 #define s390_srl(c, r, b, d)		S390_RS_3(c, 0x88, r, b, d)
1466 #define s390_srlg(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb0c, r1, r2, b, d)
1467 #define s390_st(c, r, x, b, d)		S390_RX(c, 0x50, r, x, b, d)
1468 #define s390_stam(c, r1, r2, b, d)	S390_RS_1(c, 0x9b, r1, r2, b, d)
1469 #define s390_stc(c, r, x, b, d)		S390_RX(c, 0x42, r, x, b, d)
1470 #define s390_stcm(c, r, m, b, d)	S390_RX(c, 0xbe, r, m, b, d)
1471 #define s390_stcmy(c, r, x, b, d)	S390_RXY(c, 0xeb2d, r, x, b, d)
1472 #define s390_stcy(c, r, x, b, d)	S390_RXY(c, 0xe372, r, x, b, d)
1473 #define s390_std(c, f, x, b, d)		S390_RX(c, 0x60, f, x, b, d)
1474 #define s390_stdy(c, r, x, b, d)	S390_RXY(c, 0xed67, r, x, b, d)
1475 #define s390_ste(c, f, x, b, d)		S390_RX(c, 0x70, f, x, b, d)
1476 #define s390_stey(c, r, x, b, d)	S390_RXY(c, 0xed66, r, x, b, d)
1477 #define s390_stfpc(c, b, d)		S390_S(c, 0xb29c, b, d)
1478 #define s390_stg(c, r, x, b, d)		S390_RXY(c, 0xe324, r, x, b, d)
1479 #define s390_stgsc(c, r, x, b, d)	S390_RXY(c, 0xe349, r, x, b, d)
1480 #define s390_sth(c, r, x, b, d)		S390_RX(c, 0x40, r, x, b, d)
1481 #define s390_sthy(c, r, x, b, d)	S390_RXY(c, 0xe370, r, x, b, d)
1482 #define s390_stm(c, r1, r2, b, d)	S390_RS_1(c, 0x90, r1, r2, b, d)
1483 #define s390_stmg(c, r1, r2, b, d)	S390_RSY_1(c, 0xeb24, r1, r2, b, d)
1484 #define s390_sty(c, r, x, b, d)		S390_RXY(c, 0xe350, r, x, b, d)
1485 #define s390_tcdb(c, r, x, b, d)	S390_RXE(c, 0xed11, r, x, b, d)
1486 #define s390_tceb(c, r, x, b, d)	S390_RXE(c, 0xed10, r, x, b, d)
1487 #define s390_tmhh(c, r, m)		S390_RI(c, 0xa73, r, m)
1488 #define s390_tmhl(c, r, m)		S390_RI(c, 0xa72, r, m)
1489 #define s390_tmlh(c, r, m)		S390_RI(c, 0xa70, r, m)
1490 #define s390_tmll(c, r, m)		S390_RI(c, 0xa71, r, m)
1491 #define s390_tm(c, b, d, v)		S390_SI(c, 0x91, b, d, v)
1492 #define s390_x(c, r, x, b, d)		S390_RX(c, 0x57, r, x, b, d)
1493 #define s390_xihf(c, r, v)		S390_RIL_1(c, 0xc06, r, v)
1494 #define s390_xilf(c, r, v)		S390_RIL_1(c, 0xc07, r, v)
1495 #define s390_xg(c, r, x, b, d)		S390_RXY(c, 0xe382, r, x, b, d)
1496 #define s390_xgr(c, r1, r2)		S390_RRE(c, 0xb982, r1, r2)
1497 #define s390_xgrk(c, r1, r2, r3)	S390_RRF_1(c, 0xb9e7, r1, r2, r3)
1498 #define s390_xr(c, r1, r2)		S390_RR(c, 0x17, r1, r2)
1499 #define s390_xy(c, r, x, b, d)		S390_RXY(c, 0xe357, r, x, b, d)
1500 #endif
1501