[ARM] Enable DP copy, load and store instructions for FPv4-SP
authorOliver Stannard <oliver.stannard@arm.com>
Thu, 21 Aug 2014 12:50:31 +0000 (12:50 +0000)
committerOliver Stannard <oliver.stannard@arm.com>
Thu, 21 Aug 2014 12:50:31 +0000 (12:50 +0000)
commit760a46522a0c42fa72b0d585e6352a65b0f42813
treed8d233d2c32b22d1a2926caa8f0a080e1f340f99
parentfc4bdcdc87b35c12e2e1c19d55b92bc91eac86ef
[ARM] Enable DP copy, load and store instructions for FPv4-SP

The FPv4-SP floating-point unit is generally referred to as
single-precision only, but it does have double-precision registers and
load, store and GPR<->DPR move instructions which operate on them.
This patch enables the use of these registers, the main advantage of
which is that we now comply with the AAPCS-VFP calling convention.
This partially reverts r209650, which added some AAPCS-VFP support,
but did not handle return values or alignment of double arguments in
registers.

This patch also adds tests for Thumb2 code generation for
floating-point instructions and intrinsics, which previously only
existed for ARM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216172 91177308-0d34-0410-b5e6-96231b3b80d8
15 files changed:
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
lib/Target/ARM/ARMBaseInstrInfo.cpp
lib/Target/ARM/ARMCallingConv.h
lib/Target/ARM/ARMISelLowering.cpp
lib/Target/ARM/ARMISelLowering.h
lib/Target/ARM/ARMInstrVFP.td
test/CodeGen/ARM/aapcs-hfa-code.ll
test/CodeGen/ARM/darwin-eabi.ll
test/CodeGen/Thumb2/aapcs.ll [new file with mode: 0644]
test/CodeGen/Thumb2/cortex-fp.ll
test/CodeGen/Thumb2/float-cmp.ll [new file with mode: 0644]
test/CodeGen/Thumb2/float-intrinsics-double.ll [new file with mode: 0644]
test/CodeGen/Thumb2/float-intrinsics-float.ll [new file with mode: 0644]
test/CodeGen/Thumb2/float-ops.ll [new file with mode: 0644]