| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
- Keep implicit defs from inline-asm instructions.
- Treat register references from inline-asm as fixed.
llvm-svn: 267936
|
|
|
|
|
|
|
|
|
|
| |
Dead phi nodes are needed for code motion (such as copy propagation),
where a new use would be placed in a location that would be dominated
by a dead phi. Such a transformation is not legal for copy propagation,
and the existence of the phi would prevent it, but if the phi is not
there, it may appear to be valid.
llvm-svn: 267932
|
|
|
|
|
|
| |
Unsigned compare-equal instructions are mapped to signed compare-equal.
llvm-svn: 267925
|
|
|
|
|
|
|
|
|
| |
Specifically:
Vd = #0 -> Vd = vxor(Vd, Vd)
Vdd = #0 -> Vdd.w = vsub(Vdd.w, Vdd.w)
Vdd = Vss -> Vdd = vcombine(Vss.H, Vss.L)
llvm-svn: 267901
|
|
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 267897
|
|
|
|
|
|
|
| |
When updating the graph, make sure that new uses without reaching defs
are handled correctly.
llvm-svn: 267891
|
|
|
|
|
|
| |
TargetLoweringBase. This is what the majority of the targets want and removes a bunch of code. Set it to Legal explicitly in the few cases where that's the desired behavior.
llvm-svn: 267853
|
|
|
|
|
|
| |
new one.
llvm-svn: 267798
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D19509
llvm-svn: 267593
|
|
|
|
| |
llvm-svn: 267469
|
|
|
|
|
|
| |
Do not mark them as modifying any of the volatile registers by default.
llvm-svn: 267433
|
|
|
|
| |
llvm-svn: 267397
|
|
|
|
|
|
| |
text string which always evaluates to true. Add a ! so they'll evaluate to false.
llvm-svn: 267312
|
|
|
|
|
|
| |
convert them to ctlz/cttz. Remove the now unneccessary isel patterns. NFC
llvm-svn: 267266
|
|
|
|
| |
llvm-svn: 267178
|
|
|
|
| |
llvm-svn: 267173
|
|
|
|
| |
llvm-svn: 267165
|
|
|
|
|
|
| |
Also add tests for other instructions from HexagonSystemInst.td.
llvm-svn: 267162
|
|
|
|
| |
llvm-svn: 267038
|
|
|
|
| |
llvm-svn: 267034
|
|
|
|
|
|
|
| |
This is for compatibility with scripts that use -mv5, etc. with the
assembler.
llvm-svn: 266918
|
|
|
|
|
|
| |
Patch by Colin LeMahieu.
llvm-svn: 266882
|
|
|
|
|
|
| |
This only affects the recomputation of kill flags.
llvm-svn: 266875
|
|
|
|
|
|
| |
Also, disable zero- and size-extend optimizations for now.
llvm-svn: 266821
|
|
|
|
| |
llvm-svn: 266811
|
|
|
|
|
|
| |
Patch by Sirish Pande.
llvm-svn: 266792
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Removed some unused headers, replaced some headers with forward class declarations.
Found using simple scripts like this one:
clear && ack --cpp -l '#include "llvm/ADT/IndexedMap.h"' | xargs grep -L 'IndexedMap[<]' | xargs grep -n --color=auto 'IndexedMap'
Patch by Eugene Kosov <claprix@yandex.ru>
Differential Revision: http://reviews.llvm.org/D19219
From: Mehdi Amini <mehdi.amini@apple.com>
llvm-svn: 266595
|
|
|
|
| |
llvm-svn: 266414
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This adds the same checks that were added in r264593 to all
target-specific passes that run after register allocation.
Reviewers: qcolombet
Subscribers: jyknight, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D18525
llvm-svn: 265313
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This will become necessary in a subsequent change to make this method
merge adjacent stack adjustments, i.e. it might erase the previous
and/or next instruction.
It also greatly simplifies the calls to this function from Prolog-
EpilogInserter. Previously, that had a bunch of logic to resume iteration
after the call; now it just continues with the returned iterator.
Note that this changes the behaviour of PEI a little. Previously,
it attempted to re-visit the new instruction created by
eliminateCallFramePseudoInstr(). That code was added in r36625,
but I can't see any reason for it: the new instructions will obviously
not be pseudo instructions, they will not have FrameIndex operands,
and we have already accounted for the stack adjustment.
Differential Revision: http://reviews.llvm.org/D18627
llvm-svn: 265036
|
|
|
|
| |
llvm-svn: 264584
|
|
|
|
| |
llvm-svn: 264581
|
|
|
|
|
|
|
|
| |
- Do not optimize stack slots in optnone functions.
- Get aligned-base register from HexagonMachineFunctionInfo instead of
looking for ALIGNA instruction in the function's body.
llvm-svn: 264580
|
|
|
|
| |
llvm-svn: 264331
|
|
|
|
|
|
| |
Patch by Sundeep Kushwaha.
llvm-svn: 264328
|
|
|
|
|
|
|
|
|
|
|
|
| |
In PIC mode, the registers R14, R15 and R28 are reserved for use by
the PLT handling code. This causes all functions to clobber these
registers. While this is not new for regular function calls, it does
also apply to save/restore functions, which do not follow the standard
ABI conventions with respect to the volatile/non-volatile registers.
Patch by Jyotsna Verma.
llvm-svn: 264324
|
|
|
|
| |
llvm-svn: 263981
|
|
|
|
| |
llvm-svn: 263980
|
|
|
|
|
|
|
| |
- R10 and R11 are not reserved registers.
- Check for reserved registers when finding unused caller-saved registers.
llvm-svn: 263977
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Rename getATOMIC to getSYNC, as llvm will soon be able to emit both
'__sync' libcalls and '__atomic' libcalls, and this function is for
the '__sync' ones.
- getInsertFencesForAtomic() has been replaced with
shouldInsertFencesForAtomic(Instruction), so that the decision can be
made per-instruction. This functionality will be used soon.
- emitLeadingFence/emitTrailingFence are no longer called if
shouldInsertFencesForAtomic returns false, and thus don't need to
check the condition themselves.
llvm-svn: 263665
|
|
|
|
|
|
| |
have been appended to the end.
llvm-svn: 263657
|
|
|
|
| |
llvm-svn: 263453
|
|
|
|
| |
llvm-svn: 263448
|
|
|
|
|
|
|
| |
This fixes an assertion in test/CodeGen/Hexagon/ifcvt-edge-weight.ll
when run with -debug-only=isel
llvm-svn: 262726
|
|
|
|
| |
llvm-svn: 262411
|
|
|
|
|
|
| |
not the integrated assembler.
llvm-svn: 262400
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TableGen checks at compiletime that for scheduling models with
"CompleteModel = 1" one of the following holds:
- Is marked with the hasNoSchedulingInfo flag
- The instruction is a subclass of Sched
- There are InstRW definitions in the scheduling model
Typical steps necessary to complete a model:
- Ensure all pseudo instructions that are expanded before machine
scheduling (usually everything handled with EmitYYY() functions in
XXXTargetLowering).
- If a CPU does not support some instructions mark the corresponding
resource unsupported: "WriteRes<WriteXXX, []> { let Unsupported = 1; }".
- Add missing scheduling information.
Differential Revision: http://reviews.llvm.org/D17747
llvm-svn: 262384
|
|
|
|
|
|
| |
variants since they're usually in range.
llvm-svn: 262258
|
|
|
|
| |
llvm-svn: 262252
|
|
|
|
| |
llvm-svn: 262243
|