| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
We don't care about pre-3.12.1 anymore.
llvm-svn: 220767
|
| |
|
|
| |
llvm-svn: 220766
|
| |
|
|
| |
llvm-svn: 220759
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a Microsoft calling convention that supports both x86 and x86_64
subtargets. It passes vector and floating point arguments in XMM0-XMM5,
and passes them indirectly once they are consumed.
Homogenous vector aggregates of up to four elements can be passed in
sequential vector registers, but this part is not implemented in LLVM
and will be handled in Clang.
On 32-bit x86, it is similar to fastcall in that it uses ecx:edx as
integer register parameters and is callee cleanup. On x86_64, it
delegates to the normal win64 calling convention.
Reviewers: majnemer
Differential Revision: http://reviews.llvm.org/D5943
llvm-svn: 220745
|
| |
|
|
|
|
|
|
|
|
| |
Benchmarks have shown that it's harmless to the performance there, and having a
unified set of passes between the two cores where possible helps big.LITTLE
deployment.
Patch by Z. Zheng.
llvm-svn: 220744
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I noticed that it was untested, and forcing it on caused some tests to fail:
LLVM :: Linker/metadata-a.ll
LLVM :: Linker/prefixdata.ll
LLVM :: Linker/type-unique-odr-a.ll
LLVM :: Linker/type-unique-simple-a.ll
LLVM :: Linker/type-unique-simple2-a.ll
LLVM :: Linker/type-unique-simple2.ll
LLVM :: Linker/type-unique-type-array-a.ll
LLVM :: Linker/unnamed-addr1-a.ll
LLVM :: Linker/visibility1.ll
If it is to be resurrected, it has to be fixed and we should probably have a
-preserve-source command line option in llvm-mc and run tests with and without
it.
llvm-svn: 220741
|
| |
|
|
|
|
| |
[-Winconsistent-missing-override]
llvm-svn: 220739
|
| |
|
|
|
|
|
|
|
| |
This is implemented via a multiclass that derives from the vperm imm
multiclass.
Fixes <rdar://problem/18426089>
llvm-svn: 220737
|
| |
|
|
|
|
|
|
| |
No functionality change. No change in X86.td.expanded except that we only set
the CD8 attributes for the memory variants. (This shouldn't be used unless we
have a memory operand.)
llvm-svn: 220736
|
| |
|
|
|
|
|
|
| |
This used to derive from avx512_pshuf_imm which is confusing.
NFC. Compared X86.td.expanded.
llvm-svn: 220735
|
| |
|
|
|
|
|
|
|
| |
1) i512mem -> f512mem (this is the packed FP input being permuted)
2) element size is 64 bits in EVEX_CD8 for PD.
(A good illustration why X86VectorVTInfo is useful)
llvm-svn: 220734
|
| |
|
|
| |
llvm-svn: 220732
|
| |
|
|
|
|
|
|
| |
For a call to not return in to the stackmap shadow, the shadow must end with the call.
To do this, we must insert any required nops *before* the call, and not after it.
llvm-svn: 220728
|
| |
|
|
|
|
| |
to be consistent with its definition in ScalarEvolution.cpp
llvm-svn: 220721
|
| |
|
|
|
|
|
|
| |
Setting ChildPid to -1 would cause waitpid to wait for any child process.
Patch by Daniel Reynaud!
llvm-svn: 220717
|
| |
|
|
|
|
|
|
|
|
|
|
| |
check.
This is a minor change to use the immediate version when the operand is a null
value. This should get rid of an unnecessary 'mov' instruction in debug
builds and align the code more with the one generated by SelectionDAG.
This fixes rdar://problem/18785125.
llvm-svn: 220713
|
| |
|
|
|
|
|
|
|
| |
Minor enhancement to use 'tbz' for i1 compare-and-branch to get rid of an 'and'
instruction.
This fixes rdar://problem/18784953.
llvm-svn: 220712
|
| |
|
|
|
|
|
|
| |
To avoid emitting too many nops, a stackmap shadow can include emitted instructions in the shadow, but these must not include branch targets.
A return from a call should count as a branch target as patching over the instructions after the call would lead to incorrect behaviour for threads currently making that call, when they return.
llvm-svn: 220710
|
| |
|
|
|
|
|
|
|
| |
The pattern matching for a 'ConstantInt' value was too restrictive. Checking for
a 'Constant' with a bull value is sufficient for using an 'cbz/cbnz' instruction.
This fixes rdar://problem/18784732.
llvm-svn: 220709
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instruction if it is in a different basic block.
This fixes a bug where the input register was not defined for the 'tbz/tbnz'
instruction. This happened, because we folded the 'and' instruction from a
different basic block.
This fixes rdar://problem/18784013.
llvm-svn: 220704
|
| |
|
|
|
|
|
|
|
|
|
|
| |
At higher optimization levels the LLVM IR may contain more complex patterns for
loads/stores from/to frame indices. The 'computeAddress' function wasn't able to
handle this and triggered an assertion.
This fix extends the possible addressing modes for frame indices.
This fixes rdar://problem/18783298.
llvm-svn: 220700
|
| |
|
|
| |
llvm-svn: 220699
|
| |
|
|
| |
llvm-svn: 220690
|
| |
|
|
|
|
| |
This was causing an error on the hexagon bots.
llvm-svn: 220689
|
| |
|
|
|
|
|
|
|
|
|
| |
sets as keys into a cache of interference matrice values in the Interference
constraint adder.
Creating interference matrices was one of the large remaining time-sinks in
PBQP. Caching them reduces the total compile time (when using PBQP) on the
nightly test suite by ~10%.
llvm-svn: 220688
|
| |
|
|
|
|
|
|
|
|
| |
MapVector::begin(), MapVector::end().
These just delegate to the underlying vector type in the MapVector.
Also just add in some sanity unittests.
llvm-svn: 220687
|
| |
|
|
| |
llvm-svn: 220678
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, the ARM backend will select the VMAXNM and VMINNM for these C
expressions:
(a < b) ? a : b
(a > b) ? a : b
but not these expressions:
(a > b) ? b : a
(a < b) ? b : a
This patch allows all of these expressions to be matched.
llvm-svn: 220671
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
works.
Summary: [asan-asm-instrumentation] Added comment describing how asm instrumentation works.
Reviewers: eugenis
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D5970
llvm-svn: 220670
|
| |
|
|
|
|
| |
C++ source given to check_cxx_source_compile should have define "main".
llvm-svn: 220669
|
| |
|
|
| |
llvm-svn: 220668
|
| |
|
|
|
|
| |
This reverts commit r220665.
llvm-svn: 220667
|
| |
|
|
|
|
|
|
|
|
| |
On FreeBSD 10.0, size_t needs to be defined before including cxxabi.h.
Currenty HAVE_CXXABI_H is not defined on FreeBSD because of that reason.
This patch teaches cmake and configure how to include it.
http://reviews.llvm.org/D5940
llvm-svn: 220665
|
| |
|
|
|
|
|
|
|
| |
An icmp may have pointer arguments, it isn't limited to integers or
vectors of integers.
This fixes PR21388.
llvm-svn: 220664
|
| |
|
|
| |
llvm-svn: 220662
|
| |
|
|
| |
llvm-svn: 220658
|
| |
|
|
| |
llvm-svn: 220655
|
| |
|
|
|
|
|
| |
Hopefully this fixes the bug that was introduced in r220642, and not-quite-fixed
in r220649.
llvm-svn: 220653
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We used to always vectorize (slp and loop vectorize) in the LTO pass pipeline.
r220345 changed it so that we used the PassManager's fields 'LoopVectorize' and
'SLPVectorize' out of the desire to be able to disable vectorization using the
cl::opt flags 'vectorize-loops'/'slp-vectorize' which the before mentioned
fields default to.
Unfortunately, this turns off vectorization because those fields
default to false.
This commit adds flags to the LTO library to disable lto vectorization which
reconciles the desire to optionally disable vectorization during LTO and
the desired behavior of defaulting to enabled vectorization.
We really want tools to set PassManager flags directly to enable/disable
vectorization and not go the route via cl::opt flags *in*
PassManagerBuilder.cpp.
llvm-svn: 220652
|
| |
|
|
|
|
|
|
|
| |
Apparently unique_ptr'ifying NodeMetadata exposed an issue in VS where it
occasionally tries to synthesize copy constructors instead of moves. Hopefully
explicitly deleting the copy constructor and defining the move constructor will
fix this.
llvm-svn: 220649
|
| |
|
|
|
|
| |
Patch by Gabriel Radanne <drupyog@zoho.com>.
llvm-svn: 220648
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
change." (r220642)
It broke the Windows build:
[1/19] Building CXX object lib\CodeGen\CMakeFiles\LLVMCodeGen.dir\RegAllocPBQP.cpp.obj
C:\bb-win7\ninja-clang-i686-msc17-R\llvm-project\llvm\include\llvm/CodeGen/RegAllocPBQP.h(132) : error C2248: 'std::unique_ptr<_Ty>::unique_ptr' : cannot access private member declared in class 'std::unique_ptr<_Ty>'
with
[
_Ty=unsigned int []
]
D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\memory(1600) : see declaration of 'std::unique_ptr<_Ty>::unique_ptr'
with
[
_Ty=unsigned int []
]
This diagnostic occurred in the compiler generated function 'llvm::PBQP::RegAlloc::NodeMetadata::NodeMetadata(const llvm::PBQP::RegAlloc::NodeMetadata &)'
llvm-svn: 220645
|
| |
|
|
| |
llvm-svn: 220642
|
| |
|
|
|
|
|
|
| |
No functional change. This just brings things more in-line with coding
standards, and makes ValuePool's functionality clearer (it's not tied to pooling
costs, and we may want to use it to hold other things in the future).
llvm-svn: 220641
|
| |
|
|
| |
llvm-svn: 220638
|
| |
|
|
|
|
| |
Combine the Inserted an Done sets into a Visited set.
llvm-svn: 220623
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This is a simple fix that brings the compilation time from 5min to 5s
on a specific real-world example. It's a large chain of computation in
a crypto routine (always a problem for SCEV). A unit test is not
feasible and there would be no way to check it. The fix is just basic
good practice for dealing with SCEVs, there's no risk of regression.
Patch by Daniel Reynaud!
llvm-svn: 220622
|
| |
|
|
| |
llvm-svn: 220621
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
First, return true on success, as it is the OCaml convention.
Second, also initialize the native assembly printer, which is,
despite the name, required for MCJIT operation.
Since this function did not initialize the assembly printer earlier
and no function to initialize native assembly printer was available
elsewhere, it is safe to break its interface: it means that it
simply could not be used successfully before.
llvm-svn: 220620
|
| |
|
|
| |
llvm-svn: 220619
|