[ARM] Cortex-M4 schedule additions
authorDavid Green <david.green@arm.com>
Sun, 29 Sep 2019 08:38:48 +0000 (08:38 +0000)
committerDavid Green <david.green@arm.com>
Sun, 29 Sep 2019 08:38:48 +0000 (08:38 +0000)
commit120a5e9a745f931d805d63c6c5313a1aa24d98f5
tree98f25b4efe8acd346816f698e468bc9d43be98aa
parent9bc1c6ecc5682c241e09c59e3c3e3a1fc7f0e7f5
[ARM] Cortex-M4 schedule additions

This is an attempt to fill in some of the missing instructions from the
Cortex-M4 schedule, and make it easier to do the same for other ARM cpus.

- Some instructions are marked as hasNoSchedulingInfo as they are pseudos or
  otherwise do not require scheduling info
- A lot of features have been marked not supported
- Some WriteRes's have been added for cvt instructions.
- Some extra instruction latencies have been added, notably by relaxing the
  regex for dsp instruction to catch more cases, and some fp instructions.

This goes a long way to get the CompleteModel working for this CPU. It does not
go far enough as to get all scheduling info for all output operands correct.

Differential Revision: https://reviews.llvm.org/D67957

llvm-svn: 373163
llvm/lib/Target/ARM/ARMInstrFormats.td
llvm/lib/Target/ARM/ARMInstrInfo.td
llvm/lib/Target/ARM/ARMInstrThumb2.td
llvm/lib/Target/ARM/ARMInstrVFP.td
llvm/lib/Target/ARM/ARMScheduleM4.td
llvm/test/CodeGen/ARM/ParallelDSP/complex_dot_prod.ll
llvm/test/CodeGen/ARM/ParallelDSP/multi-use-loads.ll
llvm/test/CodeGen/ARM/ParallelDSP/unroll-n-jam-smlad.ll