This is an archive of the discontinued LLVM Phabricator instance.

[llvm][AArch64] Explain why certain registers are reserved on Arm64EC
ClosedPublic

Authored by DavidSpickett on Sep 12 2022, 7:52 AM.

Details

Summary

This extends 4658366d95d5e398baad956225cc4ba339d5b037 to add a note
explaining why the register is reserved.

note: x13 is clobbered by asynchronous signals when using Arm64EC.

I've added testing for w/x registers and v/q/s/d and h floating point
registers.

llvm will accept, but silently do nothing with, b registers. So they
are not tested here (clang rejects them so at least for C you're safe anyway).

Diff Detail

Event Timeline

DavidSpickett created this revision.Sep 12 2022, 7:52 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 12 2022, 7:52 AM
DavidSpickett requested review of this revision.Sep 12 2022, 7:52 AM
Herald added a project: Restricted Project. · View Herald TranscriptSep 12 2022, 7:52 AM
DavidSpickett added inline comments.Sep 12 2022, 8:00 AM
llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
333

This could be a little more precise, like: "when using Arm64EC (which you are)". "due to the Arm64EC ABI"? Not sure.

Ideas welcome if you think it's not clear enough as is.

efriedma accepted this revision.Sep 12 2022, 9:17 AM

LGTM

llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
333

Maybe "when building for Arm64EC"? I don't think we need to be too concerned here; the reference to Arm64EC should make it obvious to anyone dealing with it.

This revision is now accepted and ready to land.Sep 12 2022, 9:17 AM
DavidSpickett marked an inline comment as done.Sep 13 2022, 2:30 AM
This revision was landed with ongoing or failed builds.Sep 13 2022, 3:13 AM
This revision was automatically updated to reflect the committed changes.