This is an archive of the discontinued LLVM Phabricator instance.

[WIP] [AArch64] Pattern-match byte store from a vector register.
Changes PlannedPublic

Authored by efriedma on May 14 2018, 2:23 PM.

Details

Reviewers
javed.absar
Summary

This is extremely ugly; the right solution is to implement EXTRACT_SUBREG_TO_REGCLASS, and use it here. Just posting this as a proof of concept, in case anyone else was wondering what the issue was in D46655.

Diff Detail

Repository
rL LLVM

Event Timeline

efriedma created this revision.May 14 2018, 2:23 PM

Apropos, why is FPR8 defined as untyped and not i8 below?

def FPR8  : RegisterClass<"AArch64", [untyped], 8, (sequence "B%u", 0, 31)>

i8 isn't considered a legal type by the AArch64ISelLowering, so it will never show up in the input to the instruction selector. Given that, I'm not sure it's really meaningful to say i8 maps to any specific register class.

But I guess it wouldn't do any harm to list i8 as part of FPR8? At least, I can't think of any other effects.

i8 isn't considered a legal type by the AArch64ISelLowering, so it will never show up in the input to the instruction selector. Given that, I'm not sure it's really meaningful to say i8 maps to any specific register class.

But I guess it wouldn't do any harm to list i8 as part of FPR8? At least, I can't think of any other effects.

I'll give it a shot, hoping that I won't go down a rabbit hole...

efriedma planned changes to this revision.Aug 22 2018, 6:41 PM