随笔分类 -  llvm 12.x

llvm
摘要:opt opt -S -instcombine src.ll -o out.ll 使用instcombine参数优化ll,很像LLVM PASS 优化器 更多的优化可以查看 opt -h clang clang.exe -emit-llvm -S main.c -o main.ll 将c代码编译为L 阅读全文
posted @ 2021-06-09 17:07 Ajanuw 阅读(438) 评论(0) 推荐(0)
摘要:void llvtype(std::string_view k, Value* v) { std::cout << std::format("{}:{}:{}", k, (int)v->getType()->getTypeID(), v->getName().str() ) << "\n"; } . 阅读全文
posted @ 2021-06-08 18:27 Ajanuw 阅读(217) 评论(0) 推荐(0)
摘要:auto llval = b.getInt32(-1); std::cout << llval->getZExtValue() << "\n"; // 无符号 std::cout << llval->getSExtValue() << "\n"; // 有符号 ConstantFP* llval = 阅读全文
posted @ 2021-06-08 18:03 Ajanuw 阅读(72) 评论(0) 推荐(0)
摘要:#include "llvm/ExecutionEngine/Orc/LLJIT.h" #include "llvm/IR/Function.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Module.h" #include "llvm/Su 阅读全文
posted @ 2021-06-07 15:34 Ajanuw 阅读(164) 评论(0) 推荐(0)
摘要:想要什么: int fun(int p1) { int r = 0; for(int i = 0; i < p1; i++) { r = r + i + p1; } return r; } IR: define i32 @fun(i32 %p1) { entry: %r = alloca i32, 阅读全文
posted @ 2021-06-01 23:46 Ajanuw 阅读(160) 评论(0) 推荐(0)
摘要:想要什么: int fun(int p1) { if(p1 < 5) return 1; else return 2; } IR: define i32 @fun(i32 %p1) { entry: %cmp = icmp slt i32 %p1, 5 br i1 %cmp, label %then 阅读全文
posted @ 2021-06-01 22:08 Ajanuw 阅读(140) 评论(0) 推荐(0)
摘要:想要什么: int add1(int p1) { return 1 + p1; } IR: define i32 @add1(i32 %p1) { entry: %retVal = add i32 1, %p1 ret i32 %retVal } #include "llvm/ExecutionEn 阅读全文
posted @ 2021-06-01 20:50 Ajanuw 阅读(210) 评论(0) 推荐(0)
摘要:在github上下载最新的Release版本的源码zip包 解压后进入"llvm-project-llvmorg-12.0.0"目录下 运行cmake > cmake -S .\llvm\ -B build -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_B 阅读全文
posted @ 2021-05-24 13:00 Ajanuw 阅读(654) 评论(0) 推荐(0)