diff options
| author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-08-09 23:41:44 +0000 |
|---|---|---|
| committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-08-09 23:41:44 +0000 |
| commit | 6a14dc01ff01a60d0d997b765b4dd20166e81340 (patch) | |
| tree | 7c98690aadce40bb1d6528ba2513588517a4018b /llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp | |
| parent | 92b942b1b533f0c26232b055e129cea21ae5e563 (diff) | |
| download | bcm5719-llvm-6a14dc01ff01a60d0d997b765b4dd20166e81340.tar.gz bcm5719-llvm-6a14dc01ff01a60d0d997b765b4dd20166e81340.zip | |
Promote VMOVS to VMOVD when possible.
On Cortex-A8, we use the NEON v2f32 instructions for f32 arithmetic. For
better latency, we also send D-register copies down the NEON pipeline by
translating them to vorr instructions.
This patch promotes even S-register copies to D-register copies when
possible so they can also go down the NEON pipeline. Example:
vldr.32 s0, LCPI0_0
loop:
vorr d1, d0, d0
loop2:
...
vadd.f32 d1, d1, d16
The vorr instruction looked like this after regalloc:
%S2<def> = COPY %S0, %D1<imp-def>
Copies involving odd S-registers, and copies that don't define the full
D-register are left alone.
llvm-svn: 137182
Diffstat (limited to 'llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp')
0 files changed, 0 insertions, 0 deletions

