| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Experiments show this to be a small speedup for modern ARM cores.
llvm-svn: 147689
|
|
|
|
| |
llvm-svn: 147513
|
|
|
|
| |
llvm-svn: 147238
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ARM targets with NEON units have access to aligned vector loads and
stores that are potentially faster than unaligned operations.
Add support for spilling the callee-saved NEON registers to an aligned
stack area using 16-byte aligned NEON loads and store.
This feature is off by default, controlled by an -align-neon-spills
command line option.
llvm-svn: 147211
|
|
|
|
| |
llvm-svn: 147071
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
generator to it. For non-bundle instructions, these behave exactly the same
as the MC layer API.
For properties like mayLoad / mayStore, look into the bundle and if any of the
bundled instructions has the property it would return true.
For properties like isPredicable, only return true if *all* of the bundled
instructions have the property.
For properties like canFoldAsLoad, isCompare, conservatively return false for
bundles.
llvm-svn: 146026
|
|
|
|
|
|
|
|
|
|
|
|
| |
change, now you need a TargetOptions object to create a TargetMachine. Clang
patch to follow.
One small functionality change in PTX. PTX had commented out the machine
verifier parts in their copy of printAndVerify. That now calls the version in
LLVMTargetMachine. Users of PTX who need verification disabled should rely on
not passing the command-line flag to enable it.
llvm-svn: 145714
|
|
|
|
| |
llvm-svn: 142557
|
|
|
|
|
|
| |
rdar://10288916
llvm-svn: 142337
|
|
|
|
|
|
| |
to appease nightly testers. Not quite there yet.
llvm-svn: 140953
|
|
|
|
|
|
|
|
| |
useful if an optimization assumes the stack has been realigned. Credit to
Eli for his assistance.
rdar://10043857
llvm-svn: 140924
|
|
|
|
|
|
| |
have a predicate operand, unlike conditional branches.
llvm-svn: 139415
|
|
|
|
| |
llvm-svn: 139024
|
|
|
|
|
|
| |
rdar://10005094: miscompile of 176.gcc
llvm-svn: 138568
|
|
|
|
| |
llvm-svn: 138566
|
|
|
|
|
|
|
|
|
|
| |
Refactor STR[B] pre and post indexed instructions to use addressing modes for
memory operands, which is necessary for assembly parsing and is more consistent
with the rest of the memory instruction definitions. Make some incremental
progress on refactoring away the mega-operand addrmode2 along the way, which
is nice.
llvm-svn: 136978
|
|
|
|
|
|
| |
for allowing the fixed-length disassembler to distinguish between SBFX and STR_PRE.
llvm-svn: 136141
|
|
|
|
|
|
| |
ARM MC code from target.
llvm-svn: 135636
|
|
|
|
|
|
|
|
|
|
|
|
| |
If the function allocates reserved stack space for callee argument frames,
estimateStackSize() needs to account for that, as it doesn't show up as
ordinary frame objects. Otherwise, a callee with a large argument list will
throw off the calculations for whether to allocate an emergency spill slot
and we get assert() failures in the register scavenger.
rdar://9715469
llvm-svn: 134415
|
|
|
|
|
|
|
|
|
|
| |
Merge the tMOVr, tMOVgpr2tgpr, tMOVtgpr2gpr, and tMOVgpr2gpr instructions
into tMOVr. There's no need to keep them separate. Giving the tMOVr
instruction the proper GPR register class for its operands is sufficient
to give the register allocator enough information to do the right thing
directly.
llvm-svn: 134204
|
|
|
|
|
|
|
|
|
| |
Fix a FIXME and allow predication (in Thumb2) for the T1 register to
register MOV instructions. This allows some better codegen with
if-conversion (as seen in the test updates), plus it lays the groundwork
for pseudo-izing the tMOVCC instructions.
llvm-svn: 134197
|
|
|
|
|
|
| |
tail call pseudoinstruction. This fixes <rdar://problem/9624333>.
llvm-svn: 133227
|
|
|
|
|
|
|
|
| |
The logic for reserving R4 for use as a scratch needs to match that for
actually using it. Also, it's not necessary for immediate <=508, so adjust
the value checked.
llvm-svn: 132934
|
|
|
|
|
|
|
|
|
|
|
| |
add <rd>, sp, #<imm8>
ldr <rd>, [sp, #<imm8>]
When the offset from sp is multiple of 4 and in range of 0-1020.
This saves code size by utilizing 16-bit instructions.
rdar://9321541
llvm-svn: 129971
|
|
|
|
|
|
|
| |
Also more cleanly separate the ARM vs. Thumb functionality. Previously, the
encoding would be incorrect for some Thumb instructions (the indirect calls).
llvm-svn: 127637
|
|
|
|
|
|
|
| |
This is just very first approximation how the stuff should be done
(e.g. ARM-only for now). More to follow.
llvm-svn: 127101
|
|
|
|
| |
llvm-svn: 126467
|
|
|
|
|
|
|
|
|
|
|
| |
D registers since the vpush list may not have gaps. Make sure the stack
adjustment instruction isn't moved between them. Ditto for vpop in
epilogues.
Sorry, can't reduce a small test case.
rdar://9043312
llvm-svn: 126457
|
|
|
|
| |
llvm-svn: 125534
|
|
|
|
| |
llvm-svn: 124167
|
|
|
|
| |
llvm-svn: 123707
|
|
|
|
| |
llvm-svn: 123567
|
|
|
|
| |
llvm-svn: 123399
|
|
|
|
| |
llvm-svn: 123397
|
|
|
|
| |
llvm-svn: 123276
|
|
|
|
| |
llvm-svn: 123193
|
|
and fixes here and there.
llvm-svn: 123170
|