[PATCH] D65447: GlobalISel: Lower scalarizing unmerge of a vector to shifts
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 30 19:17:03 PDT 2019
arsenm added a comment.
In D65447#1607651 <https://reviews.llvm.org/D65447#1607651>, @dsanders wrote:
> This makes sense to me. LGTM
>
> > I also have a growing feeling that we're missing a bitcast legalize action.
>
> I assume the definition of that would be something like:
>
> %1:(x) = OP %0:(x)
>
> to
>
> %2:(y) = G_BITCAST %0:(x)
> %3:(y) = NEW_OP %2:(y)
> %1:(x) = G_BITCAST %3:(y)
>
> and is somewhat similar in principle to lower but sidesteps instead of simplifying, or alternatively is somewhat like libcall but injects code inline instead of calling.
>
> I can't think of a place I'd want to use it over one of the current actions but it sounds like it ought to be useful. Maybe for doing pointer operations using scalar operations? Do you have anything specific in mind?
I’m specifically thinking of load and store. I want to treat these as blindly loading bits, and never splitting them up to get legal types. I can get pretty far treating all loads as legal and unmerge should naturally do the right thing, but it’s awkward for store since it implies a lot of strange truncates will need to be handled
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65447/new/
https://reviews.llvm.org/D65447
More information about the llvm-commits
mailing list