OSDN Git Service

AMDGPU: Don't check constant address space for atomic stores
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 24 Jan 2020 16:11:57 +0000 (11:11 -0500)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Fri, 24 Jan 2020 20:15:09 +0000 (12:15 -0800)
We define a separate list for storable address spaces. This saves
entry in the matcher table address space list.

llvm/lib/Target/AMDGPU/AMDGPUInstructions.td

index 7e71dbd..8c4afe0 100644 (file)
@@ -408,7 +408,12 @@ def atomic_load_64_#as : PatFrag<(ops node:$ptr), (atomic_load_64 node:$ptr)> {
   let IsAtomic = 1;
   let MemoryVT = i64;
 }
+} // End let AddressSpaces
+} // End foreach as
 
+
+foreach as = [ "global", "flat", "local", "private", "region" ] in {
+let AddressSpaces = !cast<AddressSpaceList>("StoreAddress_"#as).AddrSpaces in {
 def store_#as : PatFrag<(ops node:$val, node:$ptr),
                     (unindexedstore node:$val, node:$ptr)> {
   let IsStore = 1;
@@ -444,8 +449,8 @@ def truncstorei16_hi16_#as : StoreHi16<truncstorei16>;
 
 defm atomic_store_#as : binary_atomic_op<atomic_store>;
 
-} // End let AddressSpaces = ...
-} // End foreach AddrSpace
+} // End let AddressSpaces
+} // End foreach as
 
 
 multiclass ret_noret_binary_atomic_op<SDNode atomic_op, bit IsInt = 1> {