[llvm] r194126 - Fix definition for Mips16 pc relative load word instructions.
reed kotler
rkotler at mips.com
Sat Nov 9 13:50:01 PST 2013
My next check in will have a test case that also tests this feature more
or less.
I still need to solve the problem of artificially creating large basic
blocks in order to get all these cases to be testable.
We are thinking to maybe create a pseudo that can be invoked in inline
assembly to do this.
On 11/06/2013 09:07 AM, Rafael EspĂndola wrote:
> Test case?
>
> On Tuesday, November 5, 2013, Reed Kotler wrote:
>
> 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) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu <javascript:;>
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131109/3835a6ce/attachment.html>
More information about the llvm-commits
mailing list