| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
backtraces.
llvm-svn: 89562
|
|
|
|
| |
llvm-svn: 88964
|
|
|
|
| |
llvm-svn: 88961
|
|
|
|
|
|
|
| |
conservatively. eliminateFrameIndex() machinery adjust to handle addr mode
6 (vld1/vst1) used for spills. Fix tests to expect aligned Q-reg spilling
llvm-svn: 88874
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
slots. The AsmPrinter will use this information to determine whether to
print a spill/reload comment.
Remove default argument values. It's too easy to pass a wrong argument
value when multiple arguments have default values. Make everything
explicit to trap bugs early.
Update all targets to adhere to the new interfaces..
llvm-svn: 87022
|
|
|
|
|
|
| |
not necessary.
llvm-svn: 86621
|
|
|
|
| |
llvm-svn: 86604
|
|
|
|
| |
llvm-svn: 86602
|
|
|
|
| |
llvm-svn: 86494
|
|
|
|
|
|
| |
the stack slot is 128 bit aligned
llvm-svn: 86425
|
|
|
|
| |
llvm-svn: 86068
|
|
|
|
|
|
|
| |
aggressive testing of dynamic stack alignment.
Note that this is off by default, and enabled for LLCBETA nightly results.
llvm-svn: 86064
|
|
|
|
| |
llvm-svn: 86057
|
|
|
|
|
|
| |
saved instructions even if no stack adjustment for those saves is needed.
llvm-svn: 86056
|
|
|
|
| |
llvm-svn: 85871
|
|
|
|
| |
llvm-svn: 85847
|
|
|
|
| |
llvm-svn: 85743
|
|
|
|
| |
llvm-svn: 85546
|
|
|
|
|
|
| |
realignment regardless of whether it's strictly necessary.
llvm-svn: 85476
|
|
|
|
|
|
| |
Thumb2.
llvm-svn: 85406
|
|
|
|
| |
llvm-svn: 85335
|
|
|
|
|
|
|
| |
default behind a command line option. This will enable better performance for
vectors on NEON enabled processors.
llvm-svn: 85333
|
|
|
|
| |
llvm-svn: 85049
|
|
|
|
| |
llvm-svn: 84798
|
|
|
|
|
|
| |
for a few bugs.
llvm-svn: 84791
|
|
|
|
| |
llvm-svn: 84669
|
|
|
|
| |
llvm-svn: 84664
|
|
|
|
| |
llvm-svn: 84585
|
|
|
|
| |
llvm-svn: 84563
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.
eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.
ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.
llvm-svn: 83467
|
|
|
|
|
|
|
|
| |
spill slot. When frame references are via the frame pointer, they will be
negative, but Thumb1 load/store instructions only allow positive immediate
offsets. Instead, Thumb1 will spill to R12.
llvm-svn: 83336
|
|
|
|
| |
llvm-svn: 83148
|
|
|
|
|
|
| |
the size of the saved frame pointer needs to be taken into account.
llvm-svn: 83136
|
|
|
|
| |
llvm-svn: 83117
|
|
|
|
|
|
| |
slot for the register scavenger when compiling Thumb1 functions.
llvm-svn: 83023
|
|
|
|
| |
llvm-svn: 82773
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
interest for this, as it currently reserves a register rather than using
the scavenger for matierializing constants as needed.
Instead of scavenging registers on the fly while eliminating frame indices,
new virtual registers are created, and then a scavenged collectively in a
post-pass over the function. This isolates the bits that need to interact
with the scavenger, and sets the stage for more intelligent use, and reuse,
of scavenged registers.
For the time being, this is disabled by default. Once the bugs are worked out,
the current scavenging calls in replaceFrameIndices() will be removed and
the post-pass scavenging will be the default. Until then,
-enable-frame-index-scavenging enables the new code. Currently, only the
Thumb1 back end is set up to use it.
llvm-svn: 82734
|
|
|
|
| |
llvm-svn: 82284
|
|
|
|
|
|
| |
static, not runtime.
llvm-svn: 81560
|
|
|
|
|
|
| |
ARM::*RegisterClass names.
llvm-svn: 81556
|
|
|
|
| |
llvm-svn: 80354
|
|
|
|
| |
llvm-svn: 80338
|
|
|
|
|
|
| |
cannot fold any immediate offset.
llvm-svn: 80191
|
|
|
|
|
|
|
|
|
| |
- Drop the Candidates argument and fix all callers. Now that RegScavenger
tracks available registers accurately, there is no need to restict the
search.
- Make sure that no aliases of the found register are in use. This was a potential bug.
llvm-svn: 79369
|
|
|
|
|
|
| |
is frameless.
llvm-svn: 79067
|
|
|
|
|
|
| |
-disable-fp-elim.
llvm-svn: 79039
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
| |
llvm-svn: 78666
|
|
|
|
| |
llvm-svn: 78556
|
|
|
|
|
|
|
|
|
|
| |
The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.
This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time.
This fixes PR4659 and PR4682.
llvm-svn: 78361
|