[llvm-commits] [PATCH] Execution domain support for VMOV and VLDR
Jakob Stoklund Olesen
stoklund at 2pi.dk
Fri Aug 31 12:42:38 PDT 2012
On Aug 31, 2012, at 12:17 PM, Tim Northover <t.p.northover at gmail.com> wrote:
> It's probably best to revert the VMOVS change. There is also something hinky about the <undef> flags you're setting on the two VEXTD instructions.
>
> Having finally understood (hopefully) what you're saying about the
> defs, I've found that the VMOVS patch can be useful (when I was
> checking for <imp-use> of the widened source as well it never seemed
> to kick in).
>
> Because of that, I'd rather like to fix VMOVS alongside the others
> now.
Sure.
> Turning to the iffy <undef>s, it looks like in the legal cases
> the following logic would apply:
>
> + Mark source-equivalent D-register <undef> (unless we're lucky enough
> to have an <imp-use> on it).
> + Mark dest-equiv D-reg <undef> on first instruction if the original
> doesn't have <imp-use>.
That sounds right.
>> It would be interesting to know if that is good enough to cover the cases you care
>> about, or if you will need to compute the liveness of the other lane.
>
> I've run some eyeball tests: VMOVSR *is* still optimised but VMOVS
> isn't (it is elsewhere, just not the magical numbers we've decided are
> all-important).
If you find that you do need to determine if a lane is live at a given point, it would be nice to have a general-purpose function to do it.
BTW, if you have determined that the other lane isn't live, you can safely use a single vdup instead of two vext instructions.
/jakob
More information about the llvm-commits
mailing list