#include "llvm/CodeGen/GlobalISel/InlineAsmLowering.h"
#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
#include "llvm/CodeGen/MachineOperand.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/IR/Module.h"
#define DEBUG_TYPE …
usingnamespacellvm;
void InlineAsmLowering::anchor() { … }
namespace {
class GISelAsmOperandInfo : public TargetLowering::AsmOperandInfo { … };
GISelAsmOperandInfoVector;
class ExtraFlags { … };
}
static void getRegistersForValue(MachineFunction &MF,
MachineIRBuilder &MIRBuilder,
GISelAsmOperandInfo &OpInfo,
GISelAsmOperandInfo &RefOpInfo) { … }
static void computeConstraintToUse(const TargetLowering *TLI,
TargetLowering::AsmOperandInfo &OpInfo) { … }
static unsigned getNumOpRegs(const MachineInstr &I, unsigned OpIdx) { … }
static bool buildAnyextOrCopy(Register Dst, Register Src,
MachineIRBuilder &MIRBuilder) { … }
bool InlineAsmLowering::lowerInlineAsm(
MachineIRBuilder &MIRBuilder, const CallBase &Call,
std::function<ArrayRef<Register>(const Value &Val)> GetOrCreateVRegs)
const { … }
bool InlineAsmLowering::lowerAsmOperandForConstraint(
Value *Val, StringRef Constraint, std::vector<MachineOperand> &Ops,
MachineIRBuilder &MIRBuilder) const { … }