//===-- llvm/CodeGen/GlobalISel/MachineIRBuilder.h - MIBuilder --*- 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 // //===----------------------------------------------------------------------===// /// \file /// This file declares the MachineIRBuilder class. /// This is a helper class to build MachineInstr. //===----------------------------------------------------------------------===// #ifndef LLVM_CODEGEN_GLOBALISEL_MACHINEIRBUILDER_H #define LLVM_CODEGEN_GLOBALISEL_MACHINEIRBUILDER_H #include "llvm/CodeGen/GlobalISel/GISelChangeObserver.h" #include "llvm/CodeGen/MachineBasicBlock.h" #include "llvm/CodeGen/MachineInstrBuilder.h" #include "llvm/CodeGen/MachineRegisterInfo.h" #include "llvm/CodeGen/TargetLowering.h" #include "llvm/CodeGen/TargetOpcodes.h" #include "llvm/IR/DebugLoc.h" #include "llvm/IR/Module.h" namespace llvm { // Forward declarations. class APInt; class BlockAddress; class Constant; class ConstantFP; class ConstantInt; class DataLayout; class GISelCSEInfo; class GlobalValue; class TargetRegisterClass; class MachineFunction; class MachineInstr; class TargetInstrInfo; class GISelChangeObserver; /// Class which stores all the state required in a MachineIRBuilder. /// Since MachineIRBuilders will only store state in this object, it allows /// to transfer BuilderState between different kinds of MachineIRBuilders. struct MachineIRBuilderState { … }; class DstOp { … }; class SrcOp { … }; /// Helper class to build MachineInstr. /// It keeps internally the insertion point and debug location for all /// the new instructions we want to create. /// This information can be modified via the related setters. class MachineIRBuilder { … }; } // End namespace llvm. #endif // LLVM_CODEGEN_GLOBALISEL_MACHINEIRBUILDER_H