| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
correct. Remove the EmitComparison retvalue, as it is always the first arg.
Fix a place where we incorrectly passed in the setcc opcode instead of the
setcc number, causing us to miscompile crafty. Crafty now works!
llvm-svn: 21195
|
| |
|
|
| |
llvm-svn: 21193
|
| |
|
|
|
|
|
|
| |
This caused the "use before a def" assertion on some programs.
With this patch, 254.gap now passes with the PPC backend.
llvm-svn: 21191
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
int a(short i) {
return i & 1;
}
as
_a:
andi. r3, r3, 1
blr
instead of:
_a:
rlwinm r2, r3, 0, 16, 31
andi. r3, r2, 1
blr
on ppc. It should also help the other risc targets.
llvm-svn: 21189
|
| |
|
|
| |
llvm-svn: 21188
|
| |
|
|
|
|
|
|
| |
Generate rotate left/right immediate
Generate code for brcondtwoway
Use new livein/liveout functionality
llvm-svn: 21187
|
| |
|
|
| |
llvm-svn: 21185
|
| |
|
|
|
|
| |
implicit defs on entry to the function. yaay :)
llvm-svn: 21184
|
| |
|
|
|
|
| |
removes noop moves.
llvm-svn: 21183
|
| |
|
|
| |
llvm-svn: 21182
|
| |
|
|
|
|
| |
and faster.
llvm-svn: 21181
|
| |
|
|
|
|
| |
use ugly imp_def/imp_uses for arguments and return values.
llvm-svn: 21180
|
| |
|
|
|
|
|
|
|
|
| |
* fix overallocation of integer (stacked) registers: we can't allocate
registers for local use if they are required as output registers
this fixes 'toast' in the test suite, and all sorts of larger programs
like bzip2 etc.
llvm-svn: 21178
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
case so that we emit
_test_fneg_sel:
.LBB_test_fneg_sel_0: ;
fsel f1, f1, f3, f2
blr
instead of:
_test_fneg_sel:
.LBB_test_fneg_sel_0: ;
fneg f0, f1
fneg f0, f0
fsel f1, f0, f3, f2
blr
llvm-svn: 21177
|
| |
|
|
|
|
| |
lets hope this doesn't break other programs with induced entropy
llvm-svn: 21174
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
is deconstructed then reconstructed here. This catches 19 fabs's in 177.mesa
9 in 168.wupwise, 5 in 171.swim, 3 in 172.mgrid, and 14 in 173.applu out of
specfp2000.
This allows the X86 code generator to make MUCH better code than before for
each of these and saves one instr on ppc.
This depends on the previous CFE patch to expose these correctly.
llvm-svn: 21171
|
| |
|
|
| |
llvm-svn: 21167
|
| |
|
|
| |
llvm-svn: 21166
|
| |
|
|
| |
llvm-svn: 21165
|
| |
|
|
| |
llvm-svn: 21164
|
| |
|
|
| |
llvm-svn: 21163
|
| |
|
|
|
|
|
|
|
| |
32b: No longer pattern match fneg(fsub(fmul)) as fnmsub
Pattern match fsub a, mul(b, c) as fnmsub
Pattern match fadd a, mul(b, c) as fmadd
Those changes speed up hydro2d by 2.5%, distray by 6%, and scimark by 8%
llvm-svn: 21161
|
| |
|
|
| |
llvm-svn: 21160
|
| |
|
|
| |
llvm-svn: 21159
|
| |
|
|
| |
llvm-svn: 21157
|
| |
|
|
|
|
| |
logic operation pattern matchs, supress FP div when int dividing by a constant
llvm-svn: 21156
|
| |
|
|
|
|
| |
fix hack in division (clean up frcpa instruction)
llvm-svn: 21153
|
| |
|
|
| |
llvm-svn: 21152
|
| |
|
|
|
|
| |
Optimized code sequence for (a < 0) ? b : 0
llvm-svn: 21150
|
| |
|
|
| |
llvm-svn: 21149
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
this into sign/zero extension instructions later.
On PPC, for example, this testcase:
%G = external global sbyte
implementation
void %test(int %X, int %Y) {
%C = setlt int %X, %Y
%D = cast bool %C to sbyte
store sbyte %D, sbyte* %G
ret void
}
Now codegens to:
cmpw cr0, r3, r4
li r3, 1
li r4, 0
blt .LBB_test_2 ;
.LBB_test_1: ;
or r3, r4, r4
.LBB_test_2: ;
addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
stb r3, 0(r2)
instead of:
cmpw cr0, r3, r4
li r3, 1
li r4, 0
blt .LBB_test_2 ;
.LBB_test_1: ;
or r3, r4, r4
.LBB_test_2: ;
*** rlwinm r3, r3, 0, 31, 31
addis r2, r2, ha16(L_G$non_lazy_ptr-"L00000$pb")
lwz r2, lo16(L_G$non_lazy_ptr-"L00000$pb")(r2)
stb r3, 0(r2)
llvm-svn: 21148
|
| |
|
|
| |
llvm-svn: 21147
|
| |
|
|
| |
llvm-svn: 21146
|
| |
|
|
| |
llvm-svn: 21144
|
| |
|
|
| |
llvm-svn: 21143
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(likewise for <= >=u >=u).
Second, it implements a special case hack to turn 'X gtu SINTMAX' -> 'X lt 0'
On powerpc, for example, this changes this:
lis r2, 32767
ori r2, r2, 65535
cmplw cr0, r3, r2
bgt .LBB_test_2
into:
cmpwi cr0, r3, 0
blt .LBB_test_2
llvm-svn: 21142
|
| |
|
|
|
|
| |
divisions.... by 10000. ok, so random divisors would be good too, but this at least fixes some things
llvm-svn: 21140
|
| |
|
|
| |
llvm-svn: 21139
|
| |
|
|
|
|
|
|
| |
(X-Y)-X --> -Y
A + (B - A) --> B
(B - A) + A --> B
llvm-svn: 21138
|
| |
|
|
|
|
|
| |
This occurs several dozen times in specint2k, particularly in crafty and gcc
apparently.
llvm-svn: 21136
|
| |
|
|
| |
llvm-svn: 21134
|
| |
|
|
| |
llvm-svn: 21133
|
| |
|
|
| |
llvm-svn: 21132
|
| |
|
|
| |
llvm-svn: 21131
|
| |
|
|
| |
llvm-svn: 21130
|
| |
|
|
| |
llvm-svn: 21129
|
| |
|
|
|
|
| |
elements auto of the autoCSE maps.
llvm-svn: 21128
|
| |
|
|
|
|
| |
other things.
llvm-svn: 21127
|
| |
|
|
| |
llvm-svn: 21126
|
| |
|
|
| |
llvm-svn: 21125
|