#include "llvm/CodeGen/FunctionLoweringInfo.h"
#include "llvm/ADT/APInt.h"
#include "llvm/Analysis/UniformityAnalysis.h"
#include "llvm/CodeGen/Analysis.h"
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetFrameLowering.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/CodeGen/TargetSubtargetInfo.h"
#include "llvm/CodeGen/WasmEHFuncInfo.h"
#include "llvm/CodeGen/WinEHFuncInfo.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
usingnamespacellvm;
#define DEBUG_TYPE …
static bool isUsedOutsideOfDefiningBlock(const Instruction *I) { … }
static ISD::NodeType getPreferredExtendForValue(const Instruction *I) { … }
void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf,
SelectionDAG *DAG) { … }
void FunctionLoweringInfo::clear() { … }
Register FunctionLoweringInfo::CreateReg(MVT VT, bool isDivergent) { … }
Register FunctionLoweringInfo::CreateRegs(Type *Ty, bool isDivergent) { … }
Register FunctionLoweringInfo::CreateRegs(const Value *V) { … }
Register FunctionLoweringInfo::InitializeRegForValue(const Value *V) { … }
const FunctionLoweringInfo::LiveOutInfo *
FunctionLoweringInfo::GetLiveOutRegInfo(Register Reg, unsigned BitWidth) { … }
void FunctionLoweringInfo::ComputePHILiveOutRegInfo(const PHINode *PN) { … }
void FunctionLoweringInfo::setArgumentFrameIndex(const Argument *A,
int FI) { … }
int FunctionLoweringInfo::getArgumentFrameIndex(const Argument *A) { … }
Register FunctionLoweringInfo::getCatchPadExceptionPointerVReg(
const Value *CPI, const TargetRegisterClass *RC) { … }
const Value *
FunctionLoweringInfo::getValueFromVirtualReg(Register Vreg) { … }