diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-07-06 16:24:34 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-07-06 16:24:34 +0000 |
commit | 7c510aa7bc8e0f720a3de06e45ea14d1098a07ba (patch) | |
tree | 0002d191f467639b328094cc66c9bfb192e65103 /llvm/lib | |
parent | 388e3b0fa931036023d3e08b5453a6dd479d1ff6 (diff) | |
download | bcm5719-llvm-7c510aa7bc8e0f720a3de06e45ea14d1098a07ba.tar.gz bcm5719-llvm-7c510aa7bc8e0f720a3de06e45ea14d1098a07ba.zip |
Don't create neon moves in CopyRegToReg. NEONMoveFixPass will do the conversion
if profitable.
llvm-svn: 107673
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp index 8b4d701fc71..2ec5ad4ec0a 100644 --- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp +++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp @@ -718,6 +718,12 @@ ARMBaseInstrInfo::copyRegToReg(MachineBasicBlock &MBB, if (SrcRC == ARM::DPR_8RegisterClass) SrcRC = ARM::DPR_VFP2RegisterClass; + // NEONMoveFixPass will convert VFP moves to NEON moves when profitable. + if (DestRC == ARM::DPR_VFP2RegisterClass) + DestRC = ARM::DPRRegisterClass; + if (SrcRC == ARM::DPR_VFP2RegisterClass) + SrcRC = ARM::DPRRegisterClass; + // Allow QPR / QPR_VFP2 / QPR_8 cross-class copies. if (DestRC == ARM::QPR_VFP2RegisterClass || DestRC == ARM::QPR_8RegisterClass) @@ -750,10 +756,6 @@ ARMBaseInstrInfo::copyRegToReg(MachineBasicBlock &MBB, Opc = (SrcRC == ARM::GPRRegisterClass ? ARM::VMOVSR : ARM::VMOVS); else if (DestRC == ARM::DPRRegisterClass) Opc = ARM::VMOVD; - else if (DestRC == ARM::DPR_VFP2RegisterClass || - SrcRC == ARM::DPR_VFP2RegisterClass) - // Always use neon reg-reg move if source or dest is NEON-only regclass. - Opc = ARM::VMOVDneon; else if (DestRC == ARM::QPRRegisterClass) Opc = ARM::VMOVQ; else if (DestRC == ARM::QQPRRegisterClass) |