[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