//===- MipsInstrInfo.h - Mips Instruction Information -----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file contains the Mips implementation of the TargetInstrInfo class. // // FIXME: We need to override TargetInstrInfo::getInlineAsmLength method in // order for MipsLongBranch pass to work correctly when the code has inline // assembly. The returned value doesn't have to be the asm instruction's exact // size in bytes; MipsLongBranch only expects it to be the correct upper bound. //===----------------------------------------------------------------------===// #ifndef LLVM_LIB_TARGET_MIPS_MIPSINSTRINFO_H #define LLVM_LIB_TARGET_MIPS_MIPSINSTRINFO_H #include "MCTargetDesc/MipsMCTargetDesc.h" #include "Mips.h" #include "MipsRegisterInfo.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineMemOperand.h" #include "llvm/CodeGen/TargetInstrInfo.h" #include <cstdint> #define GET_INSTRINFO_HEADER #include "MipsGenInstrInfo.inc" namespace llvm { class MachineInstr; class MachineOperand; class MipsSubtarget; class TargetRegisterClass; class TargetRegisterInfo; class MipsInstrInfo : public MipsGenInstrInfo { … }; /// Create MipsInstrInfo objects. const MipsInstrInfo *createMips16InstrInfo(const MipsSubtarget &STI); const MipsInstrInfo *createMipsSEInstrInfo(const MipsSubtarget &STI); namespace Mips { // Mask assignments for floating-point. enum FClassMask { … }; } // namespace Mips } // end namespace llvm #endif // LLVM_LIB_TARGET_MIPS_MIPSINSTRINFO_H