From d923c47f745a96f5916af766dcb1c7152021b960 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Mon, 19 Feb 2024 14:07:25 +0300 Subject: riscv64: Create InstructionSimplifierRiscv64, ShiftAdd Create InstructionSimplifierRiscv64 optimization. Replace Shl (1|2|3) and Add with Riscv64ShiftAdd IR instruction. By compiling with dex2oat all the methods of applications below I got: Facebook: 45 cases TikTok: 26 cases YouTube: 19 cases of the pattern. Test: art/test/testrunner/testrunner.py --target --64 --ndebug --optimizing Change-Id: I88903450d998983bb2a628942112d7518099c3f5 --- .../optimizing/instruction_simplifier_riscv64.h | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 compiler/optimizing/instruction_simplifier_riscv64.h (limited to 'compiler/optimizing/instruction_simplifier_riscv64.h') diff --git a/compiler/optimizing/instruction_simplifier_riscv64.h b/compiler/optimizing/instruction_simplifier_riscv64.h new file mode 100644 index 0000000000..2fbfedddf4 --- /dev/null +++ b/compiler/optimizing/instruction_simplifier_riscv64.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ART_COMPILER_OPTIMIZING_INSTRUCTION_SIMPLIFIER_RISCV64_H_ +#define ART_COMPILER_OPTIMIZING_INSTRUCTION_SIMPLIFIER_RISCV64_H_ + +#include "base/macros.h" +#include "nodes.h" +#include "optimization.h" + +namespace art HIDDEN { + +namespace riscv64 { + +class InstructionSimplifierRiscv64 : public HOptimization { + public: + InstructionSimplifierRiscv64(HGraph* graph, OptimizingCompilerStats* stats) + : HOptimization(graph, kInstructionSimplifierRiscv64PassName, stats) {} + + static constexpr const char* kInstructionSimplifierRiscv64PassName = + "instruction_simplifier_riscv64"; + + bool Run() override; +}; + +} // namespace riscv64 +} // namespace art + +#endif // ART_COMPILER_OPTIMIZING_INSTRUCTION_SIMPLIFIER_RISCV64_H_ -- cgit v1.2.3-59-g8ed1b