Add z14 support and extend z13 support
[mono.git] / mono / arch / s390x / s390x-codegen.h
index 695e318267dfcdb054690188fab29f3f710eac11..9c3750e213bc319bb3241a9c7934f59237b520db 100644 (file)
@@ -1131,6 +1131,7 @@ typedef struct {
 #define s390_agf(c, r, x, b, d)                S390_RXY(c, 0xe318, r, x, b, d)
 #define s390_agfi(c, r, v)             S390_RIL_1(c, 0xc28, r, v)
 #define s390_afgr(c, r1, r2)           S390_RRE(c, 0xb918, r1, r2)
+#define s390_agh(c, r, x, b, d)                S390_RXY(c, 0xe338, r, b, d)
 #define s390_aghi(c, r, v)             S390_RI(c, 0xa7b, r, v)
 #define s390_aghik(c, r1, r3, v)       S390_RIE_1(c, 0xecd9, r1, r3, v)
 #define s390_agr(c, r1, r2)            S390_RRE(c, 0xb908, r1, r2)
@@ -1154,6 +1155,7 @@ typedef struct {
 #define s390_algfr(c, r1, r2)          S390_RRE(c, 0xb91a, r1, r2)
 #define s390_alghsik(c, r1, r3, v)     S390_RIE_1(c, 0xecdb, r1, r3, v)
 #define s390_algr(c, r1, r2)           S390_RRE(c, 0xb90a, r1, r2)
+#define s390_algrk(c, r1, r2, r3)      S390_RRF_1(c, 0xb9ea, r1, r2, r3)
 #define s390_algsi(c, d1, b1, i2)      S390_SIY_1(c, 0xeb7e, d1, b1, i2)
 #define s390_alhhhr(c, r1, r2, r3)     S390_RRF_1(c, 0xb9ca, r1, r2, r3)
 #define s390_alhhlr(c, r1, r2, r3)     S390_RRF_1(c, 0xb9da, r1, r2, r3)
@@ -1172,6 +1174,8 @@ typedef struct {
 #define s390_basr(c, r1, r2)           S390_RR(c, 0x0d, r1, r2)
 #define s390_bctr(c, r1, r2)           S390_RR(c, 0x06, r1, r2)
 #define s390_bctrg(c, r1, r2)          S390_RRE(c, 0xb946, r1, r2)
+#define s390_bi(c, x, b, d)            S390_RXY(c, 0xe347, S390_CC_UN, x, b, d)
+#define s390_bic(c, m, x, b, d)                S390_RXY(c, 0xe347, m, x, b, d)
 #define s390_bnzr(c, r)                        S390_RR(c, 0x07, 0x07, r)
 #define s390_bras(c, r, o)             S390_RI(c, 0xa75, r, o)
 #define s390_brasl(c, r, o)            S390_RIL_1(c, 0xc05, r, o)
@@ -1327,11 +1331,13 @@ typedef struct {
 #define s390_lgfi(c, r, v)             S390_RIL_1(c, 0xc01, r, v)
 #define s390_lgfrl(c, r1, d)           S390_RIL_1(c, 0xc4c, r1, d)
 #define s390_lgfr(c, r1, r2)           S390_RRE(c, 0xb914, r1, r2)
+#define s390_lgg(c, r, x, b, d)                S390_RXY(c, 0xe34c, r, x, b, d)
 #define s390_lgh(c, r, x, b, d)                S390_RXY(c, 0xe315, r, x, b, d)
 #define s390_lghi(c, r, v)             S390_RI(c, 0xa79, r, v)
 #define s390_lghr(c, r1, r2)           S390_RRE(c, 0xb907, r1, r2)
 #define s390_lgr(c, r1, r2)            S390_RRE(c, 0xb904, r1, r2)
 #define s390_lgrl(c, r1, d)            S390_RIL_1(c, 0xc48, r1, d)
+#define s390_lgsc(c, r, x, b, d)       S390_RXY(c, 0xe34d, r, x, b, d)
 #define s390_lh(c, r, x, b, d)         S390_RX(c, 0x48, r, x, b, d)
 #define s390_lhr(c, r1, r2)            S390_RRE(c, 0xb927, r1, r2)
 #define s390_lhg(c, r, x, b, d)                S390_RXY(c, 0xe315, r, x, b, d)
@@ -1344,6 +1350,7 @@ typedef struct {
 #define s390_llgfr(c, r1, r2)          S390_RRE(c, 0xb916, r1, r2)
 #define s390_llgh(c, r, x, b, d)       S390_RXY(c, 0xe391, r, x, b, d)
 #define s390_llghr(c, r1, r2)          S390_RRE(c, 0xb985, r1, r2)
+#define s390_llgfsg(c, r, x, b, d)     S390_RXY(c, 0xe348, r, x, b, d)
 #define s390_llhr(c, r1, r2)           S390_RRE(c, 0xb995, r1, r2)
 #define s390_llihf(c, r, v)            S390_RIL_1(c, 0xc0e, r, v)
 #define s390_llihh(c, r, v)            S390_RI(c, 0xa5c, r, v)
@@ -1371,15 +1378,19 @@ typedef struct {
 #define s390_m(c, r, x, b, d)          S390_RX(c, 0x5c, r, x, b, d)
 #define s390_mdbr(c, r1, r2)           S390_RRE(c, 0xb31c, r1, r2)
 #define s390_meebr(c, r1, r2)          S390_RRE(c, 0xb317, r1, r2)
+#define s390_mg(c, r, x, b, d)         S390_RXY(c, 0xe384, r, x, b, d)
+#define s390_mgh(c, r, x, b, d)                S390_RXY(c, 0xe33c, r, x, b, d)
+#define s390_mgrk(c, r1, r2, r3)       S390_RRF_1(c, 0xb9ec, r1, r2, r3)
 #define s390_mfy(c, r, x, b, d)                S390_RXY(c, 0xe35c, r, x, b, d)
 #define s390_mlgr(c, r1, r2)           S390_RRE(c, 0xb986, r1, r2)
 #define s390_mlr(c, r1, r2)            S390_RRE(c, 0xb996, r1, r2)
 #define s390_mr(c, r1, r2)             S390_RR(c, 0x1c, r1, r2)
 #define s390_ms(c, r, x, b, d)         S390_RX(c, 0x71, r, x, b, d)
-#define s390_msi(c, r, v)              S390_RIL_1(c, 0xc21, r, v)
+#define s390_msfi(c, r, v)             S390_RIL_1(c, 0xc20, r, v)
+#define s390_msgfi(c, r, v)            S390_RIL_1(c, 0xc21, r, v)
 #define s390_msgfr(c, r1, r2)          S390_RRE(c, 0xb91c, r1, r2)
-#define s390_msgi(c, r, v)             S390_RIL_1(c, 0xc20, r, v)
 #define s390_msgr(c, r1, r2)           S390_RRE(c, 0xb90c, r1, r2)
+#define s390_msgrkc(c, r1, r2, r3)     S390_RRF_1(c, 0xb9ed, r1, r2, r3)
 #define s390_msr(c, r1, r2)            S390_RRE(c, 0xb252, r1, r2)
 #define s390_mvc(c, l, b1, d1, b2, d2) S390_SS_1(c, 0xd2, l, b1, d1, b2, d2)
 #define s390_mvcl(c, r1, r2)           S390_RR(c, 0x0e, r1, r2)
@@ -1421,6 +1432,7 @@ typedef struct {
 #define s390_sebr(c, r1, r2)           S390_RRE(c, 0xb30b, r1, r2)
 #define s390_sg(c, r, x, b, d)         S390_RXY(c, 0xe309, r, x, b, d)
 #define s390_sgf(c, r, x, b, d)                S390_RXY(c, 0xe319, r, x, b, d)
+#define s390_sgh(c, r, x, b, d)                S390_RXY(c, 0xe339, r, x, b, d)
 #define s390_sgr(c, r1, r2)            S390_RRE(c, 0xb909, r1, r2)
 #define s390_sgrk(c, r1, r2, r3)       S390_RRF_1(c, 0xb9e9, r1, r2, r3)
 #define s390_sl(c, r, x, b, d)         S390_RX(c, 0x5f, r, x, b, d)
@@ -1437,9 +1449,11 @@ typedef struct {
 #define s390_slgfr(c, r1, r2)          S390_RRE(c, 0xb91b, r1, r2)
 #define s390_slgfi(c, r, v)            S390_RIL_1(c, 0xc24, r, v)
 #define s390_slgr(c, r1, r2)           S390_RRE(c, 0xb90b, r1, r2)
+#define s390_slgrk(c, r1, r2, r3)      S390_RRF_1(c, 0xb9eb, r1, r2, r3)
 #define s390_sll(c, r, b, d)           S390_RS_3(c, 0x89, r, b, d) 
 #define s390_sllg(c, r1, r2, b, d)     S390_RSY_1(c, 0xeb0d, r1, r2, b, d) 
 #define s390_slr(c, r1, r2)            S390_RR(c, 0x1f, r1, r2)
+#define s390_slrk(c, r1, r2, r3)       S390_RRF_1(c, 0xb9fb, r1, r2, r3)
 #define s390_sqdbr(c, r1, r2)          S390_RRE(c, 0xb315, r1, r2)
 #define s390_sqebr(c, r1, r2)          S390_RRE(c, 0xb314, r1, r2)
 #define s390_sra(c, r, b, d)           S390_RS_3(c, 0x8a, r, b, d) 
@@ -1447,6 +1461,7 @@ typedef struct {
 #define s390_sr(c, r1, r2)             S390_RR(c, 0x1b, r1, r2)
 #define s390_srda(c, r, b, d)          S390_RS_3(c, 0x8e, r, b, d) 
 #define s390_srdl(c, r, b, d)          S390_RS_3(c, 0x8c, r, b, d) 
+#define s390_srk(c, r1, r2, r3)                S390_RRF_1(c, 0xb9f9, r1, r2, r3)
 #define s390_srl(c, r, b, d)           S390_RS_3(c, 0x88, r, b, d) 
 #define s390_srlg(c, r1, r2, b, d)     S390_RSY_1(c, 0xeb0c, r1, r2, b, d) 
 #define s390_st(c, r, x, b, d)         S390_RX(c, 0x50, r, x, b, d)
@@ -1461,6 +1476,7 @@ typedef struct {
 #define s390_stey(c, r, x, b, d)       S390_RXY(c, 0xed66, r, x, b, d)
 #define s390_stfpc(c, b, d)            S390_S(c, 0xb29c, b, d)
 #define s390_stg(c, r, x, b, d)                S390_RXY(c, 0xe324, r, x, b, d)
+#define s390_stgsc(c, r, x, b, d)      S390_RXY(c, 0xe349, r, x, b, d)
 #define s390_sth(c, r, x, b, d)                S390_RX(c, 0x40, r, x, b, d)
 #define s390_sthy(c, r, x, b, d)       S390_RXY(c, 0xe370, r, x, b, d)
 #define s390_stm(c, r1, r2, b, d)      S390_RS_1(c, 0x90, r1, r2, b, d)