aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorMatthew Wahab <matthew.wahab@arm.com>2015-12-14 17:16:50 +0000
committerMatthew Wahab <matthew.wahab@arm.com>2015-12-14 17:18:50 +0000
commitbb515fea4ac30f761c17dec701c95c0b54fabf30 (patch)
tree1c5ddde0ea278a49008fc85b83ae530c5433146b /gas
parent5f7728b7413b3bed576f8dd11d1343c20b3a2333 (diff)
downloadgdb-bb515fea4ac30f761c17dec701c95c0b54fabf30.zip
gdb-bb515fea4ac30f761c17dec701c95c0b54fabf30.tar.gz
gdb-bb515fea4ac30f761c17dec701c95c0b54fabf30.tar.bz2
[AArch64][PATCH 8/14] Support FP16 Adv.SIMD Across Lanes instructions.
ARMv8.2 adds 16-bit floating point operations as an optional extension to the floating point and Adv.SIMD support. This patch adds FP16 instructions to the group Adv.SIMD Across Lanes, making them available when +simd+fp16 is enabled. The instructions added are: FMAXNMV, FMAXV, FMINNMV and FMINV. The general form for these instructions is <OP> <Hd>, <V>.<T> where T is 4h or 8h. The new instructions valid make uses of the 8H and 4H that were previously illegal. The patch adjusts a test for illegal uses of vector types to take this into account. gas/testsuite/ 2015-12-14 Matthew Wahab <matthew.wahab@arm.com> * gas/aarch64/advsimd-fp16.d: Update expected output. * gas/aarch64/advsimd-fp16.s: Add tests for Adv.SIMD across lanes instructions. * gas/aarch64/illegal.d: Update expected output. * gas/aarch64/illegal.s: Replace test for illegal use of 'h' specifier. opcodes/ 2015-12-14 Matthew Wahab <matthew.wahab@arm.com> * aarch64-asm-2.c: Regenerate. * aarch64-dis-2.c: Regenerate. * aarch64-opc-2.c: Regenerate. * aarch64-tbl.h (QL_XLANES_FP_H): New. (aarch64_opcode_table): Add fp16 versions of fmaxnmv, fmaxv, fminnmv, fminv to the Adv.SIMD across lanes group. Change-Id: Ib9a47e867f55e0272c2446eb7e16837503d2f94c
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/ChangeLog8
-rw-r--r--gas/testsuite/gas/aarch64/advsimd-fp16.d20
-rw-r--r--gas/testsuite/gas/aarch64/advsimd-fp16.s16
-rw-r--r--gas/testsuite/gas/aarch64/illegal.l4
-rw-r--r--gas/testsuite/gas/aarch64/illegal.s4
5 files changed, 48 insertions, 4 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 4a44439..a2a3bf8 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,6 +1,14 @@
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
* gas/aarch64/advsimd-fp16.d: Update expected output.
+ * gas/aarch64/advsimd-fp16.s: Add tests for Adv.SIMD across lanes
+ instructions.
+ * gas/aarch64/illegal.d: Update expected output.
+ * gas/aarch64/illegal.s: Replace test for illegal use of 'h' specifier.
+
+2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
+
+ * gas/aarch64/advsimd-fp16.d: Update expected output.
* gas/aarch64/advsimd-fp16.s: Add tests for scalar indexed element
instructions.
diff --git a/gas/testsuite/gas/aarch64/advsimd-fp16.d b/gas/testsuite/gas/aarch64/advsimd-fp16.d
index dacd51b..241dc3f 100644
--- a/gas/testsuite/gas/aarch64/advsimd-fp16.d
+++ b/gas/testsuite/gas/aarch64/advsimd-fp16.d
@@ -472,3 +472,23 @@ Disassembly of section \.text:
[0-9a-f]+: 7fa39041 fmulx s1, s2, v3.s\[1\]
[0-9a-f]+: 7f139041 fmulx h1, h2, v3.h\[1\]
[0-9a-f]+: 7f009000 fmulx h0, h0, v0.h\[0\]
+ [0-9a-f]+: 6e30c841 fmaxnmv s1, v2.4s
+ [0-9a-f]+: 0e30c841 fmaxnmv h1, v2.4h
+ [0-9a-f]+: 4e30c841 fmaxnmv h1, v2.8h
+ [0-9a-f]+: 0e30c800 fmaxnmv h0, v0.4h
+ [0-9a-f]+: 4e30c800 fmaxnmv h0, v0.8h
+ [0-9a-f]+: 6e30f841 fmaxv s1, v2.4s
+ [0-9a-f]+: 0e30f841 fmaxv h1, v2.4h
+ [0-9a-f]+: 4e30f841 fmaxv h1, v2.8h
+ [0-9a-f]+: 0e30f800 fmaxv h0, v0.4h
+ [0-9a-f]+: 4e30f800 fmaxv h0, v0.8h
+ [0-9a-f]+: 6eb0c841 fminnmv s1, v2.4s
+ [0-9a-f]+: 0eb0c841 fminnmv h1, v2.4h
+ [0-9a-f]+: 4eb0c841 fminnmv h1, v2.8h
+ [0-9a-f]+: 0eb0c800 fminnmv h0, v0.4h
+ [0-9a-f]+: 4eb0c800 fminnmv h0, v0.8h
+ [0-9a-f]+: 6eb0f841 fminv s1, v2.4s
+ [0-9a-f]+: 0eb0f841 fminv h1, v2.4h
+ [0-9a-f]+: 4eb0f841 fminv h1, v2.8h
+ [0-9a-f]+: 0eb0f800 fminv h0, v0.4h
+ [0-9a-f]+: 4eb0f800 fminv h0, v0.8h
diff --git a/gas/testsuite/gas/aarch64/advsimd-fp16.s b/gas/testsuite/gas/aarch64/advsimd-fp16.s
index 10f9067..c4e0ad1 100644
--- a/gas/testsuite/gas/aarch64/advsimd-fp16.s
+++ b/gas/testsuite/gas/aarch64/advsimd-fp16.s
@@ -187,3 +187,19 @@
sindexed_elem fmul
sindexed_elem fmulx
+
+ /* Adv.SIMD across lanes. */
+
+ .macro across_lanes, op
+ \op s1, v2.4s
+ \op h1, v2.4h
+ \op h1, v2.8h
+ \op h0, v0.4h
+ \op h0, v0.8h
+ .endm
+
+ across_lanes fmaxnmv
+ across_lanes fmaxv
+ across_lanes fminnmv
+ across_lanes fminv
+
diff --git a/gas/testsuite/gas/aarch64/illegal.l b/gas/testsuite/gas/aarch64/illegal.l
index 0e8c7eb..7482bc7 100644
--- a/gas/testsuite/gas/aarch64/illegal.l
+++ b/gas/testsuite/gas/aarch64/illegal.l
@@ -8,8 +8,8 @@
[^:]*:32: Error: .*`saddlv q7,v31.2d'
[^:]*:33: Error: .*`smaxv s7,v31.2s'
[^:]*:34: Error: .*`sminv d7,v31.2d'
-[^:]*:35: Error: .*`fmaxv h7,v31.8h'
-[^:]*:36: Error: .*`fmaxv h7,v31.4h'
+[^:]*:35: Error: .*`fmaxv h7,v31.2h'
+[^:]*:36: Error: .*`fmaxv s7,v31.4h'
[^:]*:37: Error: .*`fminv d7,v31.2d'
[^:]*:39: Error: .*`abs b0,b31'
[^:]*:40: Error: .*`neg b0,b31'
diff --git a/gas/testsuite/gas/aarch64/illegal.s b/gas/testsuite/gas/aarch64/illegal.s
index 718f7ed..0960b7e 100644
--- a/gas/testsuite/gas/aarch64/illegal.s
+++ b/gas/testsuite/gas/aarch64/illegal.s
@@ -32,8 +32,8 @@
saddlv q7, v31.2d
smaxv s7, v31.2s
sminv d7, v31.2d
- fmaxv h7, v31.8h
- fmaxv h7, v31.4h
+ fmaxv h7, v31.2h
+ fmaxv s7, v31.4h
fminv d7, v31.2d
abs b0, b31