From 7f6dc597d3662db75eef9c14cbe1f13a8afbc062 Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Mon, 10 Sep 2018 11:59:27 +0000 Subject: [PATCH] AMDGPU: Stop reporting is-noop addrspacecast for constant 32-bit This will require something to cast. Before this would eliminate the cast, which would result in copies of $noreg. llvm-svn: 341803 --- llvm/lib/Target/AMDGPU/SIISelLowering.cpp | 3 +-- llvm/test/CodeGen/AMDGPU/invalid-addrspacecast.ll | 7 +++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp index 9359d53fa9d4..520ed141dc5d 100644 --- a/llvm/lib/Target/AMDGPU/SIISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/SIISelLowering.cpp @@ -1120,8 +1120,7 @@ EVT SITargetLowering::getOptimalMemOpType(uint64_t Size, unsigned DstAlign, static bool isFlatGlobalAddrSpace(unsigned AS) { return AS == AMDGPUAS::GLOBAL_ADDRESS || AS == AMDGPUAS::FLAT_ADDRESS || - AS == AMDGPUAS::CONSTANT_ADDRESS || - AS == AMDGPUAS::CONSTANT_ADDRESS_32BIT; + AS == AMDGPUAS::CONSTANT_ADDRESS; } bool SITargetLowering::isNoopAddrSpaceCast(unsigned SrcAS, diff --git a/llvm/test/CodeGen/AMDGPU/invalid-addrspacecast.ll b/llvm/test/CodeGen/AMDGPU/invalid-addrspacecast.ll index 31f2fbc919aa..2f8e022ed026 100644 --- a/llvm/test/CodeGen/AMDGPU/invalid-addrspacecast.ll +++ b/llvm/test/CodeGen/AMDGPU/invalid-addrspacecast.ll @@ -6,3 +6,10 @@ define amdgpu_kernel void @use_group_to_global_addrspacecast(i32 addrspace(3)* % store volatile i32 0, i32 addrspace(1)* %stof ret void } + +; ERROR: error: :0:0: in function use_constant32bit_to_flat_addrspacecast void (i32 addrspace(6)*): invalid addrspacecast +define amdgpu_kernel void @use_constant32bit_to_flat_addrspacecast(i32 addrspace(6)* %ptr) #0 { + %stof = addrspacecast i32 addrspace(6)* %ptr to i32* + store volatile i32 7, i32* %stof + ret void +}