aboutsummaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorMatthew Wahab <matthew.wahab@arm.com>2015-12-14 17:01:56 +0000
committerMatthew Wahab <matthew.wahab@arm.com>2015-12-14 17:01:56 +0000
commit42f23f6218262ae8488caab214b7f272c6758941 (patch)
tree60a1def1cbdc22e0858d3fab9f1952c83376f0dd /gas
parent80776b29d60ebdcd3631604858f144a72b8bcb8e (diff)
downloadfsf-binutils-gdb-42f23f6218262ae8488caab214b7f272c6758941.zip
fsf-binutils-gdb-42f23f6218262ae8488caab214b7f272c6758941.tar.gz
fsf-binutils-gdb-42f23f6218262ae8488caab214b7f272c6758941.tar.bz2
[AArch64][PATCH 6/14] Support FP16 Vector Indexed Element 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 Vector Indexed Element, making them available when +simd+fp16 is enabled. The instructions added are: FMLA, FMLS, FMUL and FMULX. The general form for these instructions is <OP> <V>.<T>, <V>.<T>, <V>.h[<idx>] where T is 4h or 8h 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 vector indexed element instructions. 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_ELEMENT_FP_H): New. (aarch64_opcode_table): Add fp16 versions of fmla, fmls, fmul and fmulx to the vector indexed element group. Change-Id: Ib70cd4eaa6ea2938f84ac41f31d72644dbb0ceb4
Diffstat (limited to 'gas')
-rw-r--r--gas/testsuite/ChangeLog6
-rw-r--r--gas/testsuite/gas/aarch64/advsimd-fp16.d28
-rw-r--r--gas/testsuite/gas/aarch64/advsimd-fp16.s18
3 files changed, 52 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index f36651d..6e27869 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,6 +1,12 @@
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 vector indexed element
+ instructions.
+
+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 two register misc.
instructions.
diff --git a/gas/testsuite/gas/aarch64/advsimd-fp16.d b/gas/testsuite/gas/aarch64/advsimd-fp16.d
index 9c0e945..3fd4dcb 100644
--- a/gas/testsuite/gas/aarch64/advsimd-fp16.d
+++ b/gas/testsuite/gas/aarch64/advsimd-fp16.d
@@ -428,3 +428,31 @@ Disassembly of section \.text:
[0-9a-f]+: 5ea1f820 frecpx s0, s1
[0-9a-f]+: 5ef9f820 frecpx h0, h1
[0-9a-f]+: 5ef9f800 frecpx h0, h0
+ [0-9a-f]+: 4fc31841 fmla v1.2d, v2.2d, v3.d\[1\]
+ [0-9a-f]+: 0f831841 fmla v1.2s, v2.2s, v3.s\[2\]
+ [0-9a-f]+: 4fa31041 fmla v1.4s, v2.4s, v3.s\[1\]
+ [0-9a-f]+: 0f001000 fmla v0.4h, v0.4h, v0.h\[0\]
+ [0-9a-f]+: 0f031041 fmla v1.4h, v2.4h, v3.h\[0\]
+ [0-9a-f]+: 4f001000 fmla v0.8h, v0.8h, v0.h\[0\]
+ [0-9a-f]+: 4f031041 fmla v1.8h, v2.8h, v3.h\[0\]
+ [0-9a-f]+: 4fc35841 fmls v1.2d, v2.2d, v3.d\[1\]
+ [0-9a-f]+: 0f835841 fmls v1.2s, v2.2s, v3.s\[2\]
+ [0-9a-f]+: 4fa35041 fmls v1.4s, v2.4s, v3.s\[1\]
+ [0-9a-f]+: 0f005000 fmls v0.4h, v0.4h, v0.h\[0\]
+ [0-9a-f]+: 0f035041 fmls v1.4h, v2.4h, v3.h\[0\]
+ [0-9a-f]+: 4f005000 fmls v0.8h, v0.8h, v0.h\[0\]
+ [0-9a-f]+: 4f035041 fmls v1.8h, v2.8h, v3.h\[0\]
+ [0-9a-f]+: 4fc39841 fmul v1.2d, v2.2d, v3.d\[1\]
+ [0-9a-f]+: 0f839841 fmul v1.2s, v2.2s, v3.s\[2\]
+ [0-9a-f]+: 4fa39041 fmul v1.4s, v2.4s, v3.s\[1\]
+ [0-9a-f]+: 0f009000 fmul v0.4h, v0.4h, v0.h\[0\]
+ [0-9a-f]+: 0f039041 fmul v1.4h, v2.4h, v3.h\[0\]
+ [0-9a-f]+: 4f009000 fmul v0.8h, v0.8h, v0.h\[0\]
+ [0-9a-f]+: 4f039041 fmul v1.8h, v2.8h, v3.h\[0\]
+ [0-9a-f]+: 6fc39841 fmulx v1.2d, v2.2d, v3.d\[1\]
+ [0-9a-f]+: 2f839841 fmulx v1.2s, v2.2s, v3.s\[2\]
+ [0-9a-f]+: 6fa39041 fmulx v1.4s, v2.4s, v3.s\[1\]
+ [0-9a-f]+: 2f009000 fmulx v0.4h, v0.4h, v0.h\[0\]
+ [0-9a-f]+: 2f039041 fmulx v1.4h, v2.4h, v3.h\[0\]
+ [0-9a-f]+: 6f009000 fmulx v0.8h, v0.8h, v0.h\[0\]
+ [0-9a-f]+: 6f039041 fmulx v1.8h, v2.8h, v3.h\[0\]
diff --git a/gas/testsuite/gas/aarch64/advsimd-fp16.s b/gas/testsuite/gas/aarch64/advsimd-fp16.s
index 25c69a9..ebdb97a 100644
--- a/gas/testsuite/gas/aarch64/advsimd-fp16.s
+++ b/gas/testsuite/gas/aarch64/advsimd-fp16.s
@@ -154,3 +154,21 @@
stworeg_misc frecpe
stworeg_misc frsqrte
stworeg_misc frecpx
+
+ /* Vector indexed element. */
+
+ .macro indexed_elem, op
+ \op v1.2d, v2.2d, v3.d[1]
+ \op v1.2s, v2.2s, v3.s[2]
+ \op v1.4s, v2.4s, v3.s[1]
+ \op v0.4h, v0.4h, v0.h[0]
+ \op v1.4h, v2.4h, v3.h[0]
+ \op v0.8h, v0.8h, v0.h[0]
+ \op v1.8h, v2.8h, v3.h[0]
+ .endm
+
+ indexed_elem fmla
+ indexed_elem fmls
+
+ indexed_elem fmul
+ indexed_elem fmulx