aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorHaochen Jiang <haochen.jiang@intel.com>2023-07-24 11:09:49 +0800
committerHaochen Jiang <haochen.jiang@intel.com>2023-07-27 20:52:25 +0800
commitc55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2 (patch)
tree1036380164aeffdde1e76bea6b76161d69d64eb0 /gas
parent3ac2eb94812e229843d4c799fc6702250e950310 (diff)
downloadgdb-c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2.zip
gdb-c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2.tar.gz
gdb-c55ba32b7a7a3cf2ba8a42310f1c3d0b090af3e2.tar.bz2
Support Intel SM3
gas/ChangeLog: * NEWS: Support Intel SM3. * config/tc-i386.c: Add sm3. * doc/c-i386.texi: Document .sm3. * testsuite/gas/i386/i386.exp: Run sm3 tests. * testsuite/gas/i386/x86-64.exp: Ditto. * testsuite/gas/i386/sm3-intel.d: New test. * testsuite/gas/i386/sm3.d: Ditto. * testsuite/gas/i386/sm3.s: Ditto. * testsuite/gas/i386/x86-64-sm3-intel.d: Ditto. * testsuite/gas/i386/x86-64-sm3.d: Ditto. * testsuite/gas/i386/x86-64-sm3.s: Ditto. opcodes/ChangeLog: * i386-dis.c (PREFIX_VEX_0F38DA_W_0): New. (VEX_LEN_0F38DA_W_0_P_0): Ditto. (VEX_LEN_0F38DA_W_0_P_2): Ditto. (VEX_LEN_0F3ADE_W_0): Ditto. (VEX_W_0F38DA): Ditto. (VEX_W_0F3ADE): Ditto. (prefix_table): Add PREFIX_VEX_0F38DA_W_0. (vex_len_table): Add VEX_LEN_0F38DA_W_0_P_0, VEX_LEN_0F38DA_W_0_P_2, VEX_LEN_0F3ADE_W_0. (vex_w_table): Add VEX_W_0F38DA, VEX_W_0F3ADE. * i386-gen.c (isa_dependencies): Add SM3. (cpu_flags): Ditto. * i386-init.h: Regenerated. * i386-mnem.h: Ditto. * i386-opc.h (CpuSM3): New. (i386_cpu_flags): Add cpusm3. * i386-opc.tbl: Add SM3 instructions. * i386-tbl.h: Regenerated.
Diffstat (limited to 'gas')
-rw-r--r--gas/NEWS2
-rw-r--r--gas/config/tc-i386.c1
-rw-r--r--gas/doc/c-i386.texi3
-rw-r--r--gas/testsuite/gas/i386/i386.exp2
-rw-r--r--gas/testsuite/gas/i386/sm3-intel.d27
-rw-r--r--gas/testsuite/gas/i386/sm3.d27
-rw-r--r--gas/testsuite/gas/i386/sm3.s24
-rw-r--r--gas/testsuite/gas/i386/x86-64-sm3-intel.d27
-rw-r--r--gas/testsuite/gas/i386/x86-64-sm3.d27
-rw-r--r--gas/testsuite/gas/i386/x86-64-sm3.s24
-rw-r--r--gas/testsuite/gas/i386/x86-64.exp2
11 files changed, 165 insertions, 1 deletions
diff --git a/gas/NEWS b/gas/NEWS
index fe2c055..42bda65 100644
--- a/gas/NEWS
+++ b/gas/NEWS
@@ -1,5 +1,7 @@
-*- text -*-
+* Add support for Intel SM3 instructions.
+
* Add support for Intel SHA512 instructions.
* Add support for Intel AVX-VNNI-INT16 instructions.
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 836640d..7424fa4 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -1153,6 +1153,7 @@ static const arch_entry cpu_arch[] =
SUBARCH (lkgs, LKGS, ANY_LKGS, false),
SUBARCH (avx_vnni_int16, AVX_VNNI_INT16, ANY_AVX_VNNI_INT16, false),
SUBARCH (sha512, SHA512, ANY_SHA512, false),
+ SUBARCH (sm3, SM3, ANY_SM3, false),
};
#undef SUBARCH
diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi
index 21fb71e..6ef1da2 100644
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -209,6 +209,7 @@ accept various extension mnemonics. For example,
@code{lkgs},
@code{avx_vnni_int16},
@code{sha512},
+@code{sm3},
@code{amx_int8},
@code{amx_bf16},
@code{amx_fp16},
@@ -1638,7 +1639,7 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
@item @samp{.prefetchi} @tab @samp{.avx_ifma} @tab @samp{.avx_vnni_int8}
@item @samp{.cmpccxadd} @tab @samp{.wrmsrns} @tab @samp{.msrlist}
@item @samp{.avx_ne_convert} @tab @samp{.rao_int} @tab @samp{.fred} @tab @samp{.lkgs}
-@item @samp{.avx_vnni_int16} @tab @samp{.sha512}
+@item @samp{.avx_vnni_int16} @tab @samp{.sha512} @tab @samp{.sm3}
@item @samp{.wbnoinvd} @tab @samp{.pconfig} @tab @samp{.waitpkg} @tab @samp{.cldemote}
@item @samp{.shstk} @tab @samp{.gfni} @tab @samp{.vaes} @tab @samp{.vpclmulqdq}
@item @samp{.movdiri} @tab @samp{.movdir64b} @tab @samp{.enqcmd} @tab @samp{.tsxldtrk}
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 1208d53..2fcd3be 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -501,6 +501,8 @@ if [gas_32_check] then {
run_dump_test "sha512"
run_dump_test "sha512-intel"
run_list_test "sha512-inval"
+ run_dump_test "sm3"
+ run_dump_test "sm3-intel"
run_list_test "sg"
run_dump_test "clzero"
run_dump_test "invlpgb"
diff --git a/gas/testsuite/gas/i386/sm3-intel.d b/gas/testsuite/gas/i386/sm3-intel.d
new file mode 100644
index 0000000..4366161
--- /dev/null
+++ b/gas/testsuite/gas/i386/sm3-intel.d
@@ -0,0 +1,27 @@
+#objdump: -dw -Mintel
+#name: i386 SM3 insns (Intel disassembly)
+#source: sm3.s
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*c4 e2 50 da f4\s+vsm3msg1 xmm6,xmm5,xmm4
+\s*[a-f0-9]+:\s*c4 e2 50 da b4 f4 00 00 00 10\s+vsm3msg1 xmm6,xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 e2 50 da 31\s+vsm3msg1 xmm6,xmm5,XMMWORD PTR \[ecx\]
+\s*[a-f0-9]+:\s*c4 e2 51 da f4\s+vsm3msg2 xmm6,xmm5,xmm4
+\s*[a-f0-9]+:\s*c4 e2 51 da b4 f4 00 00 00 10\s+vsm3msg2 xmm6,xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 e2 51 da 31\s+vsm3msg2 xmm6,xmm5,XMMWORD PTR \[ecx\]
+\s*[a-f0-9]+:\s*c4 e3 51 de f4 7b\s+vsm3rnds2 xmm6,xmm5,xmm4,0x7b
+\s*[a-f0-9]+:\s*c4 e3 51 de b4 f4 00 00 00 10 7b\s+vsm3rnds2 xmm6,xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b
+\s*[a-f0-9]+:\s*c4 e3 51 de 31 7b\s+vsm3rnds2 xmm6,xmm5,XMMWORD PTR \[ecx\],0x7b
+\s*[a-f0-9]+:\s*c4 e2 50 da f4\s+vsm3msg1 xmm6,xmm5,xmm4
+\s*[a-f0-9]+:\s*c4 e2 50 da b4 f4 00 00 00 10\s+vsm3msg1 xmm6,xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 e2 50 da 31\s+vsm3msg1 xmm6,xmm5,XMMWORD PTR \[ecx\]
+\s*[a-f0-9]+:\s*c4 e2 51 da f4\s+vsm3msg2 xmm6,xmm5,xmm4
+\s*[a-f0-9]+:\s*c4 e2 51 da b4 f4 00 00 00 10\s+vsm3msg2 xmm6,xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 e2 51 da 31\s+vsm3msg2 xmm6,xmm5,XMMWORD PTR \[ecx\]
+\s*[a-f0-9]+:\s*c4 e3 51 de f4 7b\s+vsm3rnds2 xmm6,xmm5,xmm4,0x7b
+\s*[a-f0-9]+:\s*c4 e3 51 de b4 f4 00 00 00 10 7b\s+vsm3rnds2 xmm6,xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b
+\s*[a-f0-9]+:\s*c4 e3 51 de 31 7b\s+vsm3rnds2 xmm6,xmm5,XMMWORD PTR \[ecx\],0x7b
diff --git a/gas/testsuite/gas/i386/sm3.d b/gas/testsuite/gas/i386/sm3.d
new file mode 100644
index 0000000..42c2a46
--- /dev/null
+++ b/gas/testsuite/gas/i386/sm3.d
@@ -0,0 +1,27 @@
+#objdump: -dw
+#name: i386 SM3 insns
+#source: sm3.s
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*c4 e2 50 da f4\s+vsm3msg1 %xmm4,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 50 da b4 f4 00 00 00 10\s+vsm3msg1 0x10000000\(%esp,%esi,8\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 50 da 31\s+vsm3msg1 \(%ecx\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 51 da f4\s+vsm3msg2 %xmm4,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 51 da b4 f4 00 00 00 10\s+vsm3msg2 0x10000000\(%esp,%esi,8\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 51 da 31\s+vsm3msg2 \(%ecx\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e3 51 de f4 7b\s+vsm3rnds2 \$0x7b,%xmm4,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e3 51 de b4 f4 00 00 00 10 7b\s+vsm3rnds2 \$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e3 51 de 31 7b\s+vsm3rnds2 \$0x7b,\(%ecx\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 50 da f4\s+vsm3msg1 %xmm4,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 50 da b4 f4 00 00 00 10\s+vsm3msg1 0x10000000\(%esp,%esi,8\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 50 da 31\s+vsm3msg1 \(%ecx\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 51 da f4\s+vsm3msg2 %xmm4,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 51 da b4 f4 00 00 00 10\s+vsm3msg2 0x10000000\(%esp,%esi,8\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e2 51 da 31\s+vsm3msg2 \(%ecx\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e3 51 de f4 7b\s+vsm3rnds2 \$0x7b,%xmm4,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e3 51 de b4 f4 00 00 00 10 7b\s+vsm3rnds2 \$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 e3 51 de 31 7b\s+vsm3rnds2 \$0x7b,\(%ecx\),%xmm5,%xmm6
diff --git a/gas/testsuite/gas/i386/sm3.s b/gas/testsuite/gas/i386/sm3.s
new file mode 100644
index 0000000..97dbd73
--- /dev/null
+++ b/gas/testsuite/gas/i386/sm3.s
@@ -0,0 +1,24 @@
+# Check 32bit SM3 instructions
+
+ .text
+_start:
+ vsm3msg1 %xmm4, %xmm5, %xmm6 #SM3
+ vsm3msg1 0x10000000(%esp, %esi, 8), %xmm5, %xmm6 #SM3
+ vsm3msg1 (%ecx), %xmm5, %xmm6 #SM3
+ vsm3msg2 %xmm4, %xmm5, %xmm6 #SM3
+ vsm3msg2 0x10000000(%esp, %esi, 8), %xmm5, %xmm6 #SM3
+ vsm3msg2 (%ecx), %xmm5, %xmm6 #SM3
+ vsm3rnds2 $123, %xmm4, %xmm5, %xmm6 #SM3
+ vsm3rnds2 $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6 #SM3
+ vsm3rnds2 $123, (%ecx), %xmm5, %xmm6 #SM3
+
+ .intel_syntax noprefix
+ vsm3msg1 xmm6, xmm5, xmm4 #SM3
+ vsm3msg1 xmm6, xmm5, XMMWORD PTR [esp+esi*8+0x10000000] #SM3
+ vsm3msg1 xmm6, xmm5, XMMWORD PTR [ecx] #SM3
+ vsm3msg2 xmm6, xmm5, xmm4 #SM3
+ vsm3msg2 xmm6, xmm5, XMMWORD PTR [esp+esi*8+0x10000000] #SM3
+ vsm3msg2 xmm6, xmm5, XMMWORD PTR [ecx] #SM3
+ vsm3rnds2 xmm6, xmm5, xmm4, 123 #SM3
+ vsm3rnds2 xmm6, xmm5, XMMWORD PTR [esp+esi*8+0x10000000], 123 #SM3
+ vsm3rnds2 xmm6, xmm5, XMMWORD PTR [ecx], 123 #SM3
diff --git a/gas/testsuite/gas/i386/x86-64-sm3-intel.d b/gas/testsuite/gas/i386/x86-64-sm3-intel.d
new file mode 100644
index 0000000..20a633d
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-sm3-intel.d
@@ -0,0 +1,27 @@
+#objdump: -dw -Mintel
+#name: x86_64 SM3 insns (Intel disassembly)
+#source: x86-64-sm3.s
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*c4 c2 50 da f6\s+vsm3msg1 xmm6,xmm5,xmm14
+\s*[a-f0-9]+:\s*c4 a2 00 da b4 f5 00 00 00 10\s+vsm3msg1 xmm6,xmm15,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 c2 00 da 31\s+vsm3msg1 xmm6,xmm15,XMMWORD PTR \[r9\]
+\s*[a-f0-9]+:\s*c4 c2 51 da f6\s+vsm3msg2 xmm6,xmm5,xmm14
+\s*[a-f0-9]+:\s*c4 a2 01 da b4 f5 00 00 00 10\s+vsm3msg2 xmm6,xmm15,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 c2 01 da 31\s+vsm3msg2 xmm6,xmm15,XMMWORD PTR \[r9\]
+\s*[a-f0-9]+:\s*c4 c3 51 de f6 7b\s+vsm3rnds2 xmm6,xmm5,xmm14,0x7b
+\s*[a-f0-9]+:\s*c4 a3 01 de b4 f5 00 00 00 10 7b\s+vsm3rnds2 xmm6,xmm15,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b
+\s*[a-f0-9]+:\s*c4 c3 01 de 31 7b\s+vsm3rnds2 xmm6,xmm15,XMMWORD PTR \[r9\],0x7b
+\s*[a-f0-9]+:\s*c4 c2 50 da f6\s+vsm3msg1 xmm6,xmm5,xmm14
+\s*[a-f0-9]+:\s*c4 a2 00 da b4 f5 00 00 00 10\s+vsm3msg1 xmm6,xmm15,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 c2 00 da 31\s+vsm3msg1 xmm6,xmm15,XMMWORD PTR \[r9\]
+\s*[a-f0-9]+:\s*c4 c2 51 da f6\s+vsm3msg2 xmm6,xmm5,xmm14
+\s*[a-f0-9]+:\s*c4 a2 01 da b4 f5 00 00 00 10\s+vsm3msg2 xmm6,xmm15,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\]
+\s*[a-f0-9]+:\s*c4 c2 01 da 31\s+vsm3msg2 xmm6,xmm15,XMMWORD PTR \[r9\]
+\s*[a-f0-9]+:\s*c4 c3 51 de f6 7b\s+vsm3rnds2 xmm6,xmm5,xmm14,0x7b
+\s*[a-f0-9]+:\s*c4 a3 01 de b4 f5 00 00 00 10 7b\s+vsm3rnds2 xmm6,xmm15,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b
+\s*[a-f0-9]+:\s*c4 c3 01 de 31 7b\s+vsm3rnds2 xmm6,xmm15,XMMWORD PTR \[r9\],0x7b
diff --git a/gas/testsuite/gas/i386/x86-64-sm3.d b/gas/testsuite/gas/i386/x86-64-sm3.d
new file mode 100644
index 0000000..f161172
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-sm3.d
@@ -0,0 +1,27 @@
+#objdump: -dw
+#name: x86_64 SM3 insns
+#source: x86-64-sm3.s
+
+.*: +file format .*
+
+Disassembly of section \.text:
+
+0+ <_start>:
+\s*[a-f0-9]+:\s*c4 c2 50 da f6\s+vsm3msg1 %xmm14,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 a2 00 da b4 f5 00 00 00 10\s+vsm3msg1 0x10000000\(%rbp,%r14,8\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 00 da 31\s+vsm3msg1 \(%r9\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 51 da f6\s+vsm3msg2 %xmm14,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 a2 01 da b4 f5 00 00 00 10\s+vsm3msg2 0x10000000\(%rbp,%r14,8\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 01 da 31\s+vsm3msg2 \(%r9\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c3 51 de f6 7b\s+vsm3rnds2 \$0x7b,%xmm14,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 a3 01 de b4 f5 00 00 00 10 7b\s+vsm3rnds2 \$0x7b,0x10000000\(%rbp,%r14,8\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c3 01 de 31 7b\s+vsm3rnds2 \$0x7b,\(%r9\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 50 da f6\s+vsm3msg1 %xmm14,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 a2 00 da b4 f5 00 00 00 10\s+vsm3msg1 0x10000000\(%rbp,%r14,8\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 00 da 31\s+vsm3msg1 \(%r9\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 51 da f6\s+vsm3msg2 %xmm14,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 a2 01 da b4 f5 00 00 00 10\s+vsm3msg2 0x10000000\(%rbp,%r14,8\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c2 01 da 31\s+vsm3msg2 \(%r9\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c3 51 de f6 7b\s+vsm3rnds2 \$0x7b,%xmm14,%xmm5,%xmm6
+\s*[a-f0-9]+:\s*c4 a3 01 de b4 f5 00 00 00 10 7b\s+vsm3rnds2 \$0x7b,0x10000000\(%rbp,%r14,8\),%xmm15,%xmm6
+\s*[a-f0-9]+:\s*c4 c3 01 de 31 7b\s+vsm3rnds2 \$0x7b,\(%r9\),%xmm15,%xmm6
diff --git a/gas/testsuite/gas/i386/x86-64-sm3.s b/gas/testsuite/gas/i386/x86-64-sm3.s
new file mode 100644
index 0000000..ba1ae4b
--- /dev/null
+++ b/gas/testsuite/gas/i386/x86-64-sm3.s
@@ -0,0 +1,24 @@
+# Check 64bit SM3 instructions
+
+ .text
+_start:
+ vsm3msg1 %xmm14, %xmm5, %xmm6 #SM3
+ vsm3msg1 0x10000000(%rbp, %r14, 8), %xmm15, %xmm6 #SM3
+ vsm3msg1 (%r9), %xmm15, %xmm6 #SM3
+ vsm3msg2 %xmm14, %xmm5, %xmm6 #SM3
+ vsm3msg2 0x10000000(%rbp, %r14, 8), %xmm15, %xmm6 #SM3
+ vsm3msg2 (%r9), %xmm15, %xmm6 #SM3
+ vsm3rnds2 $123, %xmm14, %xmm5, %xmm6 #SM3
+ vsm3rnds2 $123, 0x10000000(%rbp, %r14, 8), %xmm15, %xmm6 #SM3
+ vsm3rnds2 $123, (%r9), %xmm15, %xmm6 #SM3
+
+ .intel_syntax noprefix
+ vsm3msg1 xmm6, xmm5, xmm14 #SM3
+ vsm3msg1 xmm6, xmm15, XMMWORD PTR [rbp+r14*8+0x10000000] #SM3
+ vsm3msg1 xmm6, xmm15, XMMWORD PTR [r9] #SM3
+ vsm3msg2 xmm6, xmm5, xmm14 #SM3
+ vsm3msg2 xmm6, xmm15, XMMWORD PTR [rbp+r14*8+0x10000000] #SM3
+ vsm3msg2 xmm6, xmm15, XMMWORD PTR [r9] #SM3
+ vsm3rnds2 xmm6, xmm5, xmm14, 123 #SM3
+ vsm3rnds2 xmm6, xmm15, XMMWORD PTR [rbp+r14*8+0x10000000], 123 #SM3
+ vsm3rnds2 xmm6, xmm15, XMMWORD PTR [r9], 123 #SM3
diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp
index 289691f..ec3d6dc 100644
--- a/gas/testsuite/gas/i386/x86-64.exp
+++ b/gas/testsuite/gas/i386/x86-64.exp
@@ -444,6 +444,8 @@ run_dump_test "x86-64-avx-vnni-int16-intel"
run_dump_test "x86-64-sha512"
run_dump_test "x86-64-sha512-intel"
run_list_test "x86-64-sha512-inval"
+run_dump_test "x86-64-sm3"
+run_dump_test "x86-64-sm3-intel"
run_dump_test "x86-64-clzero"
run_dump_test "x86-64-mwaitx-bdver4"
run_list_test "x86-64-mwaitx-reg"