[PATCH] ARM ISel: Don't create illegal types during LowerMUL

Renato Golin renato.golin at linaro.org
Tue May 14 15:23:15 PDT 2013


Hi Arnold,

Check all and both JPEG tests pass! Feel free to commit.

thanks!
--renato


On 14 May 2013 22:06, Jim Grosbach <grosbach at apple.com> wrote:

> Very cool. Thanks, Arnold.
>
> Trivial nitpick:  s/GetExtensionTo64Bits/getExtensionTo64Bits/.
>
> Assuming Renato’s tests come back OK, this looks good to me.
>
> -Jim
>
> On May 14, 2013, at 12:52 PM, Arnold Schwaighofer <aschwaighofer at apple.com>
> wrote:
>
> The transformation happening here is that we want to turn a
> "mul(ext(X), ext(X))" into a "vmull(X, X)", stripping off the extension.
> We have
> to make sure that X still has a valid vector type - possibly recreate an
> extension to a smaller type. In case of a extload of a memory type smaller
> than
> 64 bit we used create a ext(load()). The problem with doing this - instead
> of
> recreating an extload - is that an illegal type is exposed.
>
> This patch fixes this by creating extloads instead of ext(load())
> sequences.
>
> Fixes PR15970.
>
> radar://13871383
>
> From the bug report:
>
> Initially we had a
>
>  mul (v4i32 zextload(from v4i8), v4i32 zextload(from v4i8))
>
> the transform should create
>
>  vmull(v4i16 zextload(from v4i8), ...)
>
> out of this. But instead it creates a
>
>  vmull(v4i16 zext( v4i8 load()), ...
>
> where an illegal type is exposed.
>
> (This would only be exposed if this transform would run during normal
> legalization because vector legalization is allowed to create illegal
> types.)
>
> <0001-ARM-ISel-Don-t-create-illegal-types-during-LowerMUL.patch>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130514/2d08f489/attachment.html>


More information about the llvm-commits mailing list