x86: SM4-NI VEX support

Add VEX-encoded SM4-NI instructions.

Signed-off-by: Tomasz Kantecki <tomasz.kantecki@intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
diff --git a/x86/iflags.ph b/x86/iflags.ph
index da53219..73a115f 100644
--- a/x86/iflags.ph
+++ b/x86/iflags.ph
@@ -114,6 +114,7 @@
 if_("SMAP",		 "Supervisor Mode Access Prevention (SMAP)");
 if_("SHA512",            "SHA512 instructions");
 if_("SM3",               "SM3 instructions");
+if_("SM4",               "SM4 instructions");
 
 # Put these last to minimize their relevance
 if_("OBSOLETE",          "Instruction removed from architecture");
diff --git a/x86/insns.dat b/x86/insns.dat
index 5d2b069..d40350e 100644
--- a/x86/insns.dat
+++ b/x86/insns.dat
@@ -3596,6 +3596,12 @@
 VSM3MSG2        xmmreg,xmmreg,xmmreg                [rvm: vex.nds.128.66.0f38.w0 da /r] SM3,AVX,FUTURE
 VSM3RNDS2       xmmreg,xmmreg,xmmreg,imm8           [rvmi: vex.nds.128.66.0f3a.w0 de /r ib] SM3,AVX,FUTURE
 
+;# SM4
+VSM4KEY4        xmmreg,xmmreg,xmmrm128              [rvm: vex.nds.128.f3.0f38.w0 da /r] SM4,AVX,FUTURE
+VSM4KEY4        ymmreg,ymmreg,ymmrm128              [rvm: vex.nds.256.f3.0f38.w0 da /r] SM4,AVX,FUTURE
+VSM4RNDS4       xmmreg,xmmreg,xmmrm128              [rvm: vex.nds.128.f2.0f38.w0 da /r] SM4,AVX,FUTURE
+VSM4RNDS4       ymmreg,ymmreg,ymmrm128              [rvm: vex.nds.256.f2.0f38.w0 da /r] SM4,AVX,FUTURE
+
 ;# AVX no exception conversions
 ; Must precede AVX-512 versions
 VBCSTNEBF16PS	xmmreg,mem16				[rm:	vex.128.f3.0f38.w0 b1 /r]	AVXNECONVERT,FUTURE,LATEVEX,SW