Skip to content

Commit 0d29726

Browse files
committed
fixup! fixup! [AMDGPU] Allow casts between the Global and Constant Addr Spaces in isValidAddrSpaceCast
Disallow non-flat <-> (local, private) casts and use is_GlobalAddrSpace functions
1 parent 2787983 commit 0d29726

File tree

1 file changed

+14
-35
lines changed

1 file changed

+14
-35
lines changed

llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h

Lines changed: 14 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include "AMDGPU.h"
2121
#include "llvm/CodeGen/BasicTTIImpl.h"
22+
#include "llvm/Support/AMDGPUAddrSpace.h"
2223
#include <optional>
2324

2425
namespace llvm {
@@ -178,41 +179,19 @@ class GCNTTIImpl final : public BasicTTIImplBase<GCNTTIImpl> {
178179
if (FromAS == ToAS)
179180
return false;
180181

181-
if (FromAS == AMDGPUAS::FLAT_ADDRESS ||
182-
FromAS == AMDGPUAS::GLOBAL_ADDRESS ||
183-
FromAS == AMDGPUAS::CONSTANT_ADDRESS ||
184-
FromAS > AMDGPUAS::MAX_AMDGPU_ADDRESS) {
185-
// Casting any 64-bit AS to another 64-bit AS or to a 32-bit AS is
186-
// valid.
187-
switch (ToAS) {
188-
case AMDGPUAS::FLAT_ADDRESS:
189-
case AMDGPUAS::GLOBAL_ADDRESS:
190-
case AMDGPUAS::LOCAL_ADDRESS:
191-
case AMDGPUAS::CONSTANT_ADDRESS:
192-
case AMDGPUAS::PRIVATE_ADDRESS:
193-
case AMDGPUAS::CONSTANT_ADDRESS_32BIT:
194-
return true;
195-
default:
196-
break;
197-
}
198-
if (ToAS > AMDGPUAS::MAX_AMDGPU_ADDRESS)
199-
return true;
200-
} else if (FromAS == AMDGPUAS::LOCAL_ADDRESS ||
201-
FromAS == AMDGPUAS::PRIVATE_ADDRESS ||
202-
FromAS == AMDGPUAS::CONSTANT_ADDRESS_32BIT) {
203-
// Casting from a 32-bit AS to any 64-bit AS is valid.
204-
switch (ToAS) {
205-
case AMDGPUAS::FLAT_ADDRESS:
206-
case AMDGPUAS::GLOBAL_ADDRESS:
207-
case AMDGPUAS::CONSTANT_ADDRESS:
208-
return true;
209-
default:
210-
break;
211-
}
212-
if (ToAS > AMDGPUAS::MAX_AMDGPU_ADDRESS)
213-
return true;
214-
}
215-
// Everything else is not valid.
182+
if (FromAS == AMDGPUAS::FLAT_ADDRESS)
183+
return AMDGPU::isExtendedGlobalAddrSpace(ToAS) ||
184+
ToAS == AMDGPUAS::LOCAL_ADDRESS ||
185+
ToAS == AMDGPUAS::PRIVATE_ADDRESS;
186+
187+
if (AMDGPU::isExtendedGlobalAddrSpace(FromAS))
188+
return AMDGPU::isFlatGlobalAddrSpace(ToAS) ||
189+
ToAS == AMDGPUAS::CONSTANT_ADDRESS_32BIT;
190+
191+
if (FromAS == AMDGPUAS::LOCAL_ADDRESS ||
192+
FromAS == AMDGPUAS::PRIVATE_ADDRESS)
193+
return ToAS == AMDGPUAS::FLAT_ADDRESS;
194+
216195
return false;
217196
}
218197

0 commit comments

Comments
 (0)