- Apr 05, 2011
-
-
Jakob Stoklund Olesen authored
There can be multiple defs for a single virtual register when they are defining sub-registers. The missing <dead> flag was stopping the inline spiller from eliminating dead code after rematerialization. llvm-svn: 128888
-
- Mar 05, 2011
-
-
Anton Korobeynikov authored
llvm-svn: 127098
-
- Jan 10, 2011
-
-
Jakob Stoklund Olesen authored
These functions not longer assert when passed 0, but simply return false instead. No functional change intended. llvm-svn: 123155
-
- Jan 09, 2011
-
-
Jakob Stoklund Olesen authored
Print virtual registers numbered from 0 instead of the arbitrary FirstVirtualRegister. The first virtual register is printed as %vreg0. TRI::NoRegister is printed as %noreg. llvm-svn: 123107
-
- Jan 08, 2011
-
-
Evan Cheng authored
Instead encode llvm IR level property "HasSideEffects" in an operand (shared with IsAlignStack). Added MachineInstrs::hasUnmodeledSideEffects() to check the operand when the instruction is an INLINEASM. This allows memory instructions to be moved around INLINEASM instructions. llvm-svn: 123044
-
- Jan 07, 2011
-
-
Evan Cheng authored
llvm-svn: 123031
-
- Oct 22, 2010
-
-
Evan Cheng authored
llvm-svn: 117155
-
- Oct 20, 2010
-
-
Dan Gohman authored
llvm-svn: 116890
-
- Oct 19, 2010
-
-
Jakob Stoklund Olesen authored
Pull an unsigned out of the Contents union such that it has the same size as two pointers and no padding. Arrange members such that the Contents union and all pointers can be 8-byte aligned without padding. This speeds up code generation by 0.8% on a 64-bit host. 32-bit hosts should be unaffected. llvm-svn: 116857
-
- Sep 21, 2010
-
-
Chris Lattner authored
llvm-svn: 114463
-
Chris Lattner authored
llvm-svn: 114409
-
Chris Lattner authored
"getFixedStack" on the MachinePointerInfo class. While this isn't the problem I'm setting out to solve, it is the right way to eliminate PseudoSourceValue, so lets go with it. llvm-svn: 114406
-
Chris Lattner authored
llvm-svn: 114400
-
Chris Lattner authored
to the MachineFunction construction methods. llvm-svn: 114390
-
Chris Lattner authored
MachinePointerInfo struct, no functionality change. This also adds an assert to MachineMemOperand::MachineMemOperand that verifies that the Value* is either null or is an IR pointer type. llvm-svn: 114389
-
- Aug 02, 2010
-
-
Oscar Fuentes authored
Fixes potential ambiguity problems on VS 2010. Patch by nobled! llvm-svn: 110029
-
- Jul 28, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 109608
-
- Jul 05, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 107602
-
- Jul 02, 2010
-
-
Dale Johannesen authored
PrologEpilog code, and use it to determine whether the asm forces stack alignment or not. gcc consistently does not do this for GCC-style asms; Apple gcc inconsistently sometimes does it for asm blocks. There is no convenient place to put a bit in either the SDNode or the MachineInstr form, so I've added an extra operand to each; unlovely, but it does allow for expansion for more bits, should we need it. PR 5125. Some existing testcases are affected. The operand lists of the SDNode and MachineInstr forms are indexed with awesome mnemonics, like "2"; I may fix this someday, but not now. I'm not making it any worse. If anyone is inspired I think you can find all the right places from this patch. llvm-svn: 107506
-
- Jun 29, 2010
-
-
Devang Patel authored
llvm-svn: 107208
-
- Jun 19, 2010
-
-
Dan Gohman authored
on calls and similar instructions. llvm-svn: 106353
-
- Jun 03, 2010
-
-
Jakob Stoklund Olesen authored
instruction defines subregisters. Any existing subreg indices on the original instruction are preserved or composed with the new subreg index. Also substitute multiple operands mentioning the original register by using the new MachineInstr::substituteRegister() function. This is necessary because there will soon be <imp-def> operands added to non read-modify-write partial definitions. This instruction: %reg1234:foo = FLAP %reg1234<imp-def> will reMaterialize(%reg3333, bar) like this: %reg3333:bar-foo = FLAP %reg333:bar<imp-def> Finally, replace the TargetRegisterInfo pointer argument with a reference to indicate that it cannot be NULL. llvm-svn: 105358
-
- Jun 02, 2010
-
-
Jakob Stoklund Olesen authored
The comment about ordering of subreg indices is no longer true. This exposed a bug in the new substVirtReg method that is also fixed. llvm-svn: 105294
-
- May 28, 2010
-
-
Jakob Stoklund Olesen authored
implementation that is correct for most targets. Tablegen will override where needed. Add MachineOperand::subst{Virt,Phys}Reg methods that correctly handle existing subreg indices when sustituting registers. llvm-svn: 104985
-
- May 25, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 104628
-
- May 21, 2010
-
-
Evan Cheng authored
that are aliases of the specified register. - Rename modifiesRegister to definesRegister since it's looking a def of the specific register or one of its super-registers. It's not looking for def of a sub-register or alias that could change the specified register. - Added modifiesRegister to look for defs of aliases. llvm-svn: 104377
-
Jakob Stoklund Olesen authored
reads or writes a register. This takes partial redefines and undef uses into account. Don't actually use it yet. That caused miscompiles. llvm-svn: 104372
-
Jakob Stoklund Olesen authored
This reverts r104322. I think it was causing miscompilations. llvm-svn: 104323
-
Jakob Stoklund Olesen authored
This correctly handles partial redefines and undef uses. llvm-svn: 104322
-
Jakob Stoklund Olesen authored
<imp-def> operand for the full register. This ensures that the full physical register is marked live after register allocation. llvm-svn: 104320
-
- May 19, 2010
-
-
Jakob Stoklund Olesen authored
partial redefines. We are going to treat a partial redefine of a virtual register as a read-modify-write: %reg1024:6 = OP Unless the register is fully clobbered: %reg1024:6 = OP, %reg1024<imp-def> MachineInstr::readsVirtualRegister() knows the difference. The first case is a read, the second isn't. llvm-svn: 104149
-
- May 13, 2010
-
-
Dan Gohman authored
when they move instructions. llvm-svn: 103737
-
- Apr 28, 2010
-
-
Evan Cheng authored
Before: DBG_VALUE %RSI, 0, !-1; dbg:SimpleRegisterCoalescing.cpp:2707 Now: DBG_VALUE %RSI, 0, !"this"; dbg:SimpleRegisterCoalescing.cpp:2707 llvm-svn: 102518
-
- Apr 09, 2010
-
-
Bob Wilson authored
llvm-svn: 100850
-
Bob Wilson authored
llvm-svn: 100849
-
- Apr 08, 2010
-
-
Evan Cheng authored
%RDI<def,dead> = MOV64rr %RAX<kill>, %EDI<imp-def> llvm-svn: 100804
-
- Apr 07, 2010
-
-
Chris Lattner authored
MachineOperand::isIdenticalTo wasn't handling metadata operands. llvm-svn: 100636
-
- Apr 02, 2010
-
-
Chris Lattner authored
llvm-svn: 100215
-
Chris Lattner authored
representation. This eliminates the 'DILocation' MDNodes for file/line/col tuples from -O0 -g codegen. This remove the old DebugLoc class, making it a typedef for DebugLoc, I'll rename NewDebugLoc next. I didn't update the JIT to use the new apis, so it will continue to work, but be as slow as before. Someone should eventually do this or, better yet, rip out the JIT debug info stuff and build the JIT on top of MC. llvm-svn: 100209
-
- Mar 13, 2010
-
-
Chris Lattner authored
llvm-svn: 98433
-