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