| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 116601
|
|
|
|
|
|
| |
an explicit def. Make sure to capture that properly. rdar://8556556
llvm-svn: 116591
|
|
|
|
|
|
|
| |
and let the ARMExpandPseudoInsts pass fix them up into the real (MOVs)
instruction form.
llvm-svn: 116534
|
|
|
|
|
|
| |
pseudo instructions.
llvm-svn: 115840
|
|
|
|
|
|
| |
instead of using default predicates on the expanded instructions.
llvm-svn: 114066
|
|
|
|
| |
llvm-svn: 114048
|
|
|
|
|
|
|
| |
register allocation to VLDMD and VSTMD respectively. This avoids using the
dregpair operand modifier.
llvm-svn: 114047
|
|
|
|
| |
llvm-svn: 113857
|
|
|
|
|
|
|
| |
register allocation. Remove the NEONPreAllocPass, which is no longer needed.
Yeah!!
llvm-svn: 113818
|
|
|
|
|
|
|
| |
pseudo-instruction approach. Change ARMExpandPseudoInsts to use a table
to record all the NEON load/store information.
llvm-svn: 113812
|
|
|
|
|
|
|
| |
operand from the pseudo instruction to the new instruction as an implicit use.
This will preserve any other flags (e.g., kill) on the operand.
llvm-svn: 113456
|
|
|
|
|
|
|
|
| |
For VLD3/VLD4 with double-spaced registers, add the implicit use of the
super register for both the instruction loading the even registers and the
instruction loading the odd registers.
llvm-svn: 113452
|
|
|
|
| |
llvm-svn: 113442
|
|
|
|
|
|
|
|
|
| |
instructions prior to regalloc. Since it's getting a little close to
the 2.8 branch deadline, I'll have to leave the rest of the instructions
handled by the NEONPreAllocPass for now, but I didn't want to leave half
of the VLD instructions converted and the other half not.
llvm-svn: 112983
|
|
|
|
| |
llvm-svn: 112826
|
|
|
|
|
|
| |
after regalloc.
llvm-svn: 112825
|
|
|
|
|
|
|
| |
scheduling opportunities (extra instruction can go in between
MOVT / MOVW pair removing the stall).
llvm-svn: 112546
|
|
|
|
|
|
|
|
|
|
| |
operand is killed, add it to the expanded instruction as an implicit kill
operand instead of marking the individual subregs with kill flags. This
should work better in general and also handles the case for VST3 where one
of the subregs was not referenced in the expanded instruction and so was
not marked killed.
llvm-svn: 112494
|
|
|
|
| |
llvm-svn: 112357
|
|
|
|
| |
llvm-svn: 112208
|
|
|
|
| |
llvm-svn: 112170
|
|
|
|
|
|
|
|
|
|
|
| |
with the VST4 instructions. Until after register allocation, we want to
represent sets of adjacent registers by a single super-register. These
VST4 pseudo instructions have a single QQ or QQQQ source register operand.
They get expanded to the real VST4 instructions with 4 separate D register
operands. Once this conversion is complete, we'll be able to remove the
NEONPreAllocPass and avoid some fragile and hacky code elsewhere.
llvm-svn: 112108
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 108929
|
|
|
|
| |
llvm-svn: 105350
|
|
|
|
|
|
| |
from ARMRegisterInfo.h
llvm-svn: 104508
|
|
|
|
| |
llvm-svn: 103684
|
|
|
|
|
|
| |
implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands.
llvm-svn: 103667
|
|
|
|
| |
llvm-svn: 103642
|
|
|
|
| |
llvm-svn: 101334
|
|
|
|
|
|
| |
Patch by Howard Hinnant!
llvm-svn: 90365
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
than doing the same via constpool:
1. Load from constpool costs 3 cycles on A9, movt/movw pair - just 2.
2. Load from constpool might stall up to 300 cycles due to cache miss.
3. Movt/movw does not use load/store unit.
4. Less constpool entries => better compiler performance.
This is only enabled on ELF systems, since darwin does not have needed
relocations (yet).
llvm-svn: 89720
|
|
load of a GV from constantpool and then add pc. It allows the code sequence to
be rematerializable so it would be hoisted by machine licm.
- Add a late pass to break these pseudo instructions into a number of real
instructions. Also move the code in Thumb2 IT pass that breaks up t2MOVi32imm
to this pass. This is done before post regalloc scheduling to allow the
scheduler to proper schedule these instructions. It also allow them to be
if-converted and shrunk by later passes.
llvm-svn: 86304
|