platform/upstream/llvm.git
2 years ago[CMake] Add `CLANG_ENABLE_HLSL` CMake option
Chris Bieneman [Tue, 27 Sep 2022 02:44:13 +0000 (21:44 -0500)]
[CMake] Add `CLANG_ENABLE_HLSL` CMake option

The HLSL support in clang is in progress and not fully functioning. As
such we don't want to install the related optional build components by
default (yet), but we do need an option to build and install them
locally for testing and for some key users.

This adds the `CLANG_ENABLE_HLSL` option which is off by default and can
be enabled to install the HLSL clang headers and the clang-dxc symlink.

Reviewed By: phosek

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

2 years ago[Hexagon] Move function to a different class, NFC
Krzysztof Parzyszek [Tue, 27 Sep 2022 17:03:44 +0000 (10:03 -0700)]
[Hexagon] Move function to a different class, NFC

"Sector" is a concept from AlignVectors, so the check for it
should be there.

2 years ago[Driver] Silence a -Wparentheses error. NFC
Craig Topper [Tue, 27 Sep 2022 17:25:18 +0000 (10:25 -0700)]
[Driver] Silence a -Wparentheses error. NFC

2 years agoMove allocas converted from __kmpc_alloc_shared to entry block.
Doru Bercea [Tue, 27 Sep 2022 01:51:17 +0000 (01:51 +0000)]
Move allocas converted from __kmpc_alloc_shared to entry block.

2 years ago[libcxx] Make stdatomic.h work when included from a C source file
Gergely Nagy [Tue, 27 Sep 2022 11:59:55 +0000 (07:59 -0400)]
[libcxx] Make stdatomic.h work when included from a C source file

If a C source file includes the libc++ stdatomic.h, compilation will
break because (a) the C++ standard check will fail (which is expected),
and (b) `_LIBCPP_COMPILER_CLANG_BASED` won't be defined because the
logic defining it in `__config` is guarded by a `__cplusplus` check, so
we'll end up with a blank header. Move the detection logic outside of
the `__cplusplus` check to make the second check pass even in a C context
when you're using Clang. Note that `_LIBCPP_STD_VER` is not defined when
in C mode, hence stdatomic.h needs to check if in C++ mode before using
that macro to avoid a warning.

In an ideal world, a C source file wouldn't be including the libc++
header directory in its search path, so we'd never have this issue.
Unfortunately, certain build environments make this hard to guarantee,
and in this case it's easy to tweak this header to make it work in a C
context, so I'm hoping this is acceptable.

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

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

2 years ago[mlir][spirv] Use "SPIR-V" in the doc after dialect renaming
Lei Zhang [Tue, 27 Sep 2022 17:08:22 +0000 (13:08 -0400)]
[mlir][spirv] Use "SPIR-V" in the doc after dialect renaming

2 years ago[Driver] Prevent Mips specific code from claiming -mabi argument on other targets.
Craig Topper [Tue, 27 Sep 2022 17:04:30 +0000 (10:04 -0700)]
[Driver] Prevent Mips specific code from claiming -mabi argument on other targets.

Fixes PR57976.

Reviewed By: erichkeane, arichardson, MaskRay

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

2 years ago[ORC][JITLink] Retain Weak flags in JITDylib interfaces, propagate to LinkGraph.
Lang Hames [Tue, 27 Sep 2022 15:59:58 +0000 (08:59 -0700)]
[ORC][JITLink] Retain Weak flags in JITDylib interfaces, propagate to LinkGraph.

Previously we stripped Weak flags from JITDylib symbol table entries once they
were resolved (there was no particularly good reason for this). Now we want to
retain them and query them when setting the Linkage on external symbols in
LinkGraphs during symbol resolution (this was the motivation for 75404e9ef88).
Making weak linkage of external definitions discoverable in the LinkGraph will
in turn allow future plugins to implement correct handling for them (by
recording locations that depend on exported weak definitions and pointing all
of these at one chosen definition at runtime).

2 years ago[JITLink] Fix typo in debugging output.
Lang Hames [Tue, 27 Sep 2022 15:37:15 +0000 (08:37 -0700)]
[JITLink] Fix typo in debugging output.

2 years ago[lldb][TypeSystemClang] Honor DW_AT_rvalue_reference when creating C++ FunctionPrototypes
Michael Buch [Mon, 26 Sep 2022 16:38:37 +0000 (18:38 +0200)]
[lldb][TypeSystemClang] Honor DW_AT_rvalue_reference when creating C++ FunctionPrototypes

Currently funciton lookup in the expression evaluator
fails to disambiguate member functions the are overloaded
on lvalue/rvalue reference-qualifiers. This happens because
we unconditionally set a `FunctionPrototype`s
`ExtProtoInfo::RefQualifier` to `RQ_None`. We lose
the ref-qualifiers in the synthesized AST and `clang::Sema`
fails to pick a correct overload candidate.

DWARF emits information about a function's ref-qualifiers
in the form of a boolean `DW_AT_rvalue_reference` (for rvalues)
and `DW_AT_reference` (for lvalues).

This patch sets the `FunctionPrototype::ExtProtoInfo::RefQualifier`
based on the DWARF attributes above.

**Testing**

* Added API test

llvm/llvm-project issue #57866

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

2 years ago[VP][RISCV] Add vp.fmuladd.
Craig Topper [Tue, 27 Sep 2022 16:35:21 +0000 (09:35 -0700)]
[VP][RISCV] Add vp.fmuladd.

Expanded in SelectionDAGBuilder similar to llvm.fmuladd.

Reviewed By: frasercrmck, simoll

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

2 years ago[mlir][LLVMIR] Fix incorrect result type from llvm.fcmp
Min-Yih Hsu [Wed, 3 Aug 2022 21:08:33 +0000 (14:08 -0700)]
[mlir][LLVMIR] Fix incorrect result type from llvm.fcmp

If any of the operands for FCmpOp is a vector, returns a vector<Nxi1>,
rather than an i1 type result.

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

2 years ago[mlir][ExecutionEngine] Remove ScopedContext from ROCm wrappers
Krzysztof Drewniak [Tue, 27 Sep 2022 16:13:07 +0000 (16:13 +0000)]
[mlir][ExecutionEngine] Remove ScopedContext from ROCm wrappers

The push/pop context APIs are deprecated in HIP, and keeping the
default device set is handled in IHP using hipSetDevice().

Reviewed By: ThomasRaoux

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

2 years ago[ObjC][ARC] Fix target register for call expanded from CALL_RVMARKER on Windows
Stefan Gränitz [Tue, 27 Sep 2022 16:43:26 +0000 (18:43 +0200)]
[ObjC][ARC] Fix target register for call expanded from CALL_RVMARKER on Windows

Fix regression https://github.com/llvm/llvm-project/issues/56952 for Clang CodeGen on Windows. In the Windows ABI the instruction sequence that is expanded from CALL_RVMARKER should use RCX as target register and not RDI.

Reviewed By: rnk, fhahn

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

2 years ago[mlir] specify the values when notifying about op replacement
Alex Zinenko [Tue, 27 Sep 2022 16:08:44 +0000 (16:08 +0000)]
[mlir] specify the values when notifying about op replacement

It is useful for PatternRewriter listeners to know the values that are
replacing the op in addition to only the fact of the op being replaced
for being able to keep track of changes or for debugging.

Reviewed By: Mogball

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

2 years ago[AArch64] Remove incorrect zero element insert-bitcast patterns
David Green [Tue, 27 Sep 2022 16:08:17 +0000 (17:08 +0100)]
[AArch64] Remove incorrect zero element insert-bitcast patterns

These two patterns are not working as intended, as shown in D134022.
They need to insert the value into the new register, not override it.

2 years ago[LinkerWrapper] Fix optimized debugging builds for NVPTX LTO
Joseph Huber [Mon, 26 Sep 2022 18:39:11 +0000 (13:39 -0500)]
[LinkerWrapper] Fix optimized debugging builds for NVPTX LTO

The ptxas assembler does not allow the `-g` flag along with
optimizations. Normally this is degraded to line info in the driver, but
when using LTO we did not have this step and the linker wrapper was not
correctly degrading the option. Note that this will not work if the user
does not pass `-g` again to the linker invocation. That will require
setting some flags in the binary to indicate that debugging was used
when building.

This fixes #57990

Reviewed By: jdoerfert

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

2 years ago[RISCV] Rename getVectorImmCost to getStoreImmCost [nfc]
Philip Reames [Tue, 27 Sep 2022 15:20:49 +0000 (08:20 -0700)]
[RISCV] Rename getVectorImmCost to getStoreImmCost [nfc]

My original intent had been to reuse this for arithmetic instructions as well, but due to the availability of a immediate splat encoding there, we will need different heuristics.  So specialize the existing code for the store case.

2 years ago[MLIR] Expose `getAsValues` in `StaticValueUtils.h` (NFC) [reland]
Lorenzo Chelini [Tue, 27 Sep 2022 15:16:43 +0000 (11:16 -0400)]
[MLIR] Expose `getAsValues` in `StaticValueUtils.h` (NFC) [reland]

The utility function should live in `StaticValueUtils.h` as it provides
a convenient way to convert a vector of OpFoldResults into a vector of
Values.

Reviewed By: nicolasvasilache, cota

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

2 years ago[RISCV][SLP] Add test coverage for stores of constants
Philip Reames [Tue, 27 Sep 2022 14:49:54 +0000 (07:49 -0700)]
[RISCV][SLP] Add test coverage for stores of constants

2 years ago[TTI] getExtractWithExtendCost - remove default Index = -1 value
Simon Pilgrim [Tue, 27 Sep 2022 14:44:21 +0000 (15:44 +0100)]
[TTI] getExtractWithExtendCost - remove default Index = -1 value

We currently always specify the index (even if we set it to -1), and a future patch will need to adjust this method to make it more compatible with getScalarizationOverhead

2 years ago[lld-macho] Fix -force_symbols_{,not_}weak_list arg type
Bernhard Urban-Forster [Tue, 27 Sep 2022 14:35:57 +0000 (10:35 -0400)]
[lld-macho] Fix -force_symbols_{,not_}weak_list arg type

This is still undocumented and unsupported, but if someone passed it before you
would end up with a missing file error since this takes an argument that
wouldn't be handled.

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

2 years ago[mlir] Correctly handle HIP_PATH when ROCM_PATH is set
Krzysztof Drewniak [Mon, 26 Sep 2022 20:46:17 +0000 (20:46 +0000)]
[mlir] Correctly handle HIP_PATH when ROCM_PATH is set

With the CMake file as written, if code elsewhere had set ROCM_PATH,
then HIP_PATH would not be set, breaking the rest of the ROCm
execution utility handling.

Reviewed By: mehdi_amini

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

2 years ago[mlir][linalg] Add getIteratorTypesArray to LinalgInterface.
Oleg Shyshkov [Tue, 27 Sep 2022 14:26:56 +0000 (14:26 +0000)]
[mlir][linalg] Add getIteratorTypesArray to LinalgInterface.

Summary:
Most of the code that gets `iterator_types` from LinalgInterface is forced to
extract values from an `Attribute`. As a result, the usage pattern looks like
this:

```
SmallVector<StringRef> iterators = llvm::to_vector<4>(linalgOp.iterator_types().getAsValueRange<StringAttr>());
```

It also forces all operations that implement LinalgOp interface to have
`iterator_types` attribute even when the information can be easily infered from
other parameters.

In perfect future, `getIteratorTypeArray` should be the only method to get
iterator types from the interface. The default implementation can rely on
`iterator_types` attribute though.

The name `getIteratorTypeArray` was picked to be consistent with existing
`getIndexingMapsArray`.

This patch add a few sample usages. More cleanups will follow.

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

2 years ago[LV] Adjust cost model to use uniform store lowering for unpredicated uniform stores
Philip Reames [Tue, 27 Sep 2022 14:22:41 +0000 (07:22 -0700)]
[LV] Adjust cost model to use uniform store lowering for unpredicated uniform stores

Follow up to D133580; adjust the cost model to prefer uniform store lowering for scalable stores which are unpredicated.

The impact here isn't in the uniform store lowering quality itself. InstCombine happily converts the scatter form into the single store form. The main impact is in letting the rest of the cost model make choices based on the knowledge that the vector will be scalarized on use.

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

2 years agoFix 'unused-lambda-capture' gcc warning. NFCI.
Simon Pilgrim [Tue, 27 Sep 2022 14:15:43 +0000 (15:15 +0100)]
Fix 'unused-lambda-capture' gcc warning. NFCI.

2 years ago[SLP] Add ScalarizationOverheadBuilder helper to track vector extractions
Simon Pilgrim [Tue, 27 Sep 2022 13:48:59 +0000 (14:48 +0100)]
[SLP] Add ScalarizationOverheadBuilder helper to track vector extractions

Instead of accumulating all extraction costs separately and then adjusting for repeated subvector extractions, this patch collects all the extractions and then converts to calls to getScalarizationOverhead to improve the accuracy of the costs.

I'm not entirely satisfied with the getExtractWithExtendCost handling yet - this still just adds all the getExtractWithExtendCost costs together - it really needs to be replaced with a "getScalarizationOverheadWithExtend", but that will require further refactoring first.

This replaces my initial attempt in D124769.

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

2 years agoFix regression from Deferred Concepts with lambda in var init
Erich Keane [Mon, 26 Sep 2022 18:02:39 +0000 (11:02 -0700)]
Fix regression from Deferred Concepts with lambda in var init

As reported in GH #57945, this would crash because the decl context for
the lambda was being loaded via 'getNonClosureContext', which only gets
CODE contexts, so a global lambda was getting 'nullptr' here instead.
This patch does some work to make sure we get a valid/valuable
declcontext here instead.

2 years ago[lldb][test] Remove failing ValueCheck on deprecated libcxx entity
Michael Buch [Tue, 27 Sep 2022 10:40:13 +0000 (11:40 +0100)]
[lldb][test] Remove failing ValueCheck on deprecated libcxx entity

A recent libcxx change renamed all internal variables starting with
`__`. As such, `std::reverse_iterator::__t` was renamed to
`std::reverse_iterator::__t_`. This breaks the `import-std-module`
tests with newer libcxx versions. Since this variable is deprecated
in libcxx anyway, this patch simply removes the explicit `ValueCheck`
on the variable name. We don't lose any interesting test-case here
since the purpose of the test is to see if we can call functions
from the `std` module.

We can now re-enable the tests on Darwin for all buildbot Clang
compiler variants.

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

2 years ago[lldb][test] Disable TestSBValueUnsignedEnumBitField.py for old DWARF versions
Michael Buch [Tue, 27 Sep 2022 13:00:24 +0000 (14:00 +0100)]
[lldb][test] Disable TestSBValueUnsignedEnumBitField.py for old DWARF versions

With older DWARF versions we don't encode the enum's underlying
type in DWARF. In those cases LLDB sign-extends the bitfield as
a signed integer. Without the actual enum type being present in
DWARF there's not much we can do.

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

2 years ago[DAG] select Cond, -1, C --> or (sext Cond), C if Cond is MVT::i1
Amaury Séchet [Fri, 5 Aug 2022 13:33:07 +0000 (13:33 +0000)]
[DAG] select Cond, -1, C --> or (sext Cond), C if Cond is MVT::i1

This seems to be beneficial overall, except for midpoint-int.ll .

The X86 backend seems to generate zeroing that are not necesary.

Reviewed By: shchenz

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

2 years ago[LoongArch] Add some comments for expand pseudo-inst pass. NFC
wanglei [Tue, 27 Sep 2022 11:03:18 +0000 (19:03 +0800)]
[LoongArch] Add some comments for expand pseudo-inst pass. NFC

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

2 years ago[ADT] Add IntervalTree - light tree data structure to hold intervals.
Carlos Alberto Enciso [Tue, 27 Sep 2022 11:48:44 +0000 (12:48 +0100)]
[ADT] Add IntervalTree - light tree data structure to hold intervals.

Fix build failure in:

  https://lab.llvm.org/buildbot/#/builders/36/builds/25424
  error: comparison of integers of different signs:
  'const unsigned long' and 'const int' [-Werror,-Wsign-compare]

  Reviewed By: Orlando

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

2 years ago[VE] Change to expand FPOW
Kazushi (Jam) Marukawa [Mon, 26 Sep 2022 23:36:02 +0000 (08:36 +0900)]
[VE] Change to expand FPOW

VE doesn't have FPOW instruction, so this patch makes llvm expand it.

Reviewed By: efocht

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

2 years ago[LoongArch] Support lowering frames larger than 2048 bytes
WANG Xuerui [Tue, 27 Sep 2022 09:50:14 +0000 (17:50 +0800)]
[LoongArch] Support lowering frames larger than 2048 bytes

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

2 years ago[mlir] Refactor transform dialect's gpu block func
Guray Ozen [Tue, 27 Sep 2022 10:23:18 +0000 (12:23 +0200)]
[mlir] Refactor transform dialect's gpu block func

This revision refactors gpu block id generator lambda that is used in the transform dialect. It removes the lambda  and instead uses a static function that's name generateGpuBlockIds.

It also simplifies arguments that the function takes.

Reviewed By: nicolasvasilache

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

2 years ago[lldb] Improve display of absolute symbol lookup
Alvin Wong [Tue, 27 Sep 2022 10:09:59 +0000 (13:09 +0300)]
[lldb] Improve display of absolute symbol lookup

When running `target module lookup` command, show the name of absolute
symbols. Also fix indentation issue after printing an absolute symbol.

Reviewed By: clayborg, DavidSpickett

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

2 years ago[lldb] Add newline in output of `target modules lookup`
Alvin Wong [Tue, 27 Sep 2022 10:09:45 +0000 (13:09 +0300)]
[lldb] Add newline in output of `target modules lookup`

This adds a line break between each result address in the output of the
lldb command `target modules lookup`. Before this change, a new address
result will be printed on the same line as the summary of the last
result, making the output difficult to view.

Also adds a test for this command.

Reviewed By: labath

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

2 years ago[X86] Clean up prefixes for avoid-sfb.ll
Simon Pilgrim [Tue, 27 Sep 2022 10:01:17 +0000 (11:01 +0100)]
[X86] Clean up prefixes for avoid-sfb.ll

Simplifies the diff for D134697

2 years ago[LSR] Preserve LCSSA in expander when rewriting loop exit values.
Florian Hahn [Tue, 27 Sep 2022 08:58:48 +0000 (09:58 +0100)]
[LSR] Preserve LCSSA in expander when rewriting loop exit values.

The expanded values when rewriting exit values need to preserve LCSSA.
Ask SCEVExpander to preserve LCSSA to ensure that.

Fixes #58007.

2 years ago[BasicAA] Use ScopeExit to clear Visited set (NFC)
Nikita Popov [Tue, 27 Sep 2022 08:25:58 +0000 (10:25 +0200)]
[BasicAA] Use ScopeExit to clear Visited set (NFC)

2 years ago[AArch64] Add all predecessor archs in target info
Daniel Kiss [Tue, 27 Sep 2022 08:22:20 +0000 (10:22 +0200)]
[AArch64] Add all predecessor archs in target info

A given function is compatible with all previous arch versions.
To avoid compering values of the attribute this logic adds all predecessor
architecture values.

Reviewed By: dmgreen, DavidSpickett

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

2 years ago[FunctionAttrs] Infer precise FMRB
Nikita Popov [Fri, 23 Sep 2022 11:03:59 +0000 (13:03 +0200)]
[FunctionAttrs] Infer precise FMRB

This updates checkFunctionMemoryAccess() to infer a precise
FunctionModRefBehavior, rather than an approximation split into
read/write and argmemonly.

Afterwards, we still map this back to imprecise function attributes.
This still allows us to infer some cases that we previously did not
handle, namely inaccessiblememonly and inaccessiblemem_or_argmemonly.
In practice, this means we get better memory attributes in the
presence of intrinsics like @llvm.assume.

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

2 years ago[libcxx] Support LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY + LIBCXX_ENABLE_ABI_LIN...
Nikita Popov [Mon, 26 Sep 2022 13:42:35 +0000 (15:42 +0200)]
[libcxx] Support LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY + LIBCXX_ENABLE_ABI_LINKER_SCRIPT

Currently if both LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY (only
applies to static library) and LIBCXX_ENABLE_ABI_LINKER_SCRIPT (only
applies to shared library) are enabled, the former will be silently
ignored. The shared library will use a linker script, while the
static library fails to link libc++abi.a entirely.

This is caused by what appears to be an implementation bug: The
LIBCXX_STATICALLY_LINK_ABI_IN_*_LIBRARY options are declared as
dependent options of LIBCXX_ENABLE_STATIC_ABI_LIBRARY, rather than
simply using it as the default value.

Of course, the combination of
LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY and
LIBCXX_ENABLE_ABI_LINKER_SCRIPT still results in a cmake error,
because these would be conflicting requests for the shared library.

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

2 years ago[AArch64] Add Neoverse V2 CPU support
David Sherwood [Thu, 15 Sep 2022 12:18:14 +0000 (12:18 +0000)]
[AArch64] Add Neoverse V2 CPU support

Adds support for the Neoverse V2 CPU to the AArch64 backend.

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

2 years ago[LoopUnroll] Forget block and loop dispositions during unrolling.
Florian Hahn [Tue, 27 Sep 2022 07:47:19 +0000 (08:47 +0100)]
[LoopUnroll] Forget block and loop dispositions during unrolling.

After unrolling a loop, the block and loop dispositions need to be
cleared. As we don't know which SCEVs in the loop/blocks may be
impacted, completely clear the cache. This should also fix some cases
where deleted loops remained in the LoopDispositions cache.

This fixes a verification failure surfaced by D134531.

I am planning on reviewing/updating the existing uses of
forgetLoopDispositions to check if they should be replaced by
forgetBlockAndLoopDispositions.

Reviewed By: nikic

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

2 years ago[gn build] Port 6584d1f9309b
LLVM GN Syncbot [Tue, 27 Sep 2022 07:24:34 +0000 (07:24 +0000)]
[gn build] Port 6584d1f9309b

2 years ago[ADT] Add IntervalTree - light tree data structure to hold intervals.
Carlos Alberto Enciso [Tue, 27 Sep 2022 07:22:28 +0000 (08:22 +0100)]
[ADT] Add IntervalTree - light tree data structure to hold intervals.

It allows finding all intervals that overlap with any given point.
At this time, it does not support any deletion or rebalancing
operations.

The IntervalTree is designed to be set up once, and then queried
without any further additions.

Reviewed By: psamolysov, probinson

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

2 years ago[WebAssembly] Use intrinsics for table.get/set instructions
Paulo Matos [Tue, 27 Sep 2022 07:08:43 +0000 (09:08 +0200)]
[WebAssembly] Use intrinsics for table.get/set instructions

Initial table.get/set implementation would match and lower combinations
of GEP+load/store to table.get/set instructions. However, this is error
prone due to potential combinations of GEP+load/store we don't implement,
and load/store optimizations. By changing the code to using intrinsics, we
 avoid both issues and simplify the code.

New builtins implemented:
* @llvm.wasm.table.get.externref
* @llvm.wasm.table.get.funcref
* @llvm.wasm.table.set.externref
* @llvm.wasm.table.set.funcref

Reviewed By: asb, tlively

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

2 years ago[Support][NFC] Fix typo in comment
Fraser Cormack [Tue, 27 Sep 2022 06:31:21 +0000 (07:31 +0100)]
[Support][NFC] Fix typo in comment

2 years ago[test][clangd] Try to deflake with sanitizers
Vitaly Buka [Tue, 27 Sep 2022 05:50:49 +0000 (22:50 -0700)]
[test][clangd] Try to deflake with sanitizers

Test sometimes fail with:
https://lab.llvm.org/buildbot/#/builders/168/builds/9110

2 years ago[VP][RISCV] Add vp.maxnum and vp.minnum intrinsics and RISC-V support.
Yeting Kuo [Mon, 26 Sep 2022 12:41:35 +0000 (20:41 +0800)]
[VP][RISCV] Add vp.maxnum and vp.minnum intrinsics and RISC-V support.

Add vp.maxnum and vp.minnum which are vector predicted intrinsics of llvm.maxnum
and llvm.minnum.

Reviewed By: craig.topper

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

2 years agoRevert "[AMDGPU] Move SIModeRegisterDefaults to SI MFI"
Vitaly Buka [Tue, 27 Sep 2022 05:16:34 +0000 (22:16 -0700)]
Revert "[AMDGPU] Move SIModeRegisterDefaults to SI MFI"

Break msan bots. Details in D134666.

This reverts commit 0ce96e06ee0226938e723bd0c8e16e3d2d51f203.

2 years ago[flang] Write semantics test for atomic_define
Katherine Rasmussen [Mon, 19 Sep 2022 17:37:01 +0000 (10:37 -0700)]
[flang] Write semantics test for atomic_define

Write a semantics test for the atomic intrinsic subroutine,
atomic_define.

Reviewed By: rouson

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

2 years ago[RISCV][NFC] Merge rv32 and rv64 insertelt/extract fp tests.
jacquesguan [Mon, 26 Sep 2022 07:49:32 +0000 (15:49 +0800)]
[RISCV][NFC] Merge rv32 and rv64 insertelt/extract fp tests.

Reviewed By: craig.topper

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

2 years ago[PowerPC] XCOFF exception section support on the direct assembler path
Paul Scoropan [Tue, 27 Sep 2022 02:03:49 +0000 (22:03 -0400)]
[PowerPC] XCOFF exception section support on the direct assembler path

This feature implements support for making entries in the exception section
on XCOFF on the direct assembly path using the ".except" pseudo-op. It also
provides functionality to lower entries (comprised of language and reason
codes) into the exception section through the use of annotation metadata
attached to llvm.ppc.trap/trapd/tw/tdw intrinsics. Integrated assembler
support will be provided in another review. https://reviews.llvm.org/D133030
needs to merge first for LIT tests

Reviewed By: shchenz, RKSimon

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

2 years ago[HIP] Fix unbundling archive
Yaxun (Sam) Liu [Sat, 10 Sep 2022 01:54:49 +0000 (21:54 -0400)]
[HIP] Fix unbundling archive

HIP is able to unbundle archive of bundled bitcode.
However currently there are two bugs:

1. archives passed by -l: are not unbundled.
2. archives passed as input files are not unbundled

The actual file name of an archive passed by -l: should
not be prefixed with lib and appended with '.a',
but the file path is prefixed with paths in '-L' options.

The actual file name of an archive passed as an input file
stays the same, not affected by the '-L' options.

2 years ago[NFC][2/n] Remove PrunePH pass
Sebastian Peryt [Tue, 27 Sep 2022 01:31:32 +0000 (18:31 -0700)]
[NFC][2/n] Remove PrunePH pass

Second patch in the series to remove legacy PM and
associated -enable-new-pm=0 flag targets pass that
has not been ported to new PM - PruneEH.
Discussion about this can be found in D44415.

Reviewed By: aeubanks

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

2 years ago[libc][math] Simplify tanf implementation and improve its performance.
Tue Ly [Fri, 23 Sep 2022 23:12:38 +0000 (19:12 -0400)]
[libc][math] Simplify tanf implementation and improve its performance.

Simplify `tanf` implementation and improve its performance.

Completely reuse the implementation of `sinf`, `cosf`, `sincosf` and use
the definition `tan(x) = sin(x)/cos(x)`.

Performance benchmark using perf tool from the CORE-MATH project on Ryzen 1700:
```
$ CORE_MATH_PERF_MODE="rdtsc" ./perf.sh tanf
GNU libc version: 2.35
GNU libc release: stable
CORE-MATH reciprocal throughput   : 18.558
System LIBC reciprocal throughput : 49.919

BEFORE:
LIBC reciprocal throughput        : 36.480
LIBC reciprocal throughput        : 27.217    (with `-msse4.2` flag)
LIBC reciprocal throughput        : 20.205    (with `-mfma` flag)

AFTER:
LIBC reciprocal throughput        : 30.337
LIBC reciprocal throughput        : 21.072    (with `-msse4.2` flag)
LIBC reciprocal throughput        : 15.804    (with `-mfma` flag)

$ CORE_MATH_PERF_MODE="rdtsc" ./perf.sh tanf --latency
GNU libc version: 2.35
GNU libc release: stable
CORE-MATH latency   : 56.702
System LIBC latency : 107.206

BEFORE
LIBC latency        : 97.598
LIBC latency        : 91.119   (with `-msse4.2` flag)
LIBC latency        : 82.655    (with `-mfma` flag)

AFTER
LIBC latency        : 74.560
LIBC latency        : 66.575    (with `-msse4.2` flag)
LIBC latency        : 61.636    (with `-mfma` flag)
```

Reviewed By: zimmermann6

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

2 years ago[NFC][Clang] Remove dead code
Yuanfang Chen [Tue, 27 Sep 2022 00:40:46 +0000 (17:40 -0700)]
[NFC][Clang] Remove dead code

And correct a few typos.

2 years ago[NFC] legalize triple for dxil tests.
Xiang Li [Tue, 27 Sep 2022 01:08:41 +0000 (18:08 -0700)]
[NFC] legalize triple for dxil tests.

2 years ago[test][msan] Fix more tests for D134669
Vitaly Buka [Tue, 27 Sep 2022 01:06:41 +0000 (18:06 -0700)]
[test][msan] Fix more tests for D134669

2 years ago[tests][msan] Use -fno-sanitize-memory-param-retval in tests
Vitaly Buka [Sat, 27 Aug 2022 01:04:17 +0000 (18:04 -0700)]
[tests][msan] Use -fno-sanitize-memory-param-retval in tests

Supports either default of -f[no-]sanitize-memory-param-retval.

Reviewed By: aeubanks, MaskRay

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

2 years agoRevert "Skip crashing test"
Adrian Prantl [Tue, 27 Sep 2022 00:16:51 +0000 (17:16 -0700)]
Revert "Skip crashing test"

This reverts commit c1ce19021da0cf1c88722024e6ff9cee7aabc7b6.

2 years ago[AArch64] Check target feature support for __builtin_arm_crc*
Fangrui Song [Tue, 27 Sep 2022 00:16:44 +0000 (17:16 -0700)]
[AArch64] Check target feature support for __builtin_arm_crc*

This is the AArch64 counterpart of D134127.
Daniel Kiss will change more `BUILTIN` to `TARGET_BUILTIN`.

Fix #57802

2 years ago[DWARF DUMP] Fix infinite recursion in Type Printer.
Alex Yermolovich [Mon, 26 Sep 2022 23:23:37 +0000 (16:23 -0700)]
[DWARF DUMP] Fix infinite recursion in Type Printer.

There is an implicit circular dependency in a debug information coming from GCC.
This results in a coredump.
It tries to resolve scope for DIE TAGs that are scopeless.

Reviewed By: dblaikie

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

2 years ago[AMDGPU][NFC] Correct name of DW_OP_LLVM_aspace_bregx
Tony Tye [Thu, 22 Sep 2022 18:53:10 +0000 (18:53 +0000)]
[AMDGPU][NFC] Correct name of DW_OP_LLVM_aspace_bregx

Correct naming of DW_OP_LLVM_aspace_bregx in
AMDGPUDwarfExtensionsForHeterogeneousDebugging.rst .

Reviewed By: dblaikie

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

2 years ago[mlir][sparse] minor cleanup of sparse tensor dialect ops
Aart Bik [Mon, 26 Sep 2022 20:40:08 +0000 (13:40 -0700)]
[mlir][sparse] minor cleanup of sparse tensor dialect ops

Removed some whitespace, improved some of the ops doc.

Reviewed By: wrengr

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

2 years ago[nfc][mlgo] Lazily compute the regalloc reward
Mircea Trofin [Mon, 26 Sep 2022 19:20:37 +0000 (12:20 -0700)]
[nfc][mlgo] Lazily compute the regalloc reward

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

2 years ago[mlir][LLVMIR] Add translation of AtomicRMW/CmpXchg from LLVM IR
Min-Yih Hsu [Mon, 25 Jul 2022 20:05:13 +0000 (13:05 -0700)]
[mlir][LLVMIR] Add translation of AtomicRMW/CmpXchg from LLVM IR

Add support for translating AtomicRMWInst and AtomicCmpXchgInst from
LLVM IR.

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

2 years ago[IR][InstCombine] Support scalable vector splats ConstantExprs in Constant::getUnique...
Craig Topper [Mon, 26 Sep 2022 21:53:06 +0000 (14:53 -0700)]
[IR][InstCombine] Support scalable vector splats ConstantExprs in Constant::getUniqueInteger().

I've left the getAggregateElement as a fast path for non-ConstantExprs
to avoid a call to getSplatValue in release builds.

Fixes PR57989.

Reviewed By: spatel

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

2 years agoCheck whether the allocated type is an array type before calling
Akira Hatanaka [Mon, 26 Sep 2022 21:19:53 +0000 (14:19 -0700)]
Check whether the allocated type is an array type before calling
checkArrayElementAlignment in Sema::BuildCXXNew

This commit fixes a bug that was introduced by adaf62ced and reported
here: https://reviews.llvm.org/D133711#3814717

2 years ago[ELF] Rewrite R_RISCV_ALIGN nops when r.addend%4 != 0
Fangrui Song [Mon, 26 Sep 2022 21:20:27 +0000 (14:20 -0700)]
[ELF] Rewrite R_RISCV_ALIGN nops when r.addend%4 != 0

For RVC, GNU assembler and LLVM integrated assembler add c.nop followed by a
sequence of 4-byte nops. Even if remove % 4 == 0, we have to split one 4-byte
nop and therefore need to write the code sequence, otherwise we create an
incorrect c.unimp.

2 years ago[LoopDeletion] Regenerate check lines for test added in f076a7097999d.
Florian Hahn [Mon, 26 Sep 2022 21:11:32 +0000 (22:11 +0100)]
[LoopDeletion] Regenerate check lines for test added in f076a7097999d.

2 years ago[LoopDeletion] Add cache verification failure test case.
Florian Hahn [Mon, 26 Sep 2022 20:59:40 +0000 (21:59 +0100)]
[LoopDeletion] Add cache verification failure test case.

Extra test coverage for D134613.

2 years ago[Matrix] Add tests for addition transpose optimizations
Francis Visoiu Mistrih [Sun, 11 Sep 2022 05:13:41 +0000 (22:13 -0700)]
[Matrix] Add tests for addition transpose optimizations

Tests before transpose optimizations around additions.

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

2 years ago[AMDGPU] Move SIModeRegisterDefaults to SI MFI
Stanislav Mekhanoshin [Mon, 26 Sep 2022 19:40:22 +0000 (12:40 -0700)]
[AMDGPU] Move SIModeRegisterDefaults to SI MFI

It does not belong to a general AMDGPU MFI.

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

2 years agoRevert "[MLIR] Expose `getAsValues` in `StaticValueUtils.h` (NFC)"
Lorenzo Chelini [Mon, 26 Sep 2022 20:11:40 +0000 (22:11 +0200)]
Revert "[MLIR] Expose `getAsValues` in `StaticValueUtils.h` (NFC)"

It introduces a circular build dependence: DialectUtils <-
ArithmeticUtils <- ArithDialect <- DialectUtils

This reverts commit 27224fe7272a791bcc9f28c997ce322f7d3856cd.

2 years ago[InstCombine] add assert/test for zext to i1
Sanjay Patel [Mon, 26 Sep 2022 19:59:16 +0000 (15:59 -0400)]
[InstCombine] add assert/test for zext to i1

This is a test to verify that we do not crash with the
problem noted in issue #57986. The root problem should
be fixed with a prior change to InstSimplify.

2 years ago[InstSimplify] don't commute constant expression operand in min/max calls
Sanjay Patel [Mon, 26 Sep 2022 19:15:20 +0000 (15:15 -0400)]
[InstSimplify] don't commute constant expression operand in min/max calls

The test shows that we would fail to consistently fold the
instruction based on the max value operand. This is also
the root cause for issue #57986, but I'll add an instcombine
test + assert for that exact problem in another commit.

2 years ago[InstSimplify] add tests for max intrinsic with constant expression; NFC
Sanjay Patel [Mon, 26 Sep 2022 19:11:30 +0000 (15:11 -0400)]
[InstSimplify] add tests for max intrinsic with constant expression; NFC

This shows the root problem that leads to the crash in issue #57986.

2 years ago[clang][deps] Fix test on AIX
Jan Svoboda [Mon, 26 Sep 2022 19:40:01 +0000 (12:40 -0700)]
[clang][deps] Fix test on AIX

The "-fno-integrated-as" on AIX expands the driver invocation into multiple jobs. This patch makes new test accommodates for that.

2 years ago[Hexagon] Avoid some unnecessary sign-extend instructions
Krzysztof Parzyszek [Mon, 26 Sep 2022 19:27:56 +0000 (12:27 -0700)]
[Hexagon] Avoid some unnecessary sign-extend instructions

Simplify (sext_inreg (extractu ...)) -> (extract ...) where appropriate.

2 years ago[mlir][TilingInterface] Fix `iter_args` handling in tile (and fuse).
Mahesh Ravishankar [Thu, 22 Sep 2022 06:01:45 +0000 (06:01 +0000)]
[mlir][TilingInterface] Fix `iter_args` handling in tile (and fuse).

The current approach for handling `iter_args` was to replace all uses
of the value that is used as `init` value with the corresponding
region block argument within the `scf.for`. This is not always
correct. Instead a more deliberate approach needs to be taken to
handle these. If the slice being fused represents a slice of the
destination operand of the untiled op, then
- Make the destination of the fused producer the `init` value of the
  loop nest
- For the tiled and fused producer op created, replace the slice of
  the destination operand with a slice of the corresponding region
  iter arg of the innermost loop of the generated loop nest

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

2 years ago[InstSimplify] rearrange matching for select-of-min/max folds; NFC
Sanjay Patel [Mon, 26 Sep 2022 16:47:05 +0000 (12:47 -0400)]
[InstSimplify] rearrange matching for select-of-min/max folds; NFC

This makes the code a little shorter and should be easier to extend
for a pattern like in issue #42100.

2 years ago[InstSimplify] remove redundant predicate check; NFC
Sanjay Patel [Mon, 26 Sep 2022 14:37:23 +0000 (10:37 -0400)]
[InstSimplify] remove redundant predicate check; NFC

It's still possible that there's a simpler way to specify
the conditions needed for this set of folds, but "getStrictPred"
converts >= to > for example, so there's no need to explicitly
check that.

2 years ago[lldb][test] 2 - Add gmodules test category explicitly where previously done implicitly
Michael Buch [Fri, 23 Sep 2022 22:39:01 +0000 (00:39 +0200)]
[lldb][test] 2 - Add gmodules test category explicitly where previously done implicitly

Since we don't compile with `gmodules` implicitly via
debug-info test replication, we should mark all implicit
`gmodules` tests with the appropriate category so the API
tests get actually run as intended.

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

2 years ago[lldb][test] 1 - Don't do test-replication for gmodules debug_info variant
Michael Buch [Fri, 23 Sep 2022 09:39:43 +0000 (11:39 +0200)]
[lldb][test] 1 - Don't do test-replication for gmodules debug_info variant

Currently, by default LLDB runs an API test with 3 variants,
one of which, depending on platform, is `gmodules`. However,
most tests don't actually make use of any specific `gmodules`
feature since they compile a single `main.cpp` file without
imporint types from other modules.

Instead of running all tests an extra time with `-gmodules`
enabled, we plan to test `gmodules` features with dedicated
API tests that explicitly opt-into compiling with `-gmodules`.
One of the main benefits of this will be a reduction in total
API test-suite run-time (by around 1/3).

This patch adds a flag to `debug_info_categories` that indicates
whether a category is eligible to be replicated by `lldbtest`.

Keeping `gmodules` a debug-info category is desirable because
`builder.py` knows how to inject the appropriate Makefile flags
into the build command for debug-info categories already. Whereas
for non-debug-info categories we'd have to teach it how to. The
category is inferred from the test-name debug-info suffix currently.

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

2 years ago[mlir][spirv] Format a define. NFC.
Jakub Kuderski [Mon, 26 Sep 2022 18:53:21 +0000 (14:53 -0400)]
[mlir][spirv] Format a define. NFC.

2 years agoGuardWidening: Pass through AssumptionCache (NFC)
Matt Arsenault [Mon, 19 Sep 2022 20:53:47 +0000 (16:53 -0400)]
GuardWidening: Pass through AssumptionCache (NFC)

2 years agoLoopPeel: Pass through AssumptionCache (NFC)
Matt Arsenault [Mon, 19 Sep 2022 21:50:00 +0000 (17:50 -0400)]
LoopPeel: Pass through AssumptionCache (NFC)

2 years agoLoopUnroll: Pass through AssumptionCache (NFC)
Matt Arsenault [Mon, 19 Sep 2022 21:50:22 +0000 (17:50 -0400)]
LoopUnroll: Pass through AssumptionCache (NFC)

Using these queries with a context instruction and without a cache
seems to be about 2x slower than with it so this theoretically
improves compile time.

2 years agoReland "[mlir][spirv] Change td def/class prefix from SPV to SPIRV"
Jakub Kuderski [Mon, 26 Sep 2022 17:53:58 +0000 (13:53 -0400)]
Reland "[mlir][spirv] Change td def/class prefix from SPV to SPIRV"

This reverts commit ce82530cd03d884a2c9fa48e1f9eb931064b2553.

Undo accidental Vulkan/SPIR-V name changes.
Tested with `ninja check-mlir check-mlir-mlir-spirv-cpu-runner check-mlir-mlir-vulkan-runner`.

2 years ago[mlir][vector] Handle subview correctly in sotre to load opt on memref
Thomas Raoux [Fri, 23 Sep 2022 23:00:18 +0000 (23:00 +0000)]
[mlir][vector] Handle subview correctly in sotre to load opt on memref

Make sure we consider other subviews of the same buffer when doing store
to load forwarding or dead store elimination.

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

2 years ago[lldb] Fix completion of 'settings set' values
Dave Lee [Fri, 23 Sep 2022 04:03:31 +0000 (21:03 -0700)]
[lldb] Fix completion of 'settings set' values

Some time ago, a refactor (1153dc960) broke completion for assigning settings
values (`settings set`). This was most annoying for enum settings, where you'd
have to get the valid enum names separately.

This restores the logic in the post-refactor completion function, as well as
adding a test to catch future regressions.

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

2 years ago[Hexagon] Make sure we can still shift scalar vectors by non-splats
Krzysztof Parzyszek [Mon, 26 Sep 2022 18:13:41 +0000 (11:13 -0700)]
[Hexagon] Make sure we can still shift scalar vectors by non-splats

2 years ago[mlir] Relax transfer op hoisting on tensor
Thomas Raoux [Mon, 26 Sep 2022 05:22:06 +0000 (05:22 +0000)]
[mlir] Relax transfer op hoisting on tensor

Improve hoisting logic to support cases where the read being hoisted
comes from a transfer_write with disjoint indices.

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

2 years ago[JITLink] Remove overly-restrictive visibility check introduced in 75404e9ef88.
Lang Hames [Mon, 26 Sep 2022 14:31:07 +0000 (07:31 -0700)]
[JITLink] Remove overly-restrictive visibility check introduced in 75404e9ef88.

ELF undefined symbols can have non-default visibility.

2 years ago[LegalizeTypes][RISCV] Support f16 in ExpandIntRes_LLROUND_LLRINT.
Craig Topper [Mon, 26 Sep 2022 18:09:31 +0000 (11:09 -0700)]
[LegalizeTypes][RISCV] Support f16 in ExpandIntRes_LLROUND_LLRINT.

Promote f16 to f32 and use the f32 libcall.

I deleted rv64zfh-half-intrinsics-strict.ll because it only existed due to this issue breaking rv32.

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

2 years ago[clang][modules] Over-align the `Module` class
Jan Svoboda [Mon, 26 Sep 2022 16:40:02 +0000 (09:40 -0700)]
[clang][modules] Over-align the `Module` class

This makes `llvm::PointerIntPair<Module *, 3>` from f35230ae work across platforms.

Reviewed By: srj

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