1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 2; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -infer-address-spaces -o - %s | FileCheck %s 3; https://github.com/llvm/llvm-project/issues/53665 4 5define i32 @addrspacecast_ptrtoint_inttoptr(i8 addrspace(1)* %arg) { 6; CHECK-LABEL: @addrspacecast_ptrtoint_inttoptr( 7; CHECK-NEXT: bb: 8; CHECK-NEXT: [[TMP0:%.*]] = bitcast i8 addrspace(1)* [[ARG:%.*]] to i32 addrspace(1)* 9; CHECK-NEXT: [[LOAD:%.*]] = load i32, i32 addrspace(1)* [[TMP0]], align 4 10; CHECK-NEXT: ret i32 [[LOAD]] 11; 12bb: 13 %asc = addrspacecast i8 addrspace(1)* %arg to i8* 14 %p2i = ptrtoint i8* %asc to i64 15 %i2p = inttoptr i64 %p2i to i32* 16 %load = load i32, i32* %i2p 17 ret i32 %load 18} 19 20define i32 @assumed_ptrtoint_inttoptr(i8* %arg) { 21bb: 22 %is.priv = call i1 @llvm.amdgcn.is.private(i8* %arg) 23 %not.is.priv = xor i1 %is.priv, -1 24 %is.shared = call i1 @llvm.amdgcn.is.shared(i8* %arg) 25 %not.is.shared = xor i1 %is.shared, -1 26 %and = and i1 %not.is.priv, %not.is.shared 27 tail call void @llvm.assume(i1 %and) 28 %p2i = ptrtoint i8* %arg to i64 29 %i2p = inttoptr i64 %p2i to i32* 30 %load = load i32, i32* %i2p 31 ret i32 %load 32} 33 34define i32 @addrspacecast_ptrtoint_inttptr_nontrivial(i8 addrspace(3)* %arg) { 35; CHECK-LABEL: @addrspacecast_ptrtoint_inttptr_nontrivial( 36; CHECK-NEXT: bb: 37; CHECK-NEXT: [[TMP0:%.*]] = bitcast i8 addrspace(3)* [[ARG:%.*]] to i32 addrspace(3)* 38; CHECK-NEXT: [[LOAD:%.*]] = load i32, i32 addrspace(3)* [[TMP0]], align 4 39; CHECK-NEXT: ret i32 [[LOAD]] 40; 41bb: 42 %asc = addrspacecast i8 addrspace(3)* %arg to i8* 43 %p2i = ptrtoint i8* %asc to i64 44 %i2p = inttoptr i64 %p2i to i32* 45 %load = load i32, i32* %i2p 46 ret i32 %load 47} 48 49declare void @llvm.assume(i1 noundef) #0 50declare i1 @llvm.amdgcn.is.shared(i8* nocapture) #1 51declare i1 @llvm.amdgcn.is.private(i8* nocapture) #1 52 53attributes #0 = { inaccessiblememonly nofree nosync nounwind willreturn } 54attributes #1 = { nounwind readnone speculatable willreturn } 55