- May 12, 2012
-
-
Akira Hatanaka authored
pointer register. This is the first of the series of patches which clean up the way global pointer register is used. The patches will make the following improvements: - Make $gp an allocatable temporary register rather than reserving it. - Use a virtual register as the global pointer register and let the register allocator decide which register to assign to it or whether spill/reloads are needed. - Make sure $gp is valid at the entry of a called function, which is necessary for functions using lazy binding. - Remove the need for emitting .cprestore and .cpload directives. llvm-svn: 156671
-
Akira Hatanaka authored
llvm-svn: 156663
-
- Apr 20, 2012
-
-
Craig Topper authored
Convert more uses of XXXRegisterClass to &XXXRegClass. No functional change since they are equivalent. llvm-svn: 155188
-
- Mar 27, 2012
-
-
Akira Hatanaka authored
llvm-svn: 153497
-
- Mar 08, 2012
-
-
Akira Hatanaka authored
For example, the first instruction in the code below can be eliminated if the use of $vr0 is replaced with $zero: addiu $vr0, $zero, 0 add $vr2, $vr1, $vr0 add $vr2, $vr1, $zero llvm-svn: 152280
-
- Mar 01, 2012
-
-
Akira Hatanaka authored
and stores was added. - SelectAddr should return false if Parent is an unaligned f32 load or store. - Only aligned load and store nodes should be matched to select reg+imm floating point instructions. - MIPS does not have support for f64 unaligned load or store instructions. llvm-svn: 151843
-
- Feb 28, 2012
-
-
Jia Liu authored
llvm-svn: 151625
-
Akira Hatanaka authored
llvm-svn: 151614
-
Akira Hatanaka authored
load and store instructions. llvm-svn: 151611
-
- Feb 24, 2012
-
-
Akira Hatanaka authored
reserving a physical register ($gp or $28) for that purpose. This will completely eliminate loads that restore the value of $gp after every function call, if the register allocator assigns a callee-saved register, or eliminate unnecessary loads if it assigns a temporary register. example: .cpload $25 // set $gp. ... .cprestore 16 // store $gp to stack slot 16($sp). ... jalr $25 // function call. clobbers $gp. lw $gp, 16($sp) // not emitted if callee-saved reg is chosen. ... lw $2, 4($gp) ... jalr $25 // function call. lw $gp, 16($sp) // not emitted if $gp is not live after this instruction. ... llvm-svn: 151402
-
- Feb 17, 2012
- Jan 25, 2012
-
-
Akira Hatanaka authored
Add a test case to show fewer instructions are needed to load an immediate with the new way of loading immediates. llvm-svn: 148908
-
- Jan 06, 2012
-
-
Chad Rosier authored
llvm-svn: 147676
-
- Dec 21, 2011
-
-
Akira Hatanaka authored
nodes needed for multiplication. Add code for selecting 64-bit MULHS and MULHU nodes. llvm-svn: 147008
-
- Dec 20, 2011
-
-
Akira Hatanaka authored
llvm-svn: 147007
-
Akira Hatanaka authored
MIPS64 can generate constant +0.0 with a single DMTC1 instruction. llvm-svn: 146999
-
Akira Hatanaka authored
llvm-svn: 146996
-
Akira Hatanaka authored
llvm-svn: 146995
-
- Dec 19, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146896
-
Akira Hatanaka authored
This change reduces the number of instructions generated. For example, (load (add (sub $n0, $n1), (MipsLo got(s)))) results in the following sequence of instructions: 1. sub $n2, $n0, $n1 2. lw got(s)($n2) Previously, three instructions were needed. 1. sub $n2, $n0, $n1 2. addiu $n3, $n2, got(s) 3. lw 0($n3) llvm-svn: 146888
-
- Dec 09, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146232
-
- Dec 08, 2011
-
-
Akira Hatanaka authored
- Modify lowering of global TLS address nodes. - Modify isel of ThreadPointer. - Wrap target global TLS address nodes that are operands of loads with WrapperPIC. - Remove Mips-specific DAG nodes TlsGd, TprelHi and TprelLo, which can be substituted with other existing nodes. llvm-svn: 146175
-
- Dec 07, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146063
-
Akira Hatanaka authored
llvm-svn: 146062
-
Akira Hatanaka authored
llvm-svn: 146059
-
- Oct 11, 2011
-
-
Akira Hatanaka authored
llvm-svn: 141615
-
- Oct 03, 2011
-
-
Akira Hatanaka authored
llvm-svn: 141017
-
- Sep 21, 2011
-
-
Akira Hatanaka authored
llvm-svn: 140214
-
- Aug 16, 2011
-
-
Akira Hatanaka authored
Mips1 does not support double precision loads or stores, therefore two single precision loads or stores must be used in place of these instructions. This patch treats double precision loads and stores as if they are legal instructions until MCInstLowering, instead of generating the single precision instructions during instruction selection or Prolog/Epilog code insertion. Without the changes made in this patch, llc produces code that has the same problem described in r137484 or bails out when MipsInstrInfo::storeRegToStackSlot or loadRegFromStackSlot is called before register allocation. llvm-svn: 137711
-
- Aug 12, 2011
-
-
Akira Hatanaka authored
integer register to a floating point register. It is not valid to interpret the value of a floating pointer register as part of a double precision floating point value after a single precision floating point computational or move instruction stores its result to the register. - In the test case, the following code is generated before this patch is applied: mtc1 $zero, $f2 ; unformatted copy to $f2 mov.s $f0, $f2 ; $f0 is in single format sdc1 $f12, 0($sp) mov.s $f1, $f2 ; $f1 is in single format c.eq.d $f12, $f0 ; $f0 cannot be interpreted as double - The following code is generated after this patch is applied: mtc1 $zero, $f0 ; unformatted copy to $f0 mtc1 $zero, $f1 ; unformatted copy to $f1 c.eq.d $f12, $f0 ; $f0 can be interpreted as double Bhanu Chetlapalli and Chris Dearman at MIPS technologies reported this bug and provided the test case. llvm-svn: 137484
-
- Jul 07, 2011
-
-
Akira Hatanaka authored
before the offset. This change will enable simplification of function MipsRegisterInfo::eliminateFrameIndex. llvm-svn: 134625
-
- Jun 24, 2011
-
-
Akira Hatanaka authored
static variables or functions. llvm-svn: 133803
-
- Jun 21, 2011
-
-
Akira Hatanaka authored
llvm-svn: 133494
-
- Jun 09, 2011
-
-
Eric Christopher authored
llvm-svn: 132777
-
Akira Hatanaka authored
llvm-svn: 132768
-
- Jun 07, 2011
-
-
Akira Hatanaka authored
llvm-svn: 132725
-
Akira Hatanaka authored
- Fix indentation. - Move comments. - Fit lines in 80 columns. - Remove dead code. llvm-svn: 132724
-
- Jun 02, 2011
-
-
Akira Hatanaka authored
llvm-svn: 132448
-
- May 31, 2011
-
-
Bruno Cardoso Lopes authored
Dynamic, Initial Exec and Local Exec TLS models. Patch by Sasa Stankovic llvm-svn: 132322
-