[PATCH] D59971: [GlobalISel] Add legalization support for non-power-2 loads and stores

Amara Emerson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 29 11:17:18 PDT 2019


aemerson abandoned this revision.
aemerson added a comment.

Actually I've realized now there's two problems with this approach:

1. This doesn't work when we try to legalize other non power of 2 operations. The artifacts for arithmetic ops for example will try to use G_ANYEXT to legalize their source, but if loads are producing the type with G_INSERTS, it's difficult to combine them away.
2. It's not correct when alignment is smaller than the largest sub-memop. E.g. if the i24 load had an alignment of 1. In this case, we have no choice but to split the op into the alignment sized components and use something like G_MERGE on the resulting values.

I'm instead going to work on first adding the legalization support for the pessimistic case of smaller alignment memops, and then deal with the common case.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D59971





More information about the llvm-commits mailing list