summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2011-03-11 23:09:50 +0000
committerJim Grosbach <grosbach@apple.com>2011-03-11 23:09:50 +0000
commitbb0547d9c4ee594f5df6d5f46befd841bfbfbc93 (patch)
treef234ba4bb0e5f76bd1c7078a3f856e06539a77a5 /llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
parent9f2b3b569b5258ec168dfff57249d485b542e6bc (diff)
downloadbcm5719-llvm-bb0547d9c4ee594f5df6d5f46befd841bfbfbc93.tar.gz
bcm5719-llvm-bb0547d9c4ee594f5df6d5f46befd841bfbfbc93.zip
Pseudo-ize VMOVDcc and VMOVScc.
llvm-svn: 127506
Diffstat (limited to 'llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
index a985152701c..cb2a89d01a7 100644
--- a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
+++ b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
@@ -708,6 +708,19 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
switch (Opcode) {
default:
return false;
+ case ARM::VMOVScc:
+ case ARM::VMOVDcc: {
+ unsigned newOpc = Opcode == ARM::VMOVScc ? ARM::VMOVS : ARM::VMOVD;
+ BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(newOpc),
+ MI.getOperand(1).getReg())
+ .addReg(MI.getOperand(2).getReg(),
+ getKillRegState(MI.getOperand(2).isKill()))
+ .addImm(MI.getOperand(3).getImm()) // 'pred'
+ .addReg(MI.getOperand(4).getReg());
+
+ MI.eraseFromParent();
+ return true;
+ }
case ARM::MOVCCr: {
BuildMI(MBB, MBBI, MI.getDebugLoc(), TII->get(ARM::MOVr),
MI.getOperand(1).getReg())
OpenPOWER on IntegriCloud