[PATCH] D81586: [ARM] Describe defs/uses of VLLDM and VLSTM

Momchil Velikov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 10 12:49:47 PDT 2020


chill marked an inline comment as done.
chill added inline comments.


================
Comment at: llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp:1280
+  for (int I = 0; I < 7; ++I)
+    VLSTM.addReg(ARM::Q0 + I, RegState::Implicit | RegState::Undef);
 
----------------
efriedma wrote:
> RegState::Undef seems wrong: presumably the registers may actually contain data we need to preserve, or we wouldn't bother saving them in the first place.
Saving/restoring is fine even if we didn't have to.

The "undef" is because we don't want to require the register to be defined at the point before the `vlstm`. Defined or not, we save then restore, don't care about values.

Otherwise, the machine verifier complains about the use of undefined register.

Is it possible for the scheduler to reorder a def after the "undef"-ed use in `vlstm` ? If yes, indeed, that'd be a problem, in which case maybe we can just set the insn as a scheduling barrier.



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

https://reviews.llvm.org/D81586





More information about the llvm-commits mailing list