- Jun 09, 2010
-
-
Evan Cheng authored
Allow target to place 2-address pass inserted copies in better spots. Thumb2 will use this to try to avoid breaking up IT blocks. llvm-svn: 105745
-
- Jun 08, 2010
-
-
Bob Wilson authored
that it is an immediate before checking that the instruction is an EXTRACT_SUBREG. llvm-svn: 105585
-
- Jun 04, 2010
-
-
Bob Wilson authored
Check that all the instructions are in the same basic block, that the EXTRACT_SUBREGs write to the same subregs that are being extracted, and that the source and destination registers are in the same regclass. Some of these constraints can be relaxed with a bit more work. Jakob suggested that the loop that checks for subregs when NewSubIdx != 0 should use the "nodbg" iterator, so I made that change here, too. llvm-svn: 105437
-
- 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
-
-
Bob Wilson authored
and tidy up the comment describing it. llvm-svn: 105339
-
Bob Wilson authored
checked and it is safe to proceed with the changes. llvm-svn: 105304
-
- May 29, 2010
-
-
Jakob Stoklund Olesen authored
llvm-svn: 105066
-
- 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
-
- May 19, 2010
-
-
Jakob Stoklund Olesen authored
lowering REG_SEQUENCE instructions. Insert copies for REG_SEQUENCE sources not killed to avoid breaking later passes. llvm-svn: 104146
-
- May 18, 2010
-
-
Evan Cheng authored
Fix PR7175. Insert copies of a REG_SEQUENCE source if it is used by other REG_SEQUENCE instructions. llvm-svn: 103994
-
Evan Cheng authored
Fix PR7156. If the sources of a REG_SEQUENCE are all IMPLICIT_DEF's. Replace it with an IMPLICIT_DEF rather than deleting it or else it would be left without a def. llvm-svn: 103984
-
- May 17, 2010
-
-
Evan Cheng authored
llvm-svn: 103971
-
- May 15, 2010
-
-
Evan Cheng authored
instructions. e.g. %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1027<def> = EXTRACT_SUBREG %reg1026, 6 %reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5 ... %reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12 After REG_SEQUENCE is eliminated, we are left with: %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6 %reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5 The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger sub-register (or combined to be reg1026 itself as is the case here). If it is possible, it will be able to replace references of reg1026 with reg1029 + the larger sub-register index. llvm-svn: 103835
-
- May 13, 2010
-
-
Evan Cheng authored
If REG_SEQUENCE source is livein, copy it first. Also, update livevariables information when a copy is introduced. llvm-svn: 103680
-
- May 12, 2010
-
-
Evan Cheng authored
llvm-svn: 103538
-
- May 11, 2010
-
-
Evan Cheng authored
llvm-svn: 103449
-
- May 10, 2010
-
-
Evan Cheng authored
llvm-svn: 103435
-
- May 06, 2010
-
-
Dan Gohman authored
doesn't have to guess. llvm-svn: 103194
-
- May 05, 2010
-
-
Evan Cheng authored
llvm-svn: 103109
-
- Mar 23, 2010
-
-
Evan Cheng authored
llvm-svn: 99321
-
- Mar 03, 2010
-
-
Evan Cheng authored
llvm-svn: 97663
-
- Mar 02, 2010
-
-
Evan Cheng authored
llvm-svn: 97578
-
- Feb 11, 2010
-
-
Dale Johannesen authored
llvm-svn: 95889
-
- Feb 10, 2010
-
-
Dale Johannesen authored
llvm-svn: 95814
-
- Feb 09, 2010
-
-
Chris Lattner authored
into TargetOpcodes.h. #include the new TargetOpcodes.h into MachineInstr. Add new inline accessors (like isPHI()) to MachineInstr, and start using them throughout the codebase. llvm-svn: 95687
-
Dale Johannesen authored
llvm-svn: 95647
-
- Jan 05, 2010
-
-
David Greene authored
llvm-svn: 92565
-
- Dec 03, 2009
-
-
Chris Lattner authored
Patch by Howard Hinnant! llvm-svn: 90365
-
- Nov 18, 2009
-
-
Jakob Stoklund Olesen authored
When TwoAddressInstructionPass deletes a dead instruction, make sure that all register kills are accounted for. The 2-addr register does not get special treatment. llvm-svn: 89246
-
- Nov 14, 2009
-
-
Evan Cheng authored
- If destination is a physical register and it has a subreg index, use the sub-register instead. This fixes PR5423. llvm-svn: 88745
-
- Oct 25, 2009
-
-
Nick Lewycky authored
VISIBILITY_HIDDEN removal. llvm-svn: 85043
-
Nick Lewycky authored
Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
-
- Oct 10, 2009
-
-
Dan Gohman authored
is trivially rematerializable and integrate it into TargetInstrInfo::isTriviallyReMaterializable. This way, all places that need to know whether an instruction is rematerializable will get the same answer. This enables the useful parts of the aggressive-remat option by default -- using AliasAnalysis to determine whether a memory location is invariant, and removes the questionable parts -- rematting operations with virtual register inputs that may not be live everywhere. llvm-svn: 83687
-
- Sep 03, 2009
-
-
Bob Wilson authored
for the complicated case where one register is tied to multiple destinations. This avoids the extra scan of instruction operands that was introduced by my recent change. I also pulled some code out into a separate TryInstructionTransform method, added more comments, and renamed some variables. Besides all those changes, this takes care of a FIXME in the code regarding an assumption about there being a single tied use of a register when converting to a 3-address form. I'm not aware of cases where that assumption is violated, but the code now only attempts to transform an instruction, either by commuting its operands or by converting to a 3-address form, for the simple case where there is a single pair of tied operands. llvm-svn: 80945
-
- Sep 02, 2009
-
-
Bob Wilson authored
llvm-svn: 80798
-
Bob Wilson authored
to find the kill, since we already have the operand. llvm-svn: 80736
-
Bob Wilson authored
llvm-svn: 80733
-
Bob Wilson authored
llvm-svn: 80731
-
- Sep 01, 2009
-
-
Bob Wilson authored
tied to different source registers, the TwoAddressInstructionPass needs to be smarter. Change it to check before replacing a source register whether that source register is tied to a different destination register, and if so, defer handling it until a subsequent iteration. llvm-svn: 80654
-
- Aug 31, 2009
-
-
Bob Wilson authored
llvm-svn: 80631
-