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 | 0243d369612d4ac17ca4c17d9db14ac6fae7cfce (patch) | |
tree | bf7bc9bbb867a6e426f115ac21cfa176b94b9570 /lib | |
parent | 7af6514dee9b927ec5a03a43dd7bda3e783acd82 (diff) | |
download | external_llvm-0243d369612d4ac17ca4c17d9db14ac6fae7cfce.zip external_llvm-0243d369612d4ac17ca4c17d9db14ac6fae7cfce.tar.gz external_llvm-0243d369612d4ac17ca4c17d9db14ac6fae7cfce.tar.bz2 |
Implement FP regs spills / restores
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76024 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/SystemZ/SystemZInstrInfo.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/Target/SystemZ/SystemZInstrInfo.cpp b/lib/Target/SystemZ/SystemZInstrInfo.cpp index 252a5f6..61f6e93 100644 --- a/lib/Target/SystemZ/SystemZInstrInfo.cpp +++ b/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; } |