platform/upstream/llvm.git
4 years ago[Driver][X86] Add helptext for malign-branch*, mbranches-within-32B-boundaries
Shengchen Kan [Sun, 23 Feb 2020 12:35:32 +0000 (20:35 +0800)]
[Driver][X86] Add helptext for malign-branch*, mbranches-within-32B-boundaries

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

4 years ago[NFC][PowerPC] Refactor the tryAndWithMask()
QingShan Zhang [Mon, 24 Feb 2020 04:02:24 +0000 (04:02 +0000)]
[NFC][PowerPC] Refactor the tryAndWithMask()

Split the tryAndWithMask into several small calls.

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

4 years agoIR printing for single function with the new pass manager.
Hongtao Yu [Sun, 23 Feb 2020 23:13:27 +0000 (15:13 -0800)]
IR printing for single function with the new pass manager.

Summary:
The IR printing always prints out all functions in a module with the new pass manager, even with -filter-print-funcs specified. This is being fixed in this change. However, there are two exceptions, i.e, with user-specified wildcast switch -filter-print-funcs=* or -print-module-scope, under which IR of all functions should be printed.

Test Plan:
make check-clang
make check-llvm

Reviewers: wenlei

Reviewed By: wenlei

Subscribers: wenlei, hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

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

4 years ago[SelectionDAG] Remove SelectionDAG::getTargetMemSDNode now that its not used.
Craig Topper [Sun, 23 Feb 2020 20:50:48 +0000 (12:50 -0800)]
[SelectionDAG] Remove SelectionDAG::getTargetMemSDNode now that its not used.

Targets are expected to use getMemIntrinsicNode and not provide
their own subclasses. X86 was previously the only user.

4 years ago[X86] Remove most X86 specific subclasses of MemSDNode. Just use a MemIntrinsicSDNode...
Craig Topper [Sun, 23 Feb 2020 20:47:42 +0000 (12:47 -0800)]
[X86] Remove most X86 specific subclasses of MemSDNode. Just use a MemIntrinsicSDNode as we usually do.

Leave the gather/scatter subclasses, but make them inherit from
MemIntrinsicSDNode and delete their constructor and destructor.
This way we can still have the getIndex, getMask, etc. convenience
functions.

4 years ago[X86] Enable the use of movlps for i64 atomic load on 32-bit targets with sse1.
Craig Topper [Sun, 23 Feb 2020 18:46:34 +0000 (10:46 -0800)]
[X86] Enable the use of movlps for i64 atomic load on 32-bit targets with sse1.

Still a little room for improvement by using movlps to store to
the stack temporary needed to move data out of the xmm register
after the load.

4 years ago[X86] Use FIST for i64 atomic stores on 32-bit targets without SSE.
Craig Topper [Sun, 23 Feb 2020 18:21:59 +0000 (10:21 -0800)]
[X86] Use FIST for i64 atomic stores on 32-bit targets without SSE.

4 years ago[SystemZ] Support the kernel back chain.
Jonas Paulsson [Wed, 19 Feb 2020 22:54:12 +0000 (14:54 -0800)]
[SystemZ]  Support the kernel back chain.

In order to build the Linux kernel, the back chain must be supported with
packed-stack. The back chain is then stored topmost in the register save
area.

Review: Ulrich Weigand

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

4 years ago[clangd] Try to fix buildbots - copy elision not happening here?
Sam McCall [Sun, 23 Feb 2020 20:11:58 +0000 (21:11 +0100)]
[clangd] Try to fix buildbots - copy elision not happening here?

4 years agoUpdating a comment to clarify that SkipUntil handles balanced delimiters.
Aaron Ballman [Sun, 23 Feb 2020 19:33:37 +0000 (14:33 -0500)]
Updating a comment to clarify that SkipUntil handles balanced delimiters.

4 years ago[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token...
Sam McCall [Sun, 23 Feb 2020 19:03:00 +0000 (20:03 +0100)]
[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token-after-cursor fails.

This reverts commit b4b9706d5da368c81b86867b1c11a2e17b4472ac.
Now avoiding expected<vector<selection>> in favor of expected<vector<unique_ptr<selection>>>

4 years ago[AArch64] Update new test.
Florian Hahn [Sun, 23 Feb 2020 19:13:13 +0000 (19:13 +0000)]
[AArch64] Update new test.

Changed after 7769030b9310c1865fd331edb78dc242a39b109a.

4 years agoRecommit "[PatternMatch] Match XOR variant of unsigned-add overflow check."
Florian Hahn [Sun, 23 Feb 2020 16:32:55 +0000 (16:32 +0000)]
Recommit "[PatternMatch] Match XOR variant of unsigned-add overflow check."

This version fixes a buildbot failure cause by picking the wrong insert
point for XORs. We cannot pick the XOR binary operator as insert point,
as it is not guaranteed that both input operands for the overflow
intrinsic are defined before it.

This reverts the revert commit
c7fc0e5da6c3c36eb5f3a874a6cdeaedb26856e0.

4 years ago[X86] Regenerate some tests to show FMA4 comments. NFC
Craig Topper [Sun, 23 Feb 2020 07:01:19 +0000 (23:01 -0800)]
[X86] Regenerate some tests to show FMA4 comments. NFC

4 years ago[SDAG] fold fsub -0.0, undef to undef rather than NaN
Sanjay Patel [Sun, 23 Feb 2020 16:26:28 +0000 (11:26 -0500)]
[SDAG] fold fsub -0.0, undef to undef rather than NaN

A question about this behavior came up on llvm-dev:
http://lists.llvm.org/pipermail/llvm-dev/2020-February/139003.html
...and as part of backend improvements in D73978.

We decided not to implement a more general change that would have
folded any FP binop with nearly arbitrary constant + undef operand
to undef because that is not theoretically correct (even if it is
practically correct).

This is the SDAG-equivalent to the IR change in D74713.

4 years ago[DSE] Track overlapping stores.
Florian Hahn [Sun, 23 Feb 2020 15:39:15 +0000 (15:39 +0000)]
[DSE] Track overlapping stores.

Add a map from BasicBlocks to overlap intervals. For partial writes, we
can keep track of those in IOLs. We only add candidates that are valid
for eliminations.

Reviewers: dmgreen, bryant, asbirlea, Tyker

Reviewed By: asbirlea

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

4 years agoRevert "[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor...
Sam McCall [Sun, 23 Feb 2020 15:34:49 +0000 (16:34 +0100)]
Revert "[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token-after-cursor fails."

This reverts commit a2ce807eb72a8e154abca09b1e968b2d99ba6933.

Buildbot failures on GCC due to SelectionTree not being copyable, and
instantiating vector<Selection> in the tweak-handling in ClangdServer.

4 years ago[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token...
Sam McCall [Sun, 23 Feb 2020 15:09:36 +0000 (16:09 +0100)]
[clangd] Reapply b60896fad926 Fall back to selecting token-before-cursor if token-after-cursor fails.

This reverts commit 6af1ad20d60ef8ea23f2cfdb02d299b3b3114b06.

4 years ago[clangd] Debounce rebuilds responsively to rebuild times.
Sam McCall [Tue, 4 Feb 2020 11:47:05 +0000 (12:47 +0100)]
[clangd] Debounce rebuilds responsively to rebuild times.

Summary:
Old: 500ms always. New: rebuild time, up to 500ms.

Fixes https://github.com/clangd/clangd/issues/275

Reviewers: hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits

Tags: #clang

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

4 years ago[NFC] fix test nan value
Nuno Lopes [Sun, 23 Feb 2020 12:42:47 +0000 (12:42 +0000)]
[NFC] fix test nan value

4 years ago[NFC] Test commit access. Drop trivial braces.
Denis Khalikov [Sun, 23 Feb 2020 12:05:27 +0000 (15:05 +0300)]
[NFC] Test commit access. Drop trivial braces.

4 years ago[X86] Add sse2 command lines to sse-intrinsics-fast-isel.ll.
Craig Topper [Sun, 23 Feb 2020 06:40:13 +0000 (22:40 -0800)]
[X86] Add sse2 command lines to sse-intrinsics-fast-isel.ll.

The extra available vector types on sse2 causes us to produce
different code.

4 years ago[X86] Add AddToWorklist(N) after calls to SimplifyDemandedBits/SimplifyDemandedVector...
Craig Topper [Sun, 23 Feb 2020 05:42:57 +0000 (21:42 -0800)]
[X86] Add AddToWorklist(N) after calls to SimplifyDemandedBits/SimplifyDemandedVectorElts that are called on an operand of N.

If a simplication occurs the operand will be added to the worklist.
But since the demanded mask was based on N, we need to make sure
we revisit N in case there are more simplifications to be done.
Returning SDValue(N, 0) as we do, only tells DAG combine that
something changed, but that won't make it add anything to the
worklist.

Found while playing around with using VEXTRACT_STORE in more cases.
But I guess this doesn't affect any of our existing tests.

4 years ago[X86] Teach EltsFromConsecutiveLoads that it's ok to form a v4f32 VZEXT_LOAD with...
Craig Topper [Sun, 23 Feb 2020 02:50:41 +0000 (18:50 -0800)]
[X86] Teach EltsFromConsecutiveLoads that it's ok to form a v4f32 VZEXT_LOAD with a 64 bit memory size on SSE1 targets.

We can use MOVLPS which will load 64 bits, but we need a v4f32
result type. We already have isel patterns for this.

The code here is a little hacky. We can probably improve it with
more isel patterns.

4 years ago[X86] Use movlps for i64 atomic stores on 32-targets with sse1.
Craig Topper [Sun, 23 Feb 2020 02:15:27 +0000 (18:15 -0800)]
[X86] Use movlps for i64 atomic stores on 32-targets with sse1.

This is similar to using movd which we do for sse2 targets.

I've added a DAG combine for VEXTRACT_STORE to use SimplifyDemandedVectorElts
to clean up some artifacts from type legalization.

4 years ago[ORC] Update LLJIT to automatically run specially named initializer functions.
Lang Hames [Sat, 22 Feb 2020 17:49:55 +0000 (09:49 -0800)]
[ORC] Update LLJIT to automatically run specially named initializer functions.

The GenericLLVMIRPlatformSupport class runs a transform on all LLVM IR added to
the LLJIT instance to replace instances of llvm.global_ctors with a specially
named function that runs the corresponing static initializers (See
(GlobalCtorDtorScraper from lib/ExecutionEngine/Orc/LLJIT.cpp). This patch
updates the GenericIRPlatform class to check for this specially named function
in other materialization units that are added to the JIT and, if found, add
the function to the initializer work queue. Doing this allows object files
that were compiled from IR and cached to be reloaded in subsequent JIT sessions
without their initializers being skipped.

To enable testing this patch also updates the lli tool's -jit-kind=orc-lazy mode
to respect the -enable-cache-manager and -object-cache-dir options, and modifies
the CompileOnDemandLayer to rename extracted submodules to include a hash of the
names of their symbol definitions. This allows a simple object caching scheme
based on module names (which was already implemented in lli) to work with the
lazy JIT.

4 years ago[ORC] Add errors for missing and extraneous symbol definitions.
Lang Hames [Sat, 22 Feb 2020 01:38:42 +0000 (17:38 -0800)]
[ORC] Add errors for missing and extraneous symbol definitions.

This patch adds new errors and error checking to the ObjectLinkingLayer to
catch cases where a compiled or loaded object either:
(1) Contains definitions not covered by its responsibility set, or
(2) Is missing definitions that are covered by its responsibility set.

Proir to this patch providing the correct set of definitions was treated as
an API contract requirement, however this requires that the client be confident
in the correctness of the whole compiler / object-cache pipeline and results
in difficult-to-debug assertions upon failure. Treating this as a recoverable
error results in clearer diagnostics.

The performance overhead of this check is one comparison of densemap keys
(symbol string pointers) per linking object, which is minimal. If this overhead
ever becomes a problem we can add the check under a flag that can be turned off
if the client fully trusts the rest of the pipeline.

4 years ago[Sema] Fix pointer-to-int-cast diagnostic for _Bool
Mark de Wever [Sat, 22 Feb 2020 09:37:41 +0000 (10:37 +0100)]
[Sema] Fix pointer-to-int-cast diagnostic for _Bool

The diagnostic added in D72231 also shows a diagnostic when casting to a
_Bool. This is unwanted. This patch removes the diagnostic for _Bool types.

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

4 years agoAdd a llvm::shuffle and use it in lld
Rafael Ávila de Espíndola [Sat, 22 Feb 2020 17:51:02 +0000 (09:51 -0800)]
Add a llvm::shuffle and use it in lld

With this --shuffle-sections=seed produces the same result in every
host.

Reviewed By: grimar, MaskRay

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

4 years ago[libcxx] [test] Suppress MSVC++ warning 4640 under /Zc:threadSafeInit-
Billy Robert O'Neal III [Sat, 22 Feb 2020 14:57:37 +0000 (06:57 -0800)]
[libcxx] [test] Suppress MSVC++ warning 4640 under /Zc:threadSafeInit-

4 years ago[NFC] Remove some GCC warning from c9e93c84f61400d1aac7d195a0578e80bc48c69a
Tyker [Sat, 22 Feb 2020 13:11:31 +0000 (14:11 +0100)]
[NFC] Remove some GCC warning from c9e93c84f61400d1aac7d195a0578e80bc48c69a

4 years ago[lldb][test] - Update basic-elf.yaml to fix build bot.
Georgii Rymar [Sat, 22 Feb 2020 13:06:55 +0000 (16:06 +0300)]
[lldb][test] - Update basic-elf.yaml to fix build bot.

D74764 (https://reviews.llvm.org/rG31f2ad9c368d47721508cbd0d120d626f9041715)
changed the behavior of the yaml2obj. Now it assigns virtual addresses
for allocatable sections.

SymbolFile/Breakpad/symtab.test started to fail after this change:
(http://lab.llvm.org:8011/builders/lldb-x86_64-debian/builds/5520/steps/test/logs/stdio)

Command Output (stderr):
--
/home/worker/lldb-x86_64-debian/lldb-x86_64-debian/llvm-project/lldb/test/Shell/SymbolFile/Breakpad/symtab.test:6:10: error: CHECK: expected string not found in input
# CHECK: Symtab, file = {{.*}}symtab.out, num_symbols = 5:
         ^
<stdin>:15:1: note: scanning from here
Symtab, file = /home/worker/lldb-x86_64-debian/lldb-x86_64-debian/build/tools/lldb/test/SymbolFile/Breakpad/Output/symtab.out, num_symbols = 6:
^
<stdin>:15:99: note: possible intended match here
Symtab, file = /home/worker/lldb-x86_64-debian/lldb-x86_64-debian/build/tools/lldb/test/SymbolFile/Breakpad/Output/symtab.out, num_symbols = 6:

For now I've updated the basic-elf.yaml so that now it produce the same layout as before D74764.
Breakpad/symtab.test should be updated it seems.

4 years ago[yaml2obj] - Automatically assign sh_addr for allocatable sections.
Georgii Rymar [Tue, 18 Feb 2020 13:49:12 +0000 (16:49 +0300)]
[yaml2obj] - Automatically assign sh_addr for allocatable sections.

I've noticed that it is not convenient to create YAMLs from
binaries (using obj2yaml) that have to be test cases for obj2yaml
later (after applying yaml2obj).

The problem, for example is that obj2yaml emits "DynamicSymbols:"
key instead of .dynsym. It also does not create .dynstr.
And when a YAML document without explicitly defined .dynsym/.dynstr
is given to yaml2obj, we have issues:

1) These sections are placed after non-allocatable sections (I've fixed it in D74756).
2) They have VA == 0. User needs create descriptions for such sections explicitly manually
    to set a VA.

This patch addresses (2). I suggest to let yaml2obj assign virtual addresses by itself.
It makes an output binary to be much closer to "normal" ELF.
(It is still possible to use "Address: 0x0" for a section to get the original behavior
if it is needed)

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

4 years ago[VE][fix] missing include
Simon Moll [Sat, 22 Feb 2020 09:45:16 +0000 (10:45 +0100)]
[VE][fix] missing include

4 years agoUpdate ShapeInference.md
Baden Hughes [Sat, 22 Feb 2020 02:08:33 +0000 (12:08 +1000)]
Update ShapeInference.md

Variety of editorial and typographic and formatting tweaks.

4 years agoUpdate Quantization.md
Baden Hughes [Sat, 22 Feb 2020 01:58:37 +0000 (11:58 +1000)]
Update Quantization.md

Various typographic, grammatical and formatting edits and tidy ups.

4 years ago[Preprocessor][X86] Fix __code_model_*__ predefine macros
Roland McGrath [Sat, 22 Feb 2020 07:28:56 +0000 (23:28 -0800)]
[Preprocessor][X86] Fix __code_model_*__ predefine macros

GCC defines __code_model_*__ (two trailing underscores), not
__code_model_*_ (one trailing underscore).

Reviewed By: MaskRay

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

4 years ago[AArch64] Predefine __AARCH64_CMODEL_*__ as GCC does
Roland McGrath [Sat, 22 Feb 2020 05:25:57 +0000 (21:25 -0800)]
[AArch64] Predefine __AARCH64_CMODEL_*__ as GCC does

Make Clang on aarch64 targets predefine `__AARCH64_CMODEL_SMALL__`
or `__AARCH64_CMODEL_TINY__`, etc.  These are the names that GCC
uses for its predefines.

Reviewed By: tamur, MaskRay

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

4 years ago[Frontend] Replace CC1 option -mcode-model with -mcmodel=
Fangrui Song [Sat, 22 Feb 2020 06:41:34 +0000 (22:41 -0800)]
[Frontend] Replace CC1 option -mcode-model with -mcmodel=

Before:

% clang -mcmodel=x -xc /dev/null
error: invalid argument 'x' in '-mcode-model x'

Now:

% clang -mcmodel=x -xc /dev/null
clang-11: error: invalid argument 'x' to -mcmodel=

4 years ago[Preprocessor][test] Fix __VERSION__ in init-aarch64.c
Fangrui Song [Sat, 22 Feb 2020 06:37:40 +0000 (22:37 -0800)]
[Preprocessor][test] Fix __VERSION__ in init-aarch64.c

4 years ago[Preprocessor][test] Move AArch64 tests from init.c to init-aarch.c
Fangrui Song [Sat, 22 Feb 2020 05:43:02 +0000 (21:43 -0800)]
[Preprocessor][test] Move AArch64 tests from init.c to init-aarch.c

4 years ago[GISel][KnownBits] Suppress unused warning on the dump method
Quentin Colombet [Sat, 22 Feb 2020 05:07:04 +0000 (21:07 -0800)]
[GISel][KnownBits] Suppress unused warning on the dump method

NFC

4 years ago[libc] Lay out framework for fuzzing libc functions.
Paula Toth [Sat, 22 Feb 2020 03:14:51 +0000 (19:14 -0800)]
[libc] Lay out framework for fuzzing libc functions.

Summary:
Added fuzzing test for strcpy and some documentation related to fuzzing.
This will be the first step in integrating this with oss-fuzz.

Reviewers: sivachandra, abrachet

Reviewed By: sivachandra, abrachet

Subscribers: gchatelet, abrachet, mgorny, MaskRay, tschuett, libc-commits

Tags: #libc-project

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

4 years ago[lldb][test] Fix sh_flags and sh_entsize of .debug_str.dwo
Fangrui Song [Sat, 22 Feb 2020 02:48:53 +0000 (18:48 -0800)]
[lldb][test] Fix sh_flags and sh_entsize of .debug_str.dwo

sh_flags: SHF_MERGE | SHF_STRINGS | SHF_EXCLUDE
sh_entsize: 1

Incorrect sh_flags or sh_entsize is an error after the assembler change made by D73999.

4 years ago[X86] Teach combineCVTPH2PS to shrink v8i16 loads when the output type is v4f32....
Craig Topper [Sat, 22 Feb 2020 01:56:35 +0000 (17:56 -0800)]
[X86] Teach combineCVTPH2PS to shrink v8i16 loads when the output type is v4f32. Remove extra isel patterns.

Similar to what do for other operations that use a subset of bits.
Allows us to remove a pattern that shrinks a load. Which was
incorrect if the load was volatile.

4 years agoRemove unused variable
Alex Brachet [Sat, 22 Feb 2020 01:48:07 +0000 (20:48 -0500)]
Remove unused variable

4 years ago[lldb][test] Fix sh_type of .debug_cu_index and .debug_tu_index
Fangrui Song [Sat, 22 Feb 2020 01:37:01 +0000 (17:37 -0800)]
[lldb][test] Fix sh_type of .debug_cu_index and .debug_tu_index

They do not have the SHF_EXCLUDE flag.
After D73999, MC errors `changed section type for .debug_cu_index, expected: 0x0`

4 years agoFlags for displaying only hot nodes in CFGPrinter graph
Kirill Naumov [Sat, 22 Feb 2020 00:36:09 +0000 (16:36 -0800)]
Flags for displaying only hot nodes in CFGPrinter graph

Added two flags to omit uncommon or dead paths in the CFG graphs:
  -cfg-hide-unreachable-paths
  -cfg-hide-deoptimize-paths

The main purpose is performance analysis when such block are not
"interesting" from perspective of common path performance.

Reviewed By: apilipenko, davidxl

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

4 years ago[WebAssembly] Fix a non-determinism problem in FixIrreducibleControlFlow
Heejin Ahn [Sat, 22 Feb 2020 01:01:52 +0000 (17:01 -0800)]
[WebAssembly] Fix a non-determinism problem in FixIrreducibleControlFlow

Summary:
We already sorted the blocks when fixing up a set of mutual
loop entries, however, there can be multiple sets of such
mutual loop entries, and the order we encounter them
should not be random, so sort them too.

Fixes https://bugs.llvm.org/show_bug.cgi?id=44982

Patch by Alon Zakai (kripken)

Reviewers: aheejin, sbc100, dschuff

Subscribers: mgrang, sunfish, hiraditya, jgravelle-google, llvm-commits

Tags: #llvm

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

4 years ago[llvm-objdump][test] Fix source-interleave-function-from-debug.test on Windows after...
Fangrui Song [Sat, 22 Feb 2020 00:46:52 +0000 (16:46 -0800)]
[llvm-objdump][test] Fix source-interleave-function-from-debug.test on Windows after D74507

4 years agoAllow customized relative PYTHONHOME (Attemp 1)
Haibo Huang [Fri, 21 Feb 2020 23:52:15 +0000 (15:52 -0800)]
Allow customized relative PYTHONHOME (Attemp 1)

Summary:
This is another attempt of 0bb90628b5f7c170689d2d3f019af773772fc649.

The difference is that g_python_home is not declared as const. Since
some versions of python do not expect that.

Subscribers: mgorny, lldb-commits

Tags: #lldb

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

4 years agoAMDGPU/GlobalISel: Remove dead code
Matt Arsenault [Tue, 18 Feb 2020 14:34:31 +0000 (09:34 -0500)]
AMDGPU/GlobalISel: Remove dead code

4 years ago[Driver] Escape the program path for -frecord-command-line
Scott Linder [Thu, 20 Feb 2020 21:31:17 +0000 (16:31 -0500)]
[Driver] Escape the program path for -frecord-command-line

Similar to the rest of the command line that is recorded, the program
path must also have spaces and backslashes escaped. Without this
parsing the recorded command line becomes hard on platforms like
Windows where spaces and backslashes are common.

This was originally reverted in
577d9ce35532439203411c999deefc9c80e04c69; this version makes a test
agnostic to the presence of backslashes in paths on some platforms.

Patch By: Ravi Ramaseshan
Differential Revision: https://reviews.llvm.org/D74811

4 years ago[mlir][DeclarativeParser][NFC] Use explicit type names in TypeSwitch to
River Riddle [Sat, 22 Feb 2020 00:09:58 +0000 (16:09 -0800)]
[mlir][DeclarativeParser][NFC] Use explicit type names in TypeSwitch to
appease older GCC.

Older versions of GCC are unable to properly capture 'this' in template lambdas,
resulting in errors.

4 years agoRevert "[AMDGPU] Don’t marke the .note section as ALLOC"
Mark Searles [Fri, 21 Feb 2020 23:26:51 +0000 (15:26 -0800)]
Revert "[AMDGPU] Don’t marke the .note section as ALLOC"

This reverts commit 977cd661cf019039dec7ffdd15bf0ac500828c87.

It breaks OpenCL testing. OpenCL Runtime is using PT_LOAD information
to calculate memory for global variables. This commit should be relanded once
the OpenCL runtime stops relying on PT_LOAD information for calculating global
variable memory size.

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

4 years ago[lldb/test] Tweak libcxx string test on Apple+ARM devices
Vedant Kumar [Fri, 21 Feb 2020 23:21:19 +0000 (15:21 -0800)]
[lldb/test] Tweak libcxx string test on Apple+ARM devices

On Apple platforms, is __arm__ isn't defined and we're not on Intel, we use an
alternate std::string layout. I.e., the libcxx string test fails on phones
because the hand-crafted "garbage" string structs are actually valid strings.

See:

```
  // _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for
  // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility.
  #if (defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) &&       \
       (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)) ||                           \
      defined(_LIBCPP_ALTERNATE_STRING_LAYOUT)
  #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT
  #endif
```

Disable inspection of the garbage structs on Apple+ARM devices.

4 years ago[MC][ELF] Error for sh_type, sh_flags or sh_entsize change
Fangrui Song [Tue, 4 Feb 2020 22:28:20 +0000 (14:28 -0800)]
[MC][ELF] Error for sh_type, sh_flags or sh_entsize change

Heads-up message: https://lists.llvm.org/pipermail/llvm-dev/2020-February/139390.html

GNU as started to emit warnings for changed sh_type or sh_flags in 2000.
GNU as>=2.35 will emit errors for most sh_type/sh_flags change, and error for entsize change.

Some cases remain warnings for legacy reasons:

   .section .init_array,"ax", @progbits
   .section .init_array,"ax", @init_array
   # And some obscure sh_flags changes (OS/Processor specific flags)

The rationale of a diagnostic (warning or error) is that sh_type,
sh_flags or sh_entsize changes usually indicate user errors. The values
are taken from the first .section directive. Successive directives are ignored.

We just try to be rigid and emit errors for all sh_type/sh_flags/sh_entsize change.

A possible improvement in the future is to reuse
llvm-readobj/ELFDumper.cpp:getSectionTypeString so that we can name the
type in the diagnostics.

Reviewed By: psmith

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

4 years ago[llvm-objdump] Print method name from debug info in disassembly output.
Jordan Rupprecht [Fri, 21 Feb 2020 23:30:51 +0000 (15:30 -0800)]
[llvm-objdump] Print method name from debug info in disassembly output.

Summary:
GNU objdump prints the method name in disassembly output, and upon further investigation this seems to come from debug info, not the symbol table.

Some additional refactoring is necessary to make this work even when the line number is 0/the filename is unknown. The added test case includes a note for this scenario.

See http://llvm.org/PR41341 for more info.

Reviewers: dblaikie, MaskRay, jhenderson

Reviewed By: MaskRay

Subscribers: ormris, jvesely, aprantl, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[mlir][Tutorial] Add a section to Toy Ch.2 detailing the custom assembly format.
River Riddle [Fri, 21 Feb 2020 22:36:24 +0000 (14:36 -0800)]
[mlir][Tutorial] Add a section to Toy Ch.2 detailing the custom assembly format.

Summary:
This details the C++ format as well as the new declarative format. This has been one of the major missing pieces from the toy tutorial.

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

4 years ago[mlir][DeclarativeParser] Add support for formatting the successors of an operation.
River Riddle [Fri, 21 Feb 2020 21:20:06 +0000 (13:20 -0800)]
[mlir][DeclarativeParser] Add support for formatting the successors of an operation.

This revision add support for formatting successor variables in a similar way to operands, attributes, etc.

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

4 years ago[mlir][ODS] Add support for specifying the successors of an operation.
River Riddle [Fri, 21 Feb 2020 21:19:50 +0000 (13:19 -0800)]
[mlir][ODS] Add support for specifying the successors of an operation.

This revision add support in ODS for specifying the successors of an operation. Successors are specified via the `successors` list:
```
let successors = (successor AnySuccessor:$target, AnySuccessor:$otherTarget);
```

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

4 years ago[mlir] Add a utility iterator range that repeats a given value `n` times.
River Riddle [Fri, 21 Feb 2020 21:19:36 +0000 (13:19 -0800)]
[mlir] Add a utility iterator range that repeats a given value `n` times.

This range is useful when an desired API expects a range or when comparing two different ranges for equality, but the underlying data is a splat. This range removes the need to explicitly construct a vector in those cases.

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

4 years ago[mlir][DeclarativeParser] Add an 'attr-dict-with-keyword' directive
River Riddle [Fri, 21 Feb 2020 21:19:26 +0000 (13:19 -0800)]
[mlir][DeclarativeParser] Add an 'attr-dict-with-keyword' directive

This matches the '(print|parse)OptionalAttrDictWithKeyword' functionality provided by the assembly parser/printer.

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

4 years ago[mlir][DeclarativeParser] Add basic support for optional groups in the assembly format.
River Riddle [Fri, 21 Feb 2020 21:19:15 +0000 (13:19 -0800)]
[mlir][DeclarativeParser] Add basic support for optional groups in the assembly format.

When operations have optional attributes, or optional operands(i.e. empty variadic operands), the assembly format often has an optional section to represent these arguments. This revision adds basic support for defining an "optional group" in the assembly format to support this. An optional group is defined by wrapping a set of elements in `()` followed by `?` and requires the following:

* The first element of the group must be either a literal or an operand argument.
  - This is because the first element must be optionally parsable.
* There must be exactly one argument variable within the group that is marked as the anchor of the group. The anchor is the element whose presence controls whether the group should be printed/parsed. An element is marked as the anchor by adding a trailing `^`.
* The group must only contain literals, variables, and type directives.
  - Any attribute variables may be used, but only optional attributes can be marked as the anchor.
  - Only variadic, i.e. optional, operand arguments can be used.
  - The elements of a type directive must be defined within the same optional group.

An example of this can be seen with the assembly format for ReturnOp, which has a variadic number of operands.

```
def ReturnOp : ... {
  let arguments = (ins Variadic<AnyType>:$operands);

  // We only print the operands+types if there are a non-zero number
  // of operands.
  let assemblyFormat = "attr-dict ($operands^ `:` type($operands))?";
}
```

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

4 years ago[mlir][DeclarativeParser] Add support for the TypesMatchWith trait.
River Riddle [Fri, 21 Feb 2020 21:19:03 +0000 (13:19 -0800)]
[mlir][DeclarativeParser] Add support for the TypesMatchWith trait.

This allows for injecting type constraints that are not direct 1-1 mappings, for example when one type is equal to the element type of another. This allows for moving over several more parsers to the declarative form.

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

4 years ago[Analysis][Docs] Parents of loops documentation.
Stefanos Baziotis [Fri, 21 Feb 2020 23:07:53 +0000 (17:07 -0600)]
[Analysis][Docs] Parents of loops documentation.

Recently I had to use it and although one assumes it returns null if
there's no parent loop, I think it helps to doc it.

Reviewed By: Meinersbur

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

4 years agoRevert "Allow customized relative PYTHONHOME"
Stella Stamenova [Fri, 21 Feb 2020 22:56:17 +0000 (14:56 -0800)]
Revert "Allow customized relative PYTHONHOME"

This reverts commit 0bb90628b5f7c170689d2d3f019af773772fc649 since it is causing failures on the Windows LLDB buildbot:

http://lab.llvm.org:8011/builders/lldb-x64-windows-ninja/builds/14048

4 years ago[Target] Remove libObject dependency in lib/Target
Francis Visoiu Mistrih [Fri, 21 Feb 2020 22:50:45 +0000 (14:50 -0800)]
[Target] Remove libObject dependency in lib/Target

This removes a couple useless includes and the dependency of X86Desc on Object,
which was useless as well.

4 years ago[Attributor][FIX] Disable a test to unblock the builders
Johannes Doerfert [Fri, 21 Feb 2020 22:41:02 +0000 (14:41 -0800)]
[Attributor][FIX] Disable a test to unblock the builders

To unblock the builders this disables a test for which the CHECK lines
need to be updated. The patch causing the failure was not reverted
because it is needed for a different problem we are investigating. Here
we just need to update the CHECK lines which will happen in the
meantime.

4 years ago[GISel][KnownBits] Add a cache mechanism to speed compile time
Quentin Colombet [Fri, 21 Feb 2020 01:51:26 +0000 (17:51 -0800)]
[GISel][KnownBits] Add a cache mechanism to speed compile time

This patch adds a cache that is valid only for the duration of a call
to getKnownBits. With such short lived cache we avoid all the problems
of cache invalidation while still getting the benefits of reusing
the information we already computed.

This cache is useful whenever an instruction occurs more than once
in a chain of computation.
E.g.,
v0 = G_ADD v1, v2
v3 = G_ADD v0, v1

Previously we would compute the known bits for:
v1, v2, v0, then v1 again and finally v3.

With the patch, now we won't have to recompute v1 again.

NFC

4 years ago[Attributor][FIX] Undo 16188f9 until SCC iterator bug is fixed
Johannes Doerfert [Fri, 21 Feb 2020 22:18:30 +0000 (14:18 -0800)]
[Attributor][FIX] Undo 16188f9 until SCC iterator bug is fixed

The buildbot
  http://lab.llvm.org:8011/builders/llvm-clang-x86_64-expensive-checks-win
shows some strange SCC iterator bug since 16188f9 which we need to
investigate. This patch should remove the part of 16188f9 that could
have exposed the problem.

4 years ago[CloneFunction] Update loop headers after cloning all blocks in loop.
Whitney Tsang [Fri, 21 Feb 2020 22:15:39 +0000 (22:15 +0000)]
[CloneFunction] Update loop headers after cloning all blocks in loop.

Summary:
Blocks in a loop can be in any order as long as the loop header is the
first block in Blocks.
With some order of Blocks, cloneLoopWithPreheader would trigger the
assertion in addBasicBlockToLoop.

Example:

define void @test(i64 %N) {
preheader.i:
  br label %header.i

header.i:
  %i = phi i64 [ 0, %preheader.i ], [ %inc.i, %latch.i ]
  br label %header.j

header.j:
  %j = phi i64 [ 0, %header.i ], [ %inc.j, %latch.j ]
  br label %header.k

header.k:
  %k = phi i64 [ 0, %header.j ], [ %inc.k, %latch.k ]
  call void @baz(i64 %i, i64 %j, i64 %k)
  br label %latch.k

latch.k:
  %inc.k = add nsw i64 %k, 1
  %cmp.k = icmp slt i64 %inc.k, %N
  br i1 %cmp.k, label %header.k, label %latch.j

latch.j:
  %inc.j = add nsw i64 %j, 1
  %cmp.j = icmp slt i64 %inc.j, %N
  br i1 %cmp.j, label %header.j, label %latch.i

latch.i:
  %inc.i = add nsw i64 %i, 1
  %cmp.i = icmp slt i64 %inc.i, %N
  br i1 %cmp.i, label %header.i, label %exit.i

exit.i:
  ret void
}
declare void @baz(i64, i64, i64)
If the blocks of loop-i is in the order: header.i, latch.k, header.k,
header.j, latch.j, latch.i,
then cloneLoopWithPreheader would trigger the assertion in
addBasicBlockToLoop
assert(contains(SameHeader) && getHeader() == SameHeader->getHeader() &&
"Incorrect LI specified for this loop!");

As latch.k is in both loop-j and loop-k, it would be set as the header
of both loops after adding latch.k.
If we update loop headers during cloning blocks, then after adding
header.k,
the header of loop-k would be updated with header.k,
while the header of loop-j stays as latch.k.

When adding header.j, SameHeader is loop-k, SameHeader->getHeader() is
header.k, but getHeader() is latch.k, which trigger the assertion.
Reviewer: jdoerfert, Meinersbur, fhahn, kbarton, hfinkel, bmahjour,
etiotto
Reviewed By: Meinersbur
Subscribers: hiraditya, llvm-commits
Tag: LLVM
Differential Revision: https://reviews.llvm.org/D74382

4 years ago[Hexagon] Define __ELF__ by default.
Sid Manning [Fri, 21 Feb 2020 19:41:22 +0000 (13:41 -0600)]
[Hexagon] Define __ELF__ by default.

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

4 years ago[AArch64] Delete an unneeded dependency on Object after 1874dee5662603c9251228c71b66d...
Fangrui Song [Fri, 21 Feb 2020 22:02:39 +0000 (14:02 -0800)]
[AArch64] Delete an unneeded dependency on Object after 1874dee5662603c9251228c71b66de72cec0c979

1874dee5662603c9251228c71b66de72cec0c979 moved CPU_(SUB_)TYPE logic to
BinaryFormat. Object is not directly referenced.

4 years ago[AArch64][SVE] Fix -DBUILD_SHARED_LIBS=on builds after -D74808/1874dee5662603c9251228...
Fangrui Song [Fri, 21 Feb 2020 21:54:09 +0000 (13:54 -0800)]
[AArch64][SVE] Fix -DBUILD_SHARED_LIBS=on builds after -D74808/1874dee5662603c9251228c71b66de72cec0c979

4 years ago[SelectionDAG] remove unused isFast() helper function; NFC
Sanjay Patel [Fri, 21 Feb 2020 21:46:39 +0000 (16:46 -0500)]
[SelectionDAG] remove unused isFast() helper function; NFC

We want flag users to check individual fast-math flags,
not that all of them are set. This was also probably
not working as intended because NoFPExcept isn't always
set on non-strict nodes.

4 years agoclang/Modules: Finish renaming CompilerInstance::ModuleManager, NFC.
Volodymyr Sapsai [Fri, 21 Feb 2020 01:45:51 +0000 (17:45 -0800)]
clang/Modules: Finish renaming CompilerInstance::ModuleManager, NFC.

Follow-up to 20d51b2f14ac4488f684f8fc57cb0ba718a6b91d, rename the setter to
make it consistent with the getter. Also fixed a few comments along the
way, didn't try to find all references to a module manager.

Reviewed By: dexonsmith

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

4 years ago[AArch64][SVE] Fix -Wimplicit-fallthrough after D73711
Fangrui Song [Fri, 21 Feb 2020 21:45:12 +0000 (13:45 -0800)]
[AArch64][SVE] Fix -Wimplicit-fallthrough after D73711

4 years ago[lldb/Plugins] Add ability to fetch crash information on crashed processes
Med Ismail Bennani [Fri, 21 Feb 2020 21:43:25 +0000 (22:43 +0100)]
[lldb/Plugins] Add ability to fetch crash information on crashed processes

Currently, in macOS, when a process crashes, lldb halts inside the
implementation disassembly without yielding any useful information.
The only way to get more information is to detach from the process, then wait
for ReportCrash to generate a report, find the report, then see what error
message was included in it. Instead of waiting for this to happen, lldb could
locate the error_string and make it available to the user.

This patch addresses this issue by enabling the user to fetch extended
crash information for crashed processes using `process status --verbose`.

Depending on the platform, this will try to gather different crash information
into an structured data dictionnary. This dictionnary is generic and extensible,
as it contains an array for each different type of crash information.

On Darwin Platforms, lldb will iterate over each of the target's images,
extract their `__crash_info` section and generated a StructuredData::Array
containing, in each entry, the module spec, its UUID, the crash messages
and the abort cause. The array will be inserted into the platform's
`m_extended_crash_info` dictionnary and `FetchExtendedCrashInformation` will
return its JSON representation like this:

```
{
  "crash-info annotations": [
    {
      "abort-cause": 0,
      "image": "/usr/lib/system/libsystem_malloc.dylib",
      "message": "main(76483,0x1000cedc0) malloc: *** error for object 0x1003040a0: pointer being freed was not allocated",
      "message2": "",
      "uuid": "5747D0C9-900D-3306-8D70-1E2EA4B7E821"
    },
    ...
  ],
  ...
}
```

This crash information can also be fetched using the SB API or lldb-rpc protocol
using SBTarget::GetExtendedCrashInformation().

rdar://37736535

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
4 years ago[lldb/test] Move `platform process list` tests to its own directory (NFC)
Med Ismail Bennani [Wed, 19 Feb 2020 15:33:39 +0000 (16:33 +0100)]
[lldb/test] Move `platform process list` tests to its own directory (NFC)

Since the `platform process` commamnd has more tests now, this commits
separates each of the `platform process` subcommand's test in its own directory.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
4 years ago[llvm-objcopy][MachO] Change the storage of sections
Alexander Shaposhnikov [Fri, 21 Feb 2020 21:18:36 +0000 (13:18 -0800)]
[llvm-objcopy][MachO] Change the storage of sections

In this diff we change the storage of a section to unique_ptr.
This refactoring was factored out from D71647.

Test plan: make check-all

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

4 years ago[AArch64][SVE] Add support for DestructiveBinary and DestructiveBinaryComm Destructiv...
Cameron McInally [Fri, 21 Feb 2020 20:41:35 +0000 (14:41 -0600)]
[AArch64][SVE] Add support for DestructiveBinary and DestructiveBinaryComm DestructiveInstTypes

Add support for DestructiveBinaryComm DestructiveInstType, as well as the lowering code to expand the new Pseudos into the final movprfx+instruction pairs.

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

4 years agoAMDGPU/GlobalISel: Better code for one case of G_SHUFFLE_VECTOR on v2i16
Jay Foad [Fri, 21 Feb 2020 20:59:44 +0000 (20:59 +0000)]
AMDGPU/GlobalISel: Better code for one case of G_SHUFFLE_VECTOR on v2i16

Reviewers: arsenm

Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, rovka, dstuttard, tpr, t-tye, hiraditya, kerbowa, llvm-commits

Tags: #llvm

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

4 years ago[VectorCombine] refactor to reduce duplicated code; NFC
Sanjay Patel [Fri, 21 Feb 2020 20:43:05 +0000 (15:43 -0500)]
[VectorCombine] refactor to reduce duplicated code; NFC

This should be the last step in the current cleanup.
Follow-ups should resolve the TODO about cost calc
and enable the more general case where we extract
different elements.

4 years ago[gn build] Port 1874dee5662
LLVM GN Syncbot [Fri, 21 Feb 2020 20:51:44 +0000 (20:51 +0000)]
[gn build] Port 1874dee5662

4 years agoAllow customized relative PYTHONHOME
Haibo Huang [Mon, 17 Feb 2020 01:33:32 +0000 (17:33 -0800)]
Allow customized relative PYTHONHOME

Summary:
This change allows a hard coded relative PYTHONHOME setting. So that
python can easily be packaged together with lldb.

The change includes:
1. Extend LLDB_RELOCATABLE_PYTHON to all platforms. It defaults to ON
for platforms other than Windows, to keep the behavior compatible.
2. Allows to customize LLDB_PYTHON_HOME. But still defaults to
PYTHON_HOME.
3. LLDB_PYTHON_HOME can be a path relative to liblldb. If it is
relative, we will resolve it before send it to Py_DecodeLocale.

Subscribers: mgorny, lldb-commits

Tags: #lldb

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

4 years ago[macho][NFC] Extract all CPU_(SUB_)TYPE logic to BinaryFormat
Francis Visoiu Mistrih [Wed, 19 Feb 2020 00:39:05 +0000 (16:39 -0800)]
[macho][NFC] Extract all CPU_(SUB_)TYPE logic to BinaryFormat

This moves all the logic of converting LLVM Triples to
MachO::CPU_(SUB_)TYPE from the specific target (Target)AsmBackend to
more convenient functions in lib/BinaryFormat.

This also gets rid of the separate two X86AsmBackend classes.

The previous attempt was to add it to libObject, but that adds an
unnecessary dependency to libObject from all the targets.

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

4 years ago[X86] Add a new format type for instructions that represent named prefix bytes like...
Craig Topper [Fri, 21 Feb 2020 20:30:27 +0000 (12:30 -0800)]
[X86] Add a new format type for instructions that represent named prefix bytes like data16 and rep. Use it to make a simpler version of isPrefix.

isPrefix was added to support the patches to align branches.
it relies on a switch over instruction names.

This moves those opcodes to a new format so the information is
tablegen and we can just check for a specific value in some bits
in TSFlags instead.

I've left the other function in place for now so that the
existing patches in phabricator will still work. I'll work with
the owner to get them migrated.

4 years ago[IR] Update BasicBlock::validateInstrOrdering comments, NFC
Reid Kleckner [Fri, 21 Feb 2020 20:31:00 +0000 (12:31 -0800)]
[IR] Update BasicBlock::validateInstrOrdering comments, NFC

Pointed out by Jay Foad.

4 years ago[llvm][CodeGen][aarch64] Add contiguous prefetch intrinsics for SVE.
Francesco Petrogalli [Thu, 13 Feb 2020 20:42:26 +0000 (20:42 +0000)]
[llvm][CodeGen][aarch64] Add contiguous prefetch intrinsics for SVE.

Summary: The patch covers both register/register and register/immediate addressing modes.

Reviewers: efriedma, andwar, sdesmalen

Reviewed By: sdesmalen

Subscribers: sdesmalen, tschuett, kristof.beyls, hiraditya, rkruppe, psnobl, llvm-commits

Tags: #llvm

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

4 years ago[VectorCombine] refactor cost calcs to reduce duplication; NFC
Sanjay Patel [Fri, 21 Feb 2020 19:25:39 +0000 (14:25 -0500)]
[VectorCombine] refactor cost calcs to reduce duplication; NFC

More cleanup is possible now, but we probably need to
resolve the TODO about the existing difference between
compares and binops.

4 years ago[llvm][aarch64] SVE addressing modes.
Francesco Petrogalli [Tue, 28 Jan 2020 20:37:52 +0000 (20:37 +0000)]
[llvm][aarch64] SVE addressing modes.

Summary:
Added register + immediate and register + register addressing modes for the following intrinsics:

1. Masked load and stores:
     * Sign and zero extended load and truncated stores.
     * No extension or truncation.
2. Masked non-temporal load and store.

Reviewers: andwar, efriedma

Subscribers: cameron.mcinally, sdesmalen, tschuett, kristof.beyls, hiraditya, llvm-commits

Tags: #llvm

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

4 years agoMove StandardOps/Ops.h to StandardOps/IR/Ops.h
Rob Suderman [Fri, 21 Feb 2020 19:54:49 +0000 (11:54 -0800)]
Move StandardOps/Ops.h to StandardOps/IR/Ops.h

Summary:
NFC - Moved StandardOps/Ops.h to a StandardOps/IR dir to better match surrounding
directories. This is to match other dialects, and prepare for moving StandardOps
related transforms in out for Transforms and into StandardOps/Transforms.

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

4 years ago[Hexagon] Simplify intrinsic (vandvrt (vandqrt q b) m) -> q if possible
Krzysztof Parzyszek [Fri, 21 Feb 2020 16:35:59 +0000 (10:35 -0600)]
[Hexagon] Simplify intrinsic (vandvrt (vandqrt q b) m) -> q if possible

When each byte in b&m is non-zero, this conversion Q->V->Q is a no-op.

4 years ago[MLIR] Remove constexpr from LoopOps.td
Nagy Mostafa [Fri, 21 Feb 2020 19:48:45 +0000 (11:48 -0800)]
[MLIR] Remove constexpr from LoopOps.td

Reviewed By: rriddle

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

4 years ago[mlir][spirv] Add lowering for load/store zero-rank memref from std to SPIR-V.
Hanhan Wang [Fri, 21 Feb 2020 19:39:32 +0000 (14:39 -0500)]
[mlir][spirv] Add lowering for load/store zero-rank memref from std to SPIR-V.

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

4 years ago[CodeGen][RISCV] Fix clang/test/CodeGen/atomic_ops.c for RISC-V
Luís Marques [Fri, 21 Feb 2020 19:26:09 +0000 (19:26 +0000)]
[CodeGen][RISCV] Fix clang/test/CodeGen/atomic_ops.c for RISC-V

By default the RISC-V target doesn't have the atomics standard extension
enabled. The first RUN line in `clang/test/CodeGen/atomic_ops.c` didn't
specify a target triple, which meant that on RISC-V Linux hosts it would
target RISC-V, but because it used clang cc1 we didn't get the toolchain
driver functionality to automatically turn on the extensions implied by
the target triple (riscv64-linux includes atomics). This would cause the
test to fail on RISC-V hosts.

This patch changes the test to have RUN lines for two explicit targets,
one with native atomics and one without. To work around FileCheck
limitations and more accurately match the output, some tests now have
separate prefixes for the two cases.

Reviewers: jyknight, eli.friedman, lenary, efriedma
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D74847

4 years ago[AArch64][SVE] Add backend support for splats of immediates
Cameron McInally [Fri, 21 Feb 2020 19:15:28 +0000 (13:15 -0600)]
[AArch64][SVE] Add backend support for splats of immediates

This patch adds backend support for splats of both Int and FP immediates.

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

4 years ago[libc++] Do not set the `availability=XXX` feature when not testing against a system...
Louis Dionne [Fri, 21 Feb 2020 18:53:50 +0000 (13:53 -0500)]
[libc++] Do not set the `availability=XXX` feature when not testing against a system libc++

Otherwise, the `availability=XXX` lit feature is set even when we're
testing trunk and _LIBCPP_DISABLE_AVAILABILITY is defined, which causes
tests that check for availability markup to be enabled and unexpectedly
pass.

4 years ago[ARM] Change ARMAttributeParser::Parse to use support::endianness and simplify
Fangrui Song [Fri, 21 Feb 2020 18:55:12 +0000 (10:55 -0800)]
[ARM] Change ARMAttributeParser::Parse to use support::endianness and simplify