Hi all,
I have recently encountered a problem when creating LLVM IRs. I am wondering if there is a standard or easy way to create a load from a certain register? For example, CreateLoad(rbp, NAME).
Thanks,
Chen
Hi all,
I have recently encountered a problem when creating LLVM IRs. I am wondering if there is a standard or easy way to create a load from a certain register? For example, CreateLoad(rbp, NAME).
Thanks,
Chen
Hi Chen,
I have recently encountered a problem when creating LLVM IRs. I am wondering
if there is a standard or easy way to create a load from a certain register?
For example, CreateLoad(rbp, NAME).
LLVM doesn't directly provide access to any machine registers. If you
want %rbp because it's the frame pointer then for that one case there
is actually an @llvm.frameaddress intrinsic you can call to get it.
But if you want other registers as well, the only way I can think of
is through inline assembly.
This is roughly the line clang produces, and should be sufficient:
%my_value = call i64 asm "movq $0, %rbp", "=r"()
Cheers.
Tim.
Hi Tim,
Thanks for the reply. All I need right now are %rbp and %rsp, in other words are frame pointer and stack pointer. I guess @llvm.frameaddress intrinsic work for %rbp in this case, and does @llvm.stacksave return the stack pointer?
Thanks,
Chen