[llvm] [AMDGPU] Restrict promote alloca on pointers across address spaces (PR #119762)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 17 07:57:12 PST 2024
================
@@ -198,3 +167,39 @@ entry:
%tmp = load ptr addrspace(3), ptr addrspace(5) %alloca, align 8
ret ptr addrspace(3) %tmp
}
+
+; Will not vectorize because we are doing a load/store of a pointer across
+; address spaces of varying pointer sizes.
+define ptr @alloca_load_store_ptr64_full_ivec(ptr %arg) {
+; CHECK-LABEL: define ptr @alloca_load_store_ptr64_full_ivec
+; CHECK-SAME: (ptr [[ARG:%.*]]) {
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [8 x i8], align 8, addrspace(5)
+; CHECK-NEXT: store ptr [[ARG]], ptr addrspace(5) [[ALLOCA]], align 8
+; CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr addrspace(5) [[ALLOCA]], align 8
+; CHECK-NEXT: ret ptr [[TMP]]
+;
+entry:
+ %alloca = alloca [8 x i8], align 8, addrspace(5)
+ store ptr %arg, ptr addrspace(5) %alloca, align 8
+ %tmp = load ptr, ptr addrspace(5) %alloca, align 8
+ ret ptr %tmp
+}
+
+; Will not vectorize because we are doing a load/store of a pointer across
+; address spaces of varying pointer sizes.
----------------
arsenm wrote:
There's no reason to be talking about addrspacecast. This is just bytes. You do not need to know anything about how they are used or interpreted. The promotion should be done, and it's not important that these are pointer typed
https://github.com/llvm/llvm-project/pull/119762
More information about the llvm-commits
mailing list