[ARM] Cortex-M4 schedule
authorDavid Green <david.green@arm.com>
Wed, 15 May 2019 12:41:58 +0000 (12:41 +0000)
committerDavid Green <david.green@arm.com>
Wed, 15 May 2019 12:41:58 +0000 (12:41 +0000)
commitd2d0f46cd2ae0684afa58d73e5effc1a197481d4
tree083ac186aef123824d47996e0eb75955c8f0e654
parent9c7188a08a929832177505a3d2f9571f69ee5e40
[ARM] Cortex-M4 schedule

This patch adds a simple Cortex-M4 schedule, renaming the existing M3
schedule to M4 and filling in the latencies as-per the Cortex-M4 TRM:
https://developer.arm.com/docs/ddi0439/latest

Most of these are 1, with the important exception being loads taking 2
cycles. A few others are also higher, but I don't believe they make a
large difference. I've repurposed the M3 schedule as the latencies are
mostly the same between the two cores, with the M4 having more FP and
DSP instructions. We also turn on MISched and UseAA for the cores that
now use this.

It also adds some schedule Write's to various instruction to make things
simpler.

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

llvm-svn: 360768
12 files changed:
llvm/lib/Target/ARM/ARM.td
llvm/lib/Target/ARM/ARMInstrThumb.td
llvm/lib/Target/ARM/ARMInstrThumb2.td
llvm/lib/Target/ARM/ARMSchedule.td
llvm/lib/Target/ARM/ARMScheduleM3.td [deleted file]
llvm/lib/Target/ARM/ARMScheduleM4.td [new file with mode: 0644]
llvm/test/CodeGen/ARM/ParallelDSP/multi-use-loads.ll
llvm/test/CodeGen/ARM/aapcs-hfa-code.ll
llvm/test/CodeGen/ARM/useaa.ll
llvm/test/CodeGen/Thumb2/ifcvt-no-branch-predictor.ll
llvm/test/CodeGen/Thumb2/m4-sched-ldr.mir [new file with mode: 0644]
llvm/test/CodeGen/Thumb2/m4-sched-regs.ll [new file with mode: 0644]