2.7 TargetSubtarget 类 TargetSubtarget 类被用于提供一些与目标特定芯片相关的信息。一个 subtarget 会为代码生成器描述在特定芯片下支持的指令、指令延迟和指令执行行程(instruction execution itinerary,表示处理器单元怎么使用,以什么顺序使用以及使用多久)。 2.8 TargetJITInfo 类 TargetJITInfo 类提供了一个抽象的接...
isOSWindows() || TargetABI == ARMBaseTargetMachine::ARM_ABI_AAPCS16; } bool targetSchedulesPostRAScheduling() const override { return true; }; MachineFunctionInfo * createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F, const TargetSubtargetInfo *STI) const override; /// ...
extern "C" LLVM_ATTRIBUTE_WEAK ::llvm::PassPluginLibraryInfo llvmGetPassPluginInfo() { return getHelloWorldPluginInfo(); } 编写完源码之后我们构建CMakeLists.txt,下面是我的CMakeLists可以进行参考: #项目名称 project(hello-world) #cmake最低版本 cmake_mini...
attributes #1= {"disable-tail-calls"="false""frame-pointer"="all""less-precise-fpmad"="false""no-infs-fp-math"="false""no-nans-fp-math"="false""no-signed-zeros-fp-math"="false""no-trapping-math"="true""stack-protector-buffer-size"="8""target-cpu"="x86-64""target-features"=...
:TargetLowering(TM),Subtarget(STI) { MVT XLenVT = Subtarget.getXLenVT();// Set up the register classes.addRegisterClass(XLenVT, &RISCV::GPRRegClass);// Compute derived properties from the register classes.computeRegisterProperties(STI.getRegisterInfo());setOperationAction(ISD::BR_JT,MVT::Ot...
–target=该软件(就是指的交叉编译工具链本身)所要处理的目标平台。即交叉编译工具链编译出来的程序运行的平台。 比较 目前,针对于 ARM 平台的主流编译器主要有以下三者: 比较 ARMCC IAR GCC for ARM LLVM(clang) 命令行工具 随IDE发布,也独立提供 仅随其IDE发布,不独立提供 独立提供 只有命令行工具 开发商 ...
#include "llvm/Target/TargetMachine.h" #include "llvm/Transforms/InstCombine/InstCombine.h" #include "llvm/Transforms/Scalar.h" #include "llvm/Transforms/Scalar/GVN.h" // 记录一些全局数据,比如各模块中用到的类型和常量 static std::unique_ptr<LLVMContext> g_llvm_context; ...
createCpu0MCSubtargetInfo() 实例化 MCSubtargetInfo 对象,使用 Cpu0.td 信息,进行初始化。 根据“目标注册部分” ,可以通过动态注册机制,在 LLVMInitializeCpu0TargetMC() 按需注册 Cpu0 后端类,如上述函数 LLVMInitializeCpu0TargetMC()。 现在,可以使用 AsmPrinter,如下所示, ...
math"="false" "no-trapping-math"="false" "probe-stack"="___chkstk_darwin" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" ...
(llvm::lto::Config const&, llvm::TargetMachine*, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine const&)>, unsigned int, llvm::Module&, llvm::ModuleSummaryIndex const&) LTOBackend.cpp:0:0 #...