| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 101342
|
|
|
|
|
|
| |
Radar 7797856
llvm-svn: 99630
|
|
|
|
|
|
| |
Patch by John Tytgat!
llvm-svn: 99096
|
|
|
|
| |
llvm-svn: 98648
|
|
|
|
|
|
| |
instructions for ld/st with writeback, the flag is completely redundant.
llvm-svn: 98643
|
|
|
|
| |
llvm-svn: 98596
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
writebacks to the address register. This gets rid of the hack that the
first register on the list was the magic writeback register operand. There
was an implicit constraint that if that operand was not reg0 it had to match
the base register operand. The post-RA scheduler's antidependency breaker
did not understand that constraint and sometimes changed one without the
other. This also fixes Radar 7495976 and should help the verifier work
better for ARM code.
There are now new ld/st instructions explicit writeback operands and explicit
constraints that tie those registers together.
llvm-svn: 98409
|
|
|
|
|
|
| |
mostly the same.
llvm-svn: 98402
|
|
|
|
| |
llvm-svn: 98398
|
|
|
|
|
|
|
|
| |
an undef value. This is only going to come up for bugpoint-reduced tests --
correct programs will not access memory at undefined addresses -- so it's not
worth the effort of doing anything more aggressive.
llvm-svn: 97745
|
|
|
|
|
|
|
| |
<undef> operands, and can cause scavenger failures when it translates
<kill,undef> to <kill>.
llvm-svn: 97046
|
|
|
|
|
|
| |
up with a reasonable test case.
llvm-svn: 96023
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
An unaligned ldr causes a trap, and is then emulated by the kernel with
awesome performance. The darwin kernel does not emulate unaligned ldm/stm
Thumb2 instructions, so don't generate them.
This fixes the miscompilation of Multisource/Applications/JM/lencod for Thumb2.
Generating unaligned ldr/str pairs from a 16-bit aligned memcpy is probably
also a bad idea, but that is beyond the scope of this patch.
llvm-svn: 93393
|
|
|
|
| |
llvm-svn: 92058
|
|
|
|
| |
llvm-svn: 92054
|
|
|
|
|
|
|
| |
Rearrange arguments.
No functional changes
llvm-svn: 92053
|
|
|
|
| |
llvm-svn: 92052
|
|
|
|
| |
llvm-svn: 92051
|
|
|
|
| |
llvm-svn: 91764
|
|
|
|
|
|
| |
Patch by Howard Hinnant!
llvm-svn: 90365
|
|
|
|
| |
llvm-svn: 88734
|
|
|
|
| |
llvm-svn: 86494
|
|
|
|
|
|
| |
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
|
|
|
|
|
|
|
| |
Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042
|
|
|
|
|
|
| |
are at the end of the bb. Test case is already in, the bug is exposed by subsequent commit.
llvm-svn: 84842
|
|
|
|
|
|
| |
This fixes most of the -ldstopti-before-sched2 regressions.
llvm-svn: 83191
|
|
|
|
| |
llvm-svn: 83058
|
|
|
|
| |
llvm-svn: 82893
|
|
|
|
| |
llvm-svn: 82836
|
|
|
|
| |
llvm-svn: 82805
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Allocate MachineMemOperands and MachineMemOperand lists in MachineFunctions.
This eliminates MachineInstr's std::list member and allows the data to be
created by isel and live for the remainder of codegen, avoiding a lot of
copying and unnecessary translation. This also shrinks MemSDNode.
- Delete MemOperandSDNode. Introduce MachineSDNode which has dedicated
fields for MachineMemOperands.
- Change MemSDNode to have a MachineMemOperand member instead of its own
fields with the same information. This introduces some redundancy, but
it's more consistent with what MachineInstr will eventually want.
- Ignore alignment when searching for redundant loads for CSE, but remember
the greatest alignment.
Target-specific code which previously used MemOperandSDNodes with generic
SDNodes now use MemIntrinsicSDNodes, with opcodes in a designated range
so that the SelectionDAG framework knows that MachineMemOperand information
is available.
llvm-svn: 82794
|
|
|
|
|
|
| |
ARM::*RegisterClass names.
llvm-svn: 81556
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 78948
|
|
|
|
| |
llvm-svn: 78666
|
|
|
|
| |
llvm-svn: 78455
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 78104
|
|
|
|
|
|
| |
ldm / stm.
llvm-svn: 78057
|
|
|
|
| |
llvm-svn: 78031
|
|
|
|
|
|
|
|
|
| |
This adds location info for all llvm_unreachable calls (which is a macro now) in
!NDEBUG builds.
In NDEBUG builds location info and the message is off (it only prints
"UREACHABLE executed").
llvm-svn: 75640
|
|
|
|
|
|
|
|
| |
modifies CPSR when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an optional def which defaults CPSR. This allows the 's' bit to be toggled dynamically.
A side-effect of this change is asm printer is now using unified assembly. There are some minor clean ups and fixes as well.
llvm-svn: 75359
|
|
|
|
| |
llvm-svn: 75206
|
|
|
|
|
|
| |
(post-allocation only). It's kind of there, but not quite. I'll return to this later.
llvm-svn: 75190
|
|
|
|
|
|
| |
the immediates are no longer encoded in the imm8 + rot format, that are left as it is. The encoding is now done in ams printing and code emission time instead.
llvm-svn: 75048
|
|
|
|
|
|
| |
Finish converting lib/Target.
llvm-svn: 75043
|
|
|
|
|
|
|
| |
cerr+abort -> llvm_report_error
assert(0)+abort -> LLVM_UNREACHABLE (assert(0)+llvm_unreachable-> abort() included)
llvm-svn: 75018
|
|
|
|
| |
llvm-svn: 73791
|
|
|
|
| |
llvm-svn: 73749
|
|
|
|
|
|
|
|
|
| |
target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
- More fixes to get ARM load / store double word working.
llvm-svn: 73671
|