|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| 
| 
| | We supported forming IMGREL relocations from ConstantExprs involving
__ImageBase if the minuend was a GlobalVariable.  Extend this
functionality to all GlobalObjects.
llvm-svn: 231456 | 
| | 
| 
| 
| | llvm-svn: 231455 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | We extend an underlying file before mmap'ing it, but it's not needed
on Windows. Extending file is slow on Windows, so we should avoid doing that.
The difference gets larger as the size of an output file gets larger.
It shove off 2 seconds out of 25 seconds when linking chrome.dll with LLD,
for example.
llvm-svn: 231452 | 
| | 
| 
| 
| | llvm-svn: 231447 | 
| | 
| 
| 
| 
| 
| | onto PtrState.
llvm-svn: 231446 | 
| | 
| 
| 
| 
| 
| 
| | Though such shifts are usually optimized away by combiner, we still can
encounter them after a vector shift is legalized.
llvm-svn: 231443 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | We would set the body of a struct type (therefore making it non-opaque)
but were forgetting to move it to the non-opaque set.
Fixes pr22807.
llvm-svn: 231442 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | and out of the main dataflow.
These refactored computations check whether or not we are at a stage
of the sequence where we can perform a match. This patch moves the
computation out of the main dataflow and into
{BottomUp,TopDown}PtrState.
llvm-svn: 231439 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | {TopDown,BottomUp}PtrState Class.
This initialization occurs when we see a new retain or release. Before
we performed the actual initialization inline in the dataflow. That is
just messy.
llvm-svn: 231438 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | ptr state change behavior onto a PtrState class.
This will enable the main ObjCARCOpts dataflow to work with higher
level concepts such as "can this ptr state be modified by this ref
count" and not need to understand the nitty gritty details of how that
is determined. This makes the dataflow cleaner.
llvm-svn: 231437 | 
| | 
| 
| 
| 
| 
| | be passed around.
llvm-svn: 231436 | 
| | 
| 
| 
| 
| 
| 
| | It will always be in the history if it is needed again. Now it is just dead
code.
llvm-svn: 231435 | 
| | 
| 
| 
| 
| 
| | This optimization a continuation of r231140 that reasoned about signed div.
llvm-svn: 231433 | 
| | 
| 
| 
| | llvm-svn: 231430 | 
| | 
| 
| 
| | llvm-svn: 231427 | 
| | 
| 
| 
| 
| 
| | sequence dataflow. This will allow me to separate the actual ARC queries from the meat of the dataflow algorithm.
llvm-svn: 231426 | 
| | 
| 
| 
| | llvm-svn: 231425 | 
| | 
| 
| 
| 
| 
| 
| 
| | It turns out 256bit V[SZ]EXT nodes are still
generated by the new shuffle lowering, so this
is here to stay!
llvm-svn: 231422 | 
| | 
| 
| 
| 
| 
| | NFC.
llvm-svn: 231411 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This patch reduces code size for all AVX targets and increases speed for some chips.
SSE 4.1 introduced the useless (see code comments) 2-register form of BLENDV and
only in the packed float/double flavors.
AVX subsequently made the instruction useful by adding a 4-register operand form.
So we just need to paper over the lack of scalar forms of this instruction, complicate
the code to choose float or double forms, and use blendv on scalars since all FP is in
xmm registers anyway.
This gives us an approximately 50% speed up for a blendv microbenchmark sequence
on SandyBridge and Haswell:
blendv : 29.73 cycles/iter
logic : 43.15 cycles/iter
No new test cases with this patch because:
1. fast-isel-select-sse.ll tests the positive side for regular X86 lowering and fast-isel
2. sse-minmax.ll and fp-select-cmp-and.ll confirm that we're not firing for scalar selects without AVX
3. fp-select-cmp-and.ll and logical-load-fold.ll confirm that we're not firing for scalar selects with constants.
http://llvm.org/bugs/show_bug.cgi?id=22483
Differential Revision: http://reviews.llvm.org/D8063
llvm-svn: 231408 | 
| | 
| 
| 
| 
| 
| | NFC intended.
llvm-svn: 231406 | 
| | 
| 
| 
| | llvm-svn: 231405 | 
| | 
| 
| 
| 
| 
| 
| | The copies already diverged, don't let them become any worse. Reduce
redundancy in code with a little macro metaprogramming.
llvm-svn: 231401 | 
| | 
| 
| 
| 
| 
| 
| | Fixes PR22761, rdar://20024866.
Differential Revision: http://reviews.llvm.org/D8042
llvm-svn: 231400 | 
| | 
| 
| 
| 
| 
| | I missed an occurrence of the old symbol in my previous patch.
llvm-svn: 231398 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This commit enables forming vector extloads for ARM.
It only does so for legal types, and when we can't fold the extension
in a wide/long form of the user instruction.
Enabling it for larger types isn't as good an idea on ARM as it is on
X86, because: 
- we pretend that extloads are legal, but end up generating vld+vmov
- we have instructions like vld {dN, dM}, which can't be generated
  when we "manually expand" extloads to vld+vmov.
For legal types, the combine doesn't fire that often: in the
integration tests only in a big endian testcase, where it removes a
pointless AND.
Related to rdar://19723053
Differential Revision: http://reviews.llvm.org/D7423
llvm-svn: 231396 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | This will be followed by a change on the clang side to update
the only user of this function with the new version.
Differential Revision: http://reviews.llvm.org/D8074
Reviewed By: Reid Kleckner
llvm-svn: 231392 | 
| | 
| 
| 
| | llvm-svn: 231391 | 
| | 
| 
| 
| 
| 
| | This removes yet another custom label to mark the start of a function.
llvm-svn: 231390 | 
| | 
| 
| 
| 
| 
| 
| | We know that the absolute symbol will be less than 2GB and thus will
always fit.
llvm-svn: 231389 | 
| | 
| 
| 
| 
| 
| 
| 
| | The first element of STACKFRAME64 is a struct and Clang wants us to put
braces around it's initialization. Instead, drop the zero. The result
should be the same.
llvm-svn: 231387 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | Turns out it's pretty straightforward and simplifies the implementation.
Reviewers: andrew.w.kaylor
Differential Revision: http://reviews.llvm.org/D8051
llvm-svn: 231386 | 
| | 
| 
| 
| 
| 
| | speed up multi-thread synchronization.
llvm-svn: 231385 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | llvm::sys::PrintBacktrace(FILE*) is supposed to print a backtrace
of the current thread given the current PC.  This function was
unimplemented on Windows, and instead the only time we could
print a backtrace was as the result of an exception through
LLVMUnhandledExceptionFilter.
This patch implements backtracing of self by using
RtlCaptureContext to get a CONTEXT for the current thread, and
moving the printing and StackWalk64 code to a common method that
printing own stack trace and printing stack trace of an exception
can use.
Differential Revision: http://reviews.llvm.org/D8068
Reviewed by: Reid Kleckner
llvm-svn: 231382 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Currently shuffles may only be combined if they are of the same type, despite the fact that bitcasts are often introduced in between shuffle nodes (e.g. x86 shuffle type widening).
This patch allows a single input shuffle to peek through bitcasts and if the input is another shuffle will merge them, shuffling using the smallest sized type, and re-applying the bitcasts at the inputs and output instead.
Dropped old ShuffleToZext test - this patch removes the use of the zext and vector-zext.ll covers these anyhow.
Differential Revision: http://reviews.llvm.org/D7939
llvm-svn: 231380 | 
| | 
| 
| 
| 
| 
| | vsrd, and vsrad instructions, it was pointed out that the builtins are generating the LLVM opcodes (shl, lshr, and ashr) not calls to the intrinsics. This patch changes the implementation of the vsld, vsrd, and vsrad instructions from from intrinsics to VXForm_1 instructions and makes them legal with P8 Altivec. It also removes the definition of the int_ppc_altivec_vsld, int_ppc_altivec_vsrd, and int_ppc_altivec_vsrad intrinsics.
llvm-svn: 231378 | 
| | 
| 
| 
| 
| 
| | Analysis/properties.m test.
llvm-svn: 231374 | 
| | 
| 
| 
| 
| 
| 
| | Added lowering for ISD::CONCAT_VECTORS and ISD::INSERT_SUBVECTOR for i1 vectors,
it is needed to pass all masked_memop.ll tests for SKX.
llvm-svn: 231371 | 
| | 
| 
| 
| 
| 
| 
| 
| | them. Note that we still can not lower gc.relocates for invoke statepoints.
Also it extracts getCopyFromRegs helper function in SelectionDAGBuilder as we need to be able to customize type of the register exported from basic block during lowering of the gc.result.
llvm-svn: 231366 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | Build time (user time) for building llvm+clang+lldb in release mode:
 - default allocator: 9086 seconds
 - with PBQP: 9126 seconds
 - with PBQP + local bit matrix cache: 9097 seconds
llvm-svn: 231360 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| | isNormalFp and isFiniteNonZeroFp should not assume vector operands can not be constant expressions.
Patch by Pawel Jurek <pawel.jurek@intel.com>
Differential Revision: http://reviews.llvm.org/D8053
llvm-svn: 231359 | 
| | 
| 
| 
| 
| 
| | vector of zeros.
llvm-svn: 231354 | 
| | 
| 
| 
| 
| 
| | Pointed out by Paul Robinson.
llvm-svn: 231353 | 
| | 
| 
| 
| 
| 
| 
| 
| | fixing"
See PR22799.
llvm-svn: 231348 | 
| | 
| 
| 
| 
| 
| 
| | already been added and the inconsistency made choosing names and
changing code more annoying. Plus, wow are they better for this code!
llvm-svn: 231347 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | result reasonable.
This code predated clang-format and so there was a reasonable amount of
crufty formatting that had accumulated. This should ensure that neither
myself nor others end up with formatting-only changes sneaking into
other fixes.
llvm-svn: 231341 | 
| | 
| 
| 
| 
| 
| | gone, update this code to reflect that.
llvm-svn: 231340 | 
| | 
| 
| 
| | llvm-svn: 231338 | 
| | 
| 
| 
| | llvm-svn: 231336 | 
| | 
| 
| 
| 
| 
| 
| 
| | C++11) copy ctor"
It is miscompiled on msc18.
llvm-svn: 231335 |