[llvm-commits] [PATCH] Remove redundant register copies when inserting to Q registers on ARM

Jakob Stoklund Olesen stoklund at 2pi.dk
Fri Aug 31 09:41:39 PDT 2012


On Aug 31, 2012, at 8:26 AM, James Molloy <James.Molloy at arm.com> wrote:

> Hi Jakob,
> 
> That would be neat, and indeed makes sense and works for i32 set-lanes:
> 
> def : Pat<(insertelt (v4i32 QPR:$src1), GPR:$src2, imm:$lane),
>          (v4i32 (INSERT_SUBREG QPR:$src1,
>                  GPR:$src2,
>                  (SSubReg_f32_reg imm:$lane)))>;
> 
> But this doesn't work for i16 or i8; lane widths that are smaller than
> the smallest subregister (ssubx).

Ah, I see.

Could you use the pattern above for 32-bit lanes, and the pseudos for smaller lanes?

BTW, I am planning on fixing the coalescer so it can handle stuff like this. It's not yet clear when that will happen, though.

Thanks,

/jakob




More information about the llvm-commits mailing list