llvm-ir

    1热度

    1回答

    我想添加对llvm backend(llc)中一个新的arch的支持。不过,我发现难以添加一个新的SDNode,它有2个结果。我在UMUL/SMUL有2个结果(第二个是Y)的SPARC弓锯,使他们定义: let Defs = [Y] in { defm UMUL : ... defm SMUL : ... } 和 let Uses = [Y], ... in d

    2热度

    1回答

    与标题一样,在cuda程序中,内核参数在内核启动后驻留在GPU的本地内存还是全局内存中? 例如,在CUDA程序的LLVM IR: __global__ kernel(int param1): %0 = alloca int store param1, %0 因此,在这种情况下,在哪里呢%0点?本地内存或全局内存? 此外,我看到有时内核参数被保存并直接用在寄存器中,而不是存储在任何内存中。这个决定是

    0热度

    1回答

    我是LLVM IR的新手,我试图模拟LLVM IR中的一些x86指令。 下面是一个简单的例子: move %eax, %ebx 但是,我没有找到在here和here看材料之后的任何相应mov操作码。 所以我的问题是: 如果我想模拟使用LLVM IR的mov操作码?我该怎么办? 我是LLVM IR的新手,可能我会花很长时间在这个“模拟”工作上,关于LLVM IR的最佳参考应该是什么? 我真的很感

    0热度

    2回答

    是否可以在LLVM-IR中将变量设置为0(或任何其他编号)?我的搜索找到了以下3行代码片段,但有什么比以下解决方案更简单? %ptr = alloca i32 ; yields i32*:ptr store i32 3, i32* %ptr ; yields void %val = load i32, i32* %ptr ; yields i32:val =

    0热度

    1回答

    我正在做一个仪器通行证。通行证应该以特别的方式修改给定的IR。所需的修改之一是在特定位置插入对功能的调用。 这是调用函数的签名: void myclass::foo(Function *f, BasicBlock* b) 这个函数的原型是在foofile.h文件包括/ LLVM 和函数的定义是foofile.cpp文件中MCJIT文件夹。 并且在此文件夹下运行make可以正常工作,并且foof

    1热度

    1回答

    我正在研究一个图书馆,我希望某些内省功能可用。假设我正在编译clang,所以我可以访问libtooling或其他任何东西。 我特别希望某人能够查看作为程序一部分的已编译函数的LLVM IR。我知道,在编译时,我可以使用-emit-llvm来获取IR。但是它将它保存到一个文件中。我想要的是将LLVM IR嵌入到程序本身中并从程序本身检索 - 例如, my_function_object.llvm_i

    0热度

    1回答

    我想安装VMkit,因为我需要从java字节码中获取LLVM-IR。但是,当我尝试配置它时,我很难过。这就是VMkit网站所说的:http://vmkit.llvm.org/get_started.html 我该如何运行?如果我复制粘贴到终端我不断收到未知的命令错误。任何帮助,将不胜感激。 Configure vmkit: ./configure --with-llvm-config-path

    0热度

    1回答

    这里的偏移量是一个简单的C程序: struct S {char c; short arr[16]; char dummy2;}; extern struct S A[20]; extern short* p; int main() { p = &A[10].arr[6]; return 0; } 这里是LLVM IR: %struct.S = type { i8

    1热度

    1回答

    我有一个.pexe并希望获得LLVM IR代码。如何才能做到这一点?这是我要转换为LLVM IR文件:NaClAMBullet.pexe 我不明白为什么它是不是已经可读LLVM IR代码: 一个PNaCl移植可执行(简称pexe)是单LLVM IR模块。 来源:Google Native Client Reference

    1热度

    1回答

    我尝试使用AllocaInst并插入它在给定BB的末尾,如下所示: bool runOnBasicBlock(BasicBlock &BB) override { // BB is the address to a BasicBlock instance errs() << BB.getName() << '\t'; BasicBlock *pb=&BB; Allo