| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Slight reorganisation of PPC instruction classes for scheduling. No
functionality change for existing subtargets.
- Clearly separate load/store-with-update instructions from regular loads and stores.
- Split IntRotateD -> IntRotateD and IntRotateDI
- Split out fsub and fadd from FPGeneral -> FPAddSub
- Update existing itineraries
Patch by Tobias von Koch.
llvm-svn: 162729
|
| |
|
|
|
|
|
|
|
| |
In SelectionDAGLegalize::ExpandLegalINT_TO_FP, expand INT_TO_FP nodes without
using any f64 operations if f64 is not a legal type.
Patch by Stefan Kristiansson.
llvm-svn: 162728
|
| |
|
|
|
|
|
|
|
|
|
| |
Allow load-immediates to be rematerialised in the register coalescer for
PPC. This makes test/CodeGen/PowerPC/big-endian-formal-args.ll fail,
because it relies on a register move getting emitted. The immediate load is
equivalent, so change this test case.
Patch by Tobias von Koch.
llvm-svn: 162727
|
| |
|
|
|
|
|
|
|
| |
Adds the vendor 'fsl' (used by Freescale SDK) to Triple. This will allow
clang support for Freescale cross-compile configurations.
Patch by Tobias von Koch.
llvm-svn: 162726
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The 32-bit ABI requires CR bit 6 to be set if the call has fp arguments and
unset if it doesn't. The solution up to now was to insert a MachineNode to
set/unset the CR bit, which produces a CR vreg. This vreg was then copied
into CR bit 6. When the register allocator saw a bunch of these in the same
function, it allocated the set/unset CR bit in some random CR register (1
extra instruction) and then emitted CR moves before every vararg function
call, rather than just setting and unsetting CR bit 6 directly before every
vararg function call. This patch instead inserts a PPCcrset/PPCcrunset
instruction which are then matched by a dedicated instruction pattern.
Patch by Tobias von Koch.
llvm-svn: 162725
|
| |
|
|
|
|
|
|
|
|
| |
The zeroextend IR instruction is lowered to an 'and' node with an immediate
mask operand, which in turn gets legalised to a sequence of ori's & ands.
This can be done more efficiently using the rldicl instruction.
Patch by Tobias von Koch.
llvm-svn: 162724
|
| |
|
|
| |
llvm-svn: 162714
|
| |
|
|
|
|
|
|
|
|
|
| |
It is not safe to use normal LDR instructions because they may be
reordered by the scheduler. The ATOMIC_LDR pseudos have a mayStore flag
that prevents reordering.
Atomic loads are also prevented from participating in rematerialization
and load folding.
llvm-svn: 162713
|
| |
|
|
|
|
| |
user-defined suffix or something
llvm-svn: 162704
|
| |
|
|
|
|
| |
<rdar://problem/12183003>
llvm-svn: 162703
|
| |
|
|
|
|
| |
intended functionality change. Thanks to Ahmed Charles for spotting it.
llvm-svn: 162686
|
| |
|
|
| |
llvm-svn: 162678
|
| |
|
|
| |
llvm-svn: 162677
|
| |
|
|
| |
llvm-svn: 162672
|
| |
|
|
| |
llvm-svn: 162665
|
| |
|
|
|
|
| |
SelectionDAGBuilder.
llvm-svn: 162661
|
| |
|
|
| |
llvm-svn: 162659
|
| |
|
|
|
|
| |
unaligned loads so shouldn't fold unaligned stores as it can cause an alignment fault to occur.
llvm-svn: 162658
|
| |
|
|
|
|
|
|
|
|
|
| |
This section (introduced in DWARF-3) is used to define instruction address
ranges for functions that are not contiguous and can't be described
by low_pc/high_pc attributes (this is the usual case for inlined subroutines).
The patch is the first step to support fetching complete inlining info from DWARF.
Reviewed by Benjamin Kramer.
llvm-svn: 162657
|
| |
|
|
|
|
| |
removing the need for an explicit 'neverHasSideEffects = 1'
llvm-svn: 162656
|
| |
|
|
|
|
| |
instruction and an AVX2 instruction rather than relying on AddedComplexity.
llvm-svn: 162654
|
| |
|
|
|
|
| |
Reviewed offline by chandlerc.
llvm-svn: 162623
|
| |
|
|
| |
llvm-svn: 162622
|
| |
|
|
|
|
|
| |
ARMConstantIslandPass expects this instruction to stay in the same basic
block as the jump table branch.
llvm-svn: 162615
|
| |
|
|
|
|
|
|
|
|
| |
It's not clear that they should be marked as such, but tbb formation
fails if t2LEApcrelJT is hoisted of of a loop.
This doesn't change the flags on these instructions,
UnmodeledSideEffects was already inferred from the missing pattern.
llvm-svn: 162603
|
| |
|
|
|
|
|
|
|
| |
The ARM BL and BLX instructions don't have predicate operands, but the
thumb variants tBL and tBLX do.
The argument registers should be added as implicit uses.
llvm-svn: 162593
|
| |
|
|
|
|
|
| |
There is special magic happening when returning floating point values on
the x87 stack. The RET instructions get extra f80 operands.
llvm-svn: 162592
|
| |
|
|
|
|
|
| |
It is legal to have a register node as an explicit operand, it shouldn't
be counted as an implicit use.
llvm-svn: 162591
|
| |
|
|
| |
llvm-svn: 162589
|
| |
|
|
|
|
| |
second operand is MipsISD::GPRel.
llvm-svn: 162584
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
the case of multiple edges from one block to another.
A simple example is a switch statement with multiple values to the same
destination. The definition of an edge is modified from a pair of blocks to
a pair of PredBlock and an index into the successors.
Also set the weight correctly when building SelectionDAG from LLVM IR,
especially when converting a Switch.
IntegersSubsetMapping is updated to calculate the weight for each cluster.
llvm-svn: 162572
|
| |
|
|
|
|
| |
limited to functions any more
llvm-svn: 162566
|
| |
|
|
|
|
| |
modules. Patch by Reid Watson.
llvm-svn: 162565
|
| |
|
|
|
|
| |
In collaboration with Adhemerval Zanella.
llvm-svn: 162562
|
| |
|
|
|
|
|
|
| |
No intended behavior change. This was introduced in r162023. With the fixed
algorithm a Release build of ARMInstPrinter.cpp goes from 16s to 10s on a
2011 MBP.
llvm-svn: 162559
|
| |
|
|
| |
llvm-svn: 162558
|
| |
|
|
| |
llvm-svn: 162557
|
| |
|
|
| |
llvm-svn: 162556
|
| |
|
|
| |
llvm-svn: 162534
|
| |
|
|
|
|
|
|
| |
not in darwin gdb compat mode.
Fixes rdar://10975088
llvm-svn: 162526
|
| |
|
|
|
| |
TODO: Fix code duplication and coding style.
llvm-svn: 162525
|
| |
|
|
| |
llvm-svn: 162524
|
| |
|
|
| |
llvm-svn: 162520
|
| |
|
|
|
|
| |
to be used anyway.
llvm-svn: 162518
|
| |
|
|
|
|
|
| |
They were inserted to silence TableGen's warning about
redundant properties. That warning is now gone.
llvm-svn: 162517
|
| |
|
|
| |
llvm-svn: 162515
|
| |
|
|
| |
llvm-svn: 162514
|
| |
|
|
|
|
| |
hexfloat with an enormous exponent. Caught by an existing unit test + -ftrapv.
llvm-svn: 162505
|
| |
|
|
| |
llvm-svn: 162499
|
| |
|
|
| |
llvm-svn: 162498
|