| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
passed.
llvm-svn: 22886
|
|
|
|
| |
llvm-svn: 22882
|
|
|
|
|
|
| |
Patch contributed by Jim Laskey!
llvm-svn: 22594
|
|
|
|
|
|
|
|
| |
Remove the LoadHiAddr pseudo-instruction.
Optimization of stores to and loads from statics.
Force JIT to use new non-PIC codepaths.
llvm-svn: 22494
|
|
|
|
| |
llvm-svn: 22254
|
|
|
|
| |
llvm-svn: 21452
|
|
|
|
| |
llvm-svn: 21425
|
|
|
|
|
|
|
| |
register allocated condition registers. Make sure that the printed
output is gas compatible.
llvm-svn: 21295
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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: 21185
|
|
|
|
|
|
| |
implicit defs on entry to the function. yaay :)
llvm-svn: 21184
|
|
|
|
| |
llvm-svn: 21126
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Implement SINT_TO_FP and UINT_TO_FP
Remove some dead code from the simple ISel
llvm-svn: 20944
|
|
|
|
|
|
| |
Simple ISel: fix i64 subtract
llvm-svn: 20903
|
|
|
|
|
|
| |
More pattern isel updates
llvm-svn: 20902
|
|
|
|
| |
llvm-svn: 20840
|
|
|
|
| |
llvm-svn: 20821
|
|
|
|
| |
llvm-svn: 20816
|
|
|
|
| |
llvm-svn: 20812
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) dynamic stack alloc
2) loads
3) shifts
4) subtract
5) immediate form of add, and, or, xor
6) change flag from -pattern-isel to -enable-ppc-pattern-isel
Remove dead arguments from getGlobalBaseReg in the simple ISel
llvm-svn: 20810
|
|
|
|
|
|
| |
conservatively, it's modified
llvm-svn: 20735
|
|
|
|
|
|
|
|
| |
using Function::arg_{iterator|begin|end}. Likewise Module::g* -> Module::global_*.
This patch is contributed by Gabor Greif, thanks!
llvm-svn: 20597
|
|
|
|
| |
llvm-svn: 20523
|
|
|
|
| |
llvm-svn: 19557
|
|
|
|
| |
llvm-svn: 19555
|
|
|
|
|
|
|
|
|
|
|
| |
- unsigned TrueValue = getReg(TrueVal, BB, BB->begin());
+ unsigned TrueValue = getReg(TrueVal);
Fixes the PPC regressions from last night.
The other hunk is just a clarity improvement.
llvm-svn: 19263
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we're at it, improve codegen of select instructions. For this
testcase:
int %test(bool %C, int %A, int %B) {
%D = select bool %C, int %A, int %B
ret int %D
}
We used to generate this code:
_test:
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
b .LBB_test_3 ;
.LBB_test_2: ;
or r5, r4, r4
.LBB_test_3: ;
or r3, r5, r5
blr
Now we emit:
_test:
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
or r4, r5, r5
.LBB_test_2: ;
or r3, r4, r4
blr
-Chris
llvm-svn: 19214
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
addi r3, r3, -1
instead of
addi r3, r3, 1
for 'sub int X, 1'.
Secondarily, this fixes several cases where we could crash given an unsigned
constant. And fixes a couple of minor missed optimization cases, such as
xor X, ~0U -> not X
llvm-svn: 18379
|
|
|
|
| |
llvm-svn: 18376
|
|
|
|
| |
llvm-svn: 18374
|
|
|
|
| |
llvm-svn: 18371
|
|
|
|
|
|
|
|
| |
place to help bring up the PowerPC back end on Darwin. This code is no
longer serves any purpose now that the AsmPrinter does the right thing
all the time printing GlobalValues. --Cruft.
llvm-svn: 18267
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
static global variables whose addresses are taken. This allows us to
convert the following code for taking the address of a static function foo
addis r2, r30, ha16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")
lwz r3, lo16(Ll1__2E_foo_2$non_lazy_ptr-"L00001$pb")(r2)
which also includes linker stub code emitted at the end of the .s file not
shown here, and replace it with this:
addis r2, r30, ha16(l1__2E_foo_2-"L00001$pb")
la r3, lo16(l1__2E_foo_2-"L00001$pb")(r2)
which in addition to not needing linker help, also has no load instruction.
For those not up on PowerPC mnemonics, la is shorthand for add immediate.
llvm-svn: 18239
|
|
|
|
|
|
| |
storing to fixed alloca slots.
llvm-svn: 18221
|
|
|
|
| |
llvm-svn: 18146
|
|
|
|
|
|
| |
the code emitter
llvm-svn: 18138
|
|
|
|
|
|
|
|
|
| |
reg-reg copies. The necessary conditions for this bug are a GEP that is
used outside the basic block in which it is defined, whose components
other than the pointer are all constant zero, and where the use is
selected before the definition (backwards branch to successsor block).
llvm-svn: 18084
|
|
|
|
|
|
| |
coalesce out of hbd. Speeds up compilation by 2% (0.6s)
llvm-svn: 17987
|
|
|
|
|
|
| |
This eliminates over 2000 in hbd alone.
llvm-svn: 17973
|
|
|
|
|
|
|
| |
shouldn't be forced to coalesce for us: folded GEP operations. This too
fires thousands of times across the testsuite.
llvm-svn: 17947
|
|
|
|
|
|
|
| |
directly rather than making a copy for the register allocator to coalesce.
This kills thousands of live intervals across the testsuite.
llvm-svn: 17946
|
|
|
|
|
|
|
| |
and properly emitting signed short to unsigned int. This fixes the last
regression vs. the CBE, MultiSource/Applications/hbd.
llvm-svn: 17942
|
|
|
|
|
|
| |
move instructions for the register allocator to coalesce.
llvm-svn: 17608
|
|
|
|
| |
llvm-svn: 17583
|
|
|
|
|
|
|
|
|
| |
int test(int x) { return 32768 - x; }
Fixed by teaching the function that checks a constant's validity to be used
as an immediate argument about subtract-from instructions.
llvm-svn: 17476
|
|
|
|
|
|
| |
allow and const, 0 to be incorrectly codegen'd into a rlwinm instruction.
llvm-svn: 17234
|
|
|
|
|
|
|
| |
by the recently committed rlwimi.ll test file. Also commit initial code
for bitfield extract, although it is turned off until fully debugged.
llvm-svn: 17207
|
|
|
|
|
|
|
|
| |
as the shift amount operand to a shift instruction. This was causing us to
emit unnecessary clear operations for code such as:
int foo(int x) { return 1 << x; }
llvm-svn: 17175
|