[llvm-dev] define intrinsic function with pointer-typed parameter

Xiangyang Guo via llvm-dev llvm-dev at lists.llvm.org
Mon Mar 21 16:33:32 PDT 2016


Hi,

If I define a intrinsic function with pointer-typed parameter, for example,
def llvm_foo_ptr_ty        : LLVMPointerType<llvm_i16_ty>;
def int_foo_get : Intrinsic<[llvm_foo_ptr_ty], [llvm_foo_ptr_ty,
llvm_i32_ty], [IntrReadArgMem]>;

How to lower it for the backend? I'm not sure what kind of register (i16 or
i32 or i32) is needed in this case? If the parameter is
LLVMPointerType<llvm_i32_ty> instead of LLVMPointerType<llvm_i16_ty>, will
this make difference for the backend? Suppose my backend has three types of
register: i16, i32, i64.

When I check the debug information, I can see LLVM tries to use i32 to
lower the parameter to build SDAG. But why it chooses i32 instead of i64?

Any input is appreciable.

Regards,

Xiangyang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160321/2778a8a1/attachment.html>


More information about the llvm-dev mailing list