<div dir="ltr">Hi Matt,<br><br><div>I did call addRegisterClass in TargetLowering for all the possible types in the register. And for typecasting instructions (i32 to i64), it works. Any other possiblilities?</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Jul 2, 2015 at 6:12 PM Matt Arsenault <<a href="mailto:Matthew.Arsenault@amd.com">Matthew.Arsenault@amd.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 07/02/2015 05:56 PM, Xiaochu Liu wrote:<br>
> Hi everyone,<br>
><br>
> I tried to declare multiple data type [i64, i32, v2i32] for a 64 bit<br>
> register class GPR. It works OK but I have one problem that is hard to<br>
> find.<br>
><br>
> When I tried to map a load instruction of a v2i32 type (LOAD<br>
> v2i32:$dst) to load GPR, it always generate two LOAD i32 instead of<br>
> one LOAD v2i32. Any folds understand how this works?<br>
><br>
> Xiaochu<br>
><br>
You probably haven't called addRegisterClass in the TargetLowering<br>
constructor for the vector type. Without it added there, the type<br>
legalizer will split the vector load into components<br>
<br>
-Matt<br>
</blockquote></div>