| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
| |
Add subtargets for Freescale e500mc (32-bit) and e5500 (64-bit) to
the PowerPC backend.
Patch by Tobias von Koch.
llvm-svn: 162764
|
| |
|
|
|
|
|
|
| |
it here, then a 'register-memory' version would wrongly get the commutative
flag.
<rdar://problem/12180135>
llvm-svn: 162741
|
| |
|
|
| |
llvm-svn: 162740
|
| |
|
|
| |
llvm-svn: 162738
|
| |
|
|
|
|
|
|
|
|
| |
- Add a target-specific DAG optimization to recognize a pattern PTEST-able.
Such a pattern is a OR'd tree with X86ISD::OR as the root node. When
X86ISD::OR node has only its flag result being used as a boolean value and
all its leaves are extracted from the same vector, it could be folded into an
X86ISD::PTEST node.
llvm-svn: 162735
|
| |
|
|
|
|
|
|
|
|
|
| |
ARM."
This wasn't the right way to enforce ordering of atomics.
We are already setting the isVolatile bit on memory operands of atomic
operations which is good enough to enforce the correct ordering.
llvm-svn: 162732
|
| |
|
|
|
|
|
|
| |
Instructions emitted to compute branch offsets now use immediate operands
instead of symbolic labels. This change was needed because there were problems
when R_MIPS_HI16/LO16 relocations were used to make shared objects.
llvm-svn: 162731
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
<rdar://problem/12183003>
llvm-svn: 162703
|
| |
|
|
|
|
| |
SelectionDAGBuilder.
llvm-svn: 162661
|
| |
|
|
|
|
| |
unaligned loads so shouldn't fold unaligned stores as it can cause an alignment fault to occur.
llvm-svn: 162658
|
| |
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 162589
|
| |
|
|
|
|
| |
second operand is MipsISD::GPRel.
llvm-svn: 162584
|
| |
|
|
|
|
| |
In collaboration with Adhemerval Zanella.
llvm-svn: 162562
|
| |
|
|
| |
llvm-svn: 162558
|
| |
|
|
| |
llvm-svn: 162557
|
| |
|
|
| |
llvm-svn: 162556
|
| |
|
|
| |
llvm-svn: 162534
|
| |
|
|
| |
llvm-svn: 162520
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
No test case, this is a generalization of r160260.
llvm-svn: 162485
|
| |
|
|
| |
llvm-svn: 162454
|
| |
|
|
|
|
| |
common function call.
llvm-svn: 162428
|
| |
|
|
| |
llvm-svn: 162426
|
| |
|
|
|
|
|
|
|
|
| |
the temporary register that was used to load the immediate. Currently, it always
returns register $at, but this will change if, in the future, we decide to use
another register.
No changes in functionality.
llvm-svn: 162417
|
| |
|
|
|
|
|
|
| |
Mips16RegisterInfo/MipsSERegisterInfo.
No changes in functionality.
llvm-svn: 162413
|
| |
|
|
|
|
|
|
|
|
|
| |
Assertion failed: (Start.isValid() == End.isValid() && "Start and end should
either both be valid or both be invalid!")
when parsing inline asm. SMLoc assumes that the first char * in the source is
invalid. However, when parsing an inline asm the mnemonic is at this location.
I don't want to change SMLoc, so use a trivial workaround.
llvm-svn: 162381
|
| |
|
|
| |
llvm-svn: 162362
|
| |
|
|
|
|
| |
did getFunction()->getName(). Remove includes of Function.h that are no longer needed.
llvm-svn: 162347
|
| |
|
|
|
|
| |
for loop over operands to use unsigned instead of int.
llvm-svn: 162344
|
| |
|
|
| |
llvm-svn: 162342
|
| |
|
|
|
|
|
|
| |
to prevent it from being clobbered. mips uses $gp to access small data section.
This bug was originally reported by Carl Norum.
llvm-svn: 162340
|
| |
|
|
|
|
|
|
| |
default.
Patch by Carl Norum.
llvm-svn: 162339
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
within the codegen EK_GPRel64BlockAddress. This was not
supported for direct object output and resulted in an assertion.
This change adds support for EK_GPRel64BlockAddress for
direct object.
One fallout from this is to turn on rela relocations
for mips64 to match gas.
llvm-svn: 162334
|
| |
|
|
|
|
| |
Patch by Weiming Zhao <weimingz@codeaurora.org>.
llvm-svn: 162329
|