Implements the following intrinsics:
- llvm.aarch64.sve.setffr
- llvm.aarch64.sve.rdffr
- llvm.aarch64.sve.rdffr.z
- llvm.aarch64.sve.wrffr
Paths
| Differential D73097
[AArch64][SVE] Add intrinsics for FFR manipulation ClosedPublic Authored by kmclaughlin on Jan 21 2020, 5:54 AM.
Details Summary Implements the following intrinsics:
Diff Detail Event TimelineComment Actions LGTM I think it's fairly likely that we'll eventually decide that the correct model of the FFR register doesn't require these intrinsics at all. They're just register copies, which is not something we normally model explicitly in IR. Instead, it would be much simpler to reason about the semantics if the faulting load intrinsics took the FFR value explicitly as an operand/result. (clang can lower the ACLE intrinsics onto this model by storing "FFR" into a hidden alloca.) In the meantime, though, this implementation looks correct, ignoring the issue with FFR getting clobbered we discussed before. It would be nice if we could use COPY MachineInstrs instead of introducing new pseudo-instructions, but I guess that has the same issue of reading a register that wasn't previously defined. This revision is now accepted and ready to land.Jan 21 2020, 9:20 AM Closed by commit rG4c4861b577cb: [AArch64][SVE] Add intrinsics for FFR manipulation (authored by kmclaughlin). · Explain WhyJan 24 2020, 3:04 AM This revision was automatically updated to reflect the committed changes.
Revision Contents
Diff 239291 llvm/include/llvm/IR/IntrinsicsAArch64.td
llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td
llvm/lib/Target/AArch64/SVEInstrFormats.td
llvm/test/CodeGen/AArch64/sve-intrinsics-ffr-manipulation.ll
|