| //===- ARMInstrInfo.cpp - ARM Instruction Information -----------*- C++ -*-===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // This file contains the ARM implementation of the TargetInstrInfo class. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #include "ARMInstrInfo.h" | |
| #include "ARM.h" | |
| #include "ARMMachineFunctionInfo.h" | |
| #include "MCTargetDesc/ARMAddressingModes.h" | |
| #include "llvm/ADT/STLExtras.h" | |
| #include "llvm/CodeGen/LiveVariables.h" | |
| #include "llvm/CodeGen/MachineFrameInfo.h" | |
| #include "llvm/CodeGen/MachineInstrBuilder.h" | |
| #include "llvm/CodeGen/MachineJumpTableInfo.h" | |
| #include "llvm/MC/MCAsmInfo.h" | |
| using namespace llvm; | |
| ARMInstrInfo::ARMInstrInfo(const ARMSubtarget &STI) | |
| : ARMBaseInstrInfo(STI), RI(*this, STI) { | |
| } | |
| unsigned ARMInstrInfo::getUnindexedOpcode(unsigned Opc) const { | |
| switch (Opc) { | |
| default: break; | |
| case ARM::LDR_PRE_IMM: | |
| case ARM::LDR_PRE_REG: | |
| case ARM::LDR_POST_IMM: | |
| case ARM::LDR_POST_REG: | |
| return ARM::LDRi12; | |
| case ARM::LDRH_PRE: | |
| case ARM::LDRH_POST: | |
| return ARM::LDRH; | |
| case ARM::LDRB_PRE_IMM: | |
| case ARM::LDRB_PRE_REG: | |
| case ARM::LDRB_POST_IMM: | |
| case ARM::LDRB_POST_REG: | |
| return ARM::LDRBi12; | |
| case ARM::LDRSH_PRE: | |
| case ARM::LDRSH_POST: | |
| return ARM::LDRSH; | |
| case ARM::LDRSB_PRE: | |
| case ARM::LDRSB_POST: | |
| return ARM::LDRSB; | |
| case ARM::STR_PRE_IMM: | |
| case ARM::STR_PRE_REG: | |
| case ARM::STR_POST_IMM: | |
| case ARM::STR_POST_REG: | |
| return ARM::STRi12; | |
| case ARM::STRH_PRE: | |
| case ARM::STRH_POST: | |
| return ARM::STRH; | |
| case ARM::STRB_PRE_IMM: | |
| case ARM::STRB_PRE_REG: | |
| case ARM::STRB_POST_IMM: | |
| case ARM::STRB_POST_REG: | |
| return ARM::STRBi12; | |
| } | |
| return 0; | |
| } |