14a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko/*
24a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * Copyright (C) 2015 The Android Open Source Project
34a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko *
44a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * Licensed under the Apache License, Version 2.0 (the "License");
54a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * you may not use this file except in compliance with the License.
64a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * You may obtain a copy of the License at
74a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko *
84a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko *      http://www.apache.org/licenses/LICENSE-2.0
94a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko *
104a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * Unless required by applicable law or agreed to in writing, software
114a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * distributed under the License is distributed on an "AS IS" BASIS,
124a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * See the License for the specific language governing permissions and
144a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko * limitations under the License.
154a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko */
164a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko
174a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko#include "instruction_simplifier_arm.h"
184a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko#include "instruction_simplifier_shared.h"
194a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko
204a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenkonamespace art {
214a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenkonamespace arm {
224a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko
234a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenkovoid InstructionSimplifierArmVisitor::VisitMul(HMul* instruction) {
244a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko  if (TryCombineMultiplyAccumulate(instruction, kArm)) {
254a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko    RecordSimplification();
264a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko  }
274a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko}
284a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko
297fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serovvoid InstructionSimplifierArmVisitor::VisitOr(HOr* instruction) {
307fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov  if (TryMergeNegatedInput(instruction)) {
317fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov    RecordSimplification();
327fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov  }
337fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov}
347fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov
357fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serovvoid InstructionSimplifierArmVisitor::VisitAnd(HAnd* instruction) {
367fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov  if (TryMergeNegatedInput(instruction)) {
377fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov    RecordSimplification();
387fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov  }
397fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov}
407fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov
417fc6350f6f1ab04b52b9cd7542e0790528296cbeArtem Serov
424a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko}  // namespace arm
434a0dad67867f389e01a5a6c0fe381d210f687c0dArtem Udovichenko}  // namespace art
44