[PATCH] ARM ISel: Don't create illegal types during LowerMUL
Arnold Schwaighofer
aschwaighofer at apple.com
Tue May 14 15:34:08 PDT 2013
r181842
On May 14, 2013, at 5:23 PM, Renato Golin <renato.golin at linaro.org> wrote:
> 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>
More information about the llvm-commits
mailing list