| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 129738
|
|
|
|
|
|
| |
doing the expansion earlier (using a custom inserter) to allow for the chance of predicating these instructions.
llvm-svn: 128940
|
|
|
|
|
|
| |
ADC/ABC with the appropriate S-bit input value.
llvm-svn: 128892
|
|
|
|
|
|
| |
actually exist.
llvm-svn: 128461
|
|
|
|
| |
llvm-svn: 127840
|
|
|
|
| |
llvm-svn: 127506
|
|
|
|
| |
llvm-svn: 127505
|
|
|
|
|
|
| |
and VDUPLN32d, respectively.
llvm-svn: 127486
|
|
|
|
| |
llvm-svn: 127482
|
|
|
|
| |
llvm-svn: 127442
|
|
|
|
| |
llvm-svn: 127434
|
|
|
|
|
|
|
| |
This is just very first approximation how the stuff should be done
(e.g. ARM-only for now). More to follow.
llvm-svn: 127101
|
|
|
|
|
|
| |
(which worked around it). This should get us back to the old, correct behavior, though it will make the integrated assembler unhappy for the time being.
llvm-svn: 125127
|
|
|
|
|
|
|
|
|
|
|
|
| |
These operations are expanded to pairs of loads or stores, and the first one
uses the address register update to produce the address for the second one.
So far, the second load/store has also updated the address register, just
for convenience, since that output has never been used. In anticipation of
actually supporting post-increment updates for these operations, this changes
the non-updating operations to use a non-updating load/store for the second
instruction.
llvm-svn: 125013
|
|
|
|
|
|
|
|
|
|
| |
clang's -Wuninitialized-experimental warning.
While these don't look like real bugs, clang's
-Wuninitialized-experimental analysis is stricter
than GCC's, and these fixes have the benefit
of being general nice cleanups.
llvm-svn: 124073
|
|
|
|
|
|
|
|
|
|
| |
1. Fixed ARM pc adjustment.
2. Fixed dynamic-no-pic codegen
3. CSE of pc-relative load of global addresses.
It's now enabled by default for Darwin.
llvm-svn: 123991
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
TargetInstrInfo:
Change produceSameValue() to take MachineRegisterInfo as an optional argument.
When in SSA form, targets can use it to make more aggressive equality analysis.
Machine LICM:
1. Eliminate isLoadFromConstantMemory, use MI.isInvariantLoad instead.
2. Fix a bug which prevent CSE of instructions which are not re-materializable.
3. Use improved form of produceSameValue.
ARM:
1. Teach ARM produceSameValue to look pass some PIC labels.
2. Look for operands from different loads of different constant pool entries
which have same values.
3. Re-implement PIC GA materialization using movw + movt. Combine the pair with
a "add pc" or "ldr [pc]" to form pseudo instructions. This makes it possible
to re-materialize the instruction, allow machine LICM to hoist the set of
instructions out of the loop and make it possible to CSE them. It's a bit
hacky, but it significantly improve code quality.
4. Some minor bug fixes as well.
With the fixes, using movw + movt to materialize GAs significantly outperform the
load from constantpool method. 186.crafty and 255.vortex improved > 20%, 254.gap
and 176.gcc ~10%.
llvm-svn: 123905
|
|
|
|
|
|
|
|
|
|
|
|
| |
movw r0, :lower16:(L_foo$non_lazy_ptr-(LPC0_0+4))
movt r0, :upper16:(L_foo$non_lazy_ptr-(LPC0_0+4))
LPC0_0:
add r0, pc, r0
It's not yet enabled by default as some tests are failing. I suspect bugs in
down stream tools.
llvm-svn: 123619
|
|
|
|
|
|
| |
and fixes here and there.
llvm-svn: 123170
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
Jakob Olesen suggested that we can avoid the need for separate pseudo
instructions here by using COPY_TO_REGCLASS in the patterns. The pattern
gets pretty ugly but it seems to work well. Partial fix for Radar 8711675.
llvm-svn: 121718
|
|
|
|
|
|
| |
Partial fix for Radar 8711675.
llvm-svn: 121716
|
|
|
|
| |
llvm-svn: 121343
|
|
|
|
| |
llvm-svn: 121338
|
|
|
|
| |
llvm-svn: 121317
|
|
|
|
| |
llvm-svn: 121313
|
|
|
|
|
|
|
|
|
| |
Added test to check bl __aeabi_read_tp gets emitted properly for ELF/ASM
as well as ELF/OBJ (including fixup)
Also added support for ELF::R_ARM_TLS_IE32
llvm-svn: 121312
|
|
|
|
|
|
| |
gazillion places that need to know about it.
llvm-svn: 121082
|
|
|
|
| |
llvm-svn: 121026
|
|
|
|
| |
llvm-svn: 121024
|
|
|
|
|
|
| |
friends) to Pseudos.
llvm-svn: 121021
|
|
|
|
|
|
| |
not thumb2.
llvm-svn: 120711
|
|
|
|
|
|
| |
The encoding for alignment in VLD4-dup instructions is still a work in progress.
llvm-svn: 120356
|
|
|
|
| |
llvm-svn: 120312
|
|
|
|
| |
llvm-svn: 120236
|
|
|
|
| |
llvm-svn: 120194
|
|
|
|
| |
llvm-svn: 119804
|
|
|
|
| |
llvm-svn: 119740
|
|
|
|
|
|
|
|
|
| |
'db', 'ib', 'da') instead of having that mode as a separate field in the
instruction. It's more convenient for the asm parser and much more readable for
humans.
<rdar://problem/8654088>
llvm-svn: 119310
|
|
|
|
| |
llvm-svn: 118968
|
|
|
|
|
|
| |
movi+orr or movw+movt depending on the subtarget.
llvm-svn: 118938
|
|
|
|
| |
llvm-svn: 118069
|
|
|
|
| |
llvm-svn: 117964
|
|
|
|
|
|
| |
the ARMExpandPseudos pass rather than during the asm lowering.
llvm-svn: 117714
|
|
|
|
|
|
| |
until other LLVM projects using these are cleaned up.
llvm-svn: 117200
|
|
|
|
|
|
| |
in assigning it to a variable (gcc-4.6 warning).
llvm-svn: 117024
|
|
|
|
| |
llvm-svn: 116897
|
|
|
|
| |
llvm-svn: 116886
|
|
|
|
|
|
|
| |
setup they require. Use this for ARM/Darwin to rematerialize the base
pointer from the frame pointer when required. rdar://8564268
llvm-svn: 116879
|