| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
for passing a function call argument on a stack.
llvm-svn: 167041
|
| |
|
|
|
|
|
|
|
|
| |
the MachineInstr MayLoad/MayLoad flags are based on the tablegen implementation.
For inline assembly, however, we need to compute these based on the constraints.
Revert r166929 as this is no longer needed, but leave the test case in place.
rdar://12033048 and PR13504
llvm-svn: 167040
|
| |
|
|
| |
llvm-svn: 167039
|
| |
|
|
|
|
|
| |
SE was being called during the instruction-fusion process (when the result
is unreliable, and thus ignored). No functionality change is intended.
llvm-svn: 167037
|
| |
|
|
| |
llvm-svn: 167036
|
| |
|
|
|
|
|
|
| |
is a single pointer.
Speedup SciMark by 1%
llvm-svn: 167035
|
| |
|
|
|
|
|
| |
This patch expands FSQRT for floating point vector types when altivec is
used.
llvm-svn: 167034
|
| |
|
|
|
|
|
|
| |
needs to start at all-one
while XOR, and OR need to start at zero.
llvm-svn: 167032
|
| |
|
|
| |
llvm-svn: 167029
|
| |
|
|
| |
llvm-svn: 167027
|
| |
|
|
| |
llvm-svn: 167020
|
| |
|
|
|
|
| |
with different sizes.
llvm-svn: 167018
|
| |
|
|
|
|
|
|
| |
This patch adds more support for vector type comparisons using altivec.
It adds correct support for v16i8, v8i16, v4i32, and v4f32 vector
types for comparison operators ==, !=, >, >=, <, and <=.
llvm-svn: 167015
|
| |
|
|
|
|
|
| |
Simplify the implementation of the corresponding integer and float functions and
move them inline while there.
llvm-svn: 167014
|
| |
|
|
|
|
| |
This fixes Clang :: CodeGen/complex-builtints.c on PowerPC.
llvm-svn: 167013
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
When the switch-to-lookup tables transform landed in SimplifyCFG, it
was pointed out that this could be inappropriate for some targets.
Since there was no way at the time for the pass to know anything about
the target, an awkward reverse-transform was added in CodeGenPrepare
that turned lookup tables back into switches for some targets.
This patch uses the new TargetTransformInfo to determine if a
switch should be transformed, and removes
CodeGenPrepare::ConvertLoadToSwitch.
llvm-svn: 167011
|
| |
|
|
|
|
|
| |
getCastInstrCost had an assert prohibiting scalar to vector casts. Such casts,
however, are allowed. This should make the vectorizer buildbot happier.
llvm-svn: 166998
|
| |
|
|
|
|
|
|
|
| |
When the operand is a plain immediate rather than a label, print it
as [pc, #imm] like we do for the Thumb2 wide encoding variant.
rdar://12154503
llvm-svn: 166991
|
| |
|
|
|
|
|
|
| |
We will make them delay slot forms if there is something that can be
placed in the delay slot during a separate pass. Mips16 extended instructions
cannot be placed in delay slots.
llvm-svn: 166990
|
| |
|
|
|
|
| |
deciding to vectorize. When deciding not to vectorize do not print the called function name because it can be null.
llvm-svn: 166989
|
| |
|
|
|
|
| |
to test it with chapni's fix (-mattr=+avx).
llvm-svn: 166985
|
| |
|
|
|
|
|
| |
is 24 bits not 20 and the decoding needed to correctly handle converting the
J1 and J2 bits to their I1 and I2 values to reconstruct the displacement.
llvm-svn: 166982
|
| |
|
|
| |
llvm-svn: 166979
|
| |
|
|
| |
llvm-svn: 166973
|
| |
|
|
| |
llvm-svn: 166972
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
%0 = load <8 x i16>* %dest
%1 = shufflevector <8 x i16> %0, <8 x i16> %in,
<8 x i32> < i32 0, i32 1, i32 2, i32 3, i32 13, i32 undef, i32 14, i32 14>
store <8 x i16> %1, <8 x i16>* %dest
We get:
vmovlpd (%eax), %xmm0, %xmm0
instead of:
vmovaps (%eax), %xmm1
vmovsd %xmm1, %xmm0, %xmm0
No extra test-case is added. I just fixed the existing one
(also it uses FileCheck now).
llvm-svn: 166971
|
| |
|
|
| |
llvm-svn: 166970
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ELF ABI.
A varargs parameter consisting of a single-precision floating-point value,
or of a single-element aggregate containing a single-precision floating-point
value, must be passed in the low-order (rightmost) four bytes of the
doubleword stack slot reserved for that parameter. If there are GPR protocol
registers remaining, the parameter must also be mirrored in the low-order
four bytes of the reserved GPR.
Prior to this patch, such parameters were being passed in the high-order
four bytes of the stack slot and the mirrored GPR.
The patch adds a new test case to verify the correct code generation.
llvm-svn: 166968
|
| |
|
|
| |
llvm-svn: 166960
|
| |
|
|
|
|
|
|
|
| |
checks to avoid performing compile-time arithmetic on PPCDoubleDouble.
Now that APFloat supports arithmetic on PPCDoubleDouble, those checks
are no longer needed, and we can treat the type like any other.
llvm-svn: 166958
|
| |
|
|
| |
llvm-svn: 166954
|
| |
|
|
| |
llvm-svn: 166952
|
| |
|
|
|
|
|
|
|
|
|
|
| |
treating it as if it were an IEEE floating-point type with 106-bit
mantissa.
This makes compile-time arithmetic on "long double" for PowerPC
in clang (in particular parsing of floating point constants)
work, and fixes all "long double" related failures in the test
suite.
llvm-svn: 166951
|
| |
|
|
|
|
|
| |
equivalent to [expr1 + expr2]. See test cases for more examples.
rdar://12470392
llvm-svn: 166949
|
| |
|
|
| |
llvm-svn: 166948
|
| |
|
|
|
|
| |
- Add missing pattern on X86ISD::VZEXT from VR256 to VR256 when AVX2 is enabled.
llvm-svn: 166947
|
| |
|
|
| |
llvm-svn: 166945
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Partial copies can show up even when CoalescerPair.isPartial() returns
false. For example:
%vreg24:dsub_0<def> = COPY %vreg31:dsub_0; QPR:%vreg24,%vreg31
Such a partial-partial copy is not good enough for the transformation
adjustCopiesBackFrom() needs to do.
llvm-svn: 166944
|
| |
|
|
|
|
| |
This fixes PR12757.
llvm-svn: 166943
|
| |
|
|
|
|
|
|
|
| |
wrapper returns a vector of integers when passed a vector of pointers) by having
getIntPtrType itself return a vector of integers in this case. Outside of this
wrapper, I didn't find anywhere in the codebase that was relying on the old
behaviour for vectors of pointers, so give this a whirl through the buildbots.
llvm-svn: 166939
|
| |
|
|
|
|
|
|
|
| |
We may need to change the way profile counter values are stored, but
saturation is the wrong thing to do. Just remove it for now.
Patch by Alastair Murray!
llvm-svn: 166938
|
| |
|
|
|
|
| |
-vectorize to -vectorize-loops because we dont want to share the same flag as the bb-vectorizer.
llvm-svn: 166937
|
| |
|
|
| |
llvm-svn: 166936
|
| |
|
|
| |
llvm-svn: 166935
|
| |
|
|
| |
llvm-svn: 166932
|
| |
|
|
| |
llvm-svn: 166931
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
incorrect instruction sequence due to it not being aware that an
inline assembly instruction may reference memory.
This patch fixes the problem by causing the scheduler to always assume that any
inline assembly code instruction could access memory. This is necessary because
the internal representation of the inline instruction does not include
any information about memory accesses.
This should fix PR13504.
llvm-svn: 166929
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ELF subtarget.
The existing logic is used as a fallback to avoid any changes to the Darwin
ABI. PPC64 ELF now has two possible data layout strings: one for FreeBSD,
which requires 8-byte alignment, and a default string that requires
16-byte alignment.
I've added a test for PPC64 Linux to verify the 16-byte alignment. If
somebody wants to add a separate test for FreeBSD, that would be great.
Note that there is a companion patch to update the alignment information
in Clang, which I am committing now as well.
llvm-svn: 166928
|
| |
|
|
|
|
| |
just call getPointerTypeSizeInBits. No functionality change.
llvm-svn: 166926
|
| |
|
|
| |
llvm-svn: 166922
|