| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
See: http://en.wikipedia.org/wiki/If_and_only_if Commit 164767
llvm-svn: 164768
|
| |
|
|
| |
llvm-svn: 164767
|
| |
|
|
|
|
|
| |
This is a preliminary step towards ELF support; currently ARMFastISel hasn't
been used for ELF object files yet.
llvm-svn: 164759
|
| |
|
|
|
|
|
| |
The hasFnAttr method has been replaced by querying the Attributes explicitly. No
intended functionality change.
llvm-svn: 164725
|
| |
|
|
| |
llvm-svn: 164685
|
| |
|
|
|
|
|
|
|
|
|
| |
When a BL/BLX references a symbol in the same translation unit that is
out of range, use an external relocation. The linker will use this to
generate a branch island rather than a direct reference, allowing the
relocation to resolve correctly.
rdar://12359919
llvm-svn: 164615
|
| |
|
|
|
|
| |
rdar://9795790
llvm-svn: 164577
|
| |
|
|
|
|
| |
Also remove an unused argument.
llvm-svn: 164567
|
| |
|
|
| |
llvm-svn: 164548
|
| |
|
|
| |
llvm-svn: 164459
|
| |
|
|
| |
llvm-svn: 164458
|
| |
|
|
|
|
|
|
|
| |
As before with load instructions, oddities like "asr #32", "rrx" could
be printed incorrectly.
Patch by Chris Lidbury.
llvm-svn: 164456
|
| |
|
|
|
|
|
|
|
| |
This patch fixes load/store instructions to handle less common cases
like "asr #32", "rrx" properly throughout the MC layer.
Patch by Chris Lidbury.
llvm-svn: 164455
|
| |
|
|
| |
llvm-svn: 164420
|
| |
|
|
| |
llvm-svn: 164414
|
| |
|
|
|
|
|
| |
non-aligned i32 loads/stores.
rdar://12304911
llvm-svn: 164381
|
| |
|
|
|
|
| |
Quick review against the manual revealed a few obvious mistakes.
llvm-svn: 164361
|
| |
|
|
|
|
|
| |
non-halfword-aligned i16 loads/stores.
rdar://12304911
llvm-svn: 164345
|
| |
|
|
| |
llvm-svn: 164344
|
| |
|
|
| |
llvm-svn: 164343
|
| |
|
|
|
|
|
|
|
|
|
| |
The expression based expansion too often results in IR level optimizations
splitting the intermediate values into separate basic blocks, preventing
the formation of the VBSL instruction as the code author intended. In
particular, LICM would often hoist part of the computation out of a loop.
rdar://11011471
llvm-svn: 164340
|
| |
|
|
|
|
| |
hundred bytes of static data. Change unsigned char in same table to uint8_t for explicitness.
llvm-svn: 164285
|
| |
|
|
| |
llvm-svn: 164169
|
| |
|
|
|
|
|
|
|
| |
store this and use it to not emit long nops when the CPU is geode which
doesnt support them.
Fixes PR11212.
llvm-svn: 164132
|
| |
|
|
|
|
| |
- when we may clobber the other S-lane by converting an S to a D instruction, make an effort to work out if the S lane is clobberable or not.
llvm-svn: 164114
|
| |
|
|
|
|
| |
model.
llvm-svn: 164092
|
| |
|
|
|
|
|
|
|
| |
aligned address. Based on patch by David Peixotto.
Also use vld1.64 / vst1.64 with 128-bit alignment to take advantage of alignment
hints. rdar://12090772, rdar://12238782
llvm-svn: 164089
|
| |
|
|
|
|
|
| |
I have to work out the Target/CodeGen header dependencies
before putting this back.
llvm-svn: 164072
|
| |
|
|
|
|
| |
model.
llvm-svn: 164061
|
| |
|
|
| |
llvm-svn: 164030
|
| |
|
|
| |
llvm-svn: 163974
|
| |
|
|
| |
llvm-svn: 163922
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This models the A9 processor at the level of instruction operands, as
opposed to the itinerary, which models each operation at the level of
pipeline stages.
The two primary motivations are:
1) Allow MachineScheduler to model A9 as an out-of-order processor. It
can now distinguish between hazards that force interlocking vs.
buffered resources.
2) Reduce long-term maintenance by allowing the itinerary and target
hooks to eventually be removed. Note that almost all of the complexity
in the new model exists to model instruction variants, which the
itinerary cannot handle. Instead the scheduler previously relied on
processor-specific target hooks which are incomplete and buggy.
llvm-svn: 163921
|
| |
|
|
|
|
|
|
|
|
| |
* wrap code blocks in \code ... \endcode;
* refer to parameter names in paragraphs correctly (\arg is not what most
people want -- it starts a new paragraph);
* use \param instead of \arg to document parameters in order to be consistent
with the rest of the codebase.
llvm-svn: 163902
|
| |
|
|
| |
llvm-svn: 163803
|
| |
|
|
| |
llvm-svn: 163654
|
| |
|
|
| |
llvm-svn: 163547
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The ARM backend can eliminate cmp instructions by reusing flags from a
nearby sub instruction with similar arguments.
Don't do that if the sub is predicated - the flags are not written
unconditionally.
<rdar://problem/12263428>
llvm-svn: 163535
|
| |
|
|
|
|
| |
FFLOOR of v4f32 to Expand for ARM. v2f64 was already correct.
llvm-svn: 163458
|
| |
|
|
|
|
|
| |
The 'select' transformations apply to all ARM architectures and don't
require hasV6T2Ops.
llvm-svn: 163396
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- Darwin lied about not supporting .lcomm and turned it into zerofill in the
asm parser. Push the zerofill-conversion down into macho-specific code.
- This makes the tri-state LCOMMType enum superfluous, there are no targets
without .lcomm.
- Do proper error reporting when trying to use .lcomm with alignment on a target
that doesn't support it.
- .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2.
- Fixes PR13755 (.lcomm crashes on ELF).
llvm-svn: 163395
|
| |
|
|
|
|
| |
Patch by Chris Lidbury.
llvm-svn: 163323
|
| |
|
|
|
|
|
|
| |
instructions.
Patch by Chris Lidbury.
llvm-svn: 163321
|
| |
|
|
|
|
| |
Patch by Chris Lidbury.
llvm-svn: 163318
|
| |
|
|
| |
llvm-svn: 163309
|
| |
|
|
| |
llvm-svn: 163306
|
| |
|
|
|
|
| |
If we have a BUILD_VECTOR that is mostly a constant splat, it is often better to splat that constant then insertelement the non-constant lanes instead of insertelementing every lane from an undef base.
llvm-svn: 163304
|
| |
|
|
|
|
| |
to a VSETLN on D registers, instead of an (INSERT_SUBREG (VSETLN (EXTRACT_SUBREG ))) sequence to help the register coalescer.
llvm-svn: 163298
|
| |
|
|
|
|
|
| |
These pseudos are no longer needed now that it is possible to represent
predicated instructions in SSA form.
llvm-svn: 163275
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that it is possible to dynamically tie MachineInstr operands,
predicated instructions are possible in SSA form:
%vreg3<def> = SUBri %vreg1, -2147483647, pred:14, pred:%noreg, %opt:%noreg
%vreg4<def,tied1> = MOVCCr %vreg3<tied0>, %vreg1, %pred:12, pred:%CPSR
Becomes a predicated SUBri with a tied imp-use:
SUBri %vreg1, -2147483647, pred:13, pred:%CPSR, opt:%noreg, %vreg1<imp-use,tied0>
This means that any instruction that is safe to move can be folded into
a MOVCC, and the *CC pseudo-instructions are no longer needed.
The test case changes reflect that Thumb2SizeReduce recognizes the
predicated instructions. It didn't understand the pseudos.
llvm-svn: 163274
|