diff options
| author | Anton Korobeynikov <asl@math.spbu.ru> | 2009-07-16 14:21:41 +0000 |
|---|---|---|
| committer | Anton Korobeynikov <asl@math.spbu.ru> | 2009-07-16 14:21:41 +0000 |
| commit | 345e08d24c18d198880581065292954a2c539dc0 (patch) | |
| tree | dbfaccc803a4c01e94c316a7cfe69062033e54e1 /llvm/lib/Target/SystemZ | |
| parent | 0fcdd8d424796f0ed7d844c47bf7953802120493 (diff) | |
| download | bcm5719-llvm-345e08d24c18d198880581065292954a2c539dc0.tar.gz bcm5719-llvm-345e08d24c18d198880581065292954a2c539dc0.zip | |
Implement FP regs spills / restores
llvm-svn: 76024
Diffstat (limited to 'llvm/lib/Target/SystemZ')
| -rw-r--r-- | llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp index 252a5f670f5..61f6e939e81 100644 --- a/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp +++ b/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp @@ -66,6 +66,10 @@ void SystemZInstrInfo::storeRegToStackSlot(MachineBasicBlock &MBB, else if (RC == &SystemZ::GR64RegClass || RC == &SystemZ::ADDR64RegClass) { Opc = SystemZ::MOV64mr; + } else if (RC == &SystemZ::FP32RegClass) { + Opc = SystemZ::FMOV32mr; + } else if (RC == &SystemZ::FP64RegClass) { + Opc = SystemZ::FMOV64mr; } else assert(0 && "Unsupported regclass to store"); @@ -87,6 +91,10 @@ void SystemZInstrInfo::loadRegFromStackSlot(MachineBasicBlock &MBB, else if (RC == &SystemZ::GR64RegClass || RC == &SystemZ::ADDR64RegClass) { Opc = SystemZ::MOV64rm; + } else if (RC == &SystemZ::FP32RegClass) { + Opc = SystemZ::FMOV32rm; + } else if (RC == &SystemZ::FP64RegClass) { + Opc = SystemZ::FMOV64rm; } else assert(0 && "Unsupported regclass to store"); @@ -369,6 +377,12 @@ SystemZInstrInfo::getLongDispOpc(unsigned Opc) const { case SystemZ::UCMP32rm: Opc = SystemZ::UCMP32rmy; break; + case SystemZ::FMOV32mr: + Opc = SystemZ::FMOV32mry; + break; + case SystemZ::FMOV64mr: + Opc = SystemZ::FMOV64mry; + break; default: break; } |

