| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 122559
|
|
|
|
|
|
| |
rejected by the mc assembler.
llvm-svn: 122557
|
|
|
|
| |
llvm-svn: 122556
|
|
|
|
|
|
|
| |
getOrEnforceKnownAlignment function, which simplifies the code
and makes it stronger.
llvm-svn: 122555
|
|
|
|
| |
llvm-svn: 122554
|
|
|
|
|
|
| |
annoys people.
llvm-svn: 122553
|
|
|
|
|
|
| |
variables in isBytewiseValue is not safe.
llvm-svn: 122550
|
|
|
|
|
|
| |
have a single point where targets test if a relocation is needed.
llvm-svn: 122549
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows us to compile "int cst[] = {-1, -1, -1};" into
movl $-1, 16(%rsp)
movq $-1, 8(%rsp)
instead of
movl _cst+8(%rip), %eax
movl %eax, 16(%rsp)
movq _cst(%rip), %rax
movq %rax, 8(%rsp)
llvm-svn: 122548
|
|
|
|
| |
llvm-svn: 122547
|
|
|
|
| |
llvm-svn: 122545
|
|
|
|
|
|
| |
scheduling node may have a NULL DAG node, yuck.
llvm-svn: 122544
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
DAG scheduling during isel. Most new functionality is currently
guarded by -enable-sched-cycles and -enable-sched-hazard.
Added InstrItineraryData::IssueWidth field, currently derived from
ARM itineraries, but could be initialized differently on other targets.
Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is
active, and if so how many cycles of state it holds.
Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry
into the scheduler's available queue.
ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to
get information about it's SUnits, provides RecedeCycle for bottom-up
scheduling, correctly computes scoreboard depth, tracks IssueCount, and
considers potential stall cycles when checking for hazards.
ScheduleDAGRRList now models machine cycles and hazards (under
flags). It tracks MinAvailableCycle, drives the hazard recognizer and
priority queue's ready filter, manages a new PendingQueue, properly
accounts for stall cycles, etc.
llvm-svn: 122541
|
|
|
|
| |
llvm-svn: 122539
|
|
|
|
| |
llvm-svn: 122537
|
|
|
|
|
|
|
| |
preprocessed .s files and matches darwin gas. rdar://8798690
Also fix a comment on the next line of AsmParser.cpp after this new code.
llvm-svn: 122531
|
|
|
|
| |
llvm-svn: 122530
|
|
|
|
|
|
|
|
| |
verify are zero
are not the low bits of x, but the bits that WILL be the low bits after the operation completes.
llvm-svn: 122529
|
|
|
|
| |
llvm-svn: 122528
|
|
|
|
| |
llvm-svn: 122524
|
|
|
|
| |
llvm-svn: 122523
|
|
|
|
|
|
|
|
| |
If the basic block containing the BCCi64 (or BCCZi64) instruction ends with
an unconditional branch, that branch needs to be deleted before appending
the expansion of the BCCi64 to the end of the block.
llvm-svn: 122521
|
|
|
|
|
|
|
|
|
|
| |
late in the optimization
pipeline to be caught by instcombine, and it's not feasible to catch them in SimplifyCFG because the
use-lists are in an inconsistent state at the point where it could know that it need to simplify them.
Instead, have CodeGenPrepare look for trivially redundant PHIs as part of its general cleanup effort.
llvm-svn: 122516
|
|
|
|
| |
llvm-svn: 122513
|
|
|
|
| |
llvm-svn: 122509
|
|
|
|
| |
llvm-svn: 122507
|
|
|
|
|
|
| |
doesn't return a pointer to the end of the string.
llvm-svn: 122496
|
|
|
|
| |
llvm-svn: 122495
|
|
|
|
|
|
| |
and instruction issue.
llvm-svn: 122491
|
|
|
|
|
|
| |
multiple nodes per cycle.
llvm-svn: 122474
|
|
|
|
| |
llvm-svn: 122473
|
|
|
|
|
|
|
|
| |
In the bottom-up selection DAG scheduling, handle two-address
instructions that read/write unspillable registers. Treat
the entire chain of two-address nodes as a single live range.
llvm-svn: 122472
|
|
|
|
|
|
| |
ConvertToScalarInfo
llvm-svn: 122462
|
|
|
|
|
|
|
| |
new gcc warning that complains on self-assignments and
self-initializations.
llvm-svn: 122458
|
|
|
|
| |
llvm-svn: 122456
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
illegal. The latter usually compiles into smaller code.
example code:
unsigned foo(unsigned x, unsigned y) {
if (x != 0) y--;
return y;
}
before:
_foo: ## @foo
cmpl $1, 4(%esp) ## encoding: [0x83,0x7c,0x24,0x04,0x01]
sbbl %eax, %eax ## encoding: [0x19,0xc0]
notl %eax ## encoding: [0xf7,0xd0]
addl 8(%esp), %eax ## encoding: [0x03,0x44,0x24,0x08]
ret ## encoding: [0xc3]
after:
_foo: ## @foo
cmpl $1, 4(%esp) ## encoding: [0x83,0x7c,0x24,0x04,0x01]
movl 8(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08]
adcl $-1, %eax ## encoding: [0x83,0xd0,0xff]
ret ## encoding: [0xc3]
llvm-svn: 122455
|
|
|
|
|
|
| |
sext from i1.
llvm-svn: 122453
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
int test(unsigned long a, unsigned long b) { return -(a < b); }
compiles to
_test: ## @test
cmpq %rsi, %rdi ## encoding: [0x48,0x39,0xf7]
sbbl %eax, %eax ## encoding: [0x19,0xc0]
ret ## encoding: [0xc3]
instead of
_test: ## @test
xorl %ecx, %ecx ## encoding: [0x31,0xc9]
cmpq %rsi, %rdi ## encoding: [0x48,0x39,0xf7]
movl $-1, %eax ## encoding: [0xb8,0xff,0xff,0xff,0xff]
cmovael %ecx, %eax ## encoding: [0x0f,0x43,0xc1]
ret ## encoding: [0xc3]
llvm-svn: 122451
|
|
|
|
|
|
| |
fixed.
llvm-svn: 122448
|
|
|
|
|
|
| |
if we have a lame assembler.
llvm-svn: 122446
|
|
|
|
|
|
| |
pick the victim with the lowest total spill weight.
llvm-svn: 122445
|
|
|
|
| |
llvm-svn: 122444
|
|
|
|
|
|
| |
better name and matches what is used in the MachO writer.
llvm-svn: 122443
|
|
|
|
| |
llvm-svn: 122441
|
|
|
|
| |
llvm-svn: 122427
|
|
|
|
| |
llvm-svn: 122419
|
|
|
|
|
|
|
|
| |
the original instruction, half the cases were missed (making it not
wrong but suboptimal). Also correct a typo (A <-> B) in the second
chunk.
llvm-svn: 122414
|
|
|
|
|
|
| |
esp. important given that the LOCAL_SECTDIFF enumeration got redefined.
llvm-svn: 122412
|
|
|
|
|
|
| |
figure out how it is supposed to work.
llvm-svn: 122410
|
|
|
|
| |
llvm-svn: 122409
|