[llvm] r194126 - Fix definition for Mips16 pc relative load word instructions.
Reed Kotler
rkotler at mips.com
Tue Nov 5 20:29:52 PST 2013
Author: rkotler
Date: Tue Nov 5 22:29:52 2013
New Revision: 194126
URL: http://llvm.org/viewvc/llvm-project?rev=194126&view=rev
Log:
Fix definition for Mips16 pc relative load word instructions.
Modified:
llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp
Modified: llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp?rev=194126&r1=194125&r2=194126&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp (original)
+++ llvm/trunk/lib/Target/Mips/MipsConstantIslandPass.cpp Tue Nov 5 22:29:52 2013
@@ -614,12 +614,13 @@ initializeFunctionInfo(const std::vector
llvm_unreachable("Unknown addressing mode for CP reference!");
case Mips::LwRxPcTcp16:
Bits = 8;
- Scale = 2;
+ Scale = 4;
LongFormOpcode = Mips::LwRxPcTcpX16;
break;
case Mips::LwRxPcTcpX16:
Bits = 16;
- Scale = 2;
+ Scale = 1;
+ NegOk = true;
break;
}
// Remember that this is a user of a CP entry.
@@ -782,9 +783,6 @@ MachineBasicBlock *MipsConstantIslands::
/// isOffsetInRange - Checks whether UserOffset (the location of a constant pool
/// reference) is within MaxDisp of TrialOffset (a proposed location of a
/// constant pool entry).
-/// UserOffset is computed by getUserOffset above to include PC adjustments. If
-/// the mod 4 alignment of UserOffset is not known, the uncertainty must be
-/// subtracted from MaxDisp instead. CPUser::getMaxDisp() does that.
bool MipsConstantIslands::isOffsetInRange(unsigned UserOffset,
unsigned TrialOffset, unsigned MaxDisp,
bool NegativeOK) {
More information about the llvm-commits
mailing list