platform/upstream/llvm.git
2 years ago[AMDGPU] Select no-return atomic ops in FLATInstructions.td.
Abinav Puthan Purayil [Mon, 7 Feb 2022 17:48:10 +0000 (23:18 +0530)]
[AMDGPU] Select no-return atomic ops in FLATInstructions.td.

This change adds the selection for the no-return global_* and flat_*
instructions in tblgen.  The motivation for this is to get the no-return atomic
isel working without relying on post-isel hooks so that GlobalISel can start
selecting them (once GlobalISelEmitter allows no return atomic patterns like
how DAGISel does).

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

2 years ago[AMDGPU] Select no-return ds_* atomic ops in tblgen.
Abinav Puthan Purayil [Mon, 27 Dec 2021 10:46:38 +0000 (16:16 +0530)]
[AMDGPU] Select no-return ds_* atomic ops in tblgen.

SelectionDAG relies on MachineInstr's HasPostISelHook for selecting the
no-return atomic ops. GlobalISel, at the moment, doesn't handle
HasPostISelHook.

This change adds the selection for no-return ds_* atomic ops in tblgen
so that it can work with both GlobalISel and SelectionDAG. I couldn't
add the predicates for GlobalISel in this change since there's a
restriction in GlobalISelEmitter that disallows selecting generic
atomics ops that return with instructions that doesn't return.

We can't remove the HasPostISelHook code that selects the no return
atomic ops in SelectionDAG yet since we still need to cover selections
in FLATInstructions.td, BUFInstructions.td.

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

2 years ago[ORC-RT] Add two new jit-dlopen testcases, and switch to .c for dlopen tests.
Lang Hames [Thu, 10 Feb 2022 02:53:03 +0000 (13:53 +1100)]
[ORC-RT] Add two new jit-dlopen testcases, and switch to .c for dlopen tests.

We don't need precise control over the low-level behavior of these testcases so
C should be preferred for readability.

The new testcases test (1) the base dlopen case (running initializers and
deinitializers), and (2) the serial case of dlopen; dlclose; dlopen; dlclose,
where we expect the initializers and deinitializers to be run twice.

2 years ago[MLIR][NFC] Remove unused argument in affine scalrep helper util
Uday Bondhugula [Thu, 10 Feb 2022 02:36:19 +0000 (08:06 +0530)]
[MLIR][NFC] Remove unused argument in affine scalrep helper util

NFC. Remove unused argument in affine scalrep helper utility.

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

2 years ago[PowerPC] Add custom lowering for SELECT_CC fp128 using xsmaxcqp
Ting Wang [Thu, 10 Feb 2022 02:48:28 +0000 (21:48 -0500)]
[PowerPC] Add custom lowering for SELECT_CC fp128 using xsmaxcqp

Power ISA 3.1 adds xsmaxcqp/xsmincqp for quad-precision type-c max/min selection,
and this opens the opportunity to improve instruction selection on: llvm.maxnum.f128,
llvm.minnum.f128, and select_cc ordered gt/lt and (don't care) gt/lt.

Reviewed By: nemanjai, shchenz, amyk

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

2 years ago[X86] Only force FP usage in the presence of pushf/popf on Win64
Reid Kleckner [Thu, 10 Feb 2022 00:31:38 +0000 (16:31 -0800)]
[X86] Only force FP usage in the presence of pushf/popf on Win64

This ensures that the Windows unwinder will work at every instruction
boundary, and allows other targets to read and write flags without
setting up a frame pointer.

Fixes GH-46875

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

2 years ago[OMPIRBuilder] Remove the support for floating point values for atomic compare operation
Shilei Tian [Thu, 10 Feb 2022 02:15:05 +0000 (21:15 -0500)]
[OMPIRBuilder] Remove the support for floating point values for atomic compare operation

This patch removes the type punning in atomic compare operation for
floating point values because the direct comparison doesn't make too much sense
for floating point values.

Reviewed By: jdoerfert

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

2 years ago[NFC] [Modules] Refactor ODR checking for default template argument in
Chuanqi Xu [Thu, 10 Feb 2022 01:56:44 +0000 (09:56 +0800)]
[NFC] [Modules] Refactor ODR checking for default template argument in
ASTReader

This is a cleanup to reduce the lines of code to handle default template
argument in ASTReader.

Reviewed By: urnathan

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

2 years agoNFC: fix GCC warning -Wcast-qual
Yuanfang Chen [Thu, 10 Feb 2022 02:03:04 +0000 (18:03 -0800)]
NFC: fix GCC warning -Wcast-qual

2 years ago[RISCV] Add support for matching vwmaccsu/vwmaccus from fixed vectors
Chenbing.Zheng [Thu, 10 Feb 2022 01:46:47 +0000 (01:46 +0000)]
[RISCV] Add support for matching vwmaccsu/vwmaccus from fixed vectors

Add pattern to match add and widening mul to vwmacc, and
two multipliers are sext and zext.

Reviewed By: craig.topper

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

2 years ago[mlir][sparse][pytaco] test cleanup
Aart Bik [Wed, 9 Feb 2022 22:23:22 +0000 (14:23 -0800)]
[mlir][sparse][pytaco] test cleanup

removed obsoleted TODO
removed strange Fp precision for coordinates
lined up meta data testing code for readability

Reviewed By: bixia

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

2 years agoFolding in the front end was replacing calls to LEN and dropping
Eric Schweitz [Wed, 9 Feb 2022 21:11:05 +0000 (13:11 -0800)]
Folding in the front end was replacing calls to LEN and dropping
arguments even in situations where the arguments are required to compute
the LEN value at runtime.

Add tests.

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

2 years ago[test] Replace `-analyze -divergence` with `-passes='print<divergence>'`
Arthur Eubanks [Thu, 10 Feb 2022 00:09:14 +0000 (16:09 -0800)]
[test] Replace `-analyze -divergence` with `-passes='print<divergence>'`

2 years ago[test] Remove one more unnecessary -analyze RUN line
Arthur Eubanks [Thu, 10 Feb 2022 00:05:43 +0000 (16:05 -0800)]
[test] Remove one more unnecessary -analyze RUN line

There is a new PM equivalent RUN line.

2 years ago[test] Test domtree validity with -verify-dom-info instead of -analyze
Arthur Eubanks [Wed, 9 Feb 2022 23:59:00 +0000 (15:59 -0800)]
[test] Test domtree validity with -verify-dom-info instead of -analyze

Verified that the test properly crashes without D16893's fix.

2 years agoFix comment after upstream: 9e08e9298059651e4f42eb608c3de9d4ad8004b2 - [ELF] Allow...
Ben Dunbobbin [Mon, 7 Feb 2022 14:34:31 +0000 (14:34 +0000)]
Fix comment after upstream: 9e08e9298059651e4f42eb608c3de9d4ad8004b2 - [ELF] Allow STV_PROTECTED shared definition to set exportDynamic?

2 years ago[test] Replace/remove some 'opt -analyze' RUN lines
Arthur Eubanks [Wed, 9 Feb 2022 23:49:53 +0000 (15:49 -0800)]
[test] Replace/remove some 'opt -analyze' RUN lines

2 years ago[test] Migrate '-analyze -cost-model' to '-passes=print<cost-model>'
Arthur Eubanks [Wed, 9 Feb 2022 23:25:18 +0000 (15:25 -0800)]
[test] Migrate '-analyze -cost-model' to '-passes=print<cost-model>'

2 years ago[ORC] Make LLJIT's destructor virtual.
Lang Hames [Wed, 9 Feb 2022 02:02:48 +0000 (13:02 +1100)]
[ORC] Make LLJIT's destructor virtual.

This allows LLLazyJIT instances to be safely owned by unique_ptr<LLJIT>s.

Reviewed By: lhames

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

2 years ago[gn build] Port 76cad51b
Arthur Eubanks [Wed, 9 Feb 2022 23:16:05 +0000 (15:16 -0800)]
[gn build] Port 76cad51b

2 years agoreplace clang LLVM_ENABLE_PLUGINS -> CLANG_PLUGIN_SUPPORT in tests
Jameson Nash [Mon, 7 Feb 2022 23:46:33 +0000 (18:46 -0500)]
replace clang LLVM_ENABLE_PLUGINS -> CLANG_PLUGIN_SUPPORT in tests

Ensure CLANG_PLUGIN_SUPPORT is compatible with llvm_add_library.
Fixes an issue noted in D111100.

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

2 years ago[DAG] Remove pointless std::function wrapper, NFC
Reid Kleckner [Wed, 9 Feb 2022 22:30:32 +0000 (14:30 -0800)]
[DAG] Remove pointless std::function wrapper, NFC

2 years ago[mlir] Add classes to define new TypeIDs at runtime
Mathieu Fehr [Wed, 9 Feb 2022 22:23:43 +0000 (23:23 +0100)]
[mlir] Add classes to define new TypeIDs at runtime

TypeIDAllocator enables the allocation of new TypeIDs at runtime,
that are unique during the lifetime of the allocator.

NonMovableTypeIDOwner is a class used to define a new TypeID for each instance
of a class, using the instance address. This class cannot be copied or moved.

Reviewed By: rriddle

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

2 years ago[Debuginfod] Flag-determine debuginfod lookups in llvm-symbolizer.
Daniel Thornburgh [Mon, 31 Jan 2022 22:22:22 +0000 (22:22 +0000)]
[Debuginfod] Flag-determine debuginfod lookups in llvm-symbolizer.

This change adds a pair of flags controlling whether llvm-symbolizer
attempts debuginfod lookups. Lookups are attempted if --debuginfod is
passed and disabled if --no-debuginfod is passed.

The default behavior is made more nuanced: debuginfod lookups are now
only attempted if an HTTP client is compiled in and at least one backing
debuginfod URL was configured via environment variable. Previously,
debuginfod lookups would always be attempted, even if there were no
chance that they could succeed.

Reviewed By: phosek

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

2 years agoUse functions with prototypes when appropriate; NFC
Aaron Ballman [Wed, 9 Feb 2022 22:13:53 +0000 (17:13 -0500)]
Use functions with prototypes when appropriate; NFC

A significant number of our tests in C accidentally use functions
without prototypes. This patch converts the function signatures to have
a prototype for the situations where the test is not specific to K&R C
declarations. e.g.,

  void func();

becomes

  void func(void);

This is the sixth batch of tests being updated (there are a significant
number of other tests left to be updated).

2 years ago[Symbolize] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after D118633
Fangrui Song [Wed, 9 Feb 2022 22:08:47 +0000 (14:08 -0800)]
[Symbolize] Fix -Wunused-variable in -DLLVM_ENABLE_ASSERTIONS=off builds after D118633

2 years ago[libcxx][test] optional's comparisons with optional are not portably constrained
Casey Carter [Wed, 29 Dec 2021 22:12:40 +0000 (14:12 -0800)]
[libcxx][test] optional's comparisons with optional are not portably constrained

so use them as concept test cases only with libc++.

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

2 years agoRevert "[DagCombine] Increase depth by number of operands to avoid a pathological...
Reid Kleckner [Wed, 9 Feb 2022 21:52:26 +0000 (13:52 -0800)]
Revert "[DagCombine] Increase depth by number of operands to avoid a pathological compile time."

Appears to be causing check-llvm to fail

This reverts commit 49ab760090514dcbf84bd9dc7429146c4ca578ef.

2 years ago[DWARFLinker] Include llvm/MC/MCSubtargetInfo.h
Fangrui Song [Wed, 9 Feb 2022 21:49:45 +0000 (13:49 -0800)]
[DWARFLinker] Include llvm/MC/MCSubtargetInfo.h

2 years ago[SCEV] Make SCEVUnionPredicate externally immutable [NFC]
Philip Reames [Wed, 9 Feb 2022 21:15:17 +0000 (13:15 -0800)]
[SCEV] Make SCEVUnionPredicate externally immutable [NFC]

This is the last major stepping stone before being able to allocate the node via the folding set allocator.  That will in turn allow more general SCEV predicate expression trees.

2 years ago[clang-format] Fix formatting of macro definitions with a leading comment.
Marek Kurdej [Mon, 7 Feb 2022 07:51:57 +0000 (08:51 +0100)]
[clang-format] Fix formatting of macro definitions with a leading comment.

Fixes https://github.com/llvm/llvm-project/issues/43206.

Reviewed By: HazardyKnusperkeks

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

2 years ago[clang-format] Fix formatting of the array form of delete.
Marek Kurdej [Wed, 9 Feb 2022 21:16:16 +0000 (22:16 +0100)]
[clang-format] Fix formatting of the array form of delete.

Fixes https://github.com/llvm/llvm-project/issues/53576.

There was an inconsistency in formatting of delete expressions.

Before:
```
delete (void*)a;
delete[](void*) a;
```

After this patch:
```
delete (void*)a;
delete[] (void*)a;
```

Reviewed By: HazardyKnusperkeks, owenpan

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

2 years ago[DagCombine] Increase depth by number of operands to avoid a pathological compile...
Alina Sbirlea [Thu, 3 Feb 2022 07:31:07 +0000 (23:31 -0800)]
[DagCombine] Increase depth by number of operands to avoid a pathological compile time.

We're hitting a pathological compile-time case, profiled to be in
DagCombiner::visitTokenFactor and many inserts into a SmallPtrSet.
It looks like one of the paths around findBetterNeighborChains is not
capped and leads to this.

This patch resolves the issue. Looking for feedback if this solution
looks reasonable.

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

2 years ago[lldb/crashlog] Fix arm64 register parsing on crashlog.py
Med Ismail Bennani [Tue, 8 Feb 2022 22:44:57 +0000 (14:44 -0800)]
[lldb/crashlog] Fix arm64 register parsing on crashlog.py

This patch fixes the register parser for arm64 crashlogs.

Compared to x86_64 crashlogs, the arm64 crashlogs nests the general
purpose registers into a separate dictionary within `thread_state`
dictionary. It uses the dictionary key as the the register number.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
2 years ago[lldb/test] Split Scripted Process test in multiple tests (NFC)
Med Ismail Bennani [Tue, 8 Feb 2022 22:44:43 +0000 (14:44 -0800)]
[lldb/test] Split Scripted Process test in multiple tests (NFC)

This splits the scripted process tests to be able to run in parallel
since some of test functions can take a very long time to run.

This also disables debug info testing.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
2 years ago[lldb/test] Fix TestScriptedProcess.py timeout on x86_64
Med Ismail Bennani [Tue, 8 Feb 2022 22:43:36 +0000 (14:43 -0800)]
[lldb/test] Fix TestScriptedProcess.py timeout on x86_64

This patch fixes a timeout issue on the ScriptedProcess test that was
happening on intel platforms. The timeout was due to a misreporting of
the StopInfo in the ScriptedThread that caused the ScriptedProcess to
never stop.

To solve this, this patch changes the way a ScriptedThread reports its
stop reason by making it more architecture specific. In order to do so,
this patch also refactors the ScriptedProcess & ScriptedThread
initializer methods to provide an easy access to the target architecture.

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

Signed-off-by: Med Ismail Bennani <medismail.bennani@gmail.com>
2 years ago[LLDB][NativePDB] fix that FindSymbolScope never finds scope of a symbol if it doesn...
Zequan Wu [Wed, 9 Feb 2022 21:19:29 +0000 (13:19 -0800)]
[LLDB][NativePDB] fix that FindSymbolScope never finds scope of a symbol if it doesn't open a scope

2 years ago[ConstraintElimination] Skip floating point compares. (NFC)
Florian Hahn [Wed, 9 Feb 2022 21:16:49 +0000 (21:16 +0000)]
[ConstraintElimination] Skip floating point compares. (NFC)

The solver only supports integer conditions. Adding floating point
compares to the worklist only adds extra work. Just skip them.

2 years ago[clang-format] Honour "// clang-format off" when using QualifierOrder.
Marek Kurdej [Wed, 9 Feb 2022 20:58:22 +0000 (21:58 +0100)]
[clang-format] Honour "// clang-format off" when using QualifierOrder.

Fixes https://github.com/llvm/llvm-project/issues/53643.

Reviewed By: MyDeveloperDay, HazardyKnusperkeks, owenpan

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

2 years ago[SCEV] Remove a direct call to SCEVUnionPredicate::add [NFC]
Philip Reames [Wed, 9 Feb 2022 21:03:42 +0000 (13:03 -0800)]
[SCEV] Remove a direct call to SCEVUnionPredicate::add [NFC]

2 years ago[MLIR][Presburger] Disambiguate call to floor
Rainer Orth [Wed, 9 Feb 2022 21:01:55 +0000 (22:01 +0100)]
[MLIR][Presburger] Disambiguate call to floor

While testing LLVM 14.0.0 rc1 on Solaris, compilation of `FAIL`ed with

  /var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/Analysis/Presburger/Utils.cpp: In lambda function:
  /var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/Analysis/Presburger/Utils.cpp:48:58: error: call of overloaded ‘floor(int64_t)’ is ambiguous
     48 |                  [gcd](int64_t &n) { return floor(n / gcd); });
        |                                                          ^
  ...
  /usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.3.0/include-fixed/iso/math_iso.h:201:21:
note: candidate: ‘long double std::floor(long double)’
    201 |  inline long double floor(long double __X) { return __floorl(__X); }
        |                     ^~~~~
  /usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.3.0/include-fixed/iso/math_iso.h:165:15:
note: candidate: ‘float std::floor(float)’
    165 |  inline float floor(float __X) { return __floorf(__X); }
        |               ^~~~~
  /usr/gcc/10/lib/gcc/sparcv9-sun-solaris2.11/10.3.0/include-fixed/iso/math_iso.h:78:15:
note: candidate: ‘double std::floor(double)’
     78 | extern double floor __P((double));
        |               ^~~~~

The same issue had already occured in the past, cf. D108750
<https://reviews.llvm.org/D108750>, and the solution is the same: cast the
`floor` arg to `double`.

Tested on `amd64-pc-solaris2.11` and `sparcv9-sun-solaris2.11`.

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

2 years ago[libunwind] Avoid a warning in 32 bit builds. NFC.
Martin Storsjö [Wed, 9 Feb 2022 17:36:58 +0000 (19:36 +0200)]
[libunwind] Avoid a warning in 32 bit builds. NFC.

The warning was introduced with the recently merged SPARCv9
support in 2b9554b8850192bdd86c02eb671de1d866df8d87.

The cast matches the existing surrounding cases.

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

2 years ago[mlir][sparse] Rename index_t to index_type again
Rainer Orth [Wed, 9 Feb 2022 20:59:52 +0000 (21:59 +0100)]
[mlir][sparse] Rename index_t to index_type again

While testing LLVM 14.0.0 rc1 on Solaris, I ran into a compile failure:

                   from /var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp:22:
  /usr/include/sys/types.h:103:16: error: conflicting declaration ‘typedef short int index_t’
    103 | typedef short  index_t;
        |                ^~~~~~~
  In file included from
/var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/lib/ExecutionEngine/SparseTensorUtils.cpp:17:
  /var/llvm/llvm-14.0.0-rc1/rc1/llvm-project/mlir/include/mlir/ExecutionEngine/SparseTensorUtils.h:26:7:
note: previous declaration as ‘using index_t = uint64_t’
     26 | using index_t = uint64_t;
        |       ^~~~~~~

The same issue had already occured in the past and fixed in D72619
<https://reviews.llvm.org/D72619>.  More detailed explanation can also be
found there.

Tested on `amd64-pc-solaris2.11` and `sparcv9-solaris2.11`.

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

2 years ago[SCEV] Unwind SCEVUnionPredicate from getPredicatedBackedgeTakenCount [NFC]
Philip Reames [Wed, 9 Feb 2022 20:16:10 +0000 (12:16 -0800)]
[SCEV] Unwind SCEVUnionPredicate from getPredicatedBackedgeTakenCount [NFC]

For those curious, the whole reason for tracking the predicate set seperately as opposed to just immediately registering the dependencies appears to be allowing the printing code to print a result without changing the PSE state.  It's slightly questionable if this justifies the complexity, but since we can preserve it with local ugliness, I did so.

2 years ago[libc] undefined reference in LibcTest.cpp
Guillaume Chatelet [Tue, 8 Feb 2022 14:52:50 +0000 (14:52 +0000)]
[libc] undefined reference in LibcTest.cpp

GCC complains about undefined reference in LibcTest.cpp and indeed the wrong version of the template has been explicitly instanciated.
This is necessary to get llvm-libc compile with GCC.

Mentionning D119002 here for navigability.

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

2 years ago[flang] Upstream runtime changes for inquiry intrinsics
Peter Steinfeld [Wed, 9 Feb 2022 19:17:18 +0000 (11:17 -0800)]
[flang] Upstream runtime changes for inquiry intrinsics

This change adds runtime routines and tests for LBOUND when passed a DIM argument, SIZE, and UBOUND when not passed a DIM argument.

Associated changes for lowering have already been merged into fir-dev.

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

2 years ago[Libomptarget] Increase stack size for bug49779 test
Joseph Huber [Wed, 9 Feb 2022 18:43:56 +0000 (13:43 -0500)]
[Libomptarget] Increase stack size for bug49779 test

The 'bug49779.cpp' test has been failing recently. This is because the
runtime is sufficiently complex when using nested parallelism without
optimizations that the CUDA tools cannot statically determine the stack
size. Because of this the kernel can exceed the thread stack size and
crash. Work around this using the 'LIBOMPTARGET_STACK_SIZE' environment
variable and add an FAQ entry for this situation.

Fixes #53670

Reviewed By: Meinersbur

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

2 years ago[RISCV] Teach RISCVDAGToDAGISel::selectShiftMask to replace sub from constant with...
Craig Topper [Wed, 9 Feb 2022 20:03:22 +0000 (12:03 -0800)]
[RISCV] Teach RISCVDAGToDAGISel::selectShiftMask to replace sub from constant with neg.

If the shift amount is (sub C, X) where C is 0 modulo the size of
the shift, we can replace it with neg or negw.

Similar is is done for AArch64 and X86.

Reviewed By: khchen

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

2 years ago[mlir] Use sparse-compiler pass in sparse benchmark
Saurabh Jha [Wed, 9 Feb 2022 20:10:30 +0000 (20:10 +0000)]
[mlir] Use sparse-compiler pass in sparse benchmark

This patch uses sparse-compiler option in mlir sparse tensor benchmark

Reviewed By: aartbik

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

2 years ago[SCEV] Remove conversion to SCEVUnionPredicate in ExitNotTakenInfo [NFC]
Philip Reames [Wed, 9 Feb 2022 20:04:25 +0000 (12:04 -0800)]
[SCEV] Remove conversion to SCEVUnionPredicate in ExitNotTakenInfo [NFC]

This removes one of the places where we mutate an existing union predicate.

2 years ago[InstCombine] improve test name and cleanup; NFC
Sanjay Patel [Wed, 9 Feb 2022 20:05:12 +0000 (15:05 -0500)]
[InstCombine] improve test name and cleanup; NFC

The last test was intended to be a negative test with D114272,
but a more general fold can reduce it, so that is renamed.

These are all single-block tests, so remove the unnecessary labels.

2 years agoRevert "[LV] Remove `LoopVectorizationCostModel::useEmulatedMaskMemRefHack()`"
David Green [Wed, 9 Feb 2022 20:02:54 +0000 (20:02 +0000)]
Revert "[LV] Remove `LoopVectorizationCostModel::useEmulatedMaskMemRefHack()`"

This reverts commit 77a0da926c9ea86afa9baf28158d79c7678fc6b9 as we've
received multiple reports of this significantly impacting performance,
in ways that don't seem to just be target specific cost models going
wrong. I would offer some reproducers, but the test changes here seem to
be full of them!

Reverting for now and hopefully we can remove the "hack" more carefully
as we go.

2 years ago[DWARF][codegen] Fix for Aranges when split inlining is present
Alexander Yermolovich [Wed, 9 Feb 2022 19:51:32 +0000 (11:51 -0800)]
[DWARF][codegen] Fix for Aranges when split inlining is present

When we enable -fsplit-dwarf-inlining we end up with two entries
in .debug_aranges for each CU. Because it processes Skeleton CU
inline information and DWO CU.

Furthermore address calculations were incorrect because we were processing sections in Skeleton CU.

Reviewed By: dblaikie

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

2 years ago[RISCV] Add a really basic cost model for SK_Splice.
Craig Topper [Wed, 9 Feb 2022 19:37:26 +0000 (11:37 -0800)]
[RISCV] Add a really basic cost model for SK_Splice.

While testing scalable vectors I found that if we generate a
vector splice intrinsic and run the code through the loop unroller,
we'll crash due to an invalid cost.

This adds a basic cost based on the 2 slide instructions used by the
lowering in D119303.

We probably need to factor LMUL into this, but that's true for
arithmetic instructions too. So I've ignored for the moment.

Reviewed By: ABataev

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

2 years ago[lldb] Disable failing test on Windows
Andy Yankovsky [Wed, 9 Feb 2022 19:40:50 +0000 (20:40 +0100)]
[lldb] Disable failing test on Windows

Test was introduced in https://reviews.llvm.org/D113498.

2 years ago[MC] clang-format llvm/MC/MCContext.h. NFC
Fangrui Song [Wed, 9 Feb 2022 19:38:28 +0000 (11:38 -0800)]
[MC] clang-format llvm/MC/MCContext.h. NFC

People get clang-format lints when changing declarations in the large block,
e.g. ef736a1c39f27ef4777bbe6cf3af68c1fd588c8a Cleanup LLVMMC headers.
Just format it to reduce hassle in the future.

2 years ago[RISCV][VP] Lower VP_FMA to RVV instructions.
Craig Topper [Wed, 9 Feb 2022 19:08:24 +0000 (11:08 -0800)]
[RISCV][VP] Lower VP_FMA to RVV instructions.

We already had FMA_VL node, but we didn't have masked patterns.
I have not added the fneg variations. I'll do those after I add
llvm.vp.fneg.

Reviewed By: frasercrmck

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

2 years ago[NFC] Fix sign-compare warning in GrammarBNF thanks to int promotion
Erich Keane [Wed, 9 Feb 2022 19:25:58 +0000 (11:25 -0800)]
[NFC] Fix sign-compare warning in GrammarBNF thanks to int promotion

2 years ago[RISCV] Lower VP_FNEG to RVV instructions
Craig Topper [Wed, 9 Feb 2022 18:56:39 +0000 (10:56 -0800)]
[RISCV] Lower VP_FNEG to RVV instructions

Reviewed By: frasercrmck

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

2 years ago[ELF][docs] Remove ignore -dc from ld.lld.1
Fangrui Song [Wed, 9 Feb 2022 18:38:36 +0000 (10:38 -0800)]
[ELF][docs] Remove ignore -dc from ld.lld.1

2 years ago[ELF] Remove obscure -dp and GNU ld incompatible --[no-]define-common, ignore -d/-dc
Fangrui Song [Wed, 9 Feb 2022 18:35:53 +0000 (10:35 -0800)]
[ELF] Remove obscure -dp and GNU ld incompatible --[no-]define-common, ignore -d/-dc

https://maskray.me/blog/2022-02-06-all-about-common-symbols#no-define-common

In GNU ld, -dc only affects -r links and causes COMMON symbols to be allocated.
--no-define-common is defined to make COMMON symbols undefined for -shared.
AIUI --no-define-common is a workaround around glibc 2.1 time and not really useful.

gold confuses --define-common with -d/FORCE_COMMON_ALLOCATION and implements
--define-common with -d semantics. Its --no-define-common is incompatible with
GNU ld.

In ld.lld, b2a23cf3c08cee45614f27eb2c6d044e506aa6a6 fixed the default -r
behavior for COMMON symbols but ported the incompatible gold
--[no-]define-common. To the best of my knowledge, no project uses -dp
--[no-]define-common. So just remove these options.

-d/-dc are used by the following projects:

* grub grub-core/genmod.sh.in uses -Wl,-r,-d (https://lists.gnu.org/archive/html/grub-devel/2022-02/msg00088.html)
* FreeBSD crunchgen uses -Wl,-dc (https://reviews.freebsd.org/D34215)

A no-op implementation works for them. Only when a program inspects relocatable
output by itself and does not recognize COMMON symbols, there may be a problem.
This is an extremely unlikely case.

Reviewed By: peter.smith

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

2 years ago[SCEV] Add interface for constructing generic SCEVComparePredicate [NFC}
Philip Reames [Tue, 8 Feb 2022 19:39:22 +0000 (11:39 -0800)]
[SCEV] Add interface for constructing generic SCEVComparePredicate [NFC}

2 years ago[ConstraintElimination] Remove redundant lookup (NFC).
Florian Hahn [Wed, 9 Feb 2022 18:00:03 +0000 (18:00 +0000)]
[ConstraintElimination] Remove redundant lookup (NFC).

2 years ago[mlir][GPU] Add ShuffleOp builder for constant offset/width
Matthias Springer [Wed, 9 Feb 2022 16:21:55 +0000 (01:21 +0900)]
[mlir][GPU] Add ShuffleOp builder for constant offset/width

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

2 years ago[gn build] Port f1984b143367
LLVM GN Syncbot [Wed, 9 Feb 2022 17:34:07 +0000 (17:34 +0000)]
[gn build] Port f1984b143367

2 years ago[gn build] Port 46a6f5ae148a
LLVM GN Syncbot [Wed, 9 Feb 2022 17:34:06 +0000 (17:34 +0000)]
[gn build] Port 46a6f5ae148a

2 years ago[ConstraintElimination] Move some definitions closer to uses (NFC).
Florian Hahn [Wed, 9 Feb 2022 17:29:48 +0000 (17:29 +0000)]
[ConstraintElimination] Move some definitions closer to uses (NFC).

2 years ago[LoopLoadElim] Support opaque pointers
Arthur Eubanks [Wed, 9 Feb 2022 17:22:21 +0000 (09:22 -0800)]
[LoopLoadElim] Support opaque pointers

With typed pointers the pointer operand type checks the address space
and the load/store type. With opaque pointers we have to check the
load/store type separately.

2 years ago[OpaquePtr][LoopAccessAnalysis] Support opaque pointers
Arthur Eubanks [Tue, 8 Feb 2022 02:16:08 +0000 (18:16 -0800)]
[OpaquePtr][LoopAccessAnalysis] Support opaque pointers

Previously we relied on the pointee type to determine what type we need
to do runtime pointer access checks.

With opaque pointers, we can access a pointer with more than one type,
so now we keep track of all the types we're accessing a pointer's
memory with.

Also some other minor getPointerElementType() removals.

Reviewed By: #opaque-pointers, nikic

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

2 years ago[gn build] Port a1862d78eb45
Arthur Eubanks [Wed, 9 Feb 2022 17:10:54 +0000 (09:10 -0800)]
[gn build] Port a1862d78eb45

2 years ago[AMDGPU] Remove dead code from shrinkScalarLogicOp
Jay Foad [Wed, 9 Feb 2022 17:05:19 +0000 (17:05 +0000)]
[AMDGPU] Remove dead code from shrinkScalarLogicOp

It looks like this code has been dead since shrinkScalarLogicOp
was introduced in svn r348601.

2 years ago[lldb] Account for extra threads in TestGdbRemoteThreadsInStopReply on windows
Pavel Labath [Wed, 9 Feb 2022 16:38:27 +0000 (17:38 +0100)]
[lldb] Account for extra threads in TestGdbRemoteThreadsInStopReply on windows

After 9611282c, TestGdbRemoteThreadsInStopReply is not non-deterministic
-- instead it deterministically fails due to extra threads created by
std::thread thread pool.

Adjust the tests to account for that.

2 years ago[lldb] Constant-resolve operands to `getelementptr`
Andy Yankovsky [Tue, 9 Nov 2021 18:41:56 +0000 (19:41 +0100)]
[lldb] Constant-resolve operands to `getelementptr`

Operands to `getelementptr` can be constants or constant expressions. Check
that all operands can be constant-resolved and resolve them during the
evaluation. If some operands can't be resolved as constants -- the expression
evaluation will fallback to JIT.

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

Reviewed By: #lldb, shafik

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

2 years ago[libc++] Enables put_long_double test for glibc.
Mark de Wever [Tue, 8 Feb 2022 17:32:08 +0000 (18:32 +0100)]
[libc++] Enables put_long_double test for glibc.

Glibc adds a +-sign for NaN-values when showpos fmtflags are set.

[tab:ios.fmtflags]
showpos generates a + sign in non-negative generated numeric output

Since NaNs aren't negative this behaviour seems correct. Enable the test
for glibc and add ifdefs to make sure the existing tests still pass.

This was noticed while working on D118971.

Reviewed By: #libc, ldionne

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

2 years ago[libc++][format][nfc] Header cleanup.
Mark de Wever [Thu, 3 Feb 2022 18:02:36 +0000 (19:02 +0100)]
[libc++][format][nfc] Header cleanup.

Remove the unneeded macro protection, forward declarations, and
includes.

Reviewed By: #libc, Quuxplusone, ldionne, philnik

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

2 years ago[RISCV] Pre-process integer ISD::SPLAT_VECTOR to RISCISD::VMV_V_X_VL before isel.
Craig Topper [Wed, 9 Feb 2022 16:05:42 +0000 (08:05 -0800)]
[RISCV] Pre-process integer ISD::SPLAT_VECTOR to RISCISD::VMV_V_X_VL before isel.

This allows us to remove some isel patterns that exist for both
operations. Saving nearly 3000 bytes from the isel table.

Reviewed By: frasercrmck

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

2 years ago[libc++][nfc] Use TEST_HAS_NO_WIDE_CHARACTERS.
Mark de Wever [Wed, 2 Feb 2022 18:28:04 +0000 (19:28 +0100)]
[libc++][nfc] Use TEST_HAS_NO_WIDE_CHARACTERS.

This avoids using an libc++ internal macro in our tests.

Reviewed By: #libc, Quuxplusone

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

2 years ago[VP] llvm.vp.fneg intrinsic and LangRef
Craig Topper [Wed, 9 Feb 2022 15:54:07 +0000 (07:54 -0800)]
[VP] llvm.vp.fneg intrinsic and LangRef

Reviewed By: frasercrmck

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

2 years ago[nfc][mlgo] Make error message macro
Mircea Trofin [Wed, 9 Feb 2022 15:25:37 +0000 (07:25 -0800)]
[nfc][mlgo] Make error message macro

`llvm_unreachable` is itself a macro, so using a constant for its
message renders that constant unused in non-debug builds.

2 years ago[lldb] Stabilize threaded windows lldb-server tests
Pavel Labath [Wed, 9 Feb 2022 15:14:15 +0000 (16:14 +0100)]
[lldb] Stabilize threaded windows lldb-server tests

The tests enabled in 9e699595 are not passing reliably -- sometimes they
report seeing fewer threads than expected.

Based on my (limited) research, this is not a lldb bug, but simply a
consequence of the operating system reporting their presence
asynchronously -- they're reported when they are scheduled to run (or
something similar), and not at the time of the CreateThread call.

To fix this, I add some additional synchronization to the test inferior,
which makes sure that the created thread is alive before continuing to
do other things.

2 years ago[lldb] Simplify SBCommandInterpreter::SourceInitFileInHomeDirectory
Pavel Labath [Wed, 9 Feb 2022 13:56:45 +0000 (14:56 +0100)]
[lldb] Simplify SBCommandInterpreter::SourceInitFileInHomeDirectory

just have it delegate to the new overload.

2 years ago[SLP][NFC]Fix comment, NFC.
Alexey Bataev [Wed, 9 Feb 2022 15:00:43 +0000 (07:00 -0800)]
[SLP][NFC]Fix comment, NFC.

2 years ago[OpenCL][Docs] Update OpenCL 3.0 status info
Sven van Haastregt [Wed, 9 Feb 2022 15:12:49 +0000 (15:12 +0000)]
[OpenCL][Docs] Update OpenCL 3.0 status info

Update the table to reflect recently committed work.

2 years ago[NFC] Fixing test requirements I broke
Chris Bieneman [Wed, 9 Feb 2022 15:11:17 +0000 (09:11 -0600)]
[NFC] Fixing test requirements I broke

I broke these in 7a0cbe11fb26, thanks @ikudrin for catching it!

2 years ago[libc++] Try to fix the quoting of -isystem on Windows bots
Louis Dionne [Wed, 9 Feb 2022 15:07:27 +0000 (10:07 -0500)]
[libc++] Try to fix the quoting of -isystem on Windows bots

2 years ago[X86] Refresh funnel/rotate AVX512 VBMI tests
Simon Pilgrim [Wed, 9 Feb 2022 15:04:27 +0000 (15:04 +0000)]
[X86] Refresh funnel/rotate AVX512 VBMI tests

Assume that if VBMI2 is enabled then VBMI is as well - correctly shows the fallback and widening code that real world targets will actually see

2 years ago[AArch64][SVE] NFC: Add test file for predicate vector reductions.
Sander de Smalen [Mon, 24 Jan 2022 17:45:39 +0000 (17:45 +0000)]
[AArch64][SVE] NFC: Add test file for predicate vector reductions.

This adds some tests for vector reductions which can and should
be implemented with ptest as opposed to promoted ANDV/ORV reduction.

2 years ago[AArch64] NFC: Autogen check lines for sve-setcc.ll
Sander de Smalen [Fri, 4 Feb 2022 08:46:26 +0000 (08:46 +0000)]
[AArch64] NFC: Autogen check lines for sve-setcc.ll

2 years ago[DAGCombiner] Fold `ty1 extract_vector(ty2 splat(V)) -> ty1 splat(V)`
Sander de Smalen [Wed, 9 Feb 2022 09:54:53 +0000 (09:54 +0000)]
[DAGCombiner] Fold `ty1 extract_vector(ty2 splat(V)) -> ty1 splat(V)`

This seems like an obvious fold, which leads to a few improvements.

Reviewed By: david-arm

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

2 years ago[mlir][nfc] Expose linalg tiling helpers.
Alexander Belyaev [Wed, 9 Feb 2022 14:20:04 +0000 (15:20 +0100)]
[mlir][nfc] Expose linalg tiling helpers.

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

2 years ago[flang] Add type conversion for !fir.box<none>
Valentin Clement [Wed, 9 Feb 2022 14:11:55 +0000 (15:11 +0100)]
[flang] Add type conversion for !fir.box<none>

`none` is used in `fir.box` type to specify a polymorphic type.
This patch add the conversion from `!fir.box<none>` to LLVM.

This patch is part of the upstreaming effort from fir-dev branch.

Reviewed By: awarzynski

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

Co-authored-by: Eric Schweitz <eschweitz@nvidia.com>
Co-authored-by: Jean Perier <jperier@nvidia.com>
2 years agoUse functions with prototypes when appropriate; NFC
Aaron Ballman [Wed, 9 Feb 2022 14:10:10 +0000 (09:10 -0500)]
Use functions with prototypes when appropriate; NFC

A significant number of our tests in C accidentally use functions
without prototypes. This patch converts the function signatures to have
a prototype for the situations where the test is not specific to K&R C
declarations. e.g.,

  void func();

becomes

  void func(void);

This is the fifth batch of tests being updated (there are a significant
number of other tests left to be updated).

Note, the behavior of -ast-print is broken. It prints functions with a
prototype (void) as if they have no prototype () in C. Some tests need
to disable strict prototype checking when recompiling the results of an
-ast-print invocation.

2 years ago[OpenMP][libomp] Replace accidental VLA with KMP_ALLOCA
Jonathan Peyton [Wed, 9 Feb 2022 14:04:47 +0000 (08:04 -0600)]
[OpenMP][libomp] Replace accidental VLA with KMP_ALLOCA

MSVC does not support variable length arrays. Replace with KMP_ALLOCA
which is already used in the same file for stack-allocated variables.

2 years ago[runtimes] Remove support for standalone builds
Louis Dionne [Tue, 8 Feb 2022 16:38:29 +0000 (11:38 -0500)]
[runtimes] Remove support for standalone builds

Standalone build have been deprecated for some time now, so this
commit removes support for those builds entirely from libc++, libc++abi
and libunwind.

This, along with the removal of other legacy ways to build, will allow
for major build system simplifications.

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

2 years ago[libc++] Avoid -Wmacro-redefined in libc++ headers in the legacy test config
Louis Dionne [Wed, 9 Feb 2022 13:38:06 +0000 (08:38 -0500)]
[libc++] Avoid -Wmacro-redefined in libc++ headers in the legacy test config

2 years agoAdd missing MC includes in bolt/
serge-sans-paille [Wed, 9 Feb 2022 13:26:30 +0000 (08:26 -0500)]
Add missing MC includes in bolt/

Changes needed after ef736a1c39f27ef4 that removes some implicit
dependencies from MrCV headers.

2 years ago[Bitcode] Fix size check for DIImportedEntity record
Nikita Popov [Wed, 9 Feb 2022 13:19:24 +0000 (14:19 +0100)]
[Bitcode] Fix size check for DIImportedEntity record

This was using && instead of ||.

2 years ago[Bitcode] Check minimum size of constant GEP record
Nikita Popov [Wed, 9 Feb 2022 13:14:04 +0000 (14:14 +0100)]
[Bitcode] Check minimum size of constant GEP record

Checking this early, because we may end up reading up to two
records before the operands.

2 years ago[LLDB] Port toolchain-msvc.test for Arm/AArch4 Windows
Muhammad Omair Javaid [Wed, 9 Feb 2022 12:35:33 +0000 (17:35 +0500)]
[LLDB] Port toolchain-msvc.test for Arm/AArch4 Windows

This patch updates toolchain-msvc.test to cater for Arm64 windows platform.

Reviewed By: labath

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

2 years ago[X86] TCRETURNmi fix for 32bit platform
Tong Zhang [Wed, 9 Feb 2022 11:51:57 +0000 (19:51 +0800)]
[X86] TCRETURNmi fix for 32bit platform

This fix is similar to 3cf3ffce240e("Fix the TCRETURNmi64 bug differently.")

after allocating register for index+base, we will only have one register left

This bug affects linux kernel compilation for x86 target. Error happens when compiling kmod_si476x_core.

clang complains:
    error: ran out of registers during register allocation

The full command is:

clang -Wp,-MMD,drivers/mfd/.si476x-cmd.o.d  -nostdinc -isystem /opt/toolchain/main/lib/clang/14.0.0/include -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -Qunused-arguments -fmacro-prefix-map=./= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -no-integrated-as --prefix=/usr/bin/ -Werror=unknown-warning-option -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m32 -msoft-float -mregparm=3 -freg-struct-return -fno-pic -mstack-alignment=4 -march=atom -mtune=atom -mtune=generic -Wa,-mtune=generic32 -ffreestanding -Wno-sign-compare -fno-asynchronous-unwind-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-address-of-packed-member -O2 -Wframe-larger-than=1024 -fno-stack-protector -Wno-format-invalid-specifier -Wno-gnu -mno-global-merge -Wno-unused-but-set-variable -Wno-unused-const-variable -fomit-frame-pointer -ftrivial-auto-var-init=pattern -fno-stack-clash-protection -falign-functions=32 -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-array-bounds -fno-strict-overflow -fno-stack-check -Werror=date-time -Werror=incompatible-pointer-types -Wno-initializer-overrides -Wno-format -Wno-sign-compare -Wno-format-zero-length -Wno-pointer-to-enum-cast -Wno-tautological-constant-out-of-range-compare     -DKBUILD_MODFILE='"drivers/mfd/si476x-core"' -DKBUILD_BASENAME='"si476x_cmd"' -DKBUILD_MODNAME='"si476x_core"' -D__KBUILD_MODNAME=kmod_si476x_core -c -o drivers/mfd/si476x-cmd.o drivers/mfd/si476x-cmd.c

-------------

LLVM cannot compile the following code for x86 32bit target, the reason is tail call(TCRETURNmi) is using 2 registers for index+base and we want to use more than one registers for passing function args and that is impossible.
This fix is similar to 3cf3ffce240e("Fix the TCRETURNmi64 bug differently.").
We will only use tail call when it is using <=1 registers for passing args.

```
struct BIG_PARM {
int ver;
};

static struct {
int (*foo)  (struct BIG_PARM* a, void *b);
int (*bar)  (struct BIG_PARM* a);
int (*zoo0) (void);
int (*zoo1) (void);
int (*zoo2) (void);
int (*zoo3) (void);
int (*zoo4) (void);
} vtable[] = {
[0] = {
.foo = (int (*)(struct BIG_PARM* a, void *b))0xdeadbeef,
},
};

int something(struct BIG_PARM *a, void* b) {
return vtable[a->ver].foo(a,b);
}

```

```
$ clang -std=gnu89 -m32 -mregparm=3 -mtune=generic -fno-strict-overflow -O2 -c t0.c -o t0.c.o
error: ran out of registers during register allocation
1 error generated.
```

Reviewed By: pengfei

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