[PATCH] D82788: AMDGPU: Fix alignment requirements for 96bit and 128bit local loads and stores

Mirko Brkusanin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 2 07:31:20 PDT 2020


mbrkusanin marked 4 inline comments as done.
mbrkusanin added inline comments.


================
Comment at: llvm/lib/Target/AMDGPU/SIISelLowering.cpp:1377
+      // ds_read/write_b96 require 16-byte alignment. gfx9 and onward has
+      // unaligned access support but windows likes to keep it dword aligned.
+      bool IsGFX9Plus = Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9;
----------------
nhaehnle wrote:
> arsenm wrote:
> > nhaehnle wrote:
> > > arsenm wrote:
> > > > This is a windows driver bug and doesn't deserve mentioning here. We do not know what the host OS is
> > > I agree that it's a bug, but I find it reasonable to mention it here. I'd change the comment though to specifically call out that this should be considered a bug in the Windows KMD.
> > It's not specific to this instance though, this belongs with the place where we assume unaligned access for amdhsa
> Okay, that's fair.
Is the new wording ok?


================
Comment at: llvm/lib/Target/AMDGPU/SIISelLowering.cpp:1378-1379
+      // unaligned access support but windows likes to keep it dword aligned.
+      bool IsGFX9Plus = Subtarget->getGeneration() >= AMDGPUSubtarget::GFX9;
+      bool Aligned = Align % (IsGFX9Plus ? 4 : 16) == 0;
+      if (IsFast)
----------------
arsenm wrote:
> This should use an explicit subtarget feature check, not for the generation. The subtarget feature also theoretically captures this being a setting. We have hasUnalignedBufferAccess already (I believe the same control is used for DS and regular memory instructions, but I'm not sure)
Added hasUnalignedDSAccess.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D82788/new/

https://reviews.llvm.org/D82788





More information about the llvm-commits mailing list