llvm-6502/lib
Evan Cheng d498c8f2c8 Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue.
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1                                                                                                                                     
%reg1029<def> = MOV8rr %reg1028                                                                                                                                                      
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>                                                                                                                            
insert => %reg1030<def> = MOV8rr %reg1028                                                                                                                                            
%reg1030<def> = ADD8rr %reg1028<kill>, %reg1029<kill>, %EFLAGS<imp-def,dead>                                                                                                         

In this case, it might not be possible to coalesce the second MOV8rr                                                                                                                 
instruction if the first one is coalesced. So it would be profitable to                                                                                                              
commute it:                                                                                                                                                                          
%reg1028<def> = EXTRACT_SUBREG %reg1027<kill>, 1                                                                                                                                     
%reg1029<def> = MOV8rr %reg1028                                                                                                                                                      
%reg1029<def> = SHR8ri %reg1029, 7, %EFLAGS<imp-def,dead>                                                                                                                            
insert => %reg1030<def> = MOV8rr %reg1029                                                                                                                                            
%reg1030<def> = ADD8rr %reg1029<kill>, %reg1028<kill>, %EFLAGS<imp-def,dead>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62954 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-25 03:53:59 +00:00
..
Analysis Introduce two DWARF attribute extentions DW_AT_APPLE_optimized, DW_AT_APPLE_flags. 2009-01-23 22:33:47 +00:00
Archive Add the private linkage. 2009-01-15 20:18:42 +00:00
AsmParser Add the private linkage. 2009-01-15 20:18:42 +00:00
Bitcode use specialized accessor instead of plain getOperand(0) 2009-01-16 18:40:27 +00:00
CodeGen Teach 2addr pass to be do more commuting. If both uses of a two-address instruction are killed, but the first operand has a use before and after the def, commute if the second operand does not suffer from the same issue. 2009-01-25 03:53:59 +00:00
Debugger
ExecutionEngine Add support for deleting a module provider from a JIT in such a way that it does not cause the owned module to be fully materialized. 2009-01-23 19:27:28 +00:00
Linker Add the private linkage. 2009-01-15 20:18:42 +00:00
Support Introduce two DWARF attribute extentions DW_AT_APPLE_optimized, DW_AT_APPLE_flags. 2009-01-23 22:33:47 +00:00
System rename methods in System/Host to be more consistent. 2009-01-22 19:53:00 +00:00
Target Fix an indent and a typo. 2009-01-24 22:12:48 +00:00
Transforms Revert previous change; even this mild and clearly 2009-01-24 21:49:34 +00:00
VMCore Simplify the logic of getting hold of a PHI predecessor block. 2009-01-23 19:40:15 +00:00
Makefile