| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 119990
|
|
|
|
|
|
|
| |
In the attached testcase, the element was
never extracted (missing rotate).
llvm-svn: 119973
|
|
|
|
| |
llvm-svn: 119754
|
|
|
|
| |
llvm-svn: 119740
|
|
|
|
|
|
|
|
| |
and testing is easier. A good example is the unknown-location.ll test that
now can just look for ".loc 1 0 0". We also don't use a DW_LNE_set_address for
every address change anymore.
llvm-svn: 119613
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 119142
|
|
|
|
| |
llvm-svn: 119098
|
|
|
|
|
|
| |
out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place
llvm-svn: 119097
|
|
|
|
|
|
|
| |
that should be split out is the InstPrinter (if a target is mc'ized).
This change makes all the targets be consistent.
llvm-svn: 119056
|
|
|
|
|
|
|
|
|
|
|
|
| |
support for the case where alignment<value size.
These cases were silently miscompiled before this patch.
Now they are overly verbose -especially storing is- and
any front-end should still avoid misaligned memory
accesses as much as possible. The bit juggling algorithm
added here probably has some room for improvement still.
llvm-svn: 118889
|
|
|
|
|
|
|
| |
with a SimpleValueType, while an EVT supports equality and
inequality comparisons with SimpleValueType.
llvm-svn: 118169
|
|
|
|
|
|
| |
basic logic, added initial platform support.
llvm-svn: 117667
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The SPU ABI does not mention v64, and all examples
in C suggest v128 are treated similarily to arrays,
we use array alignment for v64 too. This makes the
alignment of e.g. [2 x <2 x i32>] behave "intuitively"
and similar to as if the elements were e.g. i32s.
This also makes an "unaligned store" test to be
aligned, with different (but functionally equivalent)
code generated.
llvm-svn: 117360
|
|
|
|
|
|
|
|
| |
The old algorithm inserted a 'rotqmbyi' instruction which was
both redundant and wrong - it made shufb select bytes from the
wrong end of the input quad.
llvm-svn: 116701
|
|
|
|
| |
llvm-svn: 115921
|
|
|
|
|
|
|
|
|
|
| |
Before the implementation of isLegalAddressingMode, some rare cases
of code were miscompiled if optimized with the LoopStrengthReduce pass.
It is unclear (to me) if LSR is "allowed" to produce wrong code with a
bad TargetLowering, or if the bug is elsewhere and this patch just
hides it.
llvm-svn: 115919
|
|
|
|
|
|
|
| |
Also remove some code that died in the process.
One now non-existant ori is checked for.
llvm-svn: 115306
|
|
|
|
| |
llvm-svn: 115005
|
|
|
|
| |
llvm-svn: 114999
|
|
|
|
|
|
|
|
|
|
|
| |
passed the root of the match, even though only a few patterns
actually needed this (one in X86, several in ARM [which should
be refactored anyway], and some in CellSPU that I don't feel
like detangling). Instead of requiring all ComplexPatterns to
take the dead root, have targets opt into getting the root by
putting SDNPWantRoot on the ComplexPattern.
llvm-svn: 114471
|
|
|
|
| |
llvm-svn: 114461
|
|
|
|
|
|
|
|
| |
"getFixedStack" on the MachinePointerInfo class. While
this isn't the problem I'm setting out to solve, it is the
right way to eliminate PseudoSourceValue, so lets go with it.
llvm-svn: 114406
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This cleans up after the mess r108567 left in the CellSPU backend.
ORCvt-instruction were used to reinterpret registers, and the ORs were then
removed by isMoveInstr(). This patch now removes 350 instrucions of format:
or $3, $3, $3
(from the 52 testcases in CodeGen/CellSPU). One case of a nonexistant or is
checked for.
Some moves of the form 'ori $., $., 0' and 'ai $., $., 0' still remain.
llvm-svn: 114074
|
|
|
|
|
|
|
|
|
|
|
| |
take multiple cycles to decode.
For the current if-converter clients (actually only ARM), the instructions that
are predicated on false are not nops. They would still take machine cycles to
decode. Micro-coded instructions such as LDM / STM can potentially take multiple
cycles to decode. If-converter should take treat them as non-micro-coded
simple instructions.
llvm-svn: 113570
|
|
|
|
| |
llvm-svn: 113478
|
|
|
|
|
|
| |
Some cases of lowering to rotate were miscompiled.
llvm-svn: 113355
|
|
|
|
| |
llvm-svn: 113073
|
|
|
|
| |
llvm-svn: 112955
|
|
|
|
|
|
| |
The IDX was treated as byte index, not element index.
llvm-svn: 112422
|
|
|
|
|
|
| |
to try to re-use scavenged frame index reference registers. rdar://8277890
llvm-svn: 112241
|
|
|
|
| |
llvm-svn: 112073
|
|
|
|
|
|
| |
llc used to assert on the added testcase.
llvm-svn: 111911
|
|
|
|
|
|
| |
from 64bit vector support.
llvm-svn: 111910
|
|
|
|
|
|
|
| |
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: 111241
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 108567
|
|
|
|
|
|
| |
thus is a much more meaningful name.
llvm-svn: 108563
|
|
|
|
| |
llvm-svn: 108366
|
|
|
|
|
|
|
|
| |
The only folding these load/store architectures can do is converting COPY into a
load or store, and the target independent part of foldMemoryOperand already
knows how to do that.
llvm-svn: 108099
|
|
|
|
| |
llvm-svn: 108084
|
|
|
|
|
|
| |
to a Tablegen implementation.
llvm-svn: 107913
|
|
|
|
|
|
| |
code can do calling-convention queries. This obviates OutputArgReg.
llvm-svn: 107786
|
|
|
|
| |
llvm-svn: 107710
|