platform/upstream/llvm.git
4 years agoAMDGPU/GlobalISel: Handle sbfe/ubfe intrinsic
Matt Arsenault [Mon, 10 Feb 2020 23:06:17 +0000 (18:06 -0500)]
AMDGPU/GlobalISel: Handle sbfe/ubfe intrinsic

Try to handle arbitrary scalar BFEs by packing the operands. The DAG
gives up on non-constant arguments. We're still missing any constant
folding, so we end up with pretty ugly code most of the time. Also
handle the 64-bit scalar case, which the DAG doesn't try to do.

4 years agoGlobalISel: Add matcher for G_LSHR
Matt Arsenault [Sat, 15 Feb 2020 21:46:04 +0000 (16:46 -0500)]
GlobalISel: Add matcher for G_LSHR

4 years ago[AMDGPU] Fix some tests that did not specify -mcpu
Tim Renouf [Thu, 13 Feb 2020 11:44:52 +0000 (11:44 +0000)]
[AMDGPU] Fix some tests that did not specify -mcpu

Summary:
This fixes some tests that did not specify -mcpu. Doing that disables
all subtarget features, which gives behavior that (a) does not
necessarily correspond to any actual target, and (b) can change as we
add new subtarget features.

Also added gfx1010 to memtime test.

Differential Revision: https://reviews.llvm.org/D74594

Change-Id: I8c0fe4fa03e9a93ef8bb722cd42d22e064526309

4 years ago[ADT] Use inherited ctors to forward to base. NFCI.
Benjamin Kramer [Mon, 17 Feb 2020 13:38:11 +0000 (14:38 +0100)]
[ADT] Use inherited ctors to forward to base. NFCI.

4 years ago[ASTImporter] Added visibility check for scoped enums.
Balázs Kéri [Mon, 17 Feb 2020 13:25:16 +0000 (14:25 +0100)]
[ASTImporter] Added visibility check for scoped enums.

Summary:
ASTImporter makes now difference between C++11 scoped enums with same
name in different translation units if these are not visible outside.
Enum declarations are linked into decl chain correctly.

Reviewers: martong, a.sidorin, shafik, a_sidorin, teemperor

Reviewed By: shafik, a_sidorin

Subscribers: rnkovacs, dkrupp, Szelethus, gamesh411, teemperor, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D74554

4 years ago[lldb] Fix build error from 07355c1c08b
Pavel Labath [Mon, 17 Feb 2020 13:12:29 +0000 (14:12 +0100)]
[lldb] Fix build error from 07355c1c08b

The error is: no matching function for call to 'transform(std::string&, std::__cxx11::basic_string<char>::iterator, <unresolved overloaded function type>)'

The fix: replace llvm::transform with an equally simple hand-rolled
loop.

4 years ago[lldb/DWARF] Re-enable basic dwp support
Pavel Labath [Wed, 29 Jan 2020 11:00:29 +0000 (12:00 +0100)]
[lldb/DWARF] Re-enable basic dwp support

Summary:
This patch removes the bitrotted SymbolFileDWARF(Dwo)Dwp classes, and
replaces them with dwp support implemented directly inside
SymbolFileDWARFDwo, in a manner mirroring the implementation in llvm.
This patch does:
- add support for the .debug_cu_index section to our DWARFContext
- adds a llvm::DWARFUnitIndex argument to the DWARFUnit constructors.
  This argument is used to look up the offsets of the debug_info and
  debug_abbrev contributions in the sections of the dwp file.
- makes sure the creation of the DebugInfo object as well as the initial
  discovery of DWARFUnits is thread-safe, as we can now call this
  concurrently when doing parallel indexing.

This patch does not:
- use the DWARFUnitIndex to search for other kinds of contributions
  (debug_loc, debug_ranges, etc.). This means that units which reference
  these sections will not work correctly. These will be handled by
  follow-up patches, but even the present level of support is sufficient
  to enable basic functionality.
- Make the llvm::DWARFContext thread-safe. Right now, it just avoids this
  problem by ensuring everything is initialized ahead of time. However,
  this is something we will run into more often as we try to use more of
  llvm, and so I plan to start looking into our options here.

Reviewers: JDevlieghere, aprantl, clayborg

Subscribers: mgorny, mgrang, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D73783

4 years agoRevert "[CMake] Explicitly specify paths to libc++abi in CrossWinToARMLinux.cmake"
Sergej Jaskiewicz [Mon, 17 Feb 2020 13:06:30 +0000 (16:06 +0300)]
Revert "[CMake] Explicitly specify paths to libc++abi in CrossWinToARMLinux.cmake"

This reverts commit 801627ee490e1106380184256503dbd520c5f802.

4 years ago[lldb] Delete register info definitions in the x86_64 ABI classes
Pavel Labath [Mon, 3 Feb 2020 16:58:37 +0000 (17:58 +0100)]
[lldb] Delete register info definitions in the x86_64 ABI classes

Summary:
These definitions are used to "augment" information received from the remote
target with eh/debug frame and "generic" register numbers.

Besides being verbose, this information was also incomplete (new registers like
xmm16-31 were missing) and sometimes even downright wrong (ymm register
numbers).

Most of this information is available via llvm's MCRegisterInfo. This patch
creates a new class, MCBasedABI, which retrieves the eh and debug frame register
numbers this way. The tricky part here is that the llvm class uses all-caps
register names, whereas lldb register are lowercase, and sometimes called
slightly differently. Therefore this class introduces some hooks to allow a
subclass to customize the MC lookup. The subclass also needs to suply the
"generic" register numbers, as this is an lldb invention.

This patch ports the x86_64 ABI classes to use the new register info mechanism.
It also creates a new "ABIx86_64" class which can be used to house code common
to x86_64 both ABIs. Right now, this just consists of a single function, but
there are plenty of other things that could be moved here too.

Reviewers: JDevlieghere, jasonmolenda

Subscribers: mgorny, lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D74244

4 years ago[CMake] Explicitly specify paths to libc++abi in CrossWinToARMLinux.cmake
Sergej Jaskiewicz [Mon, 17 Feb 2020 12:22:18 +0000 (15:22 +0300)]
[CMake] Explicitly specify paths to libc++abi in CrossWinToARMLinux.cmake

Summary:
D69169, which was necessary for running libc++ tests on remote host, got reverted. I couldn't think of a less invasive way to achieve this behavior but specify libc++abi paths in our cache file.

Reviewers: vvereschaka, aorlov, andreil99, EricWF

Reviewed By: vvereschaka

Subscribers: mgorny, kristof.beyls, ldionne, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D74347

4 years ago[LLDB] Fix GCC warnings about extra semicolons. NFC.
Martin Storsjö [Mon, 17 Feb 2020 12:15:53 +0000 (14:15 +0200)]
[LLDB] Fix GCC warnings about extra semicolons. NFC.

4 years ago[lldb] Add @skipIfXmlSupportMissing to TestWasm.py
Pavel Labath [Mon, 17 Feb 2020 12:09:47 +0000 (13:09 +0100)]
[lldb] Add @skipIfXmlSupportMissing to TestWasm.py

These tests rely on being able to parse qXfer:libraries:read packet
(which is in xml).

4 years ago[ARM] MVE vector reduce MLA tests. NFC.
David Green [Mon, 17 Feb 2020 11:41:16 +0000 (11:41 +0000)]
[ARM] MVE vector reduce MLA tests. NFC.

4 years ago[LLDB] Add DynamicLoaderWasmDYLD plugin for WebAssembly debugging
Paolo Severini [Mon, 17 Feb 2020 11:42:23 +0000 (12:42 +0100)]
[LLDB] Add DynamicLoaderWasmDYLD plugin for WebAssembly debugging

Add a dynamic loader plug-in class for WebAssembly modules.

Differential Revision: https://reviews.llvm.org/D72751

4 years ago[lldb/lldb-server] Add target.xml support for qXfer request.
Levon Ter-Grigoryan [Mon, 17 Feb 2020 10:55:55 +0000 (11:55 +0100)]
[lldb/lldb-server] Add target.xml support for qXfer request.

Summary:
Synthesize target.xml in lldb-server to avoid a long chain of
qRegisterInfo packets, which can be slow over low-latency links.

Reviewers: jarin, labath

Reviewed By: labath

Subscribers: lldb-commits

Tags: #lldb

Differential Revision: https://reviews.llvm.org/D74217

4 years ago[AArch64][SVE] Add SVE index intrinsic
Kerry McLaughlin [Mon, 17 Feb 2020 10:11:42 +0000 (10:11 +0000)]
[AArch64][SVE] Add SVE index intrinsic

Summary:
Implements the @llvm.aarch64.sve.index intrinsic, which
takes a scalar base and step value.

This patch also adds the printSImm function to AArch64InstPrinter
to ensure that immediates of type i8 & i16 are printed correctly.

Reviewers: sdesmalen, andwar, efriedma, dancgr, cameron.mcinally, rengolin

Reviewed By: cameron.mcinally

Subscribers: tatyana-krasnukha, tschuett, kristof.beyls, hiraditya, rkruppe, arphaman, psnobl, cfe-commits, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74550

4 years ago[AArch64] Fix small typos in the target description. NFC.
Sjoerd Meijer [Mon, 17 Feb 2020 10:13:47 +0000 (10:13 +0000)]
[AArch64] Fix small typos in the target description. NFC.

Patch by Tamas Petz.

Differential Revision: https://reviews.llvm.org/D74603

4 years ago[TableGen] Don't elide bitconverts in PatFrag fragments.
Simon Tatham [Mon, 17 Feb 2020 09:11:35 +0000 (09:11 +0000)]
[TableGen] Don't elide bitconverts in PatFrag fragments.

Summary:
In the DAG pattern backend, `SimplifyTree` simplifies a pattern by
removing bitconverts between two identical types. But that function is
also run on the fragments list in instances of `PatFrags`, in which
the types haven't been specified yet. So the input and output of the
bitconvert always evaluate to the empty set of types, which makes them
compare equal. So the test always passes, and bitconverts are
unconditionally removed from the PatFrag RHS.

Fixed by spotting the empty type set and using it to inhibit the
optimization.

Reviewers: nhaehnle, hfinkel

Reviewed By: nhaehnle

Subscribers: llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74627

4 years ago[lldb] [nfc] Simplify user_id_t -> size_t
Jan Kratochvil [Mon, 17 Feb 2020 09:24:19 +0000 (10:24 +0100)]
[lldb] [nfc] Simplify user_id_t -> size_t

As discussed in https://reviews.llvm.org/D73206#1871895> simplifying
usage of `user_id_t`.

There is even written:
  // The compile unit ID is the index of the DWARF unit.
  DWARFUnit *dwarf_cu = info->GetUnitAtIndex(comp_unit->GetID());

Differential Revision: https://reviews.llvm.org/D74670

4 years ago[NFCI][DebugInfo]: Corrected a Typo.
Sourabh Singh Tomar [Mon, 17 Feb 2020 09:18:25 +0000 (14:48 +0530)]
[NFCI][DebugInfo]: Corrected a Typo.

4 years ago[X86] New test to check rev16 patterns, prep step for D74032. NFC.
Sjoerd Meijer [Mon, 17 Feb 2020 09:13:21 +0000 (09:13 +0000)]
[X86] New test to check rev16 patterns, prep step for D74032. NFC.

4 years agoclang analyzer: Fix the webpage rendering
Sylvestre Ledru [Mon, 17 Feb 2020 09:02:11 +0000 (10:02 +0100)]
clang analyzer: Fix the webpage rendering

4 years ago[lldb] Fix some tests failing with gmodules after change to stdlib.h
Raphael Isemann [Mon, 17 Feb 2020 08:39:06 +0000 (09:39 +0100)]
[lldb] Fix some tests failing with gmodules after change to stdlib.h

Commit 82b47b2978405f802a33b00d046e6f18ef6a47be changes the way the stdlib.h
header is structured which seems to cause strange lookup failures in the modules
build. This updates a few failing tests so that they pass with the new
behavior of stdlib.h.

See the discussion in https://reviews.llvm.org/rG82b47b2978405f802a33b00d046e6f18ef6a47be

4 years ago[NFC][PowerPC] Update the test case scalar-equal.ll
Kang Zhang [Mon, 17 Feb 2020 08:34:56 +0000 (08:34 +0000)]
[NFC][PowerPC] Update the test case scalar-equal.ll

    Modify the command option to add --enable-no-nans-fp-math

4 years ago[MC] Delete two unused MCCodePadder functions missed by D71106
Fangrui Song [Mon, 17 Feb 2020 06:34:42 +0000 (22:34 -0800)]
[MC] Delete two unused MCCodePadder functions missed by D71106

4 years ago[PowerPC] Add the missing InstrAliasing for 64-bit rotate instructions
QingShan Zhang [Mon, 17 Feb 2020 05:42:49 +0000 (05:42 +0000)]
[PowerPC] Add the missing InstrAliasing for 64-bit rotate instructions

We have the InstAlias rules for 32-bit rotate but missing the 64-bit one.
Rotate left immediate rotlwi ra,rs,n rlwinm ra,rs,n,0,31
Rotate left rotlw ra,rs,rb rlwnm ra,rs,rb,0,31

Differential Revision: https://reviews.llvm.org/D72676

4 years ago[NFC][PowerPC] Add a new test case scalar-equal.ll
Kang Zhang [Mon, 17 Feb 2020 05:27:36 +0000 (05:27 +0000)]
[NFC][PowerPC] Add a new test case scalar-equal.ll

4 years agoFix `-Wpedantic` warning. NFC.
Michael Liao [Mon, 17 Feb 2020 05:18:01 +0000 (00:18 -0500)]
Fix `-Wpedantic` warning. NFC.

4 years ago[mlir] Address post commit feedback of D73590 for SymbolsAndSymbolTables.md
River Riddle [Mon, 17 Feb 2020 05:06:56 +0000 (21:06 -0800)]
[mlir] Address post commit feedback of D73590 for SymbolsAndSymbolTables.md

4 years ago[X86] Disable load folding for X86ISD::ADD with 128 as an immediate.
Craig Topper [Mon, 17 Feb 2020 04:52:18 +0000 (20:52 -0800)]
[X86] Disable load folding for X86ISD::ADD with 128 as an immediate.

It can be turned into a sub with -128 instead as long as the
carry flag isn't used.

4 years ago[CUDA][HIP][OpenMP] Add lib/Sema/UsedDeclVisitor.h after D70172
Fangrui Song [Mon, 17 Feb 2020 04:33:07 +0000 (20:33 -0800)]
[CUDA][HIP][OpenMP] Add lib/Sema/UsedDeclVisitor.h after D70172

4 years ago[X86] Remove unnecessary check for null SDValue. NFC
Craig Topper [Mon, 17 Feb 2020 04:24:20 +0000 (20:24 -0800)]
[X86] Remove unnecessary check for null SDValue. NFC

4 years agoAMDGPU/GlobalISel: Fix non-power-of-2 G_SITOFP/G_UITOFP
Matt Arsenault [Sun, 16 Feb 2020 03:09:23 +0000 (22:09 -0500)]
AMDGPU/GlobalISel: Fix non-power-of-2 G_SITOFP/G_UITOFP

This wouldn't work for s33-s63 sources.

4 years agoAMDGPU/GlobalISel: Add some missing tests for non-power-of-2 cases
Matt Arsenault [Sun, 16 Feb 2020 03:13:29 +0000 (22:13 -0500)]
AMDGPU/GlobalISel: Add some missing tests for non-power-of-2 cases

4 years agoAMDGPU/GlobalISel: Move lambdas to normal function
Matt Arsenault [Sun, 16 Feb 2020 03:24:17 +0000 (22:24 -0500)]
AMDGPU/GlobalISel: Move lambdas to normal function

These aren't using any local state

4 years ago[CUDA][HIP][OpenMP] Emit deferred diagnostics by a post-parsing AST travese
Yaxun (Sam) Liu [Mon, 17 Feb 2020 02:38:03 +0000 (21:38 -0500)]
[CUDA][HIP][OpenMP] Emit deferred diagnostics by a post-parsing AST travese

This patch removes the explicit call graph for CUDA/HIP/OpenMP deferred
diagnostics generated during parsing since it is error prone due to
incomplete information about function declarations during parsing. In stead,
this patch does a post-parsing AST traverse and emits deferred diagnostics
based on the use graph implicitly generated during the traverse.

Differential Revision: https://reviews.llvm.org/D70172

4 years ago[gn build] use -Xclang form for fdebug-comp-dir for now
Nico Weber [Mon, 17 Feb 2020 02:29:37 +0000 (21:29 -0500)]
[gn build] use -Xclang form for fdebug-comp-dir for now

The driver version of the flag seems to confuse goma.

4 years ago[Powerpc] set instruction count as lsr first priority of lsr.
Zheng Chen [Fri, 14 Feb 2020 06:42:43 +0000 (01:42 -0500)]
[Powerpc] set instruction count as lsr first priority of lsr.

On Powerpc, set instruction count as lsr first priority of lsr by default.
Add an option ppc-lsr-no-insns-cost to return back to default lsr cost model.

Reviewed By: steven.zhang, jsji

Differential Revision: https://reviews.llvm.org/D72683

4 years ago[OpenCL][CUDA][HIP][SYCL] Add norecurse
Yaxun (Sam) Liu [Wed, 29 Jan 2020 19:11:37 +0000 (14:11 -0500)]
[OpenCL][CUDA][HIP][SYCL] Add norecurse

norecurse function attr indicates the function is not called recursively
directly or indirectly.

Add norecurse to OpenCL functions, SYCL functions in device compilation
and CUDA/HIP kernels.

Although there is LLVM pass adding norecurse to functions, it only works
for whole-program compilation. Also FE adding norecurse can make that
pass run faster since functions with norecurse do not need to be checked
again.

Differential Revision: https://reviews.llvm.org/D73651

4 years ago[X86] Increase latency of port5 masked compares and kshift/kadd/kunpck instructions...
Craig Topper [Sun, 16 Feb 2020 23:59:50 +0000 (15:59 -0800)]
[X86] Increase latency of port5 masked compares and kshift/kadd/kunpck instructions in SKX scheduler model

Uops.info shows these as 4 cycle latency.

4 years ago[X86] Add more avx512 instrutions to llvm-mca resource tests
Craig Topper [Sun, 16 Feb 2020 19:40:30 +0000 (11:40 -0800)]
[X86] Add more avx512 instrutions to llvm-mca resource tests

4 years ago[objc_direct] Small updates to help with adoption.
Pierre Habouzit [Fri, 31 Jan 2020 00:48:11 +0000 (16:48 -0800)]
[objc_direct] Small updates to help with adoption.

Add fixits for messaging self in MRR or using super, as the intent is
clear, and it turns out people do that a lot more than expected.

Allow for objc_direct_members on main interfaces, it's extremely useful
for internal only classes, and proves to be quite annoying for adoption.

Add some better warnings around properties direct/non-direct clashes (it
was done for methods but properties were a miss).

Add some errors when direct properties are marked @dynamic.

Radar-Id: rdar://problem/58355212
Signed-off-by: Pierre Habouzit <phabouzit@apple.com>
Differential Revision: https://reviews.llvm.org/D73755

4 years ago[IR] Change maybeSetDSOLocal to isImplicitDSOLocal
Fangrui Song [Sun, 16 Feb 2020 20:59:10 +0000 (12:59 -0800)]
[IR] Change maybeSetDSOLocal to isImplicitDSOLocal

This allows some simplification.

4 years ago[SCCP] Re-generate check lines using --function-signature. (NFC)
Florian Hahn [Sun, 16 Feb 2020 19:33:21 +0000 (20:33 +0100)]
[SCCP] Re-generate check lines using --function-signature. (NFC)

4 years ago[X86] Separate floating point handling out of EmitCmp and emitFlagsForSetcc.
Craig Topper [Sun, 16 Feb 2020 07:15:52 +0000 (23:15 -0800)]
[X86] Separate floating point handling out of EmitCmp and emitFlagsForSetcc.

Both of those functions only have a single caller starting
at LowerSETCC. Just handle floating point directly in LowerSETCC.

This removes the need to pass Chain and IsSignaling all the way
down.

4 years ago[X86] Split X86ISD::CMP into an integer and FP opcode.
Craig Topper [Sat, 15 Feb 2020 23:20:03 +0000 (15:20 -0800)]
[X86] Split X86ISD::CMP into an integer and FP opcode.

4 years ago[Sema] Fix pointer-to-int-cast for MSVC build bot
Mark de Wever [Sun, 16 Feb 2020 17:34:26 +0000 (18:34 +0100)]
[Sema] Fix pointer-to-int-cast for MSVC build bot

Revision 9658d895c81a breaks the clang-x64-windows-msvc build bot [1].
This should fix the unit test using the same method as used in 9658d895c81a.

Note I don't have access to a Windows system so the patch is based on the
errors generated by the bot.

[1] http://lab.llvm.org:8011/builders/clang-x64-windows-msvc/builds/14358

Differential Revision: https://reviews.llvm.org/D74694

4 years agoUpdate last-mod date for libcxx status page
marshall [Sun, 16 Feb 2020 17:55:50 +0000 (18:55 +0100)]
Update last-mod date for libcxx status page

4 years agoUpdated with list of papers and issues adopted in Prague
marshall [Sun, 16 Feb 2020 17:54:06 +0000 (18:54 +0100)]
Updated with list of papers and issues adopted in Prague

4 years ago[gn build] Port ee2c0f76d74
LLVM GN Syncbot [Sun, 16 Feb 2020 17:32:06 +0000 (17:32 +0000)]
[gn build] Port ee2c0f76d74

4 years ago[ms] [llvm-ml] Add a draft MASM parser
Eric Astor [Sun, 16 Feb 2020 17:29:51 +0000 (12:29 -0500)]
[ms] [llvm-ml] Add a draft MASM parser

Summary:
Many directives are unavailable, and support for others may be limited.

This first draft has preliminary support for:
    - conditional directives (including errors),
    - data allocation (unsigned types up to 8 bytes, and ALIGN),
    - equates/variables (numeric and text),
    - and procedure directives (without parameters),
as well as COMMENT, ECHO, INCLUDE, INCLUDELIB, PUBLIC, and EXTERN. Text variables (aka text macros) are expanded in-place wherever the identifier occurs.

We deliberately ignore all ml.exe processor directives.

Prominent features not yet supported:
    - structs
    - macros (both procedures and functions)
    - procedures (with specified parameters)
    - substitution & expansion operators

Conditional directives are complicated by the fact that "ifdef rax" is a valid way to check if a file is being assembled for a 64-bit x86 processor; we add support for "ifdef <register>" in general, which requires adding a tryParseRegister method to all MCTargetAsmParsers. (Some targets require backtracking in the non-register case.)

Reviewers: rnk, thakis

Reviewed By: thakis

Subscribers: kerbowa, merge_guards_bot, wuzish, arsenm, dschuff, jyknight, dylanmckay, sdardis, nemanjai, jvesely, mgorny, sbc100, jgravelle-google, hiraditya, aheejin, kbarton, fedor.sergeev, asb, rbar, johnrusso, simoncook, sabuasal, niosHD, jrtc27, MaskRay, zzheng, edward-jones, atanasyan, rogfer01, MartinMosbeck, brucehoult, the_o, PkmX, jocewei, jsji, Jim, s.egerton, pzheng, sameer.abuasal, apazos, luismarques, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D72680

4 years ago[IRBuilder] Prefer InsertPointGuard over full copy; NFC
Nikita Popov [Sun, 16 Feb 2020 17:02:29 +0000 (18:02 +0100)]
[IRBuilder] Prefer InsertPointGuard over full copy; NFC

Don't copy the IRBuilder when an InsertPointGuard would also do.

4 years ago[IRBuilder] Fix unnecessary IRBuilder copies; NFC
Nikita Popov [Sun, 16 Feb 2020 16:57:18 +0000 (17:57 +0100)]
[IRBuilder] Fix unnecessary IRBuilder copies; NFC

Fix a few cases where an IRBuilder is passed to a helper function
by value, while a by reference pass was intended.

4 years ago[X86] combineX86ShuffleChain - add support for combining 512-bit shuffles to PALIGNR
Simon Pilgrim [Sun, 16 Feb 2020 13:54:17 +0000 (13:54 +0000)]
[X86] combineX86ShuffleChain - add support for combining 512-bit shuffles to PALIGNR

4 years ago[X86] combineX86ShuffleChain - add support for combining 512-bit shuffles to bit...
Simon Pilgrim [Sun, 16 Feb 2020 13:09:16 +0000 (13:09 +0000)]
[X86] combineX86ShuffleChain - add support for combining 512-bit shuffles to bit shifts

4 years agoRevert "[IRBuilder] Virtualize IRBuilder"
Nikita Popov [Sun, 16 Feb 2020 15:59:15 +0000 (16:59 +0100)]
Revert "[IRBuilder] Virtualize IRBuilder"

This reverts commit 0765d3824d069f37596bc5a890399099b776c2a0.
This reverts commit 1b04866a3db9f816a559860f941da067fe1eccf1.

Relevant looking crashes observed on:
http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win

4 years ago[VectorCombine] fix cost calc for extract-cmp
Sanjay Patel [Sun, 16 Feb 2020 15:40:28 +0000 (10:40 -0500)]
[VectorCombine] fix cost calc for extract-cmp

getOperationCost() is not the cost we wanted; that's not the
throughput value that the rest of the calculation uses.

We may want to switch everything in this code to use the
getInstructionThroughput() wrapper to avoid these kinds of
problems, but I'll look at that as a follow-up because that
can create other logical diffs via using optional parameters
(we'd need to speculatively create the vector instruction to
make a fair(er) comparison).

4 years ago[x86] form broadcast of scalar memop even with >1 use
Sanjay Patel [Sun, 16 Feb 2020 15:32:56 +0000 (10:32 -0500)]
[x86] form broadcast of scalar memop even with >1 use

The unseen logic diff occurs because MayFoldLoad() is defined like this:

static bool MayFoldLoad(SDValue Op) {
  return Op.hasOneUse() && ISD::isNormalLoad(Op.getNode());
}

The test diffs here all seem ok to me on screen/paper, but it's hard to know
if that will lead to universally better perf for all targets. For example,
if a target implements broadcast from mem as multiple uops, we would have to
weigh the potential reduction of instructions and register pressure vs.
possible increase in number of uops. I don't know if we can make a truly
informed decision on this at compile-time.

The motivating case that I'm looking at in PR42024:
https://bugs.llvm.org/show_bug.cgi?id=42024
...resembles the diff in extract-concat.ll, but we're not going to change the
larger example there without at least 1 other fix.

Differential Revision: https://reviews.llvm.org/D74088

4 years ago[InstCombine] Create new log2 intrinsic; NFCI
Nikita Popov [Sun, 16 Feb 2020 09:15:53 +0000 (10:15 +0100)]
[InstCombine] Create new log2 intrinsic; NFCI

Rather than mixing creation of new instructions and in-place
modification here, create a new log2 intrinsic. This should be
NFC apart from worklist order changes.

4 years ago[InstCombine] Add multiuse tests for cttz transform; NFC
Nikita Popov [Sun, 16 Feb 2020 09:51:11 +0000 (10:51 +0100)]
[InstCombine] Add multiuse tests for cttz transform; NFC

These show incorrect duplication of instructions.

4 years ago[Sema] Adds the pointer-to-int-cast diagnostic
Mark de Wever [Sun, 16 Feb 2020 14:01:25 +0000 (15:01 +0100)]
[Sema] Adds the pointer-to-int-cast diagnostic

Converting a pointer to an integer whose result cannot represented in the
integer type is undefined behavior is C and prohibited in C++. C++ already
has a diagnostic when casting. This adds a diagnostic for C.

Since this diagnostic uses the range of the conversion it also modifies
int-to-pointer-cast diagnostic to use a range.

Fixes PR8718: No warning on casting between pointer and non-pointer-sized int

Differential Revision: https://reviews.llvm.org/D72231

4 years ago[IRBuilder] Try to fix warnings
Nikita Popov [Sun, 16 Feb 2020 14:21:21 +0000 (15:21 +0100)]
[IRBuilder] Try to fix warnings

Try to fix -Wnon-virtual-dtor warnings that cause build failure
on clang-pcc64le-rhel.

4 years ago[IRBuilder] Virtualize IRBuilder
Nikita Popov [Sat, 1 Feb 2020 17:23:36 +0000 (18:23 +0100)]
[IRBuilder] Virtualize IRBuilder

Related llvm-dev thread:
http://lists.llvm.org/pipermail/llvm-dev/2020-February/138951.html

This patch moves the IRBuilder from templating over the constant
folder and inserter towards making both of these virtual.
There are a couple of motivations for this:

1. It's not possible to share code between use-sites that use
different IRBuilder folders/inserters (short of templating the code
and moving it into headers).
2. Methods currently defined on IRBuilderBase (which is not templated)
do not use the custom inserter, resulting in subtle bugs (e.g.
incorrect InstCombine worklist management). It would be possible to
move those into the templated IRBuilder, but...
3. The vast majority of the IRBuilder implementation has to live
in the header, because it depends on the template arguments.
4. We have many unnecessary dependencies on IRBuilder.h,
because it is not easy to forward-declare. (Significant parts of
the backend depend on it via TargetLowering.h, for example.)

This patch addresses the issue by making the following changes:

* IRBuilderDefaultInserter::InsertHelper becomes virtual.
  IRBuilderBase accepts a reference to it.
* IRBuilderFolder is introduced as a virtual base class. It is
 implemented by ConstantFolder (default), NoFolder and TargetFolder.
  IRBuilderBase has a reference to this as well.
* All the logic is moved from IRBuilder to IRBuilderBase. This means
  that methods can in the future replace their IRBuilder<> & uses
  (or other specific IRBuilder types) with IRBuilderBase & and thus
  be usable with different IRBuilders.
* The IRBuilder class is now a thin wrapper around IRBuilderBase.
  Essentially it only stores the folder and inserter and takes care
  of constructing the base builder.

What this patch doesn't do, but should be simple followups after this change:

* Fixing use of the inserter for creation methods originally defined
  on IRBuilderBase.
* Replacing IRBuilder<> uses in arguments with IRBuilderBase, where useful.
* Moving code from the IRBuilder header to the source file.

From the user perspective, these changes should be mostly transparent:
The only thing that consumers using a custom inserted may need to do is
inherit from IRBuilderDefaultInserter publicly and mark their InsertHelper
as public.

Differential Revision: https://reviews.llvm.org/D73835

4 years ago[llvm-readobj] - Refactor the code that dumps relocations.
Georgii Rymar [Thu, 13 Feb 2020 12:12:31 +0000 (15:12 +0300)]
[llvm-readobj] - Refactor the code that dumps relocations.

The current code has following issues:
1) It has a duplicated logic part.
2) This logic relies on unwrapOrError calls, but if we want to convert
   them to warnings, we will need to change all of them what is hard to do
   because of the duplication.

In this patch I've created a new method that returns Expected<> what allows
now to catch all errors in a single place and remove the code duplication.

Note: this change is itself a refactor NFC. It does not change the current logic
anyhow. It prepares the code for the follow-up(s).

Differential revision: https://reviews.llvm.org/D74545

4 years ago[mlir] Allow adding extra class declarations to interfaces.
riverriddle@google.com [Sun, 16 Feb 2020 07:54:28 +0000 (23:54 -0800)]
[mlir] Allow adding extra class declarations to interfaces.

Summary: This matches the similar feature on operation definitions.

Reviewers: jpienaar, antiagainst

Reviewed By: jpienaar, antiagainst

Subscribers: mehdi_amini, burmako, shauheen, antiagainst, nicolasvasilache, arpith-jacob, mgester, lucyrfox, liufengdb, Joonsoo, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74438

4 years ago[mlir][Parser][NFC] Remove several usages of getEncodedSourceLocation
River Riddle [Sun, 16 Feb 2020 07:48:59 +0000 (23:48 -0800)]
[mlir][Parser][NFC] Remove several usages of getEncodedSourceLocation

Summary: getEncodedSourceLocation can be very costly to compute, especially if the input line becomes very long. This revision inlines some of the verification of a few `getChecked` methods to avoid the materialization of an encoded source location.

Differential Revision: https://reviews.llvm.org/D74587

4 years ago[FIX] Do not copy an llvm::function_ref if it has to be reused
Johannes Doerfert [Sun, 16 Feb 2020 06:51:11 +0000 (00:51 -0600)]
[FIX] Do not copy an llvm::function_ref if it has to be reused

Some buildbots signaled a problem in this method when the
llvm::function_ref was copied and reused after 1228d42ddab8. To
eliminate the problem we avoid copying the llvm::function_ref and
instead we pass it as a const reference.

4 years ago[Attributor][FIX] Use pointer not reference as it can be null
Johannes Doerfert [Sun, 16 Feb 2020 02:38:49 +0000 (20:38 -0600)]
[Attributor][FIX] Use pointer not reference as it can be null

4 years agoRestore functionality of --sysroot on FreeBSD after b18cb9c47
Dimitry Andric [Sun, 16 Feb 2020 00:47:12 +0000 (01:47 +0100)]
Restore functionality of --sysroot on FreeBSD after b18cb9c47

After b18cb9c47, clang would sometimes prefer the host C++ includes
(e.g. in /usr/include/c++/v1) before those specified via --sysroot.
While this behavior may be desirable on Linux, it is not so on FreeBSD,
where we make extensive use of --sysroot during the build of the base
system.  In that case, clang must *not* search outside the sysroot,
except for its own internal headers.

Add an override addLibCxxIncludePaths() to restore the old behavior,
which is to simply append /usr/include/c++/v1 to the specified sysroot.
While here, apply clang-format to the FreeBSD specific toolchain files.

Fixes PR44923.

4 years ago[NFC] Move ValidTextRanges out of DwarfTransformer and into GsymCreator and unify...
Greg Clayton [Sun, 16 Feb 2020 00:46:50 +0000 (16:46 -0800)]
[NFC] Move ValidTextRanges out of DwarfTransformer and into GsymCreator and unify address is not in GSYM errors so all strings match.

4 years ago[FIX] Remove pointer in attribute to eliminate leaks (see D71830)
Johannes Doerfert [Sun, 16 Feb 2020 00:07:42 +0000 (18:07 -0600)]
[FIX] Remove pointer in attribute to eliminate leaks (see D71830)

4 years ago[libc++] Move abs and div into stdlib.h to fix header cycle.
Eric Fiselier [Sat, 15 Feb 2020 23:55:07 +0000 (18:55 -0500)]
[libc++] Move abs and div into stdlib.h to fix header cycle.

libc++ is careful to not fracture overload sets. When one overload
is visible to a user, all of them should be. Anything less causes
subtle bugs and ODR violations.

Previously, in order to support ::abs and ::div being supplied by
both <cmath> and <cstdlib> we had to do awful things that make
<math.h> and <stdlib.h> have header cycles and be non-modular.
This really breaks with modules.

Specifically the problem was that in C++ ::abs introduces overloads
for floating point numbers, these overloads forward to ::fabs,
which are defined in math.h. Therefore ::abs needed to be in math.h
too. But this required stdlib.h to include math.h and math.h to
include stdlib.h.

To avoid these problems the definitions have been moved to stddef.h
(which math includes), and the floating point overloads of ::abs
have been changed to call __builtin_fabs, which both Clang and GCC
support.

4 years ago[libc++] Add utility to generate and display libc++'s header dependency
Eric Fiselier [Sat, 15 Feb 2020 23:26:29 +0000 (18:26 -0500)]
[libc++] Add utility to generate and display libc++'s header dependency
graph.

4 years ago[X86] Add test cases showing failure to simplify target shuffles to bit shifts
Simon Pilgrim [Sat, 15 Feb 2020 23:34:31 +0000 (23:34 +0000)]
[X86] Add test cases showing failure to simplify target shuffles to bit shifts

4 years agoFix Wdocumentation unknown parameter warnings. NFCI.
Simon Pilgrim [Sat, 15 Feb 2020 23:33:17 +0000 (23:33 +0000)]
Fix Wdocumentation unknown parameter warnings. NFCI.

4 years ago[X86][AVX512] Split AVX512F and AVX512BW shuffle combining tests
Simon Pilgrim [Sat, 15 Feb 2020 22:48:10 +0000 (22:48 +0000)]
[X86][AVX512] Split AVX512F and AVX512BW shuffle combining tests

Split off shuffle combine tests that use AVX512F intrinsics, so we can test it with/without AVX512BW support.

4 years ago[X86][AsmPrinter] PrintSymbolOperand: prefer to lower ELF MO_GlobalAddress to .Lfoo...
Fangrui Song [Sat, 15 Feb 2020 19:40:10 +0000 (11:40 -0800)]
[X86][AsmPrinter] PrintSymbolOperand: prefer to lower ELF MO_GlobalAddress to .Lfoo$local

4 years ago[ValueLattice] Update markConstantRange to return false equal ranges.
Florian Hahn [Sat, 15 Feb 2020 20:24:19 +0000 (21:24 +0100)]
[ValueLattice] Update markConstantRange to return false equal ranges.

Currently we always return true, when markConstantRange is used on an
object already containing a constant range. If NewR is equal to the
existing constant range however, nothing changes and we should return
false.

I also went ahead and added a clarifying comment and improved the
assertion.

Reviewers: efriedma, davide, nikic

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D73240

4 years ago[X86] Merge two switches together to simplify some code. NFC
Craig Topper [Sat, 15 Feb 2020 20:55:51 +0000 (12:55 -0800)]
[X86] Merge two switches together to simplify some code. NFC

4 years ago[X86] Fix typo in comment. NFC
Craig Topper [Sat, 15 Feb 2020 18:48:57 +0000 (10:48 -0800)]
[X86] Fix typo in comment. NFC

4 years ago[X86] combineX86ShuffleChain - add support for combining to X86ISD::ROTLI
Simon Pilgrim [Sat, 15 Feb 2020 20:04:15 +0000 (20:04 +0000)]
[X86] combineX86ShuffleChain - add support for combining to X86ISD::ROTLI

Refactors matchShuffleAsBitRotate to allow use by both lowerShuffleAsBitRotate and matchUnaryPermuteShuffle.

4 years ago[ValueLattice] Make mark* functions public, return if value changed.
Florian Hahn [Sat, 15 Feb 2020 18:22:02 +0000 (19:22 +0100)]
[ValueLattice] Make mark* functions public, return if value changed.

This patch prepares ValueLatticeElement to be used by SCCP, by:
* making the mark* functions public
* make the mark* functions return a bool indicating if the value has changed.

Reviewers: efriedma, davide, mssimpso, nikic

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D60581

4 years ago[X86] Add test showing failure to combine shuffle to bit rotation
Simon Pilgrim [Sat, 15 Feb 2020 19:23:00 +0000 (19:23 +0000)]
[X86] Add test showing failure to combine shuffle to bit rotation

4 years ago[X86] Move combineIncDecVector logic from Select to PreprocessISelDAG.
Craig Topper [Sat, 15 Feb 2020 17:59:10 +0000 (09:59 -0800)]
[X86] Move combineIncDecVector logic from Select to PreprocessISelDAG.

This allows it to work properly with masked inc/dec for avx512. Those
would have a vselect as the root node so didn't get a chance to call
combineIncDecVector.

This also simplifies the logic because we don't have to manage
the topological ordering.

4 years agoRecommit "[SCCP] Remove forcedconstant, go to overdefined instead"
Florian Hahn [Thu, 13 Feb 2020 23:05:50 +0000 (00:05 +0100)]
Recommit "[SCCP] Remove forcedconstant, go to overdefined instead"

This includes a fix for cases where things get marked as overdefined in
ResolvedUndefsIn, but we later discover a constant. To avoid crashing,
we consistently bail out on overdefined values in the visitors. This is
similar to the previous behavior with forcedconstant.

This reverts the revert commit 02b72f564c8be0b4f4337d5c4a3fcf7e8018a818.

4 years ago[MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc
Fangrui Song [Sat, 15 Feb 2020 16:52:56 +0000 (08:52 -0800)]
[MC] De-capitalize MCStreamer::Emit{Bundle,Addrsig}* etc

So far, all non-COFF-related Emit* functions have been de-capitalized.

4 years agoFix gcc9.2 -Winit-list-lifetime warning. NFCI.
Simon Pilgrim [Sat, 15 Feb 2020 16:47:35 +0000 (16:47 +0000)]
Fix gcc9.2 -Winit-list-lifetime warning. NFCI.

Reported by @lbenes (Luke Benes)

4 years ago[obj2yaml] - Fix a -Wsign-compare warning gived by GCC 9.2
Georgii Rymar [Sat, 15 Feb 2020 15:34:06 +0000 (18:34 +0300)]
[obj2yaml] - Fix a -Wsign-compare warning gived by GCC 9.2

I was reported that with commit:
https://github.com/llvm/llvm-project/commit/d3963051c490

gcc-9.2 is giving the warning below.
This should help (I have no gcc 9.2 to test).

[ 57%] Building CXX object tools/obj2yaml/CMakeFiles/obj2yaml.dir/elf2yaml.cpp.o
/llvm/tools/obj2yaml/elf2yaml.cpp: In instantiation of ‘llvm::Expected<llvm::ELFYAML::Object*>
{anonymous}::ELFDumper<ELFT>::dump() [with ELFT = llvm::object::ELFType<llvm::support::little, false>]’:
/llvm/tools/obj2yaml/elf2yaml.cpp:1218:31:   required from ‘llvm::Error elf2yaml(llvm::raw_ostream&,
const llvm::object::ELFFile<ELFT>&) [with ELFT = llvm::object::ELFType<llvm::support::little, false>]’
/llvm/tools/obj2yaml/elf2yaml.cpp:1231:47:   required from here
/llvm/tools/obj2yaml/elf2yaml.cpp:207:41: warning: comparison of integer expressions of different
signedness: ‘llvm::support::detail::packed_endian_specific_integral<unsigned int, llvm::support::little, 1>::value_type’ {aka ‘unsigned int’} and ‘int’ [-Wsign-compare]
  207 |     if (!SymTab || SymTabShndx->sh_link != SymTab - Sections.begin())
/llvm/tools/obj2yaml/elf2yaml.cpp: In instantiation of ‘llvm::Expected<llvm::ELFYAML::Object*>
{anonymous}::ELFDumper<ELFT>::dump() [with ELFT = llvm::object::ELFType<llvm::support::big, false>]’:
...

4 years ago[Support] In tests, fix warning: variable ‘Threads’ set but not used
Alexandre Ganea [Sat, 15 Feb 2020 14:03:38 +0000 (09:03 -0500)]
[Support] In tests, fix warning: variable ‘Threads’ set but not used

4 years agoFix boolean/bitwise operator precedence warnings. NFCI.
Simon Pilgrim [Sat, 15 Feb 2020 13:53:18 +0000 (13:53 +0000)]
Fix boolean/bitwise operator precedence warnings. NFCI.

4 years ago[APInt] byteSwap - handle any whole byte bitwidth greater than 16-bits
Simon Pilgrim [Sat, 15 Feb 2020 13:27:06 +0000 (13:27 +0000)]
[APInt] byteSwap - handle any whole byte bitwidth greater than 16-bits

As noted on D74621, the bswap intrinsic has a self imposed limitation that the type's bitwidth must be divisible by 16, but there's no reason that APInt::byteSwap must have the same limitation, given that it can already handle any byte width.

4 years ago[AArch64][FIX] Correct register live range during pseudo expansion.
Pavel Iliin [Sat, 15 Feb 2020 10:50:59 +0000 (10:50 +0000)]
[AArch64][FIX] Correct register live range during pseudo expansion.

This commit fixes the broken tests after
commit b6a9fe209992789be3ed95664d25196361cfad34
on the expensive check builder:
http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-ubuntu/builds/2884

4 years ago[APInt] byteSwap - simplify sub 64-bits cases to match general implementation. NFCI.
Simon Pilgrim [Sat, 15 Feb 2020 12:16:14 +0000 (12:16 +0000)]
[APInt] byteSwap - simplify sub 64-bits cases to match general implementation. NFCI.

We can just byteSwap the entire uint64_t VAL and then shift down into place like we do for the multi-word case.

4 years ago[APInt] Add some procedural APInt::byteSwap unit tests
Simon Pilgrim [Sat, 15 Feb 2020 11:56:26 +0000 (11:56 +0000)]
[APInt] Add some procedural APInt::byteSwap unit tests

rGf0181cc7bac3 added specific tests up to i64, this adds a general loop to test some basic byte moves for larger APInts.

4 years ago[AArch64] Fixup kill flags on BSL generation
David Green [Sat, 15 Feb 2020 10:41:14 +0000 (10:41 +0000)]
[AArch64] Fixup kill flags on BSL generation

This hopefully fixes up the expensive checks bot.

4 years ago[gn build] unbreak win build by removing flags that only work with a sysroot
Nico Weber [Sat, 15 Feb 2020 11:25:21 +0000 (06:25 -0500)]
[gn build] unbreak win build by removing flags that only work with a sysroot

4 years ago[Debuginfo][NFC] Remove usages of WithColor::error and WithColor::warning.
Alexey Lapshin [Fri, 14 Feb 2020 15:57:21 +0000 (18:57 +0300)]
[Debuginfo][NFC] Remove usages of WithColor::error and WithColor::warning.

Summary:
This patch is extracted from D74308.

It patches all usages of WithColor::error() and WithColor::warning
in DebugInfoDWARF library.

Depends on D74481

Reviewers: jhenderson, dblaikie, probinson, aprantl, JDevlieghere

Reviewed By: JDevlieghere

Subscribers: hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D74635

4 years agoPR44890: Inherit explicitly-specified template arguments into base class
Richard Smith [Sat, 15 Feb 2020 10:15:26 +0000 (02:15 -0800)]
PR44890: Inherit explicitly-specified template arguments into base class
deduction.

4 years ago[cxx_status] New papers from Prague 2020 WG21 meeting.
Richard Smith [Sat, 15 Feb 2020 09:51:43 +0000 (01:51 -0800)]
[cxx_status] New papers from Prague 2020 WG21 meeting.

4 years agoFix standalone build interaction with compiler extension
serge-sans-paille [Fri, 14 Feb 2020 11:11:20 +0000 (12:11 +0100)]
Fix standalone build interaction with compiler extension

As suggested in https://github.com/llvm/llvm-project/issues/120, don't try to
generate the extension file from clang, only do the linking step.

Fixes the regression introduced in D74464 when running cmake inside the clang
directory.

Differential Revision: https://reviews.llvm.org/D74602