@@ -896,11 +896,18 @@ typedef struct {
896
896
897
897
#define S390_RIE_4 (c ,opc ,g1 ,i2 ,m3 ) do \
898
898
{ \
899
- s390_emit16(c, ((opc & 0xff00) | (g1) << 4); \
899
+ s390_emit16(c, ((opc & 0xff00) | (g1) << 4)) ; \
900
900
s390_emit16(c, (i2)); \
901
901
s390_emit16(c, ((m3) << 12 | (opc & 0xff))); \
902
902
} while (0)
903
903
904
+ #define S390_RIE_6 (c ,opc ,g1 ,g2 ,i3 ,i4 ,i5 ) do \
905
+ { \
906
+ s390_emit16(c, ((opc & 0xff00) | ((g1) << 4) | g2)); \
907
+ s390_emit16(c, ((i3) << 8) | i4); \
908
+ s390_emit16(c, ((i5) << 8 | (opc & 0xff))); \
909
+ } while (0)
910
+
904
911
#define S390_RIL_1 (c ,opc ,g1 ,m2 ) do \
905
912
{ \
906
913
s390_emit16(c, ((opc >> 4) << 8 | (g1) << 4 | (opc & 0xf))); \
@@ -918,17 +925,24 @@ typedef struct {
918
925
s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2)); \
919
926
s390_emit16(c, ((b) << 12) | (d)); \
920
927
s390_emit16(c, ((i) << 4) | ((opc) & 0xff)); \
921
- }
928
+ } while (0)
922
929
923
930
#define S390_RRS (c ,opc ,r1 ,r2 ,m3 ,b ,d ) do \
924
931
{ \
925
932
s390_emit16(c, ((opc, & 0xff00) | (r1) << 4) | (r2)); \
926
933
s390_emit16(c, ((b) << 12) | (d)); \
927
934
s390_emit16(c, ((m3) << 12) | ((opc) & 0xff)); \
928
- }
935
+ } while (0)
929
936
930
937
#define S390_SI (c ,opc ,s1 ,p1 ,m2 ) s390_emit32(c, (opc << 24 | (m2) << 16 | (s1) << 12 | ((p1) & 0xfff)));
931
938
939
+ #define S390_SIL (c , opc , b , d , i ) do \
940
+ { \
941
+ s390_emit16(c, opc); \
942
+ s390_emit16(c, ((b) << 12) | ((d) & 0x0fff)); \
943
+ s390_emit16(c, ((i) & 0xffff)); \
944
+ } while (0)
945
+
932
946
#define S390_SIY (c ,opc ,s1 ,p1 ,m2 ) do \
933
947
{ \
934
948
s390_emit16(c, ((opc & 0xff00) | m2)); \
@@ -1242,7 +1256,7 @@ typedef struct {
1242
1256
#define s390_clgij (c , r , i , b ) S390_RIE_3(c, 0xec7d, r, i, m, d)
1243
1257
#define s390_clgr (c , r1 , r2 ) S390_RRE(c, 0xb921, r1, r2)
1244
1258
#define s390_clgdbr (c , r1 , m3 , r2 , m4 ) S390_RRF_4(c, 0xb3ad, r1, m3, r2, m4)
1245
- #define s390_clgebr (c , r1 , m3 , r2 , m4 ) S390_RRF_4(c, 0xb39c , r1, m3, r2, m4)
1259
+ #define s390_clgebr (c , r1 , m3 , r2 , m4 ) S390_RRF_4(c, 0xb3ac , r1, m3, r2, m4)
1246
1260
#define s390_clgrj (c , r1 , r2 , m , v ) S390_RIE_2(c, 0xec65, r1, r2, m, v)
1247
1261
#define s390_clgrb (c , r1 , r2 , m3 , b , d ) S390_RRS(c, 0xece5, r1, r2, m3, b, d)
1248
1262
#define s390_cli (c , b , d , v ) S390_SI(c, 0x95, b, d, v)
@@ -1257,6 +1271,7 @@ typedef struct {
1257
1271
#define s390_crl (c , r , v ) S390_RIL_1(c, 0xc6d, r, v)
1258
1272
#define s390_crt (c , r1 , r2 , m3 ) S390_RRF_2(c, 0xb972, r1, r2, m3);
1259
1273
#define s390_cgrt (c , r1 , r2 , m3 ) S390_RRF_2(c, 0xb960, r1, r2, m3);
1274
+ #define s390_cpsdr (c , r1 , r2 , r3 ) S390_RRF_2(c, 0xb372, r1, r2, r3);
1260
1275
#define s390_cs (c , r1 , r2 , b , d ) S390_RX(c, 0xba, r1, r2, b, d)
1261
1276
#define s390_csg (c , r1 , r2 , b , d ) S390_RSY_1(c, 0xeb30, r1, r2, b, d)
1262
1277
#define s390_csst (c , d1 , b1 , d2 , b2 , r ) S390_SSF(c, 0xc82, b1, d1, b2, d2, r)
@@ -1272,6 +1287,9 @@ typedef struct {
1272
1287
#define s390_dsgfr (c , r1 , r2 ) S390_RRE(c, 0xb91d, r1, r2)
1273
1288
#define s390_dsgr (c , r1 , r2 ) S390_RRE(c, 0xb90d, r1, r2)
1274
1289
#define s390_ear (c , r1 , r2 ) S390_RRE(c, 0xb24f, r1, r2)
1290
+ #define s390_fidbra (c , r1 , m3 , r2 , m4 ) S390_RRF_4(c, 0xb35f, r1, m3, r2, m4)
1291
+ #define s390_fiebra (c , r1 , m3 , r2 , m4 ) S390_RRF_4(c, 0xb357, r1, m3, r2, m4)
1292
+ #define s390_flogr (c , r1 , r2 ) S390_RRE(c, 0xb983, r1, r2)
1275
1293
#define s390_ic (c , r , x , b , d ) S390_RX(c, 0x43, r, x, b, d)
1276
1294
#define s390_icm (c , r , m , b , d ) S390_RX(c, 0xbf, r, m, b, d)
1277
1295
#define s390_icmy (c , r , x , b , d ) S390_RXY(c, 0xeb81, r, x, b, d)
@@ -1388,6 +1406,19 @@ typedef struct {
1388
1406
#define s390_lnebr (c , r1 , r2 ) S390_RRE(c, 0xb301, r1, r2)
1389
1407
#define s390_lngr (c , r1 , r2 ) S390_RRE(c, 0xb901, r1, r2)
1390
1408
#define s390_lnr (c , r1 , r2 ) S390_RR(c, 0x11, r1, r2)
1409
+ #define s390_loc (c , r , m , b , d ) S390_RSY_2(c, 0xebf2, r, m, b, d)
1410
+ #define s390_locg (c , r , m , b , d ) S390_RSY_2(c, 0xebe2, r, m, b, d)
1411
+ #define s390_locr (c , r1 , m , r2 ) S390_RRF_2(c, 0xb9f2, r1, m, r2)
1412
+ #define s390_locgr (c , r1 , m , r2 ) S390_RRF_2(c, 0xb9e2, r1, m, r2)
1413
+ #define s390_locfh (c , r , n , b , d ) S390_RRF_2(c, 0xebe0, r, m, b, d)
1414
+ #define s390_locfhr (c , r1 , m , r2 ) S390_RRF_2(c, 0xb9e0, r1, m, r2)
1415
+ #define s390_lpdbr (c , r1 , r2 ) S390_RRE(c, 0xb310, r1, r2)
1416
+ #define s390_lpebr (c , r1 , r2 ) S390_RRE(c, 0xb300, r1, r2)
1417
+ #define s390_lpgr (c , r1 , r2 ) S390_RRE(c, 0xb900, r1, r2)
1418
+ #define s390_lpr (c , r1 , r2 ) S390_RR(c, 0x10, r1, r2)
1419
+ #define s390_lr (c , r1 , r2 ) S390_RR(c, 0x18, r1, r2)
1420
+ #define s390_lrl (c , r1 , d ) S390_RIL_1(c, 0xc4d, r1, d)
1421
+ #define s390_lt (c , r , x , b , d ) S390_RXY(c, 0xe312, r, x, b, d)
1391
1422
#define s390_lpdbr (c , r1 , r2 ) S390_RRE(c, 0xb310, r1, r2)
1392
1423
#define s390_lpgr (c , r1 , r2 ) S390_RRE(c, 0xb900, r1, r2)
1393
1424
#define s390_lpr (c , r1 , r2 ) S390_RR(c, 0x10, r1, r2)
@@ -1419,6 +1450,7 @@ typedef struct {
1419
1450
#define s390_msr (c , r1 , r2 ) S390_RRE(c, 0xb252, r1, r2)
1420
1451
#define s390_msrkc (c , r1 , r2 , r3 ) S390_RRF_1(c, 0xb9fd, r1, r2, r3)
1421
1452
#define s390_mvc (c , l , b1 , d1 , b2 , d2 ) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
1453
+ #define s390_mvghi (c , b1 , d1 , i2 ) S390_SIL(c, 0xe548, b1, d1, i2)
1422
1454
#define s390_mvcl (c , r1 , r2 ) S390_RR(c, 0x0e, r1, r2)
1423
1455
#define s390_mvcle (c , r1 , r3 , d2 , b2 ) S390_RS_1(c, 0xa8, r1, r3, d2, b2)
1424
1456
#define s390_mvi (c , b , d , v ) S390_SI(c, 0x92, b, d, v)
@@ -1439,7 +1471,7 @@ typedef struct {
1439
1471
#define s390_mem (c ) S390_RR(c, 0x07, 0xe, 0)
1440
1472
#define s390_nr (c , r1 , r2 ) S390_RR(c, 0x14, r1, r2)
1441
1473
#define s390_nrk (c , r1 , r2 ) S390_RRF_1(c, 0xb9f4, r1, r2)
1442
- #define s390_ny (c , r , x , b , d ) S390_RRY (c, 0xe354, r1, r2 )
1474
+ #define s390_ny (c , r , x , b , d ) S390_RXY (c, 0xe354, r, x, b, d )
1443
1475
#define s390_o (c , r , x , b , d ) S390_RX(c, 0x56, r, x, b, d)
1444
1476
#define s390_oihf (c , r , v ) S390_RIL_1(c, 0xc0c, r, v)
1445
1477
#define s390_oihh (c , r , v ) S390_RI(c, 0xa58, r, v)
@@ -1452,6 +1484,9 @@ typedef struct {
1452
1484
#define s390_ogr (c , r1 , r2 ) S390_RRE(c, 0xb981, r1, r2)
1453
1485
#define s390_ogrk (c , r1 , r2 , r3 ) S390_RRF_1(c, 0xb9e6, r1, r2, r3)
1454
1486
#define s390_or (c , r1 , r2 ) S390_RR(c, 0x16, r1, r2)
1487
+ #define s390_oy (c , r , x , b , d ) S390_RXY(c, 0xe356, r, x, b, d)
1488
+ #define s390_popcnt (c , r1 , m , r2 ) S390_RRF_2(c, 0xb9e1, r1, m, r2)
1489
+ #define s390_risbg (c ,r1 ,r2 ,i3 ,i4 ,i5 ) S390_RIE_6(c, 0xec55, r1, r2, i3, i4, i5)
1455
1490
#define s390_s (c , r , x , b , d ) S390_RX(c, 0x5b, r, x, b, d)
1456
1491
#define s390_sdb (c , r , x , b , d ) S390_RXE(c, 0xed1b, r, x, b, d)
1457
1492
#define s390_sdbr (c , r1 , r2 ) S390_RRE(c, 0xb31b, r1, r2)
0 commit comments