|
19 | 19 |
|
20 | 20 | #include "AMDGPU.h" |
21 | 21 | #include "llvm/CodeGen/BasicTTIImpl.h" |
| 22 | +#include "llvm/Support/AMDGPUAddrSpace.h" |
22 | 23 | #include <optional> |
23 | 24 |
|
24 | 25 | namespace llvm { |
@@ -178,41 +179,19 @@ class GCNTTIImpl final : public BasicTTIImplBase<GCNTTIImpl> { |
178 | 179 | if (FromAS == ToAS) |
179 | 180 | return false; |
180 | 181 |
|
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 | + |
216 | 195 | return false; |
217 | 196 | } |
218 | 197 |
|
|
0 commit comments