[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 09:57:19 PDT 2020


chill created this revision.
chill added reviewers: efriedma, ostannard, dmgreen, snidertm, sigvartmh, avieira, hug-dev.
Herald added subscribers: llvm-commits, danielkiss, hiraditya, kristof.beyls.
Herald added a project: LLVM.

The VLLDM and VLSTM instructions are incompletely specified.  They (potentially)
write (or read, respectively) registers Q0-Q7, VPR, and FPSCR, but the compiler
is unaware of it.

In the new test case `cmse-vlldm-no-reorder.ll` case the compiler missed an
anti-dependency and reordered a `VLLDM` ahead of the instruction, which stashed
the return value from the non-secure call, effectively clobbering said
value.

      

This test case does not fail with upstream LLVM, because of scheduling
differences and I couldn't find a test case for the VLSTM either.


https://reviews.llvm.org/D81586

Files:
  llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
  llvm/lib/Target/ARM/ARMInstrVFP.td
  llvm/test/CodeGen/ARM/cmse-vlldm-no-reorder.ll
  llvm/test/CodeGen/ARM/vlldm-vlstm-uops.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D81586.269881.patch
Type: text/x-patch
Size: 4576 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200610/2dfa683a/attachment.bin>


More information about the llvm-commits mailing list