aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzabolcs Nagy <szabolcs.nagy@arm.com>2016-11-11 10:14:31 +0000
committerSzabolcs Nagy <szabolcs.nagy@arm.com>2016-11-11 10:14:31 +0000
commitfa09f4ea584e1bc33036e9ef82142db92b31da7c (patch)
tree1fec5c9053555599e92f6697067006ad7c3038b2
parent7103ad7639b7ed80bec170404185a8e39079446b (diff)
downloadgdb-fa09f4ea584e1bc33036e9ef82142db92b31da7c.zip
gdb-fa09f4ea584e1bc33036e9ef82142db92b31da7c.tar.gz
gdb-fa09f4ea584e1bc33036e9ef82142db92b31da7c.tar.bz2
[AArch64] Fix feature dependencies for +simd and +crypto
According to the gas manual, +simd implies +fp and +crypto implies +simd. Make sure +nofp turns +simd, +crypto and +fp16 off. gas/ 2016-11-07 Szabolcs Nagy <szabolcs.nagy@arm.com> * config/tc-aarch64.c (aarch64_features): Fix "simd" and "crypto". * testsuite/gas/aarch64/illegal-crypto-nofp.d: New. * testsuite/gas/aarch64/illegal-crypto-nofp.l: New. * testsuite/gas/aarch64/illegal-fp16-nofp.d: New. * testsuite/gas/aarch64/illegal-fp16-nofp.l: New. * testsuite/gas/aarch64/illegal-fp16-nofp.s: New.
-rw-r--r--gas/ChangeLog9
-rw-r--r--gas/config/tc-aarch64.c4
-rw-r--r--gas/testsuite/gas/aarch64/illegal-crypto-nofp.d3
-rw-r--r--gas/testsuite/gas/aarch64/illegal-crypto-nofp.l19
-rw-r--r--gas/testsuite/gas/aarch64/illegal-fp16-nofp.d2
-rw-r--r--gas/testsuite/gas/aarch64/illegal-fp16-nofp.l6
-rw-r--r--gas/testsuite/gas/aarch64/illegal-fp16-nofp.s7
7 files changed, 48 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 2381ed7..8904f5d 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,12 @@
+2016-11-11 Szabolcs Nagy <szabolcs.nagy@arm.com>
+
+ * config/tc-aarch64.c (aarch64_features): Fix "simd" and "crypto".
+ * testsuite/gas/aarch64/illegal-crypto-nofp.d: New.
+ * testsuite/gas/aarch64/illegal-crypto-nofp.l: New.
+ * testsuite/gas/aarch64/illegal-fp16-nofp.d: New.
+ * testsuite/gas/aarch64/illegal-fp16-nofp.l: New.
+ * testsuite/gas/aarch64/illegal-fp16-nofp.s: New.
+
2016-11-09 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/20799
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index 0d638e7..4a55bec 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -8389,13 +8389,13 @@ static const struct aarch64_option_cpu_value_table aarch64_features[] = {
{"crc", AARCH64_FEATURE (AARCH64_FEATURE_CRC, 0),
AARCH64_ARCH_NONE},
{"crypto", AARCH64_FEATURE (AARCH64_FEATURE_CRYPTO, 0),
- AARCH64_ARCH_NONE},
+ AARCH64_FEATURE (AARCH64_FEATURE_SIMD, 0)},
{"fp", AARCH64_FEATURE (AARCH64_FEATURE_FP, 0),
AARCH64_ARCH_NONE},
{"lse", AARCH64_FEATURE (AARCH64_FEATURE_LSE, 0),
AARCH64_ARCH_NONE},
{"simd", AARCH64_FEATURE (AARCH64_FEATURE_SIMD, 0),
- AARCH64_ARCH_NONE},
+ AARCH64_FEATURE (AARCH64_FEATURE_FP, 0)},
{"pan", AARCH64_FEATURE (AARCH64_FEATURE_PAN, 0),
AARCH64_ARCH_NONE},
{"lor", AARCH64_FEATURE (AARCH64_FEATURE_LOR, 0),
diff --git a/gas/testsuite/gas/aarch64/illegal-crypto-nofp.d b/gas/testsuite/gas/aarch64/illegal-crypto-nofp.d
new file mode 100644
index 0000000..ee52a9c
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/illegal-crypto-nofp.d
@@ -0,0 +1,3 @@
+#as: -march=armv8-a+crypto+nofp
+#source: crypto.s
+#error-output: illegal-crypto-nofp.l
diff --git a/gas/testsuite/gas/aarch64/illegal-crypto-nofp.l b/gas/testsuite/gas/aarch64/illegal-crypto-nofp.l
new file mode 100644
index 0000000..a5649de
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/illegal-crypto-nofp.l
@@ -0,0 +1,19 @@
+[^:]*: Assembler messages:
+[^:]+:27: Error: selected processor does not support `aese v7\.16b,v31\.16b'
+[^:]+:28: Error: selected processor does not support `aesd v7\.16b,v31\.16b'
+[^:]+:29: Error: selected processor does not support `aesmc v7\.16b,v31\.16b'
+[^:]+:30: Error: selected processor does not support `aesimc v7\.16b,v31\.16b'
+[^:]+:32: Error: selected processor does not support `sha1h s7,s31'
+[^:]+:33: Error: selected processor does not support `sha1su1 v7\.4s,v31\.4s'
+[^:]+:34: Error: selected processor does not support `sha256su0 v7\.4s,v31\.4s'
+[^:]+:36: Error: selected processor does not support `sha1c q7,s15,v31\.4s'
+[^:]+:37: Error: selected processor does not support `sha1p q7,s15,v31\.4s'
+[^:]+:38: Error: selected processor does not support `sha1m q7,s15,v31\.4s'
+[^:]+:40: Error: selected processor does not support `sha1su0 v7\.4s,v15\.4s,v31\.4s'
+[^:]+:41: Error: selected processor does not support `sha256h q7,q15,v31\.4s'
+[^:]+:42: Error: selected processor does not support `sha256h2 q7,q15,v31\.4s'
+[^:]+:43: Error: selected processor does not support `sha256su1 v7\.4s,v15\.4s,v31\.4s'
+[^:]+:45: Error: selected processor does not support `pmull v7\.8h,v15\.8b,v31\.8b'
+[^:]+:46: Error: selected processor does not support `pmull v7\.1q,v15\.1d,v31\.1d'
+[^:]+:47: Error: selected processor does not support `pmull2 v7\.8h,v15\.16b,v31\.16b'
+[^:]+:48: Error: selected processor does not support `pmull2 v7\.1q,v15\.2d,v31\.2d'
diff --git a/gas/testsuite/gas/aarch64/illegal-fp16-nofp.d b/gas/testsuite/gas/aarch64/illegal-fp16-nofp.d
new file mode 100644
index 0000000..7aefc53
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/illegal-fp16-nofp.d
@@ -0,0 +1,2 @@
+#as: -march=armv8.2-a+fp16+nofp -mno-verbose-error
+#error-output: illegal-fp16-nofp.l
diff --git a/gas/testsuite/gas/aarch64/illegal-fp16-nofp.l b/gas/testsuite/gas/aarch64/illegal-fp16-nofp.l
new file mode 100644
index 0000000..f153689
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/illegal-fp16-nofp.l
@@ -0,0 +1,6 @@
+[^:]*: Assembler messages:
+[^:]+:3: Error: selected processor does not support `fneg s0,s1'
+[^:]+:4: Error: selected processor does not support `fneg h0,h1'
+[^:]+:5: Error: selected processor does not support `fneg v0\.4s,v1\.4s'
+[^:]+:6: Error: selected processor does not support `fneg v0\.8h,v1\.8h'
+[^:]+:7: Error: selected processor does not support `neg v0\.16b,v1\.16b'
diff --git a/gas/testsuite/gas/aarch64/illegal-fp16-nofp.s b/gas/testsuite/gas/aarch64/illegal-fp16-nofp.s
new file mode 100644
index 0000000..27dd43d
--- /dev/null
+++ b/gas/testsuite/gas/aarch64/illegal-fp16-nofp.s
@@ -0,0 +1,7 @@
+// Test -march=armv8.2-a+fp16+nofp to disable fp, fp16 and simd.
+.text
+ fneg s0, s1
+ fneg h0, h1
+ fneg v0.4s, v1.4s
+ fneg v0.8h, v1.8h
+ neg v0.16b, v1.16b