diff options
author | Alexandre Rames <alexandre.rames@linaro.org> | 2015-11-25 16:28:08 +0000 |
---|---|---|
committer | Alexandre Rames <alexandre.rames@linaro.org> | 2015-11-25 16:28:08 +0000 |
commit | 8626b741716390a0119ffeb88b5b9fcf08e13010 (patch) | |
tree | 28d261dbb8fa3018cba8a5d829319604508ea0a1 /compiler/optimizing/graph_visualizer.cc | |
parent | 0c32fdeaeda2a1e388e280da12662d1d18c834a2 (diff) |
ARM64: Use the shifter operands.
This introduces architecture-specific instruction simplification.
On ARM64 we try to merge shifts and sign-extension operations into
arithmetic and logical instructions.
For example for the Java code
int res = a + (b << 5);
we would generate
lsl w3, w2, #5
add w0, w1, w3
and we now generate
add w0, w1, w2, lsl #5
Change-Id: Ic03bdff44a1c12e21ddff1b0513bd32a730742b7
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r-- | compiler/optimizing/graph_visualizer.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc index 4438190ec3..48bcd10b10 100644 --- a/compiler/optimizing/graph_visualizer.cc +++ b/compiler/optimizing/graph_visualizer.cc @@ -423,6 +423,13 @@ class HGraphVisualizerPrinter : public HGraphDelegateVisitor { } #ifdef ART_ENABLE_CODEGEN_arm64 + void VisitArm64DataProcWithShifterOp(HArm64DataProcWithShifterOp* instruction) OVERRIDE { + StartAttributeStream("kind") << instruction->GetInstrKind() << "+" << instruction->GetOpKind(); + if (HArm64DataProcWithShifterOp::IsShiftOp(instruction->GetOpKind())) { + StartAttributeStream("shift") << instruction->GetShiftAmount(); + } + } + void VisitArm64MultiplyAccumulate(HArm64MultiplyAccumulate* instruction) OVERRIDE { StartAttributeStream("kind") << instruction->GetOpKind(); } |