[PATCH] D141776: [X86] `X86TargetLowering`: override `allowsMemoryAccess()`

Roman Lebedev via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sat Jan 14 18:02:48 PST 2023


lebedev.ri added a comment.

@RKSimon updated description:

  The baseline `allowsMemoryAccess()` is wrong for X86.
  It assumes that aligned memory operations are always allowed,
  but that is not true.
  
  For example, We can not perform a 32-byte aligned non-temporal load
  of a 32-byte vector, without AVX2 that is, yet `allowsMemoryAccess()`
  will say it is allowed, so we may end up merging non-temporal loads,
  only to split them up to legalize them, and here we go again.
  
  NOTE: the test changes here are superfluous. The main effect is that without this change,
  in D141777, we'd get stuck endlessly merging and splitting non-temporal stores.

i believe, this accurately describes what is going on.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D141776



More information about the llvm-commits mailing list