llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-amdgpu Author: Alexander Richardson (arichardson) <details> <summary>Changes</summary> We should only be extracting the 32-bit offset in the ptrtoaddr case. --- Full diff: https://github.com/llvm/llvm-project/pull/143812.diff 1 Files Affected: - (modified) llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll (+42) ``````````diff diff --git a/llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll b/llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll index 63c0463149b79..bfcb4a419c9ba 100644 --- a/llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll +++ b/llvm/test/CodeGen/AMDGPU/lower-buffer-fat-pointers-pointer-ops.ll @@ -255,6 +255,48 @@ define i32 @ptrtoint_offset(ptr addrspace(7) %ptr) { ret i32 %ret } +define i32 @ptrtoaddr(ptr addrspace(7) %ptr) { +; CHECK-LABEL: define i32 @ptrtoaddr +; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { +; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i32 +; CHECK-NEXT: ret i32 [[RET]] +; + %ret = ptrtoaddr ptr addrspace(7) %ptr to i32 + ret i32 %ret +} + +define <2 x i32> @ptrtoaddr_vec(<2 x ptr addrspace(7)> %ptr) { +; CHECK-LABEL: define <2 x i32> @ptrtoaddr_vec +; CHECK-SAME: ({ <2 x ptr addrspace(8)>, <2 x i32> } [[PTR:%.*]]) #[[ATTR0]] { +; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { <2 x ptr addrspace(8)>, <2 x i32> } [[PTR]] to <2 x i32> +; CHECK-NEXT: ret <2 x i32> [[RET]] +; + %ret = ptrtoaddr <2 x ptr addrspace(7)> %ptr to <2 x i32> + ret <2 x i32> %ret +} + +;; Check that we extend the offset to i160 instead of reinterpreting all bits. +;; FIXME: this is not currently correct. +define i160 @ptrtoaddr_ext(ptr addrspace(7) %ptr) { +; CHECK-LABEL: define i160 @ptrtoaddr_ext +; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { +; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i160 +; CHECK-NEXT: ret i160 [[RET]] +; + %ret = ptrtoaddr ptr addrspace(7) %ptr to i160 + ret i160 %ret +} + +define i16 @ptrtoaddr_trunc(ptr addrspace(7) %ptr) { +; CHECK-LABEL: define i16 @ptrtoaddr_trunc +; CHECK-SAME: ({ ptr addrspace(8), i32 } [[PTR:%.*]]) #[[ATTR0]] { +; CHECK-NEXT: [[RET:%.*]] = ptrtoaddr { ptr addrspace(8), i32 } [[PTR]] to i16 +; CHECK-NEXT: ret i16 [[RET]] +; + %ret = ptrtoaddr ptr addrspace(7) %ptr to i16 + ret i16 %ret +} + define ptr addrspace(7) @inttoptr(i160 %v) { ; CHECK-LABEL: define { ptr addrspace(8), i32 } @inttoptr ; CHECK-SAME: (i160 [[V:%.*]]) #[[ATTR0]] { `````````` </details> https://github.com/llvm/llvm-project/pull/143812 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits