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