changeset 59099:9b0a0f3c0d4f vectorIntrinsics

Add matching rule for SqrtVF. Contributed-by: eric.liu2@arm.com
author yzhang
date Thu, 22 Aug 2019 14:26:30 +0800
parents 815e3347fc91
children 5a545ce819e7
files src/hotspot/cpu/aarch64/aarch64.ad
diffstat 1 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/hotspot/cpu/aarch64/aarch64.ad	Wed Aug 21 12:31:18 2019 +0800
+++ b/src/hotspot/cpu/aarch64/aarch64.ad	Thu Aug 22 14:26:30 2019 +0800
@@ -18304,6 +18304,28 @@
   ins_pipe(vsqrt_fp128);
 %}
 
+instruct vsqrt2F(vecD dst, vecD src)
+%{
+  predicate(n->as_Vector()->length() == 2);
+  match(Set dst (SqrtVF src));
+  format %{ "fsqrt  $dst, $src\t# vector (2F)" %}
+  ins_encode %{
+    __ fsqrt(as_FloatRegister($dst$$reg), __ T2S, as_FloatRegister($src$$reg));
+  %}
+  ins_pipe(vunop_fp64);
+%}
+
+instruct vsqrt4F(vecX dst, vecX src)
+%{
+  predicate(n->as_Vector()->length() == 4);
+  match(Set dst (SqrtVF src));
+  format %{ "fsqrt  $dst, $src\t# vector (4S)" %}
+  ins_encode %{
+    __ fsqrt(as_FloatRegister($dst$$reg), __ T4S, as_FloatRegister($src$$reg));
+  %}
+  ins_pipe(vsqrt_fp128);
+%}
+
 // --------------------------------- ABS --------------------------------------
 
 instruct vabs8B(vecD dst, vecD src)