-#define M_ZAP(a,b,c,const) M_OP3 (0x12,0x30, a,b,c,const)
-#define M_ZAPNOT(a,b,c,const) M_OP3 (0x12,0x31, a,b,c,const)
-
-#define M_BZEXT(a,b) M_ZAPNOT(a, 0x01, b, CONST) /* 8 zeroext */
-#define M_CZEXT(a,b) M_ZAPNOT(a, 0x03, b, CONST) /* 16 zeroext */
-#define M_IZEXT(a,b) M_ZAPNOT(a, 0x0f, b, CONST) /* 32 zeroext */
-
-#define M_EXTBL(a,b,c,const) M_OP3 (0x12,0x06, a,b,c,const)
-#define M_EXTWL(a,b,c,const) M_OP3 (0x12,0x16, a,b,c,const)
-#define M_EXTLL(a,b,c,const) M_OP3 (0x12,0x26, a,b,c,const)
-#define M_EXTQL(a,b,c,const) M_OP3 (0x12,0x36, a,b,c,const)
-#define M_EXTWH(a,b,c,const) M_OP3 (0x12,0x5a, a,b,c,const)
-#define M_EXTLH(a,b,c,const) M_OP3 (0x12,0x6a, a,b,c,const)
-#define M_EXTQH(a,b,c,const) M_OP3 (0x12,0x7a, a,b,c,const)
-#define M_INSBL(a,b,c,const) M_OP3 (0x12,0x0b, a,b,c,const)
-#define M_INSWL(a,b,c,const) M_OP3 (0x12,0x1b, a,b,c,const)
-#define M_INSLL(a,b,c,const) M_OP3 (0x12,0x2b, a,b,c,const)
-#define M_INSQL(a,b,c,const) M_OP3 (0x12,0x3b, a,b,c,const)
-#define M_INSWH(a,b,c,const) M_OP3 (0x12,0x57, a,b,c,const)
-#define M_INSLH(a,b,c,const) M_OP3 (0x12,0x67, a,b,c,const)
-#define M_INSQH(a,b,c,const) M_OP3 (0x12,0x77, a,b,c,const)
-#define M_MSKBL(a,b,c,const) M_OP3 (0x12,0x02, a,b,c,const)
-#define M_MSKWL(a,b,c,const) M_OP3 (0x12,0x12, a,b,c,const)
-#define M_MSKLL(a,b,c,const) M_OP3 (0x12,0x22, a,b,c,const)
-#define M_MSKQL(a,b,c,const) M_OP3 (0x12,0x32, a,b,c,const)
-#define M_MSKWH(a,b,c,const) M_OP3 (0x12,0x52, a,b,c,const)
-#define M_MSKLH(a,b,c,const) M_OP3 (0x12,0x62, a,b,c,const)
-#define M_MSKQH(a,b,c,const) M_OP3 (0x12,0x72, a,b,c,const)
-
-#define M_UMULH(a,b,c,const) M_OP3 (0x13,0x30, a,b,c,const) /* 64 umulh */
+#define M_ZAP(a,b,c) M_OP3 (0x12,0x30, a,b,c,0)
+#define M_ZAPNOT(a,b,c) M_OP3 (0x12,0x31, a,b,c,0)
+
+#define M_ZAP_IMM(a,b,c) M_OP3 (0x12,0x30, a,b,c,1)
+#define M_ZAPNOT_IMM(a,b,c) M_OP3 (0x12,0x31, a,b,c,1)
+
+#define M_BZEXT(a,b) M_ZAPNOT_IMM(a, 0x01, b) /* 8 zeroext */
+#define M_CZEXT(a,b) M_ZAPNOT_IMM(a, 0x03, b) /* 16 zeroext */
+#define M_IZEXT(a,b) M_ZAPNOT_IMM(a, 0x0f, b) /* 32 zeroext */
+
+#define M_EXTBL(a,b,c) M_OP3 (0x12,0x06, a,b,c,0)
+#define M_EXTWL(a,b,c) M_OP3 (0x12,0x16, a,b,c,0)
+#define M_EXTLL(a,b,c) M_OP3 (0x12,0x26, a,b,c,0)
+#define M_EXTQL(a,b,c) M_OP3 (0x12,0x36, a,b,c,0)
+#define M_EXTWH(a,b,c) M_OP3 (0x12,0x5a, a,b,c,0)
+#define M_EXTLH(a,b,c) M_OP3 (0x12,0x6a, a,b,c,0)
+#define M_EXTQH(a,b,c) M_OP3 (0x12,0x7a, a,b,c,0)
+#define M_INSBL(a,b,c) M_OP3 (0x12,0x0b, a,b,c,0)
+#define M_INSWL(a,b,c) M_OP3 (0x12,0x1b, a,b,c,0)
+#define M_INSLL(a,b,c) M_OP3 (0x12,0x2b, a,b,c,0)
+#define M_INSQL(a,b,c) M_OP3 (0x12,0x3b, a,b,c,0)
+#define M_INSWH(a,b,c) M_OP3 (0x12,0x57, a,b,c,0)
+#define M_INSLH(a,b,c) M_OP3 (0x12,0x67, a,b,c,0)
+#define M_INSQH(a,b,c) M_OP3 (0x12,0x77, a,b,c,0)
+#define M_MSKBL(a,b,c) M_OP3 (0x12,0x02, a,b,c,0)
+#define M_MSKWL(a,b,c) M_OP3 (0x12,0x12, a,b,c,0)
+#define M_MSKLL(a,b,c) M_OP3 (0x12,0x22, a,b,c,0)
+#define M_MSKQL(a,b,c) M_OP3 (0x12,0x32, a,b,c,0)
+#define M_MSKWH(a,b,c) M_OP3 (0x12,0x52, a,b,c,0)
+#define M_MSKLH(a,b,c) M_OP3 (0x12,0x62, a,b,c,0)
+#define M_MSKQH(a,b,c) M_OP3 (0x12,0x72, a,b,c,0)
+
+#define M_EXTBL_IMM(a,b,c) M_OP3 (0x12,0x06, a,b,c,1)
+#define M_EXTWL_IMM(a,b,c) M_OP3 (0x12,0x16, a,b,c,1)
+#define M_EXTLL_IMM(a,b,c) M_OP3 (0x12,0x26, a,b,c,1)
+#define M_EXTQL_IMM(a,b,c) M_OP3 (0x12,0x36, a,b,c,1)
+#define M_EXTWH_IMM(a,b,c) M_OP3 (0x12,0x5a, a,b,c,1)
+#define M_EXTLH_IMM(a,b,c) M_OP3 (0x12,0x6a, a,b,c,1)
+#define M_EXTQH_IMM(a,b,c) M_OP3 (0x12,0x7a, a,b,c,1)
+#define M_INSBL_IMM(a,b,c) M_OP3 (0x12,0x0b, a,b,c,1)
+#define M_INSWL_IMM(a,b,c) M_OP3 (0x12,0x1b, a,b,c,1)
+#define M_INSLL_IMM(a,b,c) M_OP3 (0x12,0x2b, a,b,c,1)
+#define M_INSQL_IMM(a,b,c) M_OP3 (0x12,0x3b, a,b,c,1)
+#define M_INSWH_IMM(a,b,c) M_OP3 (0x12,0x57, a,b,c,1)
+#define M_INSLH_IMM(a,b,c) M_OP3 (0x12,0x67, a,b,c,1)
+#define M_INSQH_IMM(a,b,c) M_OP3 (0x12,0x77, a,b,c,1)
+#define M_MSKBL_IMM(a,b,c) M_OP3 (0x12,0x02, a,b,c,1)
+#define M_MSKWL_IMM(a,b,c) M_OP3 (0x12,0x12, a,b,c,1)
+#define M_MSKLL_IMM(a,b,c) M_OP3 (0x12,0x22, a,b,c,1)
+#define M_MSKQL_IMM(a,b,c) M_OP3 (0x12,0x32, a,b,c,1)
+#define M_MSKWH_IMM(a,b,c) M_OP3 (0x12,0x52, a,b,c,1)
+#define M_MSKLH_IMM(a,b,c) M_OP3 (0x12,0x62, a,b,c,1)
+#define M_MSKQH_IMM(a,b,c) M_OP3 (0x12,0x72, a,b,c,1)
+
+#define M_UMULH(a,b,c) M_OP3 (0x13,0x30, a,b,c,0) /* 64 umulh */
+
+#define M_UMULH_IMM(a,b,c) M_OP3 (0x13,0x30, a,b,c,1) /* 64 umulh */
+
+#define M_CMOVEQ(a,b,c) M_OP3 (0x11,0x24, a,b,c,0) /* a==0 ? c=b */
+#define M_CMOVNE(a,b,c) M_OP3 (0x11,0x26, a,b,c,0) /* a!=0 ? c=b */
+#define M_CMOVLT(a,b,c) M_OP3 (0x11,0x44, a,b,c,0) /* a< 0 ? c=b */
+#define M_CMOVGE(a,b,c) M_OP3 (0x11,0x46, a,b,c,0) /* a>=0 ? c=b */
+#define M_CMOVLE(a,b,c) M_OP3 (0x11,0x64, a,b,c,0) /* a<=0 ? c=b */
+#define M_CMOVGT(a,b,c) M_OP3 (0x11,0x66, a,b,c,0) /* a> 0 ? c=b */
+
+#define M_CMOVEQ_IMM(a,b,c) M_OP3 (0x11,0x24, a,b,c,1) /* a==0 ? c=b */
+#define M_CMOVNE_IMM(a,b,c) M_OP3 (0x11,0x26, a,b,c,1) /* a!=0 ? c=b */
+#define M_CMOVLT_IMM(a,b,c) M_OP3 (0x11,0x44, a,b,c,1) /* a< 0 ? c=b */
+#define M_CMOVGE_IMM(a,b,c) M_OP3 (0x11,0x46, a,b,c,1) /* a>=0 ? c=b */
+#define M_CMOVLE_IMM(a,b,c) M_OP3 (0x11,0x64, a,b,c,1) /* a<=0 ? c=b */
+#define M_CMOVGT_IMM(a,b,c) M_OP3 (0x11,0x66, a,b,c,1) /* a> 0 ? c=b */