brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 289a30a Raw
62 lines · c
1//===-- Thumb1InstrInfo.h - Thumb-1 Instruction Information -----*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the Thumb-1 implementation of the TargetInstrInfo class.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_ARM_THUMB1INSTRINFO_H14#define LLVM_LIB_TARGET_ARM_THUMB1INSTRINFO_H15 16#include "ARMBaseInstrInfo.h"17#include "ThumbRegisterInfo.h"18 19namespace llvm {20  class ARMSubtarget;21 22class Thumb1InstrInfo : public ARMBaseInstrInfo {23  ThumbRegisterInfo RI;24public:25  explicit Thumb1InstrInfo(const ARMSubtarget &STI);26 27  /// Return the noop instruction to use for a noop.28  MCInst getNop() const override;29 30  // Return the non-pre/post incrementing version of 'Opc'. Return 031  // if there is not such an opcode.32  unsigned getUnindexedOpcode(unsigned Opc) const override;33 34  /// getRegisterInfo - TargetInstrInfo is a superset of MRegister info.  As35  /// such, whenever a client has an instance of instruction info, it should36  /// always be able to get register info as well (through this method).37  ///38  const ThumbRegisterInfo &getRegisterInfo() const { return RI; }39 40  void copyPhysReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,41                   const DebugLoc &DL, Register DestReg, Register SrcReg,42                   bool KillSrc, bool RenamableDest = false,43                   bool RenamableSrc = false) const override;44  void storeRegToStackSlot(45      MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, Register SrcReg,46      bool isKill, int FrameIndex, const TargetRegisterClass *RC, Register VReg,47      MachineInstr::MIFlag Flags = MachineInstr::NoFlags) const override;48 49  void loadRegFromStackSlot(50      MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,51      Register DestReg, int FrameIndex, const TargetRegisterClass *RC,52      Register VReg,53      MachineInstr::MIFlag Flags = MachineInstr::NoFlags) const override;54 55  bool canCopyGluedNodeDuringSchedule(SDNode *N) const override;56private:57  void expandLoadStackGuard(MachineBasicBlock::iterator MI) const override;58};59}60 61#endif62