| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 61612
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions to avoid copies, because TwoAddressInstructionPass
also does this optimization. The scheduler's version didn't
account for live-out values, which resulted in spurious commutes
and missed opportunities.
Now, TwoAddressInstructionPass handles all the opportunities,
instead of just those that the scheduler missed. The result is
usually the same, though there are occasional trivial differences
resulting from the avoidance of spurious commutes.
llvm-svn: 61611
|
|
|
|
|
|
|
| |
and BRCOND conditions. Reorder a few methods while
there.
llvm-svn: 61547
|
|
|
|
| |
llvm-svn: 61545
|
|
|
|
|
|
|
|
|
|
| |
promote from i1 all the way up to the canonical SetCC type.
In order to discover an appropriate type to use, pass
MVT::Other to getSetCCResultType. In order to be able to
do this, change getSetCCResultType to take a type as an
argument, not a value (this is also more logical).
llvm-svn: 61542
|
|
|
|
| |
llvm-svn: 61514
|
|
|
|
|
|
| |
Darwin doesn't. Make this optional for platforms.
llvm-svn: 61484
|
|
|
|
|
|
| |
(quad) on a 64-bit platform. This fixes a problem with EH frames on Darwin.
llvm-svn: 61483
|
|
|
|
| |
llvm-svn: 61465
|
|
|
|
| |
llvm-svn: 61463
|
|
|
|
| |
llvm-svn: 61460
|
|
|
|
|
|
| |
through recursive phi construction.
llvm-svn: 61458
|
|
|
|
| |
llvm-svn: 61420
|
|
|
|
|
|
| |
about other platforms.
llvm-svn: 61415
|
|
|
|
| |
llvm-svn: 61405
|
|
|
|
| |
llvm-svn: 61401
|
|
|
|
| |
llvm-svn: 61398
|
|
|
|
| |
llvm-svn: 61397
|
|
|
|
| |
llvm-svn: 61396
|
|
|
|
| |
llvm-svn: 61395
|
|
|
|
|
|
| |
Silence unused variable warning.
llvm-svn: 61391
|
|
|
|
| |
llvm-svn: 61390
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes all the _8, _16, _32, and _64 opcodes and replaces each
group with an unsuffixed opcode. The MemoryVT field of the AtomicSDNode
is now used to carry the size information. In tablegen, the size-specific
opcodes are replaced by size-independent opcodes that utilize the
ability to compose them with predicates.
This shrinks the per-opcode tables and makes the code that handles
atomics much more concise.
llvm-svn: 61389
|
|
|
|
|
|
| |
code in ScheduleDAGSDNodes' BuildSchedGraph into separate functions.
llvm-svn: 61376
|
|
|
|
|
|
|
|
| |
several places. isTerminator() returns true for a superset
of cases, and includes things like FP_REG_KILL, which are
nither return or branch but aren't safe to move/remat/etc.
llvm-svn: 61373
|
|
|
|
| |
llvm-svn: 61372
|
|
|
|
| |
llvm-svn: 61371
|
|
|
|
| |
llvm-svn: 61361
|
|
|
|
|
|
| |
functions.
llvm-svn: 61345
|
|
|
|
|
|
| |
up on a profile.
llvm-svn: 61344
|
|
|
|
| |
llvm-svn: 61277
|
|
|
|
|
|
| |
and setDepthDirty(), respectively. This fixes PR3241.
llvm-svn: 61276
|
|
|
|
|
|
| |
warnings on compilers that warn about such things.
llvm-svn: 61263
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
an input operand, it effectively extends the live range of the physical register. Currently we do not have a good way to represent this.
172 %ECX<def> = MOV32rr %reg1039<kill>
180 INLINEASM <es:subl $5,$1
sbbl $3,$0>, 10, %EAX<def>, 14, %ECX<earlyclobber,def>, 9, %EAX<kill>,
36, <fi#0>, 1, %reg0, 0, 9, %ECX<kill>, 36, <fi#1>, 1, %reg0, 0
188 %EAX<def> = MOV32rr %EAX<kill>
196 %ECX<def> = MOV32rr %ECX<kill>
204 %ECX<def> = MOV32rr %ECX<kill>
212 %EAX<def> = MOV32rr %EAX<kill>
220 %EAX<def> = MOV32rr %EAX
228 %reg1039<def> = MOV32rr %ECX<kill>
The early clobber operand ties ECX input to the ECX def.
The live interval of ECX is represented as this:
%reg20,inf = [46,47:1)[174,230:0) 0@174-(230) 1@46-(47)
The right way to represent this is something like
%reg20,inf = [46,47:2)[174,182:1)[181:230:0) 0@174-(182) 1@181-230 @2@46-(47)
Of course that won't work since that means overlapping live ranges defined by two val#.
The workaround for now is to add a bit to val# which says the val# is redefined by a early clobber def somewhere. This prevents the move at 228 from being optimized away by SimpleRegisterCoalescing::AdjustCopiesBackFrom.
llvm-svn: 61259
|
|
|
|
| |
llvm-svn: 61244
|
|
|
|
|
|
|
| |
The EH_frame and .eh symbols are now private, except for darwin9 and earlier.
The patch also fixes the definition of PrivateGlobalPrefix on pcc linux.
llvm-svn: 61242
|
|
|
|
| |
llvm-svn: 61238
|
|
|
|
|
|
| |
data from a previous block.
llvm-svn: 61237
|
|
|
|
|
|
| |
subreg instructions.
llvm-svn: 61220
|
|
|
|
|
|
| |
that of INSERT_SUBREG and SUBREG_TO_REG.
llvm-svn: 61218
|
|
|
|
| |
llvm-svn: 61217
|
|
|
|
| |
llvm-svn: 61216
|
|
|
|
| |
llvm-svn: 61213
|
|
|
|
| |
llvm-svn: 61209
|
|
|
|
| |
llvm-svn: 61184
|
|
|
|
|
|
|
| |
folding's tail merging doesn't currently preserve liveness information
which post-RA scheduling requires.
llvm-svn: 61183
|
|
|
|
| |
llvm-svn: 61182
|
|
|
|
| |
llvm-svn: 61159
|
|
|
|
|
|
| |
splitting.
llvm-svn: 61158
|
|
|
|
| |
llvm-svn: 61129
|