efriedma added inline comments.

================
Comment at: llvm/lib/Target/AArch64/SVEInstrFormats.td:5333
+  // We need a layer of indirection because early machine code passes balk at
+  // physical register (i.e. FFR) uses that have no previous definition.
+  let hasSideEffects = 1, hasNoSchedulingInfo = 1, mayLoad = 1 in {
----------------
kmclaughlin wrote:
> efriedma wrote:
> > This is depending on hasSideEffects to preserve the correct ordering with 
> > instructions that read/write FFR?  That probably works.  I guess the 
> > alternative is to insert an IMPLICIT_DEF of FFR in the entry block of each 
> > function.
> > 
> > What are the calling convention rules for FFR?  Is it callee-save?  If not, 
> > we might need to do some work to make FFR reads/writes do something sane 
> > across calls inserted by the compiler.
> The FFR is not callee-saved. We will need to add support to save & restore it 
> where appropriate at the point the compiler starts generating reads to the 
> FFR, but for the purpose of the ACLE the user will be required to do this if 
> necessary.
How can the user write correct code to save/restore the FFR?  The compiler can 
move arbitrary readnone/argmemonly calls between the definition and the use.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71698/new/

https://reviews.llvm.org/D71698



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to