<div dir="ltr">Hi,<div><br></div><div>If I define a intrinsic function with pointer-typed parameter, for example, </div><div>def llvm_foo_ptr_ty        : LLVMPointerType<llvm_i16_ty>;<br></div><div>def int_foo_get : Intrinsic<[llvm_foo_ptr_ty], [llvm_foo_ptr_ty, llvm_i32_ty], [IntrReadArgMem]>;<br></div><div><br></div><div>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.</div><div><br></div><div>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? </div><div><br></div><div>Any input is appreciable. </div><div><br></div><div>Regards,</div><div><br></div><div>Xiangyang</div></div>