This is an archive of the discontinued LLVM Phabricator instance.

[clang][AArch64][SVE] Avoid going through memory for coerced VLST return values
ClosedPublic

Authored by joechrisellis on Jan 8 2021, 2:45 AM.

Details

Summary

VLST return values are coerced to VLATs in the function epilog for
consistency with the VLAT ABI. Previously, this coercion was done
through memory. It is preferable to use the
llvm.experimental.vector.insert intrinsic to avoid going through memory
here.

Diff Detail

Event Timeline

joechrisellis created this revision.Jan 8 2021, 2:45 AM
joechrisellis requested review of this revision.Jan 8 2021, 2:45 AM
Herald added a project: Restricted Project. · View Herald TranscriptJan 8 2021, 2:45 AM
Herald added a subscriber: cfe-commits. · View Herald Transcript
c-rhodes accepted this revision.Jan 8 2021, 3:43 AM

I've left one minor nit but looks otherwise looks fine to me

clang/lib/CodeGen/CGCall.cpp
1273

nit: s/Src.getElementType()/SrcTy

This revision is now accepted and ready to land.Jan 8 2021, 3:43 AM

Address @c-rhodes's comment.

  • Use SrcTy instead of Src.getElementType().
joechrisellis marked an inline comment as done.Jan 8 2021, 3:47 AM