| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
register. Added support in the .td file for the g5-specific variant
of cr -> gpr moves that executes faster, but we currently don't
generate it.
llvm-svn: 21314
|
| |
|
|
| |
llvm-svn: 21312
|
| |
|
|
|
|
|
|
|
|
| |
Add new ppc beta option related to using condition registers
Make pattern isel control flag (-enable-pattern-isel) global and tristate
0 == off
1 == on
2 == target default
llvm-svn: 21309
|
| |
|
|
|
|
|
|
| |
This can generate considerably shorter code, reducing the size of crafty
by almost 1%. Also fix the printing of mcrf. The code is currently
disabled until it gets a bit more testing, but should work as-is.
llvm-svn: 21298
|
| |
|
|
|
|
|
| |
register allocated condition registers. Make sure that the printed
output is gas compatible.
llvm-svn: 21295
|
| |
|
|
|
|
|
| |
now gone. Next step is to get rid of the remaining ones and then start
allocating bools to CRs where appropriate.
llvm-svn: 21294
|
| |
|
|
|
|
| |
where it is safe to do so.
llvm-svn: 21293
|
| |
|
|
|
|
|
|
| |
Move the transform for select (a < 0) ? b : 0 into the dag from ppc isel
Enable the dag to fold and (setcc, 1) -> setcc for targets where setcc
always produces zero or one.
llvm-svn: 21291
|
| |
|
|
| |
llvm-svn: 21271
|
| |
|
|
|
|
|
| |
andi instructions instead of rlwinm instructions for zero extend, but they
seem like they would take the same time.
llvm-svn: 21268
|
| |
|
|
|
|
| |
Make llvm undef values generate ISD::UNDEF nodes
llvm-svn: 21261
|
| |
|
|
|
|
|
| |
Remove dead setcc op, 0 sequences
Coming later: generalization of op, imm
llvm-svn: 21260
|
| |
|
|
| |
llvm-svn: 21246
|
| |
|
|
|
|
| |
Implement divide by negative power of two
llvm-svn: 21240
|
| |
|
|
| |
llvm-svn: 21232
|
| |
|
|
| |
llvm-svn: 21227
|
| |
|
|
| |
llvm-svn: 21226
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor how . instructions are handled. In particular, instead of passing
the RC flag all the way up the inheritance hierarchy, just make a new tblgen
class 'DOT' which can be added to an instruction definition.
For example, instead of this:
-def AND : XForm_6<31, 28, 0, 0, 0, (ops GPRC:$rA, GPRC:$rS, GPRC:$rB),
-let Defs = [CR0] in
-def ANDo : XForm_6<31, 28, 1, 0, 0, (ops GPRC:$rA, GPRC:$rS, GPRC:$rB),
- "and. $rA, $rS, $rB">;
We now have this:
+def AND : XForm_6<31, 28, 0, 0, (ops GPRC:$rA, GPRC:$rS, GPRC:$rB),
"and $rA, $rS, $rB">;
llvm-svn: 21225
|
| |
|
|
|
|
| |
(1.5%) instructions in 186.crafty
llvm-svn: 21222
|
| |
|
|
| |
llvm-svn: 21207
|
| |
|
|
|
|
| |
boundary.
llvm-svn: 21206
|
| |
|
|
|
|
| |
have to inform the register allocator it might be stepped on.
llvm-svn: 21202
|
| |
|
|
| |
llvm-svn: 21198
|
| |
|
|
| |
llvm-svn: 21197
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
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: 21159
|
| |
|
|
| |
llvm-svn: 21157
|
| |
|
|
|
|
| |
Optimized code sequence for (a < 0) ? b : 0
llvm-svn: 21150
|
| |
|
|
| |
llvm-svn: 21147
|
| |
|
|
|
|
| |
other things.
llvm-svn: 21127
|
| |
|
|
| |
llvm-svn: 21126
|
| |
|
|
|
|
|
| |
quotient, not the remainder. Also, make sure to remove the old div operand
from the ExprMap and let SelectExpr insert the new one.
llvm-svn: 21111
|
| |
|
|
|
|
| |
time.
llvm-svn: 21105
|
| |
|
|
|
|
|
|
| |
Have LegalizeDAG handle SREM and UREM for us
Codegen SDIV and UDIV by constant as a multiply by magic constant instead
of integer divide, which is very slow.
llvm-svn: 21104
|
| |
|
|
|
|
| |
readable slwi or srwi (shift left/right word immediate).
llvm-svn: 21099
|
| |
|
|
| |
llvm-svn: 21098
|
| |
|
|
|
|
| |
Add initial (buggy) implementation of 64 bit pattern ISel
llvm-svn: 21096
|
| |
|
|
|
|
| |
could miscompile. A correct solution will be found in the near future.
llvm-svn: 21095
|
| |
|
|
|
|
|
|
|
| |
indicate that it is not a boolean function.
Properly emit the pseudo instruction for conditional branch, so that we
can fix up conditional branches whose displacements are too large.
Reserve the right amount of opcode space for said pseudo instructions.
llvm-svn: 21094
|
| |
|
|
| |
llvm-svn: 21091
|
| |
|
|
| |
llvm-svn: 21090
|