[X86] `X86TargetLowering`: override `allowsMemoryAccess()`
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. Reviewed By: RKSimon Differential Revision: https://reviews.llvm.org/D141776
Loading
Please sign in to comment