| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 122302
|
|
|
|
| |
llvm-svn: 122129
|
|
|
|
|
|
| |
Canonicalize on tLDRpci and remove tLDRcp.
llvm-svn: 121920
|
|
|
|
| |
llvm-svn: 121726
|
|
|
|
|
|
|
|
| |
Provide correct fixups for Thumb2 ADR,
which is _of course_ different from ARM ADR fixups, or any other Thumb2 fixup.
llvm-svn: 121721
|
|
|
|
|
|
|
| |
possible. They were duplicates for everything exception the source pattern
before.
llvm-svn: 121179
|
|
|
|
|
|
| |
gazillion places that need to know about it.
llvm-svn: 121082
|
|
|
|
|
|
| |
data. Next up, pseudo-izing them.
llvm-svn: 120320
|
|
|
|
|
|
|
|
| |
explicit about the operands. Split out the different variants into separate
instructions. This gives us the ability to, among other things, assign
different scheduling itineraries to the variants. rdar://8477752.
llvm-svn: 117409
|
|
|
|
| |
llvm-svn: 111456
|
|
|
|
|
|
| |
split point is in the middle of an IT block, it should move it up to just above the IT instruction. rdar://8302637
llvm-svn: 110947
|
|
|
|
|
|
| |
more 32-bit to 16-bit optimizations.
llvm-svn: 110584
|
|
|
|
| |
llvm-svn: 110460
|
|
|
|
| |
llvm-svn: 110410
|
|
|
|
|
|
|
|
| |
address of the static
ID member as the sole unique type identifier. Clean up APIs related to this change.
llvm-svn: 110396
|
|
|
|
|
|
|
|
|
|
| |
comments explaining why it was wrong. 8225024.
Fix the real problem in 8213383: the code that splits very large
blocks when no other place to put constants can be found was not
considering the case that the block contained a Thumb tablejump.
llvm-svn: 109282
|
|
|
|
|
|
|
|
| |
ARM/PPC/MSP430-specific code (which are the only targets that
implement the hook) can directly reference their target-specific
instrinfo classes.
llvm-svn: 109171
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction does not have to be 4-byte aligned. Rather, it's the offset + 2 that must be aligned since the instruction expands into:
mov pc, r1
.align 2
LJTI0_0_0:
.long LBB0_14
This fixes rdar://8213383. No test case since it's not possible to come up with a suitable small one.
llvm-svn: 109076
|
|
|
|
| |
llvm-svn: 107831
|
|
|
|
|
|
|
|
|
| |
address calculation instructions leading up to a jump table when we're trying
to convert them into a TB[H] instruction in Thumb2. This realistically
shouldn't happen much, if at all, for well formed inputs, but it's more correct
to handle it. rdar://7387682
llvm-svn: 107830
|
|
|
|
| |
llvm-svn: 107811
|
|
|
|
| |
llvm-svn: 106542
|
|
|
|
| |
llvm-svn: 106430
|
|
|
|
| |
llvm-svn: 105350
|
|
|
|
| |
llvm-svn: 100214
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
into TargetOpcodes.h. #include the new TargetOpcodes.h
into MachineInstr. Add new inline accessors (like isPHI())
to MachineInstr, and start using them throughout the
codebase.
llvm-svn: 95687
|
|
|
|
|
|
| |
MachineFunction::Alignment instead.
llvm-svn: 94701
|
|
|
|
|
|
|
| |
a null pointer for functions with no jump tables. No functionality
change.
llvm-svn: 94469
|
|
|
|
|
|
| |
Patch by Howard Hinnant!
llvm-svn: 90365
|
|
|
|
|
|
|
|
|
|
| |
constant pool ranges, as CPEIsInRange() makes conservative assumptions about
the potential alignment changes from branch adjustments. The verification,
on the other hand, runs after those branch adjustments are made, so the
effects on alignment are known and already taken into account. The sanity
check in verify should check the range directly instead.
llvm-svn: 89473
|
|
|
|
| |
llvm-svn: 89443
|
|
|
|
|
|
|
|
|
|
|
| |
assembly can confuse things utterly, as it's assumed that instructions in
inline assembly are 4 bytes wide. For Thumb mode, that's often not true,
so the calculations for when alignment padding will be present get thrown off,
ultimately leading to out of range constant pool entry references. Making
more conservative assumptions that padding may be necessary when inline asm
is present avoids this situation.
llvm-svn: 89403
|
|
|
|
| |
llvm-svn: 89369
|
|
|
|
| |
llvm-svn: 89143
|
|
|
|
|
|
|
| |
is analyzable so it can be updated. If it's not, be safe and don't move the
block.
llvm-svn: 89022
|
|
|
|
|
|
| |
usage of block sizes and offsets.
llvm-svn: 88935
|
|
|
|
| |
llvm-svn: 88933
|
|
|
|
| |
llvm-svn: 88919
|
|
|
|
|
|
| |
construct an iterator for prior.
llvm-svn: 88917
|
|
|
|
| |
llvm-svn: 88812
|
|
|
|
|
|
| |
a destination MBB.
llvm-svn: 88805
|
|
|
|
| |
llvm-svn: 87056
|
|
|
|
|
|
|
| |
to directly follow the jump table. Move the layout changes to prior to any
constant island handling.
llvm-svn: 86999
|
|
|
|
|
|
| |
way to do it forthcoming anyway.
llvm-svn: 86945
|
|
|
|
| |
llvm-svn: 86857
|
|
|
|
|
|
|
|
|
|
|
| |
can only branch forward. To best take advantage of them, we'd like to adjust
the basic blocks around a bit when reasonable. This patch puts basics in place
to do that, with a super-simple algorithm for backwards jump table targets that
creates a new branch after the jump table which branches backwards. Real
heuristics for reordering blocks or other modifications rather than inserting
branches will follow.
llvm-svn: 86791
|
|
|
|
| |
llvm-svn: 86494
|
|
|
|
| |
llvm-svn: 85698
|
|
|
|
|
|
| |
VISIBILITY_HIDDEN removal.
llvm-svn: 85043
|