#include "X86Subtarget.h"
#include "GISel/X86CallLowering.h"
#include "GISel/X86LegalizerInfo.h"
#include "GISel/X86RegisterBankInfo.h"
#include "MCTargetDesc/X86BaseInfo.h"
#include "X86.h"
#include "X86MacroFusion.h"
#include "X86TargetMachine.h"
#include "llvm/CodeGen/GlobalISel/CallLowering.h"
#include "llvm/CodeGen/GlobalISel/InstructionSelect.h"
#include "llvm/CodeGen/GlobalISel/InstructionSelector.h"
#include "llvm/CodeGen/ScheduleDAGMutation.h"
#include "llvm/IR/Attributes.h"
#include "llvm/IR/ConstantRange.h"
#include "llvm/IR/Function.h"
#include "llvm/IR/GlobalValue.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/TargetParser/Triple.h"
#if defined(_MSC_VER)
#include <intrin.h>
#endif
usingnamespacellvm;
#define DEBUG_TYPE …
#define GET_SUBTARGETINFO_TARGET_DESC
#define GET_SUBTARGETINFO_CTOR
#include "X86GenSubtargetInfo.inc"
static cl::opt<bool>
X86EarlyIfConv("x86-early-ifcvt", cl::Hidden,
cl::desc("Enable early if-conversion on X86"));
unsigned char X86Subtarget::classifyBlockAddressReference() const { … }
unsigned char
X86Subtarget::classifyGlobalReference(const GlobalValue *GV) const { … }
unsigned char
X86Subtarget::classifyLocalReference(const GlobalValue *GV) const { … }
unsigned char X86Subtarget::classifyGlobalReference(const GlobalValue *GV,
const Module &M) const { … }
unsigned char
X86Subtarget::classifyGlobalFunctionReference(const GlobalValue *GV) const { … }
unsigned char
X86Subtarget::classifyGlobalFunctionReference(const GlobalValue *GV,
const Module &M) const { … }
bool X86Subtarget::isLegalToCallImmediateAddr() const { … }
void X86Subtarget::initSubtargetFeatures(StringRef CPU, StringRef TuneCPU,
StringRef FS) { … }
X86Subtarget &X86Subtarget::initializeSubtargetDependencies(StringRef CPU,
StringRef TuneCPU,
StringRef FS) { … }
X86Subtarget::X86Subtarget(const Triple &TT, StringRef CPU, StringRef TuneCPU,
StringRef FS, const X86TargetMachine &TM,
MaybeAlign StackAlignOverride,
unsigned PreferVectorWidthOverride,
unsigned RequiredVectorWidth)
: … { … }
const CallLowering *X86Subtarget::getCallLowering() const { … }
InstructionSelector *X86Subtarget::getInstructionSelector() const { … }
const LegalizerInfo *X86Subtarget::getLegalizerInfo() const { … }
const RegisterBankInfo *X86Subtarget::getRegBankInfo() const { … }
bool X86Subtarget::enableEarlyIfConversion() const { … }
void X86Subtarget::getPostRAMutations(
std::vector<std::unique_ptr<ScheduleDAGMutation>> &Mutations) const { … }
bool X86Subtarget::isPositionIndependent() const { … }