This is an archive of the discontinued LLVM Phabricator instance.

[AArch64][SVE] Asm: Support for structured LD2, LD3 and LD4 (scalar+scalar) load instructions.
ClosedPublic

Authored by sdesmalen on May 10 2018, 2:09 AM.

Diff Detail

Repository
rL LLVM

Event Timeline

sdesmalen created this revision.May 10 2018, 2:09 AM
javed.absar added inline comments.May 10 2018, 3:06 AM
lib/Target/AArch64/SVEInstrFormats.td
1153 ↗(On Diff #146095)

Please add Sched<[WriteVLDx]> in all such cases.

fhahn added inline comments.May 10 2018, 3:31 AM
lib/Target/AArch64/SVEInstrFormats.td
1153 ↗(On Diff #146095)

I think so far we excluded scheduling info for SVE instructions, as there is no information available publicly on how resources/units will be structured on actual HW (i.e. if they are shared with the NEON vector units).

If we want to add resources at this stage, it might be safer to add SVE specific resources, which each model could tie to the respective units in the implementation. But I suppose we will have to refine the scheduling info in any case once real HW becomes available. What do you think?

Hi Florian.
I would then suggest adding the following to AArch64Schedule.td and then simply assigning the appropriate Scheds.
Much less work and neater doing it now when the instruction implementation is being done.

// Vector load and stores
def WriteSVE_VLD : SchedWrite;
def WriteSVE_VLD1 : SchedWrite;
def WriteSVE_VLD2 : SchedWrite;
def WriteSVE_VLD3 : SchedWrite;
def WriteSVE_VLD4 : SchedWrite;
def WriteSVE_VST : SchedWrite;
def WriteSVE_VST1 : SchedWrite;
def WriteSVE_VST2 : SchedWrite;
def WriteSVE_VST3 : SchedWrite;
def WriteSVE_VST4 : SchedWrite;

def ReadSVE_VLD : SchedRead;

Having discussed with Sander and Florian in detail I now agree it is better to add properly grouped Scheds later.

fhahn accepted this revision.May 15 2018, 9:48 AM

LGTM, thanks.

This revision is now accepted and ready to land.May 15 2018, 9:48 AM
This revision was automatically updated to reflect the committed changes.