| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
re-materialized as a load from constantpool.
llvm-svn: 35207
|
| |
|
|
| |
llvm-svn: 35206
|
| |
|
|
| |
llvm-svn: 35205
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) codegen a shift of a register as a shift, not an LEA.
2) teach the RA to convert a shift to an LEA instruction if it wants something
in three-address form.
This gives us asm diffs like:
- leal (,%eax,4), %eax
+ shll $2, %eax
which is faster on some processors and smaller on all of them.
and, more interestingly:
- movl 24(%esi), %eax
- leal (,%eax,4), %edi
+ movl 24(%esi), %edi
+ shll $2, %edi
Without #2, #1 was a significant pessimization in some cases.
This implements CodeGen/X86/shift-codegen.ll
llvm-svn: 35204
|
| |
|
|
| |
llvm-svn: 35202
|
| |
|
|
| |
llvm-svn: 35199
|
| |
|
|
| |
llvm-svn: 35198
|
| |
|
|
| |
llvm-svn: 35197
|
| |
|
|
| |
llvm-svn: 35196
|
| |
|
|
| |
llvm-svn: 35195
|
| |
|
|
| |
llvm-svn: 35194
|
| |
|
|
| |
llvm-svn: 35190
|
| |
|
|
| |
llvm-svn: 35189
|
| |
|
|
|
|
| |
Patch by Sheng Zhou.
llvm-svn: 35188
|
| |
|
|
|
|
| |
Patch by Zhou Sheng.
llvm-svn: 35187
|
| |
|
|
| |
llvm-svn: 35186
|
| |
|
|
|
|
| |
2. Replace uses of the "isPositive" utility function with APInt::isPositive
llvm-svn: 35185
|
| |
|
|
|
|
| |
Patch by Sheng Zhou.
llvm-svn: 35184
|
| |
|
|
| |
llvm-svn: 35183
|
| |
|
|
|
|
|
| |
parameter on ConstantInt::get to indicate the signedness of the intended
value.
llvm-svn: 35182
|
| |
|
|
|
|
| |
negative number. This is needed to fix test/Assembler/2007-03-19-NegValue.ll
llvm-svn: 35181
|
| |
|
|
|
|
| |
constructor. This helps to fix test/Assembler/2007-03-19-NegValue.ll
llvm-svn: 35180
|
| |
|
|
| |
llvm-svn: 35177
|
| |
|
|
| |
llvm-svn: 35174
|
| |
|
|
|
|
|
|
|
|
|
| |
Eliminate support for type planes in numbered values. This simplifies the
data structures involved in managing forward definitions, etc. Instead of
requiring maps from type to value, we can now just use a vector of values.
These changes also required rewrites of some support functions such as
InsertValue, getBBVal, and ResolveDefinitions. Some other cosmetic changes
were made as well.
llvm-svn: 35173
|
| |
|
|
|
|
| |
named or numbered ValIDs.
llvm-svn: 35172
|
| |
|
|
|
|
|
|
|
|
| |
Radically simplify the SlotMachine. There is no need to keep Value planes
around any more. This change causes slot numbering to number all un-named,
non-void values starting at 0 and incrementing monotonically through the
function, regardless of type (including BasicBlocks). Getting slot numbers
is now a single lookup operation instead of a double lookup.
llvm-svn: 35171
|
| |
|
|
| |
llvm-svn: 35169
|
| |
|
|
| |
llvm-svn: 35165
|
| |
|
|
| |
llvm-svn: 35163
|
| |
|
|
|
|
| |
rematerializable. Only used for constant generation for now.
llvm-svn: 35162
|
| |
|
|
| |
llvm-svn: 35161
|
| |
|
|
| |
llvm-svn: 35160
|
| |
|
|
| |
llvm-svn: 35153
|
| |
|
|
| |
llvm-svn: 35152
|
| |
|
|
|
|
| |
implements Transforms/ScalarRepl/memset-aggregate-byte-leader.ll
llvm-svn: 35150
|
| |
|
|
| |
llvm-svn: 35146
|
| |
|
|
|
|
| |
Rearrange some code to simplify it now that shifts are binops
llvm-svn: 35145
|
| |
|
|
| |
llvm-svn: 35143
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
entry:
icmp ugt i32 %x, 4 ; <i1>:0 [#uses=1]
br i1 %0, label %cond_true, label %cond_false
cond_true: ; preds = %entry
%tmp1 = tail call i32 (...)* @bar( i32 12 ) ; <i32> [#uses=0]
ret void
cond_false: ; preds = %entry
switch i32 %x, label %cond_true15 [
i32 4, label %cond_true3
i32 3, label %cond_true7
i32 2, label %cond_true11
i32 0, label %cond_false17
]
...
llvm-svn: 35142
|
| |
|
|
|
|
| |
- Use distance to closest use to determine whether to abort coalescing.
llvm-svn: 35141
|
| |
|
|
| |
llvm-svn: 35140
|
| |
|
|
|
|
| |
Add some more micro-optimizations: x * 0 = 0, a - x = a --> x = 0.
llvm-svn: 35138
|
| |
|
|
| |
llvm-svn: 35137
|
| |
|
|
| |
llvm-svn: 35135
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to be really bad. Once they are joined they are not broken apart. Also, physical
intervals cannot be spilled!
Added a heuristic as a workaround for this. Be careful coalescing with a
physical register if the virtual register uses are "far". Check if there are
uses in the same loop as the source (copy instruction). Check if it is in the
loop preheader, etc.
llvm-svn: 35134
|
| |
|
|
| |
llvm-svn: 35133
|
| |
|
|
|
|
| |
in that BB.
llvm-svn: 35132
|
| |
|
|
| |
llvm-svn: 35129
|
| |
|
|
|
|
| |
Fix MultiSource/Applications/aha test.
llvm-svn: 35128
|