Matt Arsenault [Tue, 24 Nov 2015 12:05:03 +0000 (12:05 +0000)]
AMDGPU: Split x8 and x16 vector loads instead of scalarize
The one regression in the builtin tests is in the read2 test which now
(again) has many extra copies, but this should be solved once the pass
is replaced with a DAG combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253974
91177308-0d34-0410-b5e6-
96231b3b80d8
Ismail Donmez [Tue, 24 Nov 2015 09:48:09 +0000 (09:48 +0000)]
Fix build after r253954
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253969
91177308-0d34-0410-b5e6-
96231b3b80d8
Pavel Labath [Tue, 24 Nov 2015 09:46:01 +0000 (09:46 +0000)]
Fix non-PIC build after 253959
CMAKE_EXE_LINKER_FLAGS is a string. Appending a flag using list(APPEND) introduces an extra
semicolon which breaks stuff. Change this to append the value in the same way that everyone else
seems to be doing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253968
91177308-0d34-0410-b5e6-
96231b3b80d8
Cong Hou [Tue, 24 Nov 2015 08:51:23 +0000 (08:51 +0000)]
Let SelectionDAG start to use probability-based interface to add successors.
The patch in http://reviews.llvm.org/D13745 is broken into four parts:
1. New interfaces without functional changes.
2. Use new interfaces in SelectionDAG, while in other passes treat probabilities
as weights.
3. Use new interfaces in all other passes.
4. Remove old interfaces.
This the second patch above. In this patch SelectionDAG starts to use
probability-based interfaces in MBB to add successors but other MC passes are
still using weight-based interfaces. Therefore, we need to maintain correct
weight list in MBB even when probability-based interfaces are used. This is
done by updating weight list in probability-based interfaces by treating the
numerator of probabilities as weights. This change affects many test cases
that check successor weight values. I will update those test cases once this
patch looks good to you.
Differential revision: http://reviews.llvm.org/D14361
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253965
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 08:20:47 +0000 (08:20 +0000)]
[TableGen] Use std::remove_if instead of manually coded loops that call erase multiple times. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253964
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 08:20:45 +0000 (08:20 +0000)]
[TableGen] Use the other version of EnforceVectorEltTypeIs inside the TypeSet version of EnforceVectorEltTypeIs to reduce duplicated code. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253963
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 08:20:44 +0000 (08:20 +0000)]
[TableGen] Fix formatting and use logical OR. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253962
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 08:20:42 +0000 (08:20 +0000)]
[TableGen] Use std::set_intersection to merge TypeSets. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253961
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 08:20:41 +0000 (08:20 +0000)]
[TableGen] Use SmallVector::assign instead of a resize and replace element.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253960
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 24 Nov 2015 08:04:59 +0000 (08:04 +0000)]
[CMake] When disabling PIC, also pass -fno-pie when linking if it is supported.
Building clang with -fno-pie generates slightly faster code. In my not-very-rigorous testing I saw about a 4% speed up using the clang test-suite sources.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253959
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 06:24:06 +0000 (06:24 +0000)]
Revert change that accidentally snuck into r253955.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253956
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Tue, 24 Nov 2015 06:22:43 +0000 (06:22 +0000)]
[TableGen] Use array_pod_sort. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253955
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 24 Nov 2015 06:07:49 +0000 (06:07 +0000)]
Add a FunctionImporter helper to perform summary-based cross-module function importing
Summary:
This is a helper to perform cross-module import for ThinLTO. Right now
it is importing naively every possible called functions.
Reviewers: tejohnson
Subscribers: dexonsmith, llvm-commits
Differential Revision: http://reviews.llvm.org/D14914
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253954
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Tue, 24 Nov 2015 06:07:42 +0000 (06:07 +0000)]
Add findFunctionInfoList() accessor to FunctionInfoIndex.
Summary:
This allows to query for a function in the map without creating an
entry, allowing to use a const FunctionInfoIndex.
Reviewers: tejohnson
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14912
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253953
91177308-0d34-0410-b5e6-
96231b3b80d8
Cong Hou [Tue, 24 Nov 2015 05:44:19 +0000 (05:44 +0000)]
[X86][SSE] Detect AVG pattern during instruction combine for SSE2/AVX2/AVX512BW.
This patch detects the AVG pattern in vectorized code, which is simply
c = (a + b + 1) / 2, where a, b, and c have the same type which are vectors of
either unsigned i8 or unsigned i16. In the IR, i8/i16 will be promoted to
i32 before any arithmetic operations. The following IR shows such an example:
%1 = zext <N x i8> %a to <N x i32>
%2 = zext <N x i8> %b to <N x i32>
%3 = add nuw nsw <N x i32> %1, <i32 1 x N>
%4 = add nuw nsw <N x i32> %3, %2
%5 = lshr <N x i32> %N, <i32 1 x N>
%6 = trunc <N x i32> %5 to <N x i8>
and with this patch it will be converted to a X86ISD::AVG instruction.
The pattern recognition is done when combining instructions just before type
legalization during instruction selection. We do it here because after type
legalization, it is much more difficult to do pattern recognition based
on many instructions that are doing type conversions. Therefore, for
target-specific instructions (like X86ISD::AVG), we need to take care of type
legalization by ourselves. However, as X86ISD::AVG behaves similarly to
ISD::ADD, I am wondering if there is a way to legalize operands and result
types of X86ISD::AVG together with ISD::ADD. It seems that the current design
doesn't support this idea.
Tests are added for SSE2, AVX2, and AVX512BW and both i8 and i16 types of
variant vector sizes.
Differential revision: http://reviews.llvm.org/D14761
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253952
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Tue, 24 Nov 2015 02:21:43 +0000 (02:21 +0000)]
[DIE] Make DIE.h NDEBUG conditional-free.
Switch dump()/print() method definitions to LLVM_DUMP_METHOD instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253945
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Tue, 24 Nov 2015 00:58:58 +0000 (00:58 +0000)]
[CMake] export_executable_symbols also needs to add -rdynamic to the linker flags on Darwin
Without -rdynamic LLVM built with LTO fails to pass "check" due to loadable modules failing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253944
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 24 Nov 2015 00:32:00 +0000 (00:32 +0000)]
Use make_unique [NFC]
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253942
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Tue, 24 Nov 2015 00:31:41 +0000 (00:31 +0000)]
Remove trailing space in comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253941
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Tue, 24 Nov 2015 00:11:48 +0000 (00:11 +0000)]
minimize test case but still show the bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253940
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Bieneman [Mon, 23 Nov 2015 23:34:09 +0000 (23:34 +0000)]
NFC. Fixing my consistently incorrect spelling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253936
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 23 Nov 2015 23:22:05 +0000 (23:22 +0000)]
added comment (using freshly updated update_llc_test_checks.py)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253935
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Mon, 23 Nov 2015 23:18:20 +0000 (23:18 +0000)]
[x86] add test to show suboptimal codegen (PR25554)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253934
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 23 Nov 2015 22:59:36 +0000 (22:59 +0000)]
[RuntimeDyld] Avoid unused-private-field warning; NFC
Fixes the no asserts -Werror,-Wunused-private-field build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253933
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 22:37:29 +0000 (22:37 +0000)]
[WebAssembly] Don't print the types of memory_size and grow_memory
This matches the current spec, for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253931
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 23 Nov 2015 22:31:22 +0000 (22:31 +0000)]
[PGO] In llvm-profdata text dump, add comment lines as annotations
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253930
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 23 Nov 2015 22:19:57 +0000 (22:19 +0000)]
Revert r253923.
Per Eric's request.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253928
91177308-0d34-0410-b5e6-
96231b3b80d8
Andy Ayers [Mon, 23 Nov 2015 22:17:44 +0000 (22:17 +0000)]
findDeadCallerSavedReg needs to pay attention to calling convention
Caller saved regs differ between SysV and Win64. Use the tail call available set to scavenge from.
Refactor register info to create new helper to get at tail call GPRs. Added a new test case for windows. Fixed up a number of X64 tests since now RCX is preferred over RDX on SysV.
Differential Revision: http://reviews.llvm.org/D14878
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253927
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 22:04:06 +0000 (22:04 +0000)]
[WebAssembly] Don't special-case call operand order.
With the '=' suffix now indicating which operands are output operands, it's
no longer as important to distinguish between a call's inputs and its outputs
using operand ordering, so we can go back to printing them in the normal order.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253925
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Mon, 23 Nov 2015 22:01:51 +0000 (22:01 +0000)]
Don't create implicit comdats.
comdats are explicitly represented for some time now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253924
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 23 Nov 2015 22:00:17 +0000 (22:00 +0000)]
Add new vector types for 512-, 1024- and 2048-bit vectors
Those types are needed to implement instructions for Hexagon Vector
Extensions (HVX): 16x32, 16x64, 32x16, 32x32, 32x64, 64x8, 64x16,
64x32, 128x8, 128x16, 256x8, 512x1, and 1024x1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253923
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 21:55:57 +0000 (21:55 +0000)]
[WebAssembly] Suffix output operands with '='.
This distinguishes input operands from output operands. This is something of
a syntactic experiment to see whether the mild amount of clutter this adds is
outweighed by the extra information it conveys to the reader.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253922
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Slingerland [Mon, 23 Nov 2015 21:54:22 +0000 (21:54 +0000)]
[Support] Add optional argument to SaturatingAdd() and SaturatingMultiply() to indicate that overflow occurred
Summary: Adds the ability for callers to detect when saturation occurred on the result of saturating addition/multiplication.
Reviewers: davidxl, silvas, rsmith
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14931
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253921
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 23 Nov 2015 21:47:51 +0000 (21:47 +0000)]
[RuntimeDyld] Don't allocate unnecessary stub buffer space
Summary:
For relocation types that are known to not require stub functions, there
is no need to allocate extra space for the stub functions.
Reviewers: lhames, reames, maksfb
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14676
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253920
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 23 Nov 2015 21:47:46 +0000 (21:47 +0000)]
[RuntimeDyld] Add bounds checking to SectionEntry::advanceStubOffset
Summary:
Change SectionEntry to keep track of the size of its underlying
allocation, and use that to bounds check advanceStubOffset.
Reviewers: lhames, andrew.w.kaylor, reames
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14675
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253919
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Mon, 23 Nov 2015 21:47:41 +0000 (21:47 +0000)]
[RuntimeDyld] Add accessors to `SectionEntry`; NFC
Summary:
Remove naked access to the data members in `SectionEntry` and route
accesses through accessor functions. This makes it obvious how the
instances of the class are used, and will also facilitate adding bounds
checking to `advanceStubOffset` in a later change.
Reviewers: lhames, loladiro, andrew.w.kaylor
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14674
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253918
91177308-0d34-0410-b5e6-
96231b3b80d8
James Y Knight [Mon, 23 Nov 2015 21:33:58 +0000 (21:33 +0000)]
Make utils/update_llc_test_checks.py note that the assertions are
autogenerated.
Also update existing test cases which appear to be generated by it and
weren't modified (other than addition of the header) by rerunning it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253917
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 21:16:35 +0000 (21:16 +0000)]
[WebAssembly] Model the return value of store instructions in wasm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253916
91177308-0d34-0410-b5e6-
96231b3b80d8
Chad Rosier [Mon, 23 Nov 2015 21:09:13 +0000 (21:09 +0000)]
[LIR] Put includes in correct order. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253915
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 23 Nov 2015 20:47:38 +0000 (20:47 +0000)]
[PGO] Add --text option for llvm-profdata show|merge commands
The new option is similar to the SampleProfile dump option.
- dump raw/indexed format into text profile format
- merge the profile and output into text profile format.
Note that Value Profiling data text format is not yet designed.
That functionality will be added later.
Differential Revision: http://reviews.llvm.org/D14894
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253913
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Mon, 23 Nov 2015 20:12:21 +0000 (20:12 +0000)]
SamplePGO - Add coverage tracking for samples.
The existing coverage tracker counts the number of records that were used
from the input profile. An alternative view of coverage is to check how
many available samples were applied.
This way, if the profile contains several records with few samples, it
doesn't really matter much that they were not applied. The more
interesting records to apply are the ones that contribute many samples.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253912
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 23 Nov 2015 19:51:41 +0000 (19:51 +0000)]
[WinEH] Fix a case where GVN could incorrectly PRE a load into an EH pad.
Differential Revision: http://reviews.llvm.org/D14842
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253908
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 19:30:43 +0000 (19:30 +0000)]
[WebAssembly] Don't use set_local instructions explicitly.
The current approach to using get_local and set_local is to use them
implicitly, as register uses and defs. Introduce new copy instructions
which are themselves no-ops except for the get_local and set_local
that they imply, so that we use get_local and set_local consistently.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253905
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Mon, 23 Nov 2015 19:19:11 +0000 (19:19 +0000)]
[ThinLTO] Deduplicate function index loading into shared helper (NFC)
Add a shared helper routine to read the function index from a file
and create/return the function index object. Use it in llvm-link and
llvm-lto.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253903
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Kaylor [Mon, 23 Nov 2015 19:16:15 +0000 (19:16 +0000)]
[WinEH] Fix problem where CodeGenPrepare incorrectly sinks a bitcast into an EH pad.
Differential Revision: http://reviews.llvm.org/D14842
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253902
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 19:12:37 +0000 (19:12 +0000)]
[WebAssembly] Always print loop end labels
WebAssembly is currently using labels to end scopes, so for example a
loop scope looks like this:
BB0_0:
loop BB0_1
...
BB0_1:
with BB0_0 being the label of the first block not in the loop. This
requires that the label be printed even when it's only reachable via
fallthrough. To arrange this, insert a no-op LOOP_END instruction in
such cases at the end of the loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253901
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 23 Nov 2015 18:02:59 +0000 (18:02 +0000)]
[PGO] Introduce alignment macro for instr-prof control data(NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253893
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 18:00:04 +0000 (18:00 +0000)]
[WebAssembly] Remove incomplete MCCodeEmitter bits.
These are parts of a separate patch that I accidentally included in r253878.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253892
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Mon, 23 Nov 2015 17:42:49 +0000 (17:42 +0000)]
Remove unused function parameter (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253889
91177308-0d34-0410-b5e6-
96231b3b80d8
Paul Robinson [Mon, 23 Nov 2015 17:34:20 +0000 (17:34 +0000)]
Add Windows error code and tidy formatting for system errors.
Differential Revision: http://reviews.llvm.org/D14892
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253888
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 23 Nov 2015 17:05:45 +0000 (17:05 +0000)]
Fix comment not allowed in C90
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253880
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 16:50:18 +0000 (16:50 +0000)]
[WebAssembly] Emit .param, .result, and .local through MC.
This eliminates one of the main remaining uses of EmitRawText.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253878
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Mon, 23 Nov 2015 16:30:17 +0000 (16:30 +0000)]
SamplePGO - Clear coverage tracking when clearing per-function data.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253877
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 23 Nov 2015 16:19:56 +0000 (16:19 +0000)]
[WebAssembly] Use dominator information to improve BLOCK placement
Always starting blocks at the top of their containing loops works, but creates
unnecessarily deep nesting because it makes all blocks in a loop overlap.
Refine the BLOCK placement algorithm to start blocks at nearest common
dominating points instead, which significantly shrinks them and reduces
overlapping.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253876
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Sanders [Mon, 23 Nov 2015 16:08:03 +0000 (16:08 +0000)]
[mips] .ent and .end should also set the type and size of the symbol respectively.
Reviewers: vkalintiris
Subscribers: llvm-commits, seanbruno, emaste, vkalintiris, dsanders
Differential Revision: http://reviews.llvm.org/D14221
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253875
91177308-0d34-0410-b5e6-
96231b3b80d8
Nathan Slingerland [Mon, 23 Nov 2015 15:33:43 +0000 (15:33 +0000)]
[Support] Fix SaturatingMultiply<T>() to be correct (and fast), Re-enable Unit Tests
Summary:
This change fixes the SaturatingMultiply<T>() function template to not cause undefined behavior with T=uint16_t.
Thanks to Richard Smith's contribution, it also no longer requires an integer division.
Patch by Richard Smith.
Reviewers: silvas, davidxl
Subscribers: rsmith, davidxl, llvm-commits
Differential Revision: http://reviews.llvm.org/D14845
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253870
91177308-0d34-0410-b5e6-
96231b3b80d8
Diego Novillo [Mon, 23 Nov 2015 15:24:13 +0000 (15:24 +0000)]
SamplePGO - Use newly introduced local variable. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253868
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Mon, 23 Nov 2015 14:09:26 +0000 (14:09 +0000)]
[Hexagon] Update instruction formats
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253867
91177308-0d34-0410-b5e6-
96231b3b80d8
Martell Malone [Mon, 23 Nov 2015 13:11:39 +0000 (13:11 +0000)]
ARM: address WoA division overflow crash
Disable custom handling of signed 32-bit and 64-bit integer divide.
Add test cases for both 32-bit and 64-bit integer overflow crashes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253865
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Nov 2015 07:19:10 +0000 (07:19 +0000)]
[TableGen] Use std::remove_if instead of manually coded loops that called erase inside them. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253857
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Nov 2015 07:19:08 +0000 (07:19 +0000)]
[TableGen] Use empty() instead of checking if size of vector is greater than or equal to 1.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253856
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Mon, 23 Nov 2015 07:19:06 +0000 (07:19 +0000)]
[Mips] Remove an unnecessary wrapping of a predicate with std::ptr_fun. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253855
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 23 Nov 2015 05:29:51 +0000 (05:29 +0000)]
Move two Value Profiler data structs to InstrProfData.inc (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253848
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Mon, 23 Nov 2015 03:49:07 +0000 (03:49 +0000)]
[PGO] Fix remaining bugs in ProfData template file (when used by compiler-rt)
1. move const qualifier out of raw header field type as runtime use of the header
needs to initialze the fields
2. use C style casting for integer types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253844
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 23 Nov 2015 02:58:42 +0000 (02:58 +0000)]
[Analysis/CallGraph] Switch dump() definitions over to LLVM_DUMP_METHOD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253842
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Mon, 23 Nov 2015 02:47:30 +0000 (02:47 +0000)]
[LoopStrengthReduce] Mark dump() definitions as LLVM_DUMP_METHOD.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253841
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 23 Nov 2015 01:59:16 +0000 (01:59 +0000)]
Add const qualifier for FunctionInfoIndex in ModuleLinker and linkInModule() (NFC)
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253840
91177308-0d34-0410-b5e6-
96231b3b80d8
Mehdi Amini [Mon, 23 Nov 2015 01:59:12 +0000 (01:59 +0000)]
Add const qualifier on FunctionInfoIndex::hasExportedFunctions() (NFC)
From: Mehdi Amini <mehdi.amini@apple.com>
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253839
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Nov 2015 22:43:40 +0000 (22:43 +0000)]
Revert a portion of r253836 that seems to have broke a couple bots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253838
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sun, 22 Nov 2015 21:20:13 +0000 (21:20 +0000)]
[SCEV] Use C++11'isms
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253837
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Nov 2015 20:46:24 +0000 (20:46 +0000)]
[TableGen] Use range-based for loops. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253836
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Nov 2015 20:46:22 +0000 (20:46 +0000)]
[TableGen] Use std::fill instead of a manually coded loop. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253835
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sun, 22 Nov 2015 20:11:21 +0000 (20:11 +0000)]
Further simplify from r253832 with some unique_ptr and coalescing conditions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253834
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Sun, 22 Nov 2015 20:02:58 +0000 (20:02 +0000)]
Further simplify from r253832, removing unnecessary intermediate lambdas
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253833
91177308-0d34-0410-b5e6-
96231b3b80d8
Craig Topper [Sun, 22 Nov 2015 19:27:02 +0000 (19:27 +0000)]
[TableGen] Use std::any_of and std::find instead of manual loops. NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253832
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 22 Nov 2015 19:05:53 +0000 (19:05 +0000)]
[X86][FMA] Regenerate tests.
Fixes some broken checks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253830
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 22 Nov 2015 18:03:17 +0000 (18:03 +0000)]
[MDBuilder] Simplify code using initializer lists. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253826
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Sun, 22 Nov 2015 17:27:27 +0000 (17:27 +0000)]
[SCEV] Simplify code. NFC.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253825
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 22 Nov 2015 16:52:16 +0000 (16:52 +0000)]
[X86][AVX] Added load splat tests.
Placeholder for upcoming patch for PR23022.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253824
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 22 Nov 2015 16:49:38 +0000 (16:49 +0000)]
Remove duplicate getValueType() calls. NFCI.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253823
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Sun, 22 Nov 2015 16:13:51 +0000 (16:13 +0000)]
Revert r253810. The builds should be fine now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253822
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sun, 22 Nov 2015 16:04:32 +0000 (16:04 +0000)]
[Utils] Updated shuffle fuzz script to generate more modern (valid) IR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253821
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Sun, 22 Nov 2015 15:20:19 +0000 (15:20 +0000)]
Avoid dependency between TableGen and CodeGen
Duplicate a few common definitions between DFAPacketizer.cpp and
DFAPacketizerEmitter.cpp to avoid including files from CodeGen
in TableGen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253820
91177308-0d34-0410-b5e6-
96231b3b80d8
Elena Demikhovsky [Sun, 22 Nov 2015 13:57:38 +0000 (13:57 +0000)]
AVX-512: Optimized INSERT_SUBVECTOR for i1 vector types
ISERT_SUBVECTOR for i1 vectors may be done with shifts, when we insert into the lower part, or into the upper part, on into all-zero vector.
CONCAT_VECTORS uses ISERT_SUBVECTOR.
Differential Revision: http://reviews.llvm.org/D14815
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253819
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Sun, 22 Nov 2015 05:42:31 +0000 (05:42 +0000)]
[PGO] move names of runtime sections definitions to InstrProfData.inc
In profile runtime implementation for Darwin, Linux and FreeBSD, the
names of sections holding profile control/counter/naming data need
to be known by the runtime in order to locate the start/end of the
data. Moving the name definitions to the common file to specify the
connection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253814
91177308-0d34-0410-b5e6-
96231b3b80d8
NAKAMURA Takumi [Sun, 22 Nov 2015 02:32:49 +0000 (02:32 +0000)]
Temporary fix broken build.ninja after r253790.
FIXME: This can be reverted several hours later.
r253790 introduced cyclic deps around llvm-tblgen and it was affecting after reverting.
ninja: error: dependency cycle: include/llvm/IR/Attributes.inc -> include/llvm/IR/Attributes.inc.tmp -> bin/llvm-tblgen -> utils/TableGen/CMakeFiles/obj.llvm-tblgen.dir/DFAPacketizerEmitter.cpp.o -> include/llvm/IR/Attributes.inc
It may be a ninja's bug.
FYI, renaming DFAPacketizerEmitter.cpp would be useless.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253810
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Sun, 22 Nov 2015 02:05:50 +0000 (02:05 +0000)]
[PGO] move raw magic and version def to InstrProfData.inc
These are shared definitions too. (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253809
91177308-0d34-0410-b5e6-
96231b3b80d8
Davide Italiano [Sun, 22 Nov 2015 01:58:33 +0000 (01:58 +0000)]
[llvm-rtdyld] Refactor to reduce indentation.
Suggested by: David Blaikie.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253808
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Sun, 22 Nov 2015 01:51:31 +0000 (01:51 +0000)]
[PGO] InstrProf Template file documentation change
Add more complete description of the content and structure
of the template file. Made the comment in C style to be
shared by C runtime. Also enhance the file structure so
that it can included as standalone header for common
definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253807
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Sun, 22 Nov 2015 01:39:07 +0000 (01:39 +0000)]
[PGO] Move Value Profile Kind to InstrProfData.inc
ValueProfKind value affects runtime data structure and
definition is shared between compiler-rt and LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253806
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Sun, 22 Nov 2015 00:22:07 +0000 (00:22 +0000)]
[PGO] Define value profiling updater API signature in InstrProfData.inc (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253805
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Sun, 22 Nov 2015 00:16:24 +0000 (00:16 +0000)]
Have a single way for creating unique value names.
We had two code paths. One would create names like "foo.1" and the other
names like "foo1".
For globals it is important to use "foo.1" to help C++ name demangling.
For locals there is no strong reason to go one way or the other so I
kept the most common mangling (foo1).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253804
91177308-0d34-0410-b5e6-
96231b3b80d8
Xinliang David Li [Sun, 22 Nov 2015 00:06:39 +0000 (00:06 +0000)]
[PGO] Move Raw Header def into template file InstrProfData.inc
To enable code sharing with compiler-rt (NFC)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253803
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjay Patel [Sun, 22 Nov 2015 00:03:16 +0000 (00:03 +0000)]
fix formatting; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253802
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjoy Das [Sat, 21 Nov 2015 23:20:10 +0000 (23:20 +0000)]
[SCEVExpander] Use C++isms; NFC
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253801
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Sat, 21 Nov 2015 22:46:52 +0000 (22:46 +0000)]
Now fix errors in NDEBUG build.
Hope this won't break any hardware next.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253799
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Sat, 21 Nov 2015 22:19:50 +0000 (22:19 +0000)]
Fix warnings in NDEBUG build
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253798
91177308-0d34-0410-b5e6-
96231b3b80d8
Teresa Johnson [Sat, 21 Nov 2015 21:55:48 +0000 (21:55 +0000)]
[ThinLTO] Handle bitcode without function summary sections gracefully
Summary:
Several fixes to the handling of bitcode files without function summary
sections so that they are skipped during ThinLTO processing in llvm-lto
and the gold plugin when appropriate instead of aborting.
1 Don't assert when trying to add a FunctionInfo that doesn't have
a summary attached.
2 Skip FunctionInfo structures that don't have attached function summary
sections when trying to create the combined function summary.
3 In both llvm-lto and gold-plugin, check whether a bitcode file has
a function summary section before trying to parse the index, and skip
the bitcode file if it does not.
4 Fix hasFunctionSummaryInMemBuffer in BitcodeReader, which had a bug
where we returned to early while looking for the summary section.
Also added llvm-lto and gold-plugin based tests for cases where we
don't have function summaries in the bitcode file. I verified that
either the first couple fixes described above are enough to avoid the
crashes, or fixes 1,3,4. But have combined them all here for added
robustness.
Reviewers: joker.eph
Subscribers: llvm-commits, joker.eph
Differential Revision: http://reviews.llvm.org/D14903
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253796
91177308-0d34-0410-b5e6-
96231b3b80d8
Simon Pilgrim [Sat, 21 Nov 2015 21:42:26 +0000 (21:42 +0000)]
[MachineInstrBuilder] Support for adding a ConstantPoolIndex MO with an additional offset.
MachineInstrBuilder::addDisp can already add an immediate or global address MO with an adjusted offset, this patch adds support for constant pool indices as well.
All remaining MO types still assert - there are a number of other types that could support adjusted offsets but I have no test cases at this time.
Required to fix a regression in D13988 found by Mikael Holmén during stress testing (test case attached).
Differential Revision: http://reviews.llvm.org/D14867
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253795
91177308-0d34-0410-b5e6-
96231b3b80d8
Krzysztof Parzyszek [Sat, 21 Nov 2015 20:00:45 +0000 (20:00 +0000)]
Hexagon V60/HVX DFA scheduler support
Extended DFA tablegen to:
- added "-debug-only dfa-emitter" support to llvm-tblgen
- defined CVI_PIPE* resources for the V60 vector coprocessor
- allow specification of multiple required resources
- supports ANDs of ORs
- e.g. [SLOT2, SLOT3], [CVI_MPY0, CVI_MPY1] means:
(SLOT2 OR SLOT3) AND (CVI_MPY0 OR CVI_MPY1)
- added support for combo resources
- allows specifying ORs of ANDs
- e.g. [CVI_XLSHF, CVI_MPY01] means:
(CVI_XLANE AND CVI_SHIFT) OR (CVI_MPY0 AND CVI_MPY1)
- increased DFA input size from 32-bit to 64-bit
- allows for a maximum of 4 AND'ed terms of 16 resources
- supported expressions now include:
expression => term [AND term] [AND term] [AND term]
term => resource [OR resource]*
resource => one_resource | combo_resource
combo_resource => (one_resource [AND one_resource]*)
Author: Dan Palermo <dpalermo@codeaurora.org>
kparzysz: Verified AMDGPU codegen to be unchanged on all llc
tests, except those dealing with instruction encodings.
Reapply the previous patch, this time without circular dependencies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@253793
91177308-0d34-0410-b5e6-
96231b3b80d8