(s390_host_hwcaps & (VEX_HWCAPS_S390X_ETF2))
#define s390_host_has_stfle \
(s390_host_hwcaps & (VEX_HWCAPS_S390X_STFLE))
+#define s390_host_has_etf3 \
+ (s390_host_hwcaps & (VEX_HWCAPS_S390X_ETF3))
#endif /* ndef __VEX_HOST_S390_DEFS_H */
{ "fgx" },
{ "stfle" },
{ "etf2" },
+ { "etf3" },
};
static HChar buf[sizeof facilities + sizeof prefix + 1];
static HChar *p;
p = p + vex_sprintf(p, "-%s", facilities[5]);
if (hwcaps & VEX_HWCAPS_S390X_ETF2)
p = p + vex_sprintf(p, "-%s", facilities[6]);
+ if (hwcaps & VEX_HWCAPS_S390X_ETF3)
+ p = p + vex_sprintf(p, "-%s", facilities[7]);
/* If there are no facilities, add "zarch" */
if (hwcaps == 0)
#define VEX_HWCAPS_S390X_FGX (1<<10) /* FPR-GR transfer facility */
#define VEX_HWCAPS_S390X_ETF2 (1<<11) /* ETF2-enhancement facility */
#define VEX_HWCAPS_S390X_STFLE (1<<12) /* STFLE facility */
+#define VEX_HWCAPS_S390X_ETF3 (1<<13) /* ETF3-enhancement facility */
/* Special value representing all available s390x hwcaps */
#define VEX_HWCAPS_S390X_ALL (VEX_HWCAPS_S390X_LDISP | \
VEX_HWCAPS_S390X_DFP | \
VEX_HWCAPS_S390X_FGX | \
VEX_HWCAPS_S390X_STFLE | \
+ VEX_HWCAPS_S390X_ETF3 | \
VEX_HWCAPS_S390X_ETF2)
#define VEX_HWCAPS_S390X(x) ((x) & ~VEX_S390X_MODEL_MASK)