| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
TableGen'erated MC lowering pseudo-expansion.
llvm-svn: 134712
|
|
|
|
|
|
|
|
|
| |
Hook up the TableGen lowering for simple pseudo instructions for ARM and
use it for a subset of the many pseudos the backend has as proof of concept.
More conversions to come.
llvm-svn: 134705
|
|
|
|
|
|
| |
multiply-accumulate instructions with separate rounding steps.
llvm-svn: 134609
|
|
|
|
| |
llvm-svn: 134525
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
It's just a t2LDMIA_UPD instruction with extra codegen properties, so it
doesn't need the encoding information. As a side-benefit, we now correctly
recognize for instruction printing as a 'pop' instruction.
llvm-svn: 134173
|
|
|
|
|
|
|
| |
It's just a tPOP instruction with additional code-gen properties, so it
doesn't need encoding information.
llvm-svn: 134172
|
|
|
|
|
|
|
|
|
|
| |
Unlike Thumb1, Thumb2 does not have dedicated encodings for adjusting the
stack pointer. It can just use the normal add-register-immediate encoding
since it can use all registers as a source, not just R0-R7. The extra
instruction definitions are just duplicates of the normal instructions with
the (not well enforced) constraint that the source register was SP.
llvm-svn: 134114
|
|
|
|
|
|
|
|
|
| |
register allocation dependent and will occasionally break. WIP in the
register allocator to model paired/etc registers.
rdar://9119939
llvm-svn: 132242
|
|
|
|
| |
llvm-svn: 132222
|
|
|
|
| |
llvm-svn: 132128
|
|
|
|
| |
llvm-svn: 132107
|
|
|
|
| |
llvm-svn: 132086
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 132081
|
|
|
|
|
|
| |
fixes <rdar://problem/9495913>
llvm-svn: 132042
|
|
|
|
|
|
| |
reflect their actual meaning and match the ARM instructions.
llvm-svn: 132039
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 132024
|
|
|
|
|
|
| |
Part of rdar://9119939
llvm-svn: 132023
|
|
|
|
|
|
|
|
| |
do.
Part of rdar://9119939.
llvm-svn: 132015
|
|
|
|
|
|
| |
Fixes part of rdar://9444657
llvm-svn: 132011
|
|
|
|
|
|
|
|
| |
branches
in Darwin Thumb2 code. Tail calls are already disabled on Thumb1.
llvm-svn: 131894
|
|
|
|
|
|
|
|
| |
(this is what used in Android NDK, when architecture is ARMv5)
patch by Koan-Sin Tan
llvm-svn: 131751
|
|
|
|
|
|
|
|
|
|
| |
("T is 1 if the target symbol S has type STT_FUNC and the
symbol addresses a Thumb instruction ;it is 0 otherwise."
from "ELF for the ARM Architecture" 4.7.1.2)
Patch by Koan-Sin Tan!
llvm-svn: 131406
|
|
|
|
| |
llvm-svn: 130854
|
|
|
|
|
|
|
| |
This fixes clang generated blocks' variables' debug info.
Radar 9279956.
llvm-svn: 130373
|
|
|
|
|
|
| |
location expressions.
llvm-svn: 130326
|
|
|
|
|
|
| |
space, if requested, will be used for complex addresses of the Blocks' variables.
llvm-svn: 130178
|
|
|
|
| |
llvm-svn: 129995
|
|
|
|
| |
llvm-svn: 129952
|
|
|
|
| |
llvm-svn: 129947
|
|
|
|
|
|
| |
Luis Felipe Strano Moraes!
llvm-svn: 129558
|
|
|
|
|
|
|
|
|
| |
the alias of an InstAlias instead of the thing being aliased. Because we need to
know the features that are valid for an InstAlias.
This is part of a work-in-progress.
llvm-svn: 127986
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
actual instruction as the non-Darwin defs, but have different call-clobber
semantics and so need separate patterns. They don't need to duplicate the
encoding information, however.
llvm-svn: 127515
|
|
|
|
| |
llvm-svn: 127510
|
|
|
|
|
|
| |
effect that we get proper instruction printing using the "pop" mnemonic for it.
llvm-svn: 127502
|
|
|
|
|
|
| |
corresponds to "add" instruction, not to "sub" as in .pad case
llvm-svn: 127106
|
|
|
|
|
|
| |
constpool. Emit unwinding information in case when this load from constpool is used to change the stack pointer in the prologue.
llvm-svn: 127105
|
|
|
|
|
|
| |
because there is no way given the constpool index to examine the actual entry: the reason is clones inserted by constant island pass, which are not tracked at all! The only connection is done during asmprinting time via magic label names which is really gross and needs to be eventually fixed.
llvm-svn: 127104
|
|
|
|
| |
llvm-svn: 127103
|
|
|
|
|
|
|
| |
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: 126882
|
|
|
|
|
|
| |
http://llvm.org/bugs/show_bug.cgi?id=8931
llvm-svn: 126689
|
|
|
|
| |
llvm-svn: 125025
|
|
|
|
|
|
|
| |
Unified EmitTextAttribute for both Asm and Obj emission (.cpu only)
Added necessary cortex-A8 related attrs for codegen compat tests.
llvm-svn: 124995
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
that way, unfortunately. If you want to change them to work additively instead
of a one-variant-kind-per-symbolref, that's great and I completely agree it's
worth doing, but it really should be a separate patch. Until then, this isn't
correct."
So I am reverting this bit until a more opportune time.
llvm-svn: 123340
|
|
|
|
|
|
|
|
| |
R_ARM_MOVT_PREL and R_ARM_MOVW_PREL_NC.
2. Fix minor bug in ARMAsmPrinter - treat bitfield flag as a bitfield, not an enum.
3. Add support for 3 new elf section types (no-ops)
llvm-svn: 123294
|