diff options
author | Bob Wilson <bob.wilson@apple.com> | 2010-12-13 21:58:05 +0000 |
---|---|---|
committer | Bob Wilson <bob.wilson@apple.com> | 2010-12-13 21:58:05 +0000 |
commit | 9b3546d8772358a2acd94c129c56e6c074ca0966 (patch) | |
tree | 1e87f36b60bc8c24f214385762552027d4b6235d /llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp | |
parent | 0a3d1ca28e1deb2b7e42fc7558d52a48d4b76f3f (diff) | |
download | bcm5719-llvm-9b3546d8772358a2acd94c129c56e6c074ca0966.tar.gz bcm5719-llvm-9b3546d8772358a2acd94c129c56e6c074ca0966.zip |
Use COPY_TO_REGCLASS instead of pseudo instructions for Neon FP patterns.
Jakob Olesen suggested that we can avoid the need for separate pseudo
instructions here by using COPY_TO_REGCLASS in the patterns. The pattern
gets pretty ugly but it seems to work well. Partial fix for Radar 8711675.
llvm-svn: 121718
Diffstat (limited to 'llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp | 23 |
1 files changed, 0 insertions, 23 deletions
diff --git a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp index 79ca3fc50e3..2714dd256db 100644 --- a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp +++ b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp @@ -54,7 +54,6 @@ namespace { void ExpandLaneOp(MachineBasicBlock::iterator &MBBI); void ExpandVTBL(MachineBasicBlock::iterator &MBBI, unsigned Opc, bool IsExt, unsigned NumRegs); - void ExpandNeonSFP2(MachineBasicBlock::iterator &MBBI, unsigned Opc); }; char ARMExpandPseudo::ID = 0; } @@ -613,21 +612,6 @@ void ARMExpandPseudo::ExpandVTBL(MachineBasicBlock::iterator &MBBI, MI.eraseFromParent(); } -/// ExpandNeonSFP2 - Translate a 2-register Neon pseudo instruction used for -/// scalar floating-point to a real instruction. -void ARMExpandPseudo::ExpandNeonSFP2(MachineBasicBlock::iterator &MBBI, - unsigned Opc) { - MachineInstr &MI = *MBBI; - MachineBasicBlock &MBB = *MI.getParent(); - MachineInstrBuilder MIB = BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(Opc)); - MIB.addOperand(MI.getOperand(0)) // destination register - .addOperand(MI.getOperand(1)) // source register - .addOperand(MI.getOperand(2)) // predicate - .addOperand(MI.getOperand(3)); // predicate register - TransferImpOps(MI, MIB, MIB); - MI.eraseFromParent(); -} - bool ARMExpandPseudo::ExpandMBB(MachineBasicBlock &MBB) { bool Modified = false; @@ -1167,13 +1151,6 @@ bool ARMExpandPseudo::ExpandMBB(MachineBasicBlock &MBB) { case ARM::VTBX2Pseudo: ExpandVTBL(MBBI, ARM::VTBX2, true, 2); break; case ARM::VTBX3Pseudo: ExpandVTBL(MBBI, ARM::VTBX3, true, 3); break; case ARM::VTBX4Pseudo: ExpandVTBL(MBBI, ARM::VTBX4, true, 4); break; - - case ARM::VABSfd_sfp: ExpandNeonSFP2(MBBI, ARM::VABSfd); break; - case ARM::VNEGfd_sfp: ExpandNeonSFP2(MBBI, ARM::VNEGfd); break; - case ARM::VCVTf2sd_sfp: ExpandNeonSFP2(MBBI, ARM::VCVTf2sd); break; - case ARM::VCVTf2ud_sfp: ExpandNeonSFP2(MBBI, ARM::VCVTf2ud); break; - case ARM::VCVTs2fd_sfp: ExpandNeonSFP2(MBBI, ARM::VCVTs2fd); break; - case ARM::VCVTu2fd_sfp: ExpandNeonSFP2(MBBI, ARM::VCVTu2fd); break; } if (ModifiedOp) |