| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
| |
tracked. Instead of trying to manually keep track of these locations
while doing complex modifications, just recompute them when they're needed.
This fixes a bug in which the TopMBB and BotMBB were not correctly updated,
leading to invalid transformations.
llvm-svn: 84598
|
| |
|
|
|
|
| |
sub-registers instead.
llvm-svn: 84586
|
| |
|
|
| |
llvm-svn: 84516
|
| |
|
|
|
|
|
| |
LLC was scheduling compares before the adds causing wrong branches to be taken
in programs, resulting in misoptimized code wherever atomic adds where used.
llvm-svn: 84485
|
| |
|
|
| |
llvm-svn: 84459
|
| |
|
|
| |
llvm-svn: 84431
|
| |
|
|
|
|
|
|
|
|
|
|
| |
to be more general and understand more varieties of loops.
Teach CodePlacementOpt to reorganize the basic blocks of a loop so that
they are contiguous. This also includes a fair amount of logic for preserving
fall-through edges while doing so. This fixes a BranchFolding-ism where blocks
which can't be made to use a fall-through edge and don't conveniently fit
anywhere nearby get tossed out to the end of the function.
llvm-svn: 84295
|
| |
|
|
| |
llvm-svn: 84282
|
| |
|
|
| |
llvm-svn: 84280
|
| |
|
|
|
|
|
| |
load, to help SelectionDAG fold them into the loads, unless
conditions are unfavorable.
llvm-svn: 84271
|
| |
|
|
|
|
|
|
|
|
| |
header is just the entry block to the loop, and it needn't be at
the top of the loop in the code layout.
Remove the code that suppressed loop alignment for outer loops,
so that outer loops are aligned.
llvm-svn: 84158
|
| |
|
|
|
|
| |
earlyclobber marker if the superreg def has it.
llvm-svn: 84153
|
| |
|
|
|
|
| |
and convert it to FileCheck.
llvm-svn: 84065
|
| |
|
|
|
|
|
|
|
| |
it to hold the address of an sret return value, for x86-64 ABI purposes.
Also, fix the test that was originally intended to test this to actually
test it, using FileCheck.
llvm-svn: 83853
|
| |
|
|
|
|
|
|
| |
when one of the bits being tested would end up being the sign bit in the
narrower type, and a signed comparison is being performed, since this would
change the result of the signed comparison. This fixes PR5132.
llvm-svn: 83670
|
| |
|
|
|
|
| |
licm'ed out of loop.
llvm-svn: 83622
|
| |
|
|
| |
llvm-svn: 83608
|
| |
|
|
| |
llvm-svn: 83499
|
| |
|
|
|
|
|
|
|
|
| |
verbose-asm mode, print comments instead. This eliminates a non-comment
difference between verbose-asm mode and non-verbose-asm mode.
Also, factor out the relevant code out of all the targets and into
target-independent code.
llvm-svn: 83392
|
| |
|
|
|
|
| |
specification. Remove -mattr for setting PostRAScheduler enable and instead use CPU string.
llvm-svn: 83215
|
| |
|
|
|
|
| |
not use that scheduler.
llvm-svn: 83128
|
| |
|
|
| |
llvm-svn: 83009
|
| |
|
|
|
|
|
|
|
|
|
| |
physical registers. This is especially critical for the later two since they
start the live interval of a super-register. e.g.
%DO<def> = INSERT_SUBREG %D0<undef>, %S0<kill>, 1
If this instruction is eliminated, the register scavenger will not be happy as
D0 is not defined previously.
This fixes PR5055.
llvm-svn: 82968
|
| |
|
|
|
|
|
|
|
|
| |
allows matching and remembering a string and then matching and
verifying that the string occurs later in the file.
Change X86/xor.ll to use this in some cases where the test was
checking for an arbitrary register allocation decision.
llvm-svn: 82891
|
| |
|
|
|
|
| |
where FCMP_OEQ is not legal and FCMP_OGE is, such as x86.
llvm-svn: 82861
|
| |
|
|
| |
llvm-svn: 82825
|
| |
|
|
|
|
|
|
| |
which have no defs anywhere in the function. In particular, this fixes sinking
of instructions that reference RIP on x86-64, which is currently being modeled
as a register.
llvm-svn: 82815
|
| |
|
|
| |
llvm-svn: 82803
|
| |
|
|
|
|
| |
being checked aren't valid without it.
llvm-svn: 82786
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
regex and matching it instead of trying to match chunks at a time.
Matching chunks at a time broke with check lines like
CHECK: foo {{.*}}bar
because the .* would eat the entire rest of the line and bar would
never match.
Now we just escape the fixed strings for the user, so that something
like:
CHECK: a() {{.*}}???
is matched as:
CHECK: {{a\(\) .*\?\?\?}}
transparently "under the covers".
llvm-svn: 82779
|
| |
|
|
| |
llvm-svn: 82759
|
| |
|
|
| |
llvm-svn: 82756
|
| |
|
|
|
|
| |
kills. This also eliminate the horrible check which scan forward to the end of the basic block. It should be faster and more accurate.
llvm-svn: 82676
|
| |
|
|
| |
llvm-svn: 82637
|
| |
|
|
| |
llvm-svn: 82610
|
| |
|
|
| |
llvm-svn: 82505
|
| |
|
|
|
|
|
|
|
|
| |
variable increment / decrement slighter high priority.
This has major impact on some micro-benchmarks. On MultiSource/Applications
and spec tests, it's a minor win. It also reduce 256.bzip instruction count
by 8%, 55 on 164.gzip on i386 / Darwin.
llvm-svn: 82485
|
| |
|
|
| |
llvm-svn: 82471
|
| |
|
|
|
|
| |
loads in order to reduce register pressure.
llvm-svn: 82470
|
| |
|
|
|
|
|
|
|
|
| |
And fix a bug with the behavior of min/max instructions formed from
fcmp uge comparisons.
Also, use FiniteOnlyFPMath() for this code instead of UnsafeFPMath,
as it is more specific.
llvm-svn: 82466
|
| |
|
|
|
|
|
|
|
|
| |
we pushed the beginning of the interval back 1, so the
interval would overlap with inputs that die. We were
also pushing the end of the interval back 1, though,
which means the earlyclobber didn't overlap with other
output operands. Don't do this. PR 4964.
llvm-svn: 82342
|
| |
|
|
|
|
| |
blocks and update CFG, it should also inform sdisel of the changes so the phi source operands will come from the right basic blocks.
llvm-svn: 82311
|
| |
|
|
| |
llvm-svn: 82276
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getSymbolForDwarfGlobalReference is smart enough to know that it
needs to register the stub it references with MachineModuleInfoMachO,
so that it gets emitted at the end of the file.
Move stub emission from X86ATTAsmPrinter::doFinalization to the
new X86ATTAsmPrinter::EmitEndOfAsmFile asmprinter hook. The important
thing here is that EmitEndOfAsmFile is called *after* the ehframes are
emitted, so we get all the stubs.
This allows us to remove a gross hack from the asmprinter where it would
"just know" that it needed to output stubs for personality functions.
Now this is all driven from a consistent interface.
The testcase change is just reordering the expected output now that the
stubs come out after the ehframe instead of before.
This also unblocks other changes that Bill wants to make.
llvm-svn: 82269
|
| |
|
|
|
|
|
| |
on x86, to avoid explicit test instructions. A few existing tests changed
due to arbitrary register allocation differences.
llvm-svn: 82263
|
| |
|
|
| |
llvm-svn: 82182
|
| |
|
|
| |
llvm-svn: 82181
|
| |
|
|
| |
llvm-svn: 82179
|
| |
|
|
| |
llvm-svn: 82178
|
| |
|
|
| |
llvm-svn: 82130
|