| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 29911
|
| |
|
|
| |
llvm-svn: 29796
|
| |
|
|
| |
llvm-svn: 29687
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the start of an array and a count of operands where applicable. In many
cases, the number of operands is known, so this static array can be allocated
on the stack, avoiding the heap. In many other cases, a SmallVector can be
used, which has the same benefit in the common cases.
I updated a lot of code calling getNode that takes a vector, but ran out of
time. The rest of the code should be updated, and these methods should be
removed.
We should also do the same thing to eliminate the methods that take a
vector of MVT::ValueTypes.
It would be extra nice to convert the dagiselemitter to avoid creating vectors
for operands when calling getTargetNode.
llvm-svn: 29566
|
| |
|
|
|
|
|
|
|
| |
method that took std::vector<SDOperand> to take a pointer to a first operand
and #operands.
This speeds up isel on kc++ by about 3%.
llvm-svn: 29561
|
| |
|
|
|
|
| |
also make it simpler.
llvm-svn: 29524
|
| |
|
|
|
|
|
|
| |
This manifested itself as really long time to compile
Regression/CodeGen/Generic/2003-05-28-ManyArgs.ll on ppc.
This is PR847.
llvm-svn: 29313
|
| |
|
|
|
|
| |
non-debug build.
llvm-svn: 29105
|
| |
|
|
| |
llvm-svn: 29099
|
| |
|
|
| |
llvm-svn: 28970
|
| |
|
|
|
|
| |
RET chain, value1, sign1, value2, sign2
llvm-svn: 28509
|
| |
|
|
|
|
| |
by Anton Korobeynikov! This is a step towards closing PR786.
llvm-svn: 28447
|
| |
|
|
|
|
|
|
|
|
|
|
| |
use UpdateNodeOperands to just update the operands! This is important because
getNode will allocate a new node if the node returns a flag and this breaks
assumptions in the legalizer that you can legalize some things multiple times
and get exactly the same results.
This latent bug was exposed by my ppc patch last night, and this fixes
gsm/toast.
llvm-svn: 28348
|
| |
|
|
|
|
| |
change.
llvm-svn: 28347
|
| |
|
|
|
|
| |
produce it.
llvm-svn: 28338
|
| |
|
|
|
|
| |
for each argument.
llvm-svn: 28313
|
| |
|
|
| |
llvm-svn: 28274
|
| |
|
|
| |
llvm-svn: 28207
|
| |
|
|
|
|
|
|
| |
target-specific subclasses. This has one caller-visible change: getTargetData() now returns a pointer instead of a reference.
This fixes PR 759.
llvm-svn: 28074
|
| |
|
|
|
|
|
|
| |
x86 and ppc for 100% dense switch statements when relocations are non-PIC.
This support will be extended and enhanced in the coming days to support
PIC, and less dense forms of jump tables.
llvm-svn: 27947
|
| |
|
|
| |
llvm-svn: 27846
|
| |
|
|
|
|
| |
the code in GCC PR26546.
llvm-svn: 27780
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and a shuffle. For this:
void %test2(<4 x float>* %F, float %f) {
%tmp = load <4 x float>* %F ; <<4 x float>> [#uses=2]
%tmp3 = add <4 x float> %tmp, %tmp ; <<4 x float>> [#uses=1]
%tmp2 = insertelement <4 x float> %tmp3, float %f, uint 2 ; <<4 x float>> [#uses=2]
%tmp6 = add <4 x float> %tmp2, %tmp2 ; <<4 x float>> [#uses=1]
store <4 x float> %tmp6, <4 x float>* %F
ret void
}
we now get this on X86 (which will get better):
_test2:
movl 4(%esp), %eax
movaps (%eax), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, %xmm1
shufps $3, %xmm1, %xmm1
movaps %xmm0, %xmm2
shufps $1, %xmm2, %xmm2
unpcklps %xmm1, %xmm2
movss 8(%esp), %xmm1
unpcklps %xmm1, %xmm0
unpcklps %xmm2, %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%eax)
ret
instead of:
_test2:
subl $28, %esp
movl 32(%esp), %eax
movaps (%eax), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%esp)
movss 36(%esp), %xmm0
movss %xmm0, 8(%esp)
movaps (%esp), %xmm0
addps %xmm0, %xmm0
movaps %xmm0, (%eax)
addl $28, %esp
ret
llvm-svn: 27765
|
| |
|
|
|
|
| |
to write one pattern for vector stores instead of 4.
llvm-svn: 27730
|
| |
|
|
| |
llvm-svn: 27695
|
| |
|
|
| |
llvm-svn: 27632
|
| |
|
|
| |
llvm-svn: 27606
|
| |
|
|
|
|
| |
shouldcustom legalize it and remove their XXXTargetLowering::LowerArguments overload
llvm-svn: 27604
|
| |
|
|
| |
llvm-svn: 27586
|
| |
|
|
| |
llvm-svn: 27580
|
| |
|
|
| |
llvm-svn: 27578
|
| |
|
|
| |
llvm-svn: 27559
|
| |
|
|
| |
llvm-svn: 27542
|
| |
|
|
|
|
| |
to match again :)
llvm-svn: 27533
|
| |
|
|
|
|
| |
as its input.
llvm-svn: 27528
|
| |
|
|
|
|
|
|
|
| |
store vector to $esp
store element to $esp + sizeof(VT) * index
load vector from $esp
The bug is VT is the type of the vector element, not the type of the vector!
llvm-svn: 27517
|
| |
|
|
|
|
| |
or custom lowering fails.
llvm-svn: 27432
|
| |
|
|
|
|
|
|
|
|
| |
promoted/expanded (e.g. SCALAR_TO_VECTOR from i8/i16 on PPC).
* Add support for targets to request that VECTOR_SHUFFLE nodes be promoted
to a canonical type, for example, we only want v16i8 shuffles on PPC.
* Move isShuffleLegal out of TLI into Legalize.
* Teach isShuffleLegal to allow shuffles that need to be promoted.
llvm-svn: 27399
|
| |
|
|
|
|
| |
work with PowerPC.
llvm-svn: 27349
|
| |
|
|
|
|
|
| |
into elements and operate on each piece. This allows generic vector integer
multiplies to work on PPC, though the generated code is horrible.
llvm-svn: 27347
|
| |
|
|
| |
llvm-svn: 27342
|
| |
|
|
|
|
|
|
| |
UnitTests/Vector/sumarray-dbl on PPC.
Now all UnitTests/Vector/* tests pass on PPC.
llvm-svn: 27299
|
| |
|
|
|
|
| |
This fixes UnitTests/Vector/simple.c with altivec.
llvm-svn: 27298
|
| |
|
|
|
|
| |
Generic/vector.ll:test_extract_elt on non-sse X86 systems.
llvm-svn: 27294
|
| |
|
|
|
|
|
| |
needs to be promoted or expanded. Relegalize the scalar store once created.
This fixes CodeGen/Generic/vector.ll:test1 on non-SSE x86 targets.
llvm-svn: 27293
|
| |
|
|
|
|
|
| |
handling cases where the vector elements need promotion, expansion, and when
the vector type itself needs to be decimated.
llvm-svn: 27278
|
| |
|
|
| |
llvm-svn: 27274
|
| |
|
|
| |
llvm-svn: 27232
|
| |
|
|
|
|
| |
value. Split them into separate enums.
llvm-svn: 27201
|
| |
|
|
| |
llvm-svn: 27181
|