diff options
author | Chris Lattner <sabre@nondot.org> | 2008-03-09 20:31:11 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-03-09 20:31:11 +0000 |
commit | 5e09da236ebc99a22bde7e4ceb3047c83fb7e6d8 (patch) | |
tree | b099d46a85e8f9c404e14542074fefa5a1b61de2 /lib/Target/CellSPU | |
parent | 68a0d0984db8975ad9c7abbfedd80ef8427e797a (diff) | |
download | external_llvm-5e09da236ebc99a22bde7e4ceb3047c83fb7e6d8.zip external_llvm-5e09da236ebc99a22bde7e4ceb3047c83fb7e6d8.tar.gz external_llvm-5e09da236ebc99a22bde7e4ceb3047c83fb7e6d8.tar.bz2 |
cell really does support cross-regclass moves, because R3 is in lots of different regclasses, and the code is not consistent when it comes to value tracking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@48119 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/CellSPU')
-rw-r--r-- | lib/Target/CellSPU/SPUInstrInfo.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/Target/CellSPU/SPUInstrInfo.cpp b/lib/Target/CellSPU/SPUInstrInfo.cpp index 5eb467e..bf94cdc 100644 --- a/lib/Target/CellSPU/SPUInstrInfo.cpp +++ b/lib/Target/CellSPU/SPUInstrInfo.cpp @@ -186,10 +186,15 @@ void SPUInstrInfo::copyRegToReg(MachineBasicBlock &MBB, const TargetRegisterClass *DestRC, const TargetRegisterClass *SrcRC) const { - if (DestRC != SrcRC) { - cerr << "SPUInstrInfo::copyRegToReg(): DestRC != SrcRC not supported!\n"; - abort(); - } + // We support cross register class moves for our aliases, such as R3 in any + // reg class to any other reg class containing R3. This is required because + // we instruction select bitconvert i64 -> f64 as a noop for example, so our + // types have no specific meaning. + + //if (DestRC != SrcRC) { + // cerr << "SPUInstrInfo::copyRegToReg(): DestRC != SrcRC not supported!\n"; + // abort(); + //} if (DestRC == SPU::R8CRegisterClass) { BuildMI(MBB, MI, get(SPU::ORBIr8), DestReg).addReg(SrcReg).addImm(0); |