#ifndef LLVM_CODEGEN_MACHINEINSTRBUILDER_H
#define LLVM_CODEGEN_MACHINEINSTRBUILDER_H
#include "llvm/ADT/ArrayRef.h"
#include "llvm/CodeGen/GlobalISel/Utils.h"
#include "llvm/CodeGen/MachineBasicBlock.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBundle.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/IR/InstrTypes.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/Support/ErrorHandling.h"
#include <cassert>
#include <cstdint>
namespace llvm {
class MCInstrDesc;
class MDNode;
namespace RegState {
enum { … };
}
class MachineInstrBuilder { … };
class MIMetadata { … };
inline MachineInstrBuilder BuildMI(MachineFunction &MF, const MIMetadata &MIMD,
const MCInstrDesc &MCID) { … }
inline MachineInstrBuilder BuildMI(MachineFunction &MF, const MIMetadata &MIMD,
const MCInstrDesc &MCID, Register DestReg) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
MachineBasicBlock::iterator I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID, Register DestReg) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
MachineBasicBlock::instr_iterator I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID, Register DestReg) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, MachineInstr &I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID, Register DestReg) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, MachineInstr *I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID, Register DestReg) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
MachineBasicBlock::iterator I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
MachineBasicBlock::instr_iterator I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, MachineInstr &I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock &BB, MachineInstr *I,
const MIMetadata &MIMD,
const MCInstrDesc &MCID) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock *BB,
const MIMetadata &MIMD,
const MCInstrDesc &MCID) { … }
inline MachineInstrBuilder BuildMI(MachineBasicBlock *BB,
const MIMetadata &MIMD,
const MCInstrDesc &MCID, Register DestReg) { … }
MachineInstrBuilder BuildMI(MachineFunction &MF, const DebugLoc &DL,
const MCInstrDesc &MCID, bool IsIndirect,
Register Reg, const MDNode *Variable,
const MDNode *Expr);
MachineInstrBuilder BuildMI(MachineFunction &MF, const DebugLoc &DL,
const MCInstrDesc &MCID, bool IsIndirect,
ArrayRef<MachineOperand> MOs,
const MDNode *Variable, const MDNode *Expr);
MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
MachineBasicBlock::iterator I, const DebugLoc &DL,
const MCInstrDesc &MCID, bool IsIndirect,
Register Reg, const MDNode *Variable,
const MDNode *Expr);
MachineInstrBuilder BuildMI(MachineBasicBlock &BB,
MachineBasicBlock::iterator I, const DebugLoc &DL,
const MCInstrDesc &MCID, bool IsIndirect,
ArrayRef<MachineOperand> MOs,
const MDNode *Variable, const MDNode *Expr);
MachineInstr *buildDbgValueForSpill(MachineBasicBlock &BB,
MachineBasicBlock::iterator I,
const MachineInstr &Orig, int FrameIndex,
Register SpillReg);
MachineInstr *buildDbgValueForSpill(
MachineBasicBlock &BB, MachineBasicBlock::iterator I,
const MachineInstr &Orig, int FrameIndex,
const SmallVectorImpl<const MachineOperand *> &SpilledOperands);
void updateDbgValueForSpill(MachineInstr &Orig, int FrameIndex, Register Reg);
inline unsigned getDefRegState(bool B) { … }
inline unsigned getImplRegState(bool B) { … }
inline unsigned getKillRegState(bool B) { … }
inline unsigned getDeadRegState(bool B) { … }
inline unsigned getUndefRegState(bool B) { … }
inline unsigned getInternalReadRegState(bool B) { … }
inline unsigned getDebugRegState(bool B) { … }
inline unsigned getRenamableRegState(bool B) { … }
inline unsigned getRegState(const MachineOperand &RegOp) { … }
class MIBundleBuilder { … };
}
#endif