diff --git a/gas/ChangeLog b/gas/ChangeLog
index f1c18aa546b..78fafb66155 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,23 @@
+2018-03-08  Jan Beulich  <jbeulich@suse.com>
+
+	* config/tc-i386.c (md_assemble): Extend SSE check conditional.
+	* testsuite/gas/i386/ilp32/x86-64-sse-check-none.d,
+	testsuite/gas/i386/ilp32/x86-64-sse-check-warn.d,
+	testsuite/gas/i386/ilp32/x86-64-sse-check.d,
+	testsuite/gas/i386/sse-check-none.d,
+	testsuite/gas/i386/sse-check-warn.d,
+	testsuite/gas/i386/x86-64-sse-check.d,
+	testsuite/gas/i386/x86-64-sse-check-none.d,
+	testsuite/gas/i386/x86-64-sse-check-warn.d: Refer to sse-check.d.
+	* testsuite/gas/i386/sse-check.s: Add AES, GFNI, and PCLMUL
+	tests.
+	* testsuite/gas/i386/sse-check-none.s: Replace code by inclusion
+	of sse-check.s.
+	* testsuite/gas/i386/sse-check.d: Adjust expectations.
+	* testsuite/gas/i386/sse-check-error.l,
+	testsuite/gas/i386/x86-64-sse-check-error.l: Likewise.
+	* testsuite/gas/i386/sse-check-warn.e: Likewise.
+
 2018-03-08  Jan Beulich  <jbeulich@suse.com>
 
 	* config/tc-i386.c (operand_size_match): Drop / replace uses of
diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index 16f11742e0a..4cf7b9daf53 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -4008,12 +4008,16 @@ md_assemble (char *line)
 
   if (sse_check != check_none
       && !i.tm.opcode_modifier.noavx
+      && !i.tm.cpu_flags.bitfield.cpuavx
       && (i.tm.cpu_flags.bitfield.cpusse
 	  || i.tm.cpu_flags.bitfield.cpusse2
 	  || i.tm.cpu_flags.bitfield.cpusse3
 	  || i.tm.cpu_flags.bitfield.cpussse3
 	  || i.tm.cpu_flags.bitfield.cpusse4_1
-	  || i.tm.cpu_flags.bitfield.cpusse4_2))
+	  || i.tm.cpu_flags.bitfield.cpusse4_2
+	  || i.tm.cpu_flags.bitfield.cpupclmul
+	  || i.tm.cpu_flags.bitfield.cpuaes
+	  || i.tm.cpu_flags.bitfield.cpugfni))
     {
       (sse_check == check_warning
        ? as_warn
diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-none.d b/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-none.d
index 7bef233c4e1..1d4f1db2fcb 100644
--- a/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-none.d
+++ b/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-none.d
@@ -1,17 +1,5 @@
 #source: ../sse-check-none.s
-#as: -msse-check=error
+#as: -msse-check=error -I${srcdir}/$subdir/..
 #objdump: -dw
 #name: x86-64 (ILP32) SSE check (.sse_check none)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: ../sse-check.d
diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-warn.d b/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-warn.d
index f315180b941..b5914883b94 100644
--- a/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-warn.d
+++ b/gas/testsuite/gas/i386/ilp32/x86-64-sse-check-warn.d
@@ -3,16 +3,4 @@
 #as: -msse-check=warning
 #objdump: -dw
 #name: x86-64 (ILP32) SSE check (warning)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: ../sse-check.d
diff --git a/gas/testsuite/gas/i386/ilp32/x86-64-sse-check.d b/gas/testsuite/gas/i386/ilp32/x86-64-sse-check.d
index a2f28892f61..f034f00a8ef 100644
--- a/gas/testsuite/gas/i386/ilp32/x86-64-sse-check.d
+++ b/gas/testsuite/gas/i386/ilp32/x86-64-sse-check.d
@@ -2,16 +2,4 @@
 #as: -msse-check=none
 #objdump: -dw
 #name: x86-64 (ILP32) SSE check (none)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: ../sse-check.d
diff --git a/gas/testsuite/gas/i386/sse-check-error.l b/gas/testsuite/gas/i386/sse-check-error.l
index 5df6d671385..3f78120d0b0 100644
--- a/gas/testsuite/gas/i386/sse-check-error.l
+++ b/gas/testsuite/gas/i386/sse-check-error.l
@@ -5,6 +5,9 @@
 .*:16: Error: .*
 .*:19: Error: .*
 .*:20: Error: .*
+.*:23: Error: .*
+.*:26: Error: .*
+.*:29: Error: .*
 GAS LISTING .*
 
 
@@ -38,3 +41,18 @@ GAS LISTING .*
 [ 	]*20[ 	]+\?\?\?\? 660F3837 		pcmpgtq %xmm1,%xmm0
 .*  Error: SSE instruction `pcmpgtq' is used
 [ 	]*20[ 	]+C1
+[ 	]*21[ 	]+
+[ 	]*22[ 	]+\# PCMUL instruction
+[ 	]*23[ 	]+\?\?\?\? 660F3A44 		pclmulqdq \$-1,%xmm1,%xmm2
+.*  Error: SSE instruction `pclmulqdq' is used
+[ 	]*23[ 	]+D1FF
+[ 	]*24[ 	]+
+[ 	]*25[ 	]+\# AES instructions
+[ 	]*26[ 	]+\?\?\?\? 660F38DE 		aesdec %xmm1,%xmm2
+.*  Error: SSE instruction `aesdec' is used
+[ 	]*26[ 	]+D1
+[ 	]*27[ 	]+
+[ 	]*28[ 	]+\# GFNI instructions
+[ 	]*29[ 	]+\?\?\?\? 660F38CF 		gf2p8mulb %xmm1,%xmm2
+.*  Error: SSE instruction `gf2p8mulb' is used
+[ 	]*29[ 	]+D1
diff --git a/gas/testsuite/gas/i386/sse-check-none.d b/gas/testsuite/gas/i386/sse-check-none.d
index 87189f616ec..19650709199 100644
--- a/gas/testsuite/gas/i386/sse-check-none.d
+++ b/gas/testsuite/gas/i386/sse-check-none.d
@@ -1,16 +1,4 @@
-#as: -msse-check=error
+#as: -msse-check=error -I${srcdir}/$subdir
 #objdump: -dw
 #name: i386 SSE check (.sse_check none)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: sse-check.d
diff --git a/gas/testsuite/gas/i386/sse-check-none.s b/gas/testsuite/gas/i386/sse-check-none.s
index 336dd9f7335..0af4972dac8 100644
--- a/gas/testsuite/gas/i386/sse-check-none.s
+++ b/gas/testsuite/gas/i386/sse-check-none.s
@@ -1,21 +1,4 @@
 # Check SSE instructions
 
 	.sse_check none
-	.text
-_start:
-
-# SSE instruction
-	addps %xmm2,%xmm1
-
-# SSE2 instruction
-	addpd %xmm2,%xmm1
-
-# SSE3 instruction
-	addsubpd %xmm2,%xmm1
-
-# SSSE3 instruction
-	phaddw %xmm2,%xmm1
-
-# SSE4 instructions
-	blendvpd %xmm0,%xmm1,%xmm0
-	pcmpgtq %xmm1,%xmm0
+	.include "sse-check.s"
diff --git a/gas/testsuite/gas/i386/sse-check-warn.d b/gas/testsuite/gas/i386/sse-check-warn.d
index 0b96b15f6f8..694310e5081 100644
--- a/gas/testsuite/gas/i386/sse-check-warn.d
+++ b/gas/testsuite/gas/i386/sse-check-warn.d
@@ -3,16 +3,4 @@
 #stderr: sse-check-warn.e
 #objdump: -dw
 #name: i386 SSE check (warning)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: sse-check.d
diff --git a/gas/testsuite/gas/i386/sse-check-warn.e b/gas/testsuite/gas/i386/sse-check-warn.e
index 26b2001a680..6498bc8f097 100644
--- a/gas/testsuite/gas/i386/sse-check-warn.e
+++ b/gas/testsuite/gas/i386/sse-check-warn.e
@@ -5,3 +5,6 @@
 .*:16: Warning: SSE instruction `phaddw' is used
 .*:19: Warning: SSE instruction `blendvpd' is used
 .*:20: Warning: SSE instruction `pcmpgtq' is used
+.*:23: Warning: SSE instruction `pclmulqdq' is used
+.*:26: Warning: SSE instruction `aesdec' is used
+.*:29: Warning: SSE instruction `gf2p8mulb' is used
diff --git a/gas/testsuite/gas/i386/sse-check.d b/gas/testsuite/gas/i386/sse-check.d
index 9329638c32b..67656ae19fe 100644
--- a/gas/testsuite/gas/i386/sse-check.d
+++ b/gas/testsuite/gas/i386/sse-check.d
@@ -13,4 +13,7 @@ Disassembly of section .text:
 [ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
 [ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
 [ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
+[ 	]*[a-f0-9]+:	66 0f 3a 44 d1 ff    	pclmulqdq \$0xff,%xmm1,%xmm2
+[ 	]*[a-f0-9]+:	66 0f 38 de d1       	aesdec %xmm1,%xmm2
+[ 	]*[a-f0-9]+:	66 0f 38 cf d1       	gf2p8mulb %xmm1,%xmm2
 #pass
diff --git a/gas/testsuite/gas/i386/sse-check.s b/gas/testsuite/gas/i386/sse-check.s
index 7e5d208247d..3ec1e560af4 100644
--- a/gas/testsuite/gas/i386/sse-check.s
+++ b/gas/testsuite/gas/i386/sse-check.s
@@ -18,3 +18,12 @@ _start:
 # SSE4 instructions
 	blendvpd %xmm0,%xmm1,%xmm0
 	pcmpgtq %xmm1,%xmm0
+
+# PCMUL instruction
+	pclmulqdq $-1,%xmm1,%xmm2
+
+# AES instructions
+	aesdec %xmm1,%xmm2
+
+# GFNI instructions
+	gf2p8mulb %xmm1,%xmm2
diff --git a/gas/testsuite/gas/i386/x86-64-sse-check-error.l b/gas/testsuite/gas/i386/x86-64-sse-check-error.l
index 5df6d671385..3f78120d0b0 100644
--- a/gas/testsuite/gas/i386/x86-64-sse-check-error.l
+++ b/gas/testsuite/gas/i386/x86-64-sse-check-error.l
@@ -5,6 +5,9 @@
 .*:16: Error: .*
 .*:19: Error: .*
 .*:20: Error: .*
+.*:23: Error: .*
+.*:26: Error: .*
+.*:29: Error: .*
 GAS LISTING .*
 
 
@@ -38,3 +41,18 @@ GAS LISTING .*
 [ 	]*20[ 	]+\?\?\?\? 660F3837 		pcmpgtq %xmm1,%xmm0
 .*  Error: SSE instruction `pcmpgtq' is used
 [ 	]*20[ 	]+C1
+[ 	]*21[ 	]+
+[ 	]*22[ 	]+\# PCMUL instruction
+[ 	]*23[ 	]+\?\?\?\? 660F3A44 		pclmulqdq \$-1,%xmm1,%xmm2
+.*  Error: SSE instruction `pclmulqdq' is used
+[ 	]*23[ 	]+D1FF
+[ 	]*24[ 	]+
+[ 	]*25[ 	]+\# AES instructions
+[ 	]*26[ 	]+\?\?\?\? 660F38DE 		aesdec %xmm1,%xmm2
+.*  Error: SSE instruction `aesdec' is used
+[ 	]*26[ 	]+D1
+[ 	]*27[ 	]+
+[ 	]*28[ 	]+\# GFNI instructions
+[ 	]*29[ 	]+\?\?\?\? 660F38CF 		gf2p8mulb %xmm1,%xmm2
+.*  Error: SSE instruction `gf2p8mulb' is used
+[ 	]*29[ 	]+D1
diff --git a/gas/testsuite/gas/i386/x86-64-sse-check-none.d b/gas/testsuite/gas/i386/x86-64-sse-check-none.d
index ef38d8a8ab7..f198573c3f7 100644
--- a/gas/testsuite/gas/i386/x86-64-sse-check-none.d
+++ b/gas/testsuite/gas/i386/x86-64-sse-check-none.d
@@ -1,17 +1,5 @@
 #source: sse-check-none.s
-#as: -msse-check=error
+#as: -msse-check=error -I${srcdir}/$subdir
 #objdump: -dw
 #name: x86-64 SSE check (.sse_check none)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: sse-check.d
diff --git a/gas/testsuite/gas/i386/x86-64-sse-check-warn.d b/gas/testsuite/gas/i386/x86-64-sse-check-warn.d
index 691185c34f7..8719815e080 100644
--- a/gas/testsuite/gas/i386/x86-64-sse-check-warn.d
+++ b/gas/testsuite/gas/i386/x86-64-sse-check-warn.d
@@ -3,16 +3,4 @@
 #stderr: sse-check-warn.e
 #objdump: -dw
 #name: x86-64 SSE check (warning)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: sse-check.d
diff --git a/gas/testsuite/gas/i386/x86-64-sse-check.d b/gas/testsuite/gas/i386/x86-64-sse-check.d
index 9ca0c79709a..a3dd0599e43 100644
--- a/gas/testsuite/gas/i386/x86-64-sse-check.d
+++ b/gas/testsuite/gas/i386/x86-64-sse-check.d
@@ -2,16 +2,4 @@
 #as: -msse-check=none
 #objdump: -dw
 #name: x86-64 SSE check (none)
-
-.*:     file format .*
-
-Disassembly of section .text:
-
-0+ <_start>:
-[ 	]*[a-f0-9]+:	0f 58 ca             	addps  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 58 ca          	addpd  %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f d0 ca          	addsubpd %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 01 ca       	phaddw %xmm2,%xmm1
-[ 	]*[a-f0-9]+:	66 0f 38 15 c1       	blendvpd %xmm0,%xmm1,%xmm0
-[ 	]*[a-f0-9]+:	66 0f 38 37 c1       	pcmpgtq %xmm1,%xmm0
-#pass
+#dump: sse-check.d