[aarch64-port-dev ] Some (very) low-hanging fruit

Andrew Haley aph at redhat.com
Tue Jul 8 13:28:53 UTC 2014


Optimized smull.

Andrew.


# HG changeset patch
# User aph
# Date 1404822591 14400
#      Tue Jul 08 08:29:51 2014 -0400
# Node ID 5ed1bb528b990f293f6abbef834f7c4bf0dea406
# Parent  2a489b2bb083062d3356ee6c470aaf4d2d0a481d
AArch64 C2 instruct for smull

diff -r 2a489b2bb083 -r 5ed1bb528b99 src/cpu/aarch64/vm/aarch64.ad
--- a/src/cpu/aarch64/vm/aarch64.ad     Tue Jul 08 05:25:15 2014 -0400
+++ b/src/cpu/aarch64/vm/aarch64.ad     Tue Jul 08 08:29:51 2014 -0400
@@ -7471,6 +7471,21 @@
   ins_pipe(pipe_class_default);
 %}

+instruct smulI(iRegLNoSp dst, iRegIorL2I src1, iRegIorL2I src2) %{
+  match(Set dst (MulL (ConvI2L src1) (ConvI2L src2)));
+
+  ins_cost(INSN_COST * 3);
+  format %{ "smull  $dst, $src1, $src2" %}
+
+  ins_encode %{
+    __ smull(as_Register($dst$$reg),
+            as_Register($src1$$reg),
+            as_Register($src2$$reg));
+  %}
+
+  ins_pipe(pipe_class_default);
+%}
+
 // Long Multiply

 instruct mulL(iRegLNoSp dst, iRegL src1, iRegL src2) %{


More information about the aarch64-port-dev mailing list