| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
switch should never be exited, so its bottom is now unreachable.
llvm-svn: 23234
|
| |
|
|
|
|
|
|
| |
Define the PatFrag class which can be used to define subpatterns to match
things with. Define 'not', and use it to define the patterns for andc,
nand, etc.
llvm-svn: 23233
|
| |
|
|
| |
llvm-svn: 23232
|
| |
|
|
|
|
|
|
|
| |
currently don't do anything. This elides patterns for binary operators
that ping on the carry flag, since we don't model it yet.
This patch also removes PPC::SUB, because it is dead.
llvm-svn: 23230
|
| |
|
|
| |
llvm-svn: 23226
|
| |
|
|
| |
llvm-svn: 23222
|
| |
|
|
|
|
| |
some stuff
llvm-svn: 23220
|
| |
|
|
|
|
| |
Remove the -enable-gpopt option which is subsumed by feature flags.
llvm-svn: 23218
|
| |
|
|
| |
llvm-svn: 23210
|
| |
|
|
| |
llvm-svn: 23209
|
| |
|
|
| |
llvm-svn: 23207
|
| |
|
|
| |
llvm-svn: 23202
|
| |
|
|
|
|
| |
the observation that it only has to handle i1 -> i64 and i64 -> i1.
llvm-svn: 23201
|
| |
|
|
|
|
|
| |
the results of calls to functions returning small values are properly
sign/zero extended.
llvm-svn: 23198
|
| |
|
|
|
|
|
|
| |
measurements. This improves the performance of 'treeadd' by about 20% with the dag
isel, restoring it to the pattern-isel level (which happens to get the alignment right).
llvm-svn: 23194
|
| |
|
|
|
|
|
| |
platforms. This reduces executable size and makes shark realize the actual
bounds of functions instead of showing each MBB as a function :)
llvm-svn: 23193
|
| |
|
|
|
|
|
|
| |
2. Propagate feature "string" to all targets.
3. Implement use of SubtargetFeatures in PowerPCTargetSubtarget.
llvm-svn: 23192
|
| |
|
|
|
|
|
| |
is to manage processor specific attributes from the command line. See examples
of use in llc/lli and PowerPCTargetSubtarget.
llvm-svn: 23191
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
directly out of R1 (without using a CopyFromReg, which uses a chain), multiple
allocas were getting CSE'd together, producing bogus code. For this:
int %foo(bool %X, int %A, int %B) {
br bool %X, label %T, label %F
F:
%G = alloca int
%H = alloca int
store int %A, int* %G
store int %B, int* %H
%R = load int* %G
ret int %R
T:
ret int 0
}
We were generating:
_foo:
stwu r1, -16(r1)
stw r31, 4(r1)
or r31, r1, r1
stw r1, 12(r31)
cmpwi cr0, r3, 0
bne cr0, .LBB_foo_2 ; T
.LBB_foo_1: ; F
li r2, 16
subf r2, r2, r1 ;; One alloca
or r1, r2, r2
or r3, r1, r1
or r1, r2, r2
or r2, r1, r1
stw r4, 0(r3)
stw r5, 0(r2)
lwz r3, 0(r3)
lwz r1, 12(r31)
lwz r31, 4(r31)
lwz r1, 0(r1)
blr
.LBB_foo_2: ; T
li r3, 0
lwz r1, 12(r31)
lwz r31, 4(r31)
lwz r1, 0(r1)
blr
Now we generate:
_foo:
stwu r1, -16(r1)
stw r31, 4(r1)
or r31, r1, r1
stw r1, 12(r31)
cmpwi cr0, r3, 0
bne cr0, .LBB_foo_2 ; T
.LBB_foo_1: ; F
or r2, r1, r1
li r3, 16
subf r2, r3, r2 ;; Alloca 1
or r1, r2, r2
or r2, r1, r1
or r6, r1, r1
subf r3, r3, r6 ;; Alloca 2
or r1, r3, r3
or r3, r1, r1
stw r4, 0(r2)
stw r5, 0(r3)
lwz r3, 0(r2)
lwz r1, 12(r31)
lwz r31, 4(r31)
lwz r1, 0(r1)
blr
.LBB_foo_2: ; T
li r3, 0
lwz r1, 12(r31)
lwz r31, 4(r31)
lwz r1, 0(r1)
blr
This fixes Povray and SPASS with the dag isel, the last two failing cases.
Tommorow we will hopefully turn it on by default! :)
llvm-svn: 23190
|
| |
|
|
|
|
|
|
|
|
| |
could cause a miscompile. Fixing this didn't fix the two programs that fail
though. :(
This also changes the implementation to follow the pattern selector more
closely, causing us to select 0 to li instead of lis.
llvm-svn: 23189
|
| |
|
|
|
|
| |
and selecting early prevents folding immediates into the cmpw* instructions
llvm-svn: 23188
|
| |
|
|
|
|
| |
getting them out of the business of making stack slots.
llvm-svn: 23180
|
| |
|
|
| |
llvm-svn: 23179
|
| |
|
|
| |
llvm-svn: 23178
|
| |
|
|
| |
llvm-svn: 23177
|
| |
|
|
|
|
| |
the ops to dag optimization.
llvm-svn: 23176
|
| |
|
|
| |
llvm-svn: 23171
|
| |
|
|
| |
llvm-svn: 23170
|
| |
|
|
| |
llvm-svn: 23168
|
| |
|
|
|
|
| |
fixes crafty and probably others.
llvm-svn: 23167
|
| |
|
|
|
|
| |
ugly hacks
llvm-svn: 23162
|
| |
|
|
| |
llvm-svn: 23159
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove code (last hunk) that miscompiled immediate and's, such as
and uint %tmp.30, 4294958079
into
andi. r8, r8, 56319
andis. r8, r8, 65535
instead of:
li r9, -9217
and r8, r8, r9
The first always generates zero.
This fixes espresso.
llvm-svn: 23155
|
| |
|
|
|
|
| |
fixes fourinarow
llvm-svn: 23153
|
| |
|
|
|
|
| |
fixes fhourstones
llvm-svn: 23152
|
| |
|
|
| |
llvm-svn: 23150
|
| |
|
|
|
|
|
|
|
| |
linking them to calls when appropriate, this prevents the scheduler from
pulling these copies away from the call.
This fixes Ptrdist/yacr2
llvm-svn: 23143
|
| |
|
|
|
|
| |
fixes MediaBench/toast with the dag selector
llvm-svn: 23141
|
| |
|
|
|
|
|
| |
which I failed to include when I moved the code over. This fixes
MallocBench/gs.
llvm-svn: 23140
|
| |
|
|
|
|
| |
STOREs, know the right type to store.
llvm-svn: 23139
|
| |
|
|
|
|
|
|
|
| |
no xcode, this is not right:
if (!foo) break;
X;
llvm-svn: 23138
|
| |
|
|
| |
llvm-svn: 23137
|
| |
|
|
| |
llvm-svn: 23136
|
| |
|
|
|
|
| |
This fixes voronoi and bh in Olden, allowing all of olden to pass!
llvm-svn: 23133
|
| |
|
|
| |
llvm-svn: 23127
|
| |
|
|
| |
llvm-svn: 23126
|
| |
|
|
|
|
|
| |
Olden/msFix order of operands for copytoreg node when emitting calls. This fixes
Olden/mstt.
llvm-svn: 23125
|
| |
|
|
| |
llvm-svn: 23123
|
| |
|
|
| |
llvm-svn: 23121
|
| |
|
|
| |
llvm-svn: 23120
|