| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
Some cases of lowering to rotate were miscompiled.
llvm-svn: 113355
|
|
|
|
|
|
| |
The IDX was treated as byte index, not element index.
llvm-svn: 112422
|
|
|
|
|
|
| |
llc used to assert on the added testcase.
llvm-svn: 111911
|
|
|
|
|
|
|
| |
The previous algorithm in LowerVECTOR_SHUFFLE
didn't check all requirements for "monotonic" shuffles.
llvm-svn: 111361
|
|
|
|
|
|
|
|
| |
The "half vectors" are now widened to full size by the legalizer.
The only exception is in parameter passing, where half vectors are
expanded. This causes changes to some dejagnu tests.
llvm-svn: 111360
|
|
|
|
|
|
|
|
| |
"SPU Application Binary Interface Specification, v1.9" by
IBM.
Specifically: use r3-r74 to pass parameters and the return value.
llvm-svn: 111358
|
|
|
|
| |
llvm-svn: 110576
|
|
|
|
|
|
| |
store for "half vectors"
llvm-svn: 110198
|
|
|
|
| |
llvm-svn: 110038
|
|
|
|
|
|
|
|
| |
duplicate the instructions and operate on half vectors.
Also reorder code in SPUInstrInfo.td for better coherency.
llvm-svn: 110037
|
|
|
|
|
|
|
|
|
|
| |
such registers in SPU, this support boils down to "emulating"
them by duplicating instructions on the general purpose registers.
This adds the most basic operations on v2i32: passing parameters,
addition, subtraction, multiplication and a few others.
llvm-svn: 110035
|
|
|
|
|
|
| |
TII::isMoveInstr is going tobe completely removed.
llvm-svn: 108507
|
|
|
|
| |
llvm-svn: 106954
|
|
|
|
| |
llvm-svn: 106421
|
|
|
|
|
|
|
|
|
| |
This allows the fast regiser allocator to remove redundant
register moves.
Update a set of tests that depend on the register allocator
to be linear scan.
llvm-svn: 106420
|
|
|
|
| |
llvm-svn: 106419
|
|
|
|
|
|
|
| |
used to choke llc with the attached test.
llvm-svn: 106411
|
|
|
|
|
|
| |
We default to inserting to lane 0.
llvm-svn: 105722
|
|
|
|
|
|
| |
random load/store, rather than crashing llc.
llvm-svn: 105710
|
|
|
|
| |
llvm-svn: 105269
|
|
|
|
| |
llvm-svn: 103466
|
|
|
|
| |
llvm-svn: 103399
|
|
|
|
|
|
|
|
| |
emit an add instruction of the form 'a reg, reg, imm'."
Patch by Kalle Raiskila!
llvm-svn: 103021
|
|
|
|
|
|
| |
patch by Kalle Raiskila!
llvm-svn: 101875
|
|
|
|
| |
llvm-svn: 100879
|
|
|
|
|
|
|
|
|
|
| |
directive are not aligned on 16 byte boundaries. This causes misaligned loads, as the generated assembly assumes this "default" alignment.
this patch disables .lcomm in favour of '.local .comm'
Patch by Kalle Raisklia!
llvm-svn: 100875
|
|
|
|
|
|
| |
those who don't build all targets.
llvm-svn: 100688
|
|
|
|
|
|
|
|
| |
"the bigstack patch for SPU, with testcase. It is essentially the patch committed as 97091, and reverted as 97099, but with the following additions:
-in vararg handling, registers are marked to be live, to not confuse the register scavenger
-function prologue and epilogue are not emitted, if the stack size is 16. 16 means it is empty - there is only the register scavenger emergency spill slot, which is not used as there is no stack."
llvm-svn: 99819
|
|
|
|
| |
llvm-svn: 97814
|
|
|
|
| |
llvm-svn: 93869
|
|
|
|
|
|
|
|
|
|
| |
(OP (trunc x), (trunc y)) -> (trunc (OP x, y))
Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.
This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.
llvm-svn: 92849
|
|
|
|
| |
llvm-svn: 92740
|
|
|
|
|
|
|
|
| |
Fold (zext (and x, cst)) -> (and (zext x), cst)
DAG combiner likes to optimize expression in the other way so this would end up cause an infinite looping.
llvm-svn: 91574
|
|
|
|
| |
llvm-svn: 91380
|
|
|
|
|
|
| |
isl lowering code.
llvm-svn: 90925
|
|
|
|
|
|
|
|
|
|
|
|
| |
to break up CFG diamonds by banishing one of the blocks to the end of
the function, which is bad for code density and branch size.
This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the
benchmark cited as the reason for the change, however I've examined
the code and it looks more like a case of gaming a particular
branch than of being generally applicable.
llvm-svn: 84803
|
|
|
|
|
|
| |
aren't tests.
llvm-svn: 84460
|
|
|
|
| |
llvm-svn: 81545
|
|
|
|
| |
llvm-svn: 81293
|
|
|
|
| |
llvm-svn: 80042
|
|
|
|
| |
llvm-svn: 79992
|
|
|
|
|
|
|
|
| |
code, according to Anton (I'm not totally convinced, but we can always
resurrect patches if we need to do so.)
- Start moving CellSPU's tests to prefer FileCheck.
llvm-svn: 79958
|
|
|
|
| |
llvm-svn: 79953
|
|
|
|
|
|
| |
(IBM).
llvm-svn: 79949
|
|
|
|
|
|
|
|
| |
support for x86, and UMULO/SMULO for many architectures, including PPC
(PR4201), ARM, and Cell. The resulting expansion isn't perfect, but it's
not bad.
llvm-svn: 73477
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.
For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.
This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt
llvm-svn: 72897
|
|
|
|
|
|
| |
Also fixes SDISel so it *does not* force promote return value if the function is not marked signext / zeroext.
llvm-svn: 67701
|
|
|
|
|
|
|
| |
Some architectures (like x86) don't require it.
This fixes bug 3779.
llvm-svn: 67132
|
|
|
|
|
|
| |
Revert inadvertent mis-fix of fneg.
llvm-svn: 67084
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix fabs, fneg for f32 and f64.
- Use BuildVectorSDNode.isConstantSplat, now that the functionality exists
- Continue to improve i64 constant lowering. Lower certain special constants
to the constant pool when they correspond to SPU's shufb instruction's
special mask values. This avoids the overhead of performing a shuffle on a
zero-filled vector just to get the special constant when the memory load
suffices.
llvm-svn: 67067
|