This patch adds missing scheds for Neon VLDx/VSTx instructions.
This will help one write schedulers easier/faster in the future for ARM sub-targets.
Existing models will not affected by this patch.
Details
Diff Detail
Event Timeline
Hi Javed,
This is an interesting addition, but without an idea how you're doing to use it, it looks like a lot of changes for not many improvements. Do you have a patch which can show this working on a target-specific basis?
Also, maybe the title should mention VLDx/VSTx, not "generic".
cheers,
--renato
Hi Renato:
Thanks for reviewing. I will soon come back with the use-case, as you suggested.
Best Regards
Javed
Hi Renato.
Here is one use for the sched-defs. I have simplified ARMScheduleR52.td where I found the cpu-specific vldx sched-defs to be equivalent to the generic ones.
The sched definitions provided here for vldx/vstx will help write schedulers quickly and efficiently in general. They wont cover all quirks for specific pipeleines of course.
Hi Javed,
Nice reduction! Do you have a rough idea of how much more we can save in complexity by this patch? For now, I think that one example is reason enough to do it anyway.
Just a small inline comment.
--renato
lib/Target/ARM/ARMScheduleR52.td | ||
---|---|---|
838 | Why not the same for VSTx? |
Hi Renato:
It depends a bit on how much 'special features' the sub-target pipeline has. In some cases, just defining WriteRes to associate resource and latency etc with each SchedWrite type could suffice (e.g. for the Cortex-R52 the default WriteVLDx is sufficient).
For VSTx, unfortunately you will notice that things are bit different - e.g. R52Read_F2 which has a ReadAdvance of +2 and the default Sched in ARMInstrNEON.td does not capture it.
One could annotate further SchedRead types in ARMInstrNEON.td to capture this, but I think that would make it unnecessarily too detailed there.
Best Regards
--Javed
Ok, I think it's good as it is. Looking forward to more patches in this area. :)
--renato
Why not the same for VSTx?