Evan Cheng
|
7bb257e178
|
Revert an un-intended change
llvm-svn: 28278
|
2006-05-13 05:53:47 +00:00 |
|
Chris Lattner
|
c439f96b2c
|
Merge identical code.
llvm-svn: 28274
|
2006-05-13 02:11:14 +00:00 |
|
Evan Cheng
|
772647518f
|
If the register allocator cannot find a register to spill, try the aliases. If
that still fails (because all the register spill weights are inf), just grab
one.
llvm-svn: 28262
|
2006-05-12 19:07:46 +00:00 |
|
Chris Lattner
|
9e29384a4b
|
Remove dead vars
llvm-svn: 28255
|
2006-05-12 18:06:45 +00:00 |
|
Chris Lattner
|
9a24639afc
|
remove dead vars
llvm-svn: 28254
|
2006-05-12 18:04:28 +00:00 |
|
Chris Lattner
|
11064741d3
|
Remove dead variable
llvm-svn: 28253
|
2006-05-12 18:02:04 +00:00 |
|
Chris Lattner
|
474e1b7ef3
|
Comment out dead variables
llvm-svn: 28252
|
2006-05-12 17:57:54 +00:00 |
|
Chris Lattner
|
90527550c1
|
Remove dead var
llvm-svn: 28250
|
2006-05-12 17:50:35 +00:00 |
|
Chris Lattner
|
db5b91f6a8
|
Compile:
%tmp152 = setgt uint %tmp144, %tmp149 ; <bool> [#uses=1]
%tmp159 = setlt uint %tmp144, %tmp149 ; <bool> [#uses=1]
%bothcond2 = or bool %tmp152, %tmp159 ; <bool> [#uses=1]
To setne, not setune, which causes an assertion fault.
llvm-svn: 28244
|
2006-05-12 17:03:46 +00:00 |
|
Owen Anderson
|
29e4d70aed
|
Refactor a bunch of includes so that TargetMachine.h doesn't have to include
TargetData.h. This should make recompiles a bit faster with my current
TargetData tinkering.
llvm-svn: 28238
|
2006-05-12 06:33:49 +00:00 |
|
Evan Cheng
|
f3d7bb7a9e
|
Backing out fix for PR770. Need to re-apply it after live range splitting is possible
llvm-svn: 28236
|
2006-05-12 06:06:34 +00:00 |
|
Evan Cheng
|
c24d0f281c
|
Duh. That could take a long time.
llvm-svn: 28235
|
2006-05-12 06:05:18 +00:00 |
|
Chris Lattner
|
a500852895
|
Two simplifications for token factor nodes: simplify tf(x,x) -> x.
simplify tf(x,y,y,z) -> tf(x,y,z).
llvm-svn: 28233
|
2006-05-12 05:01:37 +00:00 |
|
Evan Cheng
|
0b8e4bca80
|
Add capability to scheduler to commute nodes for profit.
If a two-address code whose first operand has uses below, it should be commuted
when possible.
llvm-svn: 28230
|
2006-05-12 01:58:24 +00:00 |
|
Evan Cheng
|
cb2a0f392c
|
Refactor scheduler code. Move register-reduction list scheduler to a
separate file. Added an initial implementation of top-down register pressure
reduction list scheduler.
llvm-svn: 28226
|
2006-05-11 23:55:42 +00:00 |
|
Evan Cheng
|
7028ff2e25
|
Set weight of zero length intervals to infinite to prevent them from being
spilled.
llvm-svn: 28220
|
2006-05-11 07:29:24 +00:00 |
|
Evan Cheng
|
da04c3aab4
|
Backing out previous check-in.
llvm-svn: 28219
|
2006-05-11 07:28:16 +00:00 |
|
Evan Cheng
|
03fa9eb65e
|
If the live interval legnth is essentially zero, i.e. in every live range
the use follows def immediately, it doesn't make sense to spill it and
hope it will be easier to allocate for this LI.
llvm-svn: 28217
|
2006-05-10 22:30:41 +00:00 |
|
Evan Cheng
|
9f269c1bef
|
Templatify RegReductionPriorityQueue
llvm-svn: 28212
|
2006-05-10 06:16:44 +00:00 |
|
Nate Begeman
|
3af196c9b2
|
Fix PR773
llvm-svn: 28207
|
2006-05-09 18:20:51 +00:00 |
|
Chris Lattner
|
486e0660b7
|
Fix a regression in my patch from last night that broke the llvmgcc4 build on
ppc
llvm-svn: 28205
|
2006-05-09 16:41:59 +00:00 |
|
Evan Cheng
|
1a8feb189e
|
Add pseudo dependency to force a def&use operand to be scheduled last (unless
the distance between the def and another use is much longer). This is under
option control for now "-sched-lower-defnuse".
llvm-svn: 28201
|
2006-05-09 07:13:34 +00:00 |
|
Evan Cheng
|
3f72d2121b
|
Debugging info
llvm-svn: 28200
|
2006-05-09 06:55:15 +00:00 |
|
Evan Cheng
|
aad3fe008e
|
PR 770 - permit coallescing of registers in subset register classes.
llvm-svn: 28197
|
2006-05-09 06:37:48 +00:00 |
|
Chris Lattner
|
b7152b0b42
|
Implement MASM sections correctly, without a "has masm sections flag" and a bunch of special case code.
llvm-svn: 28194
|
2006-05-09 05:33:48 +00:00 |
|
Chris Lattner
|
28fe830b3b
|
Oh yeah, there are two of these now, unify both.
llvm-svn: 28192
|
2006-05-09 05:24:50 +00:00 |
|
Chris Lattner
|
d2aea9851e
|
Setting SwitchToSectionDirective properly in the MASM backend permits a bunch
of code to be unified.
llvm-svn: 28191
|
2006-05-09 05:23:12 +00:00 |
|
Chris Lattner
|
830bed591e
|
Don't prefix section directives with a tab. Doing so causes blank lines to
be emitted to the .s file.
llvm-svn: 28189
|
2006-05-09 05:19:59 +00:00 |
|
Chris Lattner
|
baefeb1e09
|
Make the masm codepath work like the normal code path.
llvm-svn: 28188
|
2006-05-09 05:15:58 +00:00 |
|
Chris Lattner
|
6ede576b55
|
The MASM asmprinter has been fixed, these hacks are no longer needed.
llvm-svn: 28186
|
2006-05-09 05:13:34 +00:00 |
|
Chris Lattner
|
f45b6d5c08
|
Split SwitchSection into SwitchTo{Text|Data}Section methods.
llvm-svn: 28184
|
2006-05-09 04:59:56 +00:00 |
|
Chris Lattner
|
eed10e837c
|
Make the case I just checked in stronger. Now we compile this:
short test2(short X, short x) {
int Y = (short)(X+x);
return Y >> 1;
}
to:
_test2:
add r2, r3, r4
extsh r2, r2
srawi r3, r2, 1
blr
instead of:
_test2:
add r2, r3, r4
extsh r2, r2
srwi r2, r2, 1
extsh r3, r2
blr
llvm-svn: 28175
|
2006-05-08 21:18:59 +00:00 |
|
Chris Lattner
|
7b8a0cfff3
|
Implement and_sext.ll:test3, generating:
_test4:
srawi r3, r3, 16
blr
instead of:
_test4:
srwi r2, r3, 16
extsh r3, r2
blr
for:
short test4(unsigned X) {
return (X >> 16);
}
llvm-svn: 28174
|
2006-05-08 20:59:41 +00:00 |
|
Chris Lattner
|
4f66de151c
|
Compile this:
short test4(unsigned X) {
return (X >> 16);
}
to:
_test4:
movl 4(%esp), %eax
sarl $16, %eax
ret
instead of:
_test4:
movl $-65536, %eax
andl 4(%esp), %eax
sarl $16, %eax
ret
llvm-svn: 28171
|
2006-05-08 20:51:54 +00:00 |
|
Chris Lattner
|
bbe4393bc4
|
Fold shifts with undef operands.
llvm-svn: 28167
|
2006-05-08 17:29:49 +00:00 |
|
Nate Begeman
|
1f359b07de
|
Make emission of jump tables a bit less conservative; they are now required
to be only 31.25% dense, rather than 75% dense.
llvm-svn: 28165
|
2006-05-08 16:51:36 +00:00 |
|
Nate Begeman
|
b8e351aec5
|
Fix PR772
llvm-svn: 28161
|
2006-05-08 01:35:01 +00:00 |
|
Chris Lattner
|
f76c0b6662
|
Simplify some code, add a couple minor missed folds
llvm-svn: 28152
|
2006-05-06 23:06:26 +00:00 |
|
Chris Lattner
|
4a4cbde0bb
|
constant fold sign_extend_inreg
llvm-svn: 28151
|
2006-05-06 23:05:41 +00:00 |
|
Chris Lattner
|
3d5d01a74b
|
remove cases handled elsewhere
llvm-svn: 28150
|
2006-05-06 22:43:44 +00:00 |
|
Jeff Cohen
|
248e133255
|
Fix some loose ends in MASM support.
llvm-svn: 28148
|
2006-05-06 21:27:14 +00:00 |
|
Chris Lattner
|
ca06e2522e
|
Use the new TargetLowering::ComputeNumSignBits method to eliminate
sign_extend_inreg operations. Though ComputeNumSignBits is still rudimentary,
this is enough to compile this:
short test(short X, short x) {
int Y = X+x;
return (Y >> 1);
}
short test2(short X, short x) {
int Y = (short)(X+x);
return Y >> 1;
}
into:
_test:
add r2, r3, r4
srawi r3, r2, 1
blr
_test2:
add r2, r3, r4
extsh r2, r2
srawi r3, r2, 1
blr
instead of:
_test:
add r2, r3, r4
srawi r2, r2, 1
extsh r3, r2
blr
_test2:
add r2, r3, r4
extsh r2, r2
srawi r2, r2, 1
extsh r3, r2
blr
llvm-svn: 28146
|
2006-05-06 09:30:03 +00:00 |
|
Chris Lattner
|
02d3258820
|
When inserting casts, be careful of where we put them. We cannot insert
a cast immediately before a PHI node.
This fixes Regression/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
llvm-svn: 28143
|
2006-05-06 09:10:37 +00:00 |
|
Chris Lattner
|
32e96402c0
|
Fold trunc(any_ext). This gives stuff like:
27,28c27
< movzwl %di, %edi
< movl %edi, %ebx
---
> movw %di, %bx
llvm-svn: 28137
|
2006-05-05 22:56:26 +00:00 |
|
Chris Lattner
|
c912cf0b07
|
Shrink shifts when possible.
llvm-svn: 28136
|
2006-05-05 22:53:17 +00:00 |
|
Chris Lattner
|
06cb36074a
|
Indent multiline asm strings more nicely
llvm-svn: 28132
|
2006-05-05 21:47:05 +00:00 |
|
Chris Lattner
|
4b581e4167
|
Fold (fpext (load x)) -> (extload x)
llvm-svn: 28130
|
2006-05-05 21:34:35 +00:00 |
|
Chris Lattner
|
229d3e3c2d
|
More aggressively sink GEP offsets into loops. For example, before we
generated:
movl 8(%esp), %eax
movl %eax, %edx
addl $4316, %edx
cmpb $1, %cl
ja LBB1_2 #cond_false
LBB1_1: #cond_true
movl L_QuantizationTables720$non_lazy_ptr, %ecx
movl %ecx, (%edx)
movl L_QNOtoQuantTableShift720$non_lazy_ptr, %edx
movl %edx, 4460(%eax)
ret
...
Now we generate:
movl 8(%esp), %eax
cmpb $1, %cl
ja LBB1_2 #cond_false
LBB1_1: #cond_true
movl L_QuantizationTables720$non_lazy_ptr, %ecx
movl %ecx, 4316(%eax)
movl L_QNOtoQuantTableShift720$non_lazy_ptr, %ecx
movl %ecx, 4460(%eax)
ret
... which uses one fewer register.
llvm-svn: 28129
|
2006-05-05 21:17:49 +00:00 |
|
Chris Lattner
|
d7637651b6
|
Fold some common code.
llvm-svn: 28124
|
2006-05-05 06:32:04 +00:00 |
|
Chris Lattner
|
584874682a
|
Implement:
// fold (and (sext x), (sext y)) -> (sext (and x, y))
// fold (or (sext x), (sext y)) -> (sext (or x, y))
// fold (xor (sext x), (sext y)) -> (sext (xor x, y))
// fold (and (aext x), (aext y)) -> (aext (and x, y))
// fold (or (aext x), (aext y)) -> (aext (or x, y))
// fold (xor (aext x), (aext y)) -> (aext (xor x, y))
llvm-svn: 28123
|
2006-05-05 06:31:05 +00:00 |
|