| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
appropriate comdat grouping and type unit headers"
This reverts commit r197073.
The test seems to be failing on some buildbots for unknown reasons.
Reverting until I can figure that out. If anyone's got a reproduction
(.s and .o together would be great) - I'd really appreciate it.
llvm-svn: 197079
|
| |
|
|
|
|
|
|
|
|
|
| |
comdat grouping and type unit headers
This commit does not complete the type units feature - there are issues
around fission support (skeletal type units, pubtypes/pubnames) and
hashing of some types including those containing references to types in
other type units.
llvm-svn: 197073
|
| |
|
|
| |
llvm-svn: 197072
|
| |
|
|
|
|
| |
use f32/f64 types, rather than their vector equivalents.
llvm-svn: 197068
|
| |
|
|
|
|
|
| |
floating-point reciprocal square root step LLVM AArch64 intrinsics to
use f32/f64 types, rather than their vector equivalents.
llvm-svn: 197067
|
| |
|
|
|
|
|
|
| |
point reciprocal exponent, and floating-point reciprocal square root estimate
LLVM AArch64 intrinsics to use f32/f64 types, rather than their vector
equivalents.
llvm-svn: 197066
|
| |
|
|
| |
llvm-svn: 197064
|
| |
|
|
|
|
|
| |
This makes it a little easier to read.
Reviewed-by: Vincent Lejeune <vljn at ovi.com>
llvm-svn: 197058
|
| |
|
|
|
|
|
| |
This enables -print-before-all to dump MachineInstrs after it is run.
Reviewed-by: Vincent Lejeune <vljn at ovi.com>
llvm-svn: 197057
|
| |
|
|
|
|
|
| |
This enables -print-before-all to dump MachineInstrs after it is run.
Reviewed-by: Vincent Lejeune <vljn at ovi.com>
llvm-svn: 197056
|
| |
|
|
| |
llvm-svn: 197052
|
| |
|
|
|
|
| |
Found by "cppcheck". PR18208.
llvm-svn: 197047
|
| |
|
|
|
|
|
|
| |
The tests were no longer using fast-isel at all (MachO needs an "ios" rather
than "darwin" triple at the moment and Linux needs ARM mode). Once that was
corrected, the verifier complained about a t2ADDri created for the alloca.
llvm-svn: 197046
|
| |
|
|
|
|
| |
Based on a patch by Neil Henning!
llvm-svn: 197045
|
| |
|
|
|
|
|
|
|
| |
incompatible with GCC.
I moved a test from avx512-vbroadcast-crash.ll to avx512-vbroadcast.ll
I defined HasAVX512 predicate as AssemblerPredicate. It means that you should invoke llvm-mc with "-mcpu=knl" to get encoding for AVX-512 instructions. I need this to let AsmMatcher to set different encoding for AVX and AVX-512 instructions that have the same mnemonic and operands (all scalar instructions).
llvm-svn: 197041
|
| |
|
|
|
|
|
| |
In such cases it's often better to test the result of the negation instead,
since the negation also sets CC.
llvm-svn: 197032
|
| |
|
|
|
|
|
|
|
| |
DAGCombiner could fold (truncate (load)) -> smaller load if the original
load was the width of the truncation result or wider. This patch extends
it to handle cases where the original load was narrower (and so the
extension type stays the same).
llvm-svn: 197030
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This hook reverses the order of assignment for local live ranges. This
will generally allocate shorter local live ranges first. For targets with
many registers, this could reduce regalloc compile time by a large
factor. It should still achieve optimal coloring; however, it can change
register eviction decisions. It is disabled by default for two reasons:
(1) Top-down allocation is simpler and easier to debug for targets that
don't benefit from reversing the order.
(2) Bottom-up allocation could result in poor evicition decisions on some
targets affecting the performance of compiled code.
llvm-svn: 197001
|
| |
|
|
| |
llvm-svn: 196999
|
| |
|
|
| |
llvm-svn: 196998
|
| |
|
|
| |
llvm-svn: 196996
|
| |
|
|
| |
llvm-svn: 196990
|
| |
|
|
| |
llvm-svn: 196988
|
| |
|
|
| |
llvm-svn: 196987
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The combination of inline asm, stack realignment, and dynamic allocas
turns out to be too common to reject out of hand.
ASan inserts empy inline asm fragments and uses aligned allocas.
Compiling any trivial function containing a dynamic alloca with ASan is
enough to trigger the check.
XFAIL the test cases that would be miscompiled and add one that uses the
relevant functionality.
llvm-svn: 196986
|
| |
|
|
| |
llvm-svn: 196976
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It was failing because ASan was adding all of the following to one
function:
- dynamic alloca
- stack realignment
- inline asm
This patch avoids making the static alloca dynamic when coverage is
used.
ASan should probably not be inserting empty inline asm blobs to inhibit
duplicate tail elimination.
llvm-svn: 196973
|
| |
|
|
| |
llvm-svn: 196971
|
| |
|
|
|
|
| |
.weak_def_can_be_hidden was not yet supported by the system assembler
llvm-svn: 196970
|
| |
|
|
|
|
| |
intrinsic to use f32/f64 types, rather than their vector equivalents.
llvm-svn: 196965
|
| |
|
|
|
|
|
|
| |
fixed-point
LLVM AArch64 intrinsics to use f32/f64, rather than their vector equivalents.
llvm-svn: 196964
|
| |
|
|
|
|
| |
and fixed-point convert to floating-point LLVM AArch64 intrinsics.
llvm-svn: 196963
|
| |
|
|
|
|
| |
LLVM AArch64 intrinsics.
llvm-svn: 196962
|
| |
|
|
|
|
| |
Unused variable and unused typedef in release build.
llvm-svn: 196947
|
| |
|
|
|
|
|
|
|
|
|
| |
This re-lands commit r196876, which was reverted in r196879.
The tests have been fixed to pass on platforms with a stack alignment
larger than 4.
Update to clang side tests will land shortly.
llvm-svn: 196939
|
| |
|
|
|
|
|
|
|
|
|
| |
Most users would be surprised if "isCOFF" and "isMachO" were simultaneously
true, unless they'd put the compiler in a box with a gun attached to a photon
detector.
This makes sure precisely one of the three formats is true for any triple and
simplifies some target logic based on that.
llvm-svn: 196934
|
| |
|
|
|
|
| |
that they use float/double rather than the vector equivalents when appropriate.
llvm-svn: 196930
|
| |
|
|
|
|
| |
Specifically, reuse the ARM intrinsics when possible.
llvm-svn: 196926
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
immediately after SSE scalar fp instructions like addss or mulss.
Added patterns to select SSE scalar fp arithmetic instructions from a scalar
fp operation followed by a blend.
For example, given the following code:
__m128 foo(__m128 A, __m128 B) {
A[0] += B[0];
return A;
}
previously we generated:
addss %xmm0, %xmm1
movss %xmm1, %xmm0
now we generate:
addss %xmm1, %xmm0
llvm-svn: 196925
|
| |
|
|
| |
llvm-svn: 196923
|
| |
|
|
| |
llvm-svn: 196922
|
| |
|
|
|
|
|
|
| |
Save S2(reg 18) only when we are calling floating point stubs that
have a return value of float or complex. Some more work to make this
better but this is the first step.
llvm-svn: 196921
|
| |
|
|
| |
llvm-svn: 196918
|
| |
|
|
| |
llvm-svn: 196914
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Defaulting to iOS 3.0 when LLVM has to guess the version is no longer a useful
option and can give surprising results (like tail calls being disabled).
5.0 seems like a reasonable compromise as a platform that's still interesting
to some people.
rdar://problem/15567348
llvm-svn: 196912
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: The result register of these instructions is also the first operand.
Reviewers: jacksprat, dsanders
Reviewed By: dsanders
Differential Revision: http://llvm-reviews.chandlerc.com/D2362
Differential Revision: http://llvm-reviews.chandlerc.com/D2363
llvm-svn: 196910
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
One unusual feature of the z architecture is that the result of a
previous load can be reused indefinitely for subsequent loads, even if
a cache-coherent store to that location is performed by another CPU.
A special serializing instruction must be used if you want to force
a load to be reattempted.
Since volatile loads are not supposed to be omitted in this way,
we should insert a serializing instruction before each such load.
The same goes for atomic loads.
The patch implements this at the IR->DAG boundary, in a similar way
to atomic fences. It is a no-op for targets other than SystemZ.
llvm-svn: 196906
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
One unusual feature of the z architecture is that the result of a
previous load can be reused indefinitely for subsequent loads, even if
a cache-coherent store to that location is performed by another CPU.
A special serializing instruction must be used if you want to force
a load to be reattempted.
Since volatile loads are not supposed to be omitted in this way,
we should insert a serializing instruction before each such load.
The same goes for atomic loads.
The patch implements this at the IR->DAG boundary, in a similar way
to atomic fences. It is a no-op for targets other than SystemZ.
llvm-svn: 196905
|
| |
|
|
|
|
| |
This is a small change to be strict. Just want get pattern safer.
llvm-svn: 196889
|
| |
|
|
| |
llvm-svn: 196887
|