444619 Commits

Author SHA1 Message Date
Kazu Hirata
bc1bdfd6f8 [Support] Include optional instead of None.h
SMLoc uses std::nullopt_t, so it should include optional rather than
None.h.
2022-12-05 22:56:24 -08:00
Kazu Hirata
1d0ba311d8 [lldb] Use std::nullopt instead of llvm::None (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-05 22:43:53 -08:00
Ramkumar Ramachandra
2a19625424 mlir/tosa: move tosa.pad from Linalg to Tensor conversion
Since tosa.pad is lowered strictly to artih and tensor ops, move
ConvertPad from TosaToLinalg to TosaToTensor, benefitting non-Linalg
Tosa targets. TensorToLinalg exists, and is trivial, so nothing is lost.

Signed-off-by: Ramkumar Ramachandra <r@artagnon.com>

Differential Revision: https://reviews.llvm.org/D139091
2022-12-06 07:39:29 +01:00
Kazu Hirata
15ba27ebd0 [clang-tools-extra] Use std::nullopt instead of llvm::None (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-05 22:37:22 -08:00
Kazu Hirata
649ef3386b [clang-tools-extra] Use std::nullopt instead of llvm::None (NFC)
This patch mechanically replaces None with std::nullopt where the
compiler would warn if None were deprecated.  The intent is to reduce
the amount of manual work required in migrating from Optional to
std::optional.

This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-05 21:49:31 -08:00
Kazu Hirata
d5c6dc8f02 [lldb] Use std::nullopt instead of None (NFC)
This is part of an effort to migrate from llvm::Optional to
std::optional:

https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716
2022-12-05 20:54:05 -08:00
Kazu Hirata
9ba308f71c Remove "using llvm::None;" in *.cpp
These .cpp files do not use llvm::None anymore.

Since these are not header files, we can remove them pretty safely
without deprecating them first.
2022-12-05 20:39:10 -08:00
Jeff Niu
34535801d6 [mlir] UnsignedWhenEquivalent ignore dead code
The pass was not checking for uninitialized states due to dead code.
This patch also makes LLVMFuncOp correctly return a null body when it is
external.

Fixes #58807

Depends on D139388

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D139389
2022-12-05 20:38:44 -08:00
Jeff Niu
0f06da6412 [mlir][llvm] Mark LLVMReturnOp as ReturnLike
Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D139388
2022-12-05 20:38:37 -08:00
jacquesguan
f7a46aa8fb [RISCV] Fold vector binary operatrion into select with identity constant.
This patch implements shouldFoldSelectWithIdentityConstant for RISCV. It would try to generate vmerge after the binary instruction and let them folded to maksed instruction later.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D131551
2022-12-06 11:19:31 +08:00
Jeff Niu
a8ccf0ef5b [mlir][ods] Allow ArrayOfAttr implicit conversion to ArrayRef
Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D139372
2022-12-05 19:13:11 -08:00
Freddy Ye
def720726b [X86][clang] Lift _BitInt() supported max width.
Reviewed By: mgehre-amd

Differential Revision: https://reviews.llvm.org/D139170
2022-12-06 11:02:27 +08:00
Nawrin Sultana
e6d2665df3 [OpenMP] Let predefined allocator fallback to default instead of returning null
Differential Revision: https://reviews.llvm.org/D139376
2022-12-05 20:52:51 -06:00
Matt Arsenault
0a67e771f6 CallGraph: Fix IgnoreAssumeLikeCalls option to Function::hasAddressTaken
This was added in 29e2d9461a91b and likely never worked in a useful
way.

The test added for it fails when converted to opaque pointers, since
the lifetime intrinsic now directly uses the address. The code was
only trying to handle a user indirectly through a bitcast
instruction. That would never have been useful; a bitcast of a global
value would be folded to a ConstantExpr cast.

I also don't understand why it was special casing use_empty on the
cast. Relax the check to be either BitCastOperator or
AddrSpaceCastOperator. In practice, BitCastOperator won't appear
today.

I believe the change in parallel_deletion_cg_update is a correct
improvement but I didn't fully follow it. .omp_outlined..0 is used in
a constant expression cast to a call which ends up getting deleted.
2022-12-05 21:41:59 -05:00
jacquesguan
6392cf331a [RISCV][test] Add pre-commit test for D131551.
Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D131950
2022-12-06 10:38:25 +08:00
Michael Buch
a22002635d [lldb][Test] TestRerunAndExpr.py: skip on Windows
On Windows rebuilding the binary isn't enough to unload it
on progrem restart. But the assumption of the test is that on
program re-run LLDB destroys and replaces the old module with
the newly built version. One will have to try hard to evict the
module from the ModuleList (possibly including a call to
`SBDebugger::MemoryPressureDetected`.

See D138724
2022-12-06 02:16:31 +00:00
Guilhem
91d0618368 [llvm-objcopy] Reland "Fix --add-section when section contain empty bytes"
Implicit cast between char* and StringRef when writing sections.

Reproduce:
```
$> llvm-objcopy --dump-section=name=name.data out.wasm
$> llvm-objcopy --remove-section=name out.wasm out_no_name.wasm
$> llvm-objcopy --add-section=name=name.data out_no_name.wasm out_new_name.wasm

```

Reviewed By: dschuff

Differential Revision: https://reviews.llvm.org/D139210
2022-12-05 18:05:22 -08:00
Stella Laurenzo
35d26be219 Don't use root logger at import time
At import time, these calls to `logging.debug()` implicitly call `logging.basicConfig` (https://docs.python.org/3/library/logging.html#logging.basicConfig), setting logging config for the whole project which cannot then be overwritten later. For instance, consider the following test script:

```
import logging
import jax

logger = logging.getLogger(__name__)
logging.basicConfig(level=logging.INFO)
logger.info('info')
```
This should log out `'info'`, but because when `import jax` is called, this `_mlir_lib/__init__.py` file is run and a `logging.debug` is called, calling `logging.basicConfig`, my `logging.basicConfig(level=logging.INFO)` does nothing.

Fix: instead of using root logger, use a module level logger.

Found in this issue: https://github.com/google/jax/issues/12526

Reviewed By: stellaraccident

Differential Revision: https://reviews.llvm.org/D134812
2022-12-05 17:42:38 -08:00
Roman Lebedev
571abdefd1
[NFC][SimplifyCFG] Add few more fold-branch-to-common-dest tests 2022-12-06 04:39:03 +03:00
David Blaikie
b70bbaaaa9 DebugInfo: Add support for new DWARFv5 language codes 2022-12-06 01:31:53 +00:00
ChunyuLiao
85834d8685 [RISCV]Keep (select c, 0/-1, X) during PerformDAGCombine
D135833, lowerSelect: (select C, -1/0, X) -> or/and
Keep (select c, 0/-1, X), thus making better use of lowerSelect to eliminate branch instructions.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D139272
2022-12-06 09:26:29 +08:00
Stella Stamenova
10033a179f Revert "[mlir][sparse] Refactoring: abstract sparse tensor memory scheme into a SparseTensorDescriptor class."
This reverts commit 8a7e69d145ff72e7e4fc10ce6b81c3aa4794201c.

This broke the windows mlir buildbot: https://lab.llvm.org/buildbot/#/builders/13/builds/29257
2022-12-05 17:20:01 -08:00
wren romano
86f91e45a2 [mlir][sparse] Cleaning up the dim/lvl distinction in SparseTensorConversion
This change cleans up the conversion pass re the "dim"-vs-"lvl" and "sizes"-vs-"shape" distinctions of the runtime. A quick synopsis includes:

* Adds new `SparseTensorStorageBase::getDimSize` method, with `sparseDimSize` wrapper in SparseTensorRuntime.h, and `genDimSizeCall` generator in SparseTensorConversion.cpp
* Changes `genLvlSizeCall` to perform no logic, just generate the function call.
* Adds `createOrFold{Dim,Lvl}Call` functions to handle the logic of replacing `gen{Dim,Lvl}SizeCall` with constants whenever possible. The `createOrFoldDimCall` function replaces the old `sizeFromPtrAtDim`.
* Adds `{get,fill}DimSizes` functions for iterating `createOrFoldDimCall` across the whole type. These functions replace the old `sizesFromPtr`.
* Adds `{get,fill}DimShape` functions for lowering a `ShapedType` into constants. These functions replace the old `sizesFromType`.
* Changes the `DimOp` rewrite to do the right thing.
* Changes the `ExpandOp` rewrite to compute the proper expansion size.

Depends On D138365

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D139165
2022-12-05 16:59:42 -08:00
Roman Lebedev
33bcb3dc79
Revert "[OpenMP] Use add_llvm_library to build the target PluginInterface in plugins-nextgen"
Breaks cmake regeneration for me:
```
CMake Error: install(EXPORT "LLVMExports" ...) includes target "omptarget.rtl.cuda.nextgen" which requires target "PluginInterface" that is not in any export set.
CMake Error: install(EXPORT "LLVMExports" ...) includes target "omptarget.rtl.x86_64.nextgen" which requires target "PluginInterface" that is not in any export set.
```

This reverts commit 08c4081bd3605e1b01a7ccd6accc9052c8966250.
2022-12-06 03:50:18 +03:00
Roman Lebedev
58b0485118
[NFC][PPC] Autogenerate checklines in ppc-ctr-dead-code.ll to simplify update 2022-12-06 03:47:46 +03:00
Roman Lebedev
683b49b151
[NFC][LICM] Autogenerate checklines for one function to simplify update 2022-12-06 03:47:46 +03:00
Shilei Tian
08c4081bd3 [OpenMP] Use add_llvm_library to build the target PluginInterface in plugins-nextgen
This patch uses `add_llvm_library` to build the target `PluginInterface` since it can handle LLVM dependences much better. One temporary drawback of using this is that currently LLVM CMake macro doesn't support object libraries very well (there was a try a couple years ago but it was reverted later 29e5722949). After switching to that, `CXX_VISIBILITY_PRESET` can not be set correctly, which can cause runtime error that a function call from one plugin could go to another. As a consequence, `PluginInterface` is built as a static library for now. I have asked the question in CMake community (https://discourse.cmake.org/t/set-target-properties-doesnt-work-properly/7016). Once that issue is solved, I'll switch it back to object library. It is not necessarily too bad to use static library, especially `BUILDTREE_ONLY` is already set such that `PluginInterface.a` will not be installed.

Reviewed By: jhuber6

Differential Revision: https://reviews.llvm.org/D139371
2022-12-05 19:46:12 -05:00
Roman Lebedev
54649724df
[NFC][SimplifyCFG] Add one more fold-branch-to-common-dest test 2022-12-06 03:31:21 +03:00
Zequan Wu
bb5bcddcdb [CodeView] Don't generate dummy unnamed strcut/class/union type. 2022-12-06 08:29:55 +08:00
Craig Topper
dd3fe52492 [RISCV] Remove some RISCVMatInt early exits.
These were early exiting if we replaced a sequence with a 2 instruction
sequence since that is the best we could do. All the later optimizations
only occur if the sequence is more than 2 instructions so this wasn't a
functional check.

At best it helps the compiler generate better code, but I don't think
that was analyzed when it was added. Remove it to simplify the code.
2022-12-05 16:29:16 -08:00
Michael Kruse
6ccd163c1c [Polly] Use std::nullopt to unbreak build. 2022-12-05 17:51:07 -06:00
Jacob Lambert
6b992bcce0 [Driver][test] Fix test by creating empty archive instead of empty file
Differential Revision: https://reviews.llvm.org/D137275
2022-12-05 15:39:09 -08:00
Artem Dergachev
bc0617795f Revert "[-Wunsafe-buffer-usage] Initial commit - Transition away from raw buffers."
This reverts commit 200007ec85f81122fd260a4e68308e54607ca37a.
2022-12-05 15:38:52 -08:00
Leonard Chan
d629db535f Reland "[llvm] Teach FastISel for AArch64 about tagged globals"
This reverts commit aacf17aa0ca8a67efc0ad2d4cfd90e551b5d6a7f.

Fixed by using the right register class for the movk.
2022-12-05 23:27:36 +00:00
LLVM GN Syncbot
f6f9caa580 [gn build] Port 200007ec85f8 2022-12-05 23:13:55 +00:00
Artem Dergachev
200007ec85 [-Wunsafe-buffer-usage] Initial commit - Transition away from raw buffers.
This is the initial commit for -Wunsafe-buffer-usage, a warning that helps
codebases (especially modern C++ codebases) transition away from raw buffer
pointers.

The warning is implemented in libAnalysis as it's going to become a non-trivial
analysis, mostly the fixit part where we try to figure out if we understand
a variable's use pattern well enough to suggest a safe container/view
as a replacement. Some parts of this analsysis may eventually prove useful
for any similar fixit machine that tries to change types of variables.

The warning is disabled by default.

RFC/discussion in https://discourse.llvm.org/t/rfc-c-buffer-hardening/65734

Differential Revision: https://reviews.llvm.org/D137346
2022-12-05 15:13:42 -08:00
Jason Molenda
fe3103fa48 Increase search for kernel image from 32MB to 128MB
DynamicLoaderDarwinKernel::SearchForKernelNearPC() searches for a
Darwin kernel mach-o header starting at $pc and working backwards,
stopping on the first memory read error encountered.  The kernel,
and the kexts linked in to the kernel, have grown over the years
and the original 32MB scan limit is giving a high chance of failing
to find the kernel if we're in a random kext.

In non-kernel environments, firmware and bare board typically, we
will hit a memory read error on an unmapped page quickly so this
doesn't add a lot of random memory read requests in those environments.

We only check at one megabyte boundaries, so worst case this is 128
reads at the start of a gdb-remote connection.  The check for a
memory read error & stopping was a more recent addition (a few years
ago), so I kept the scan region a bit small.
2022-12-05 15:11:43 -08:00
Lei Zhang
50882b4daf [mlir] List more elementwise ops in VectorToGPU MMA conversion
Reviewed By: ThomasRaoux

Differential Revision: https://reviews.llvm.org/D139244
2022-12-05 22:51:19 +00:00
Leonard Chan
aacf17aa0c Revert "[llvm] Teach FastISel for AArch64 about tagged globals"
This reverts commit 7358c29a42714eb8d7d7bcdb58688d20430689e4.

This broke an upstream builder:
https://lab.llvm.org/buildbot/#/builders/16/builds/39356
2022-12-05 22:45:04 +00:00
Felipe de Azevedo Piovezan
b1fcc1840c [lldb-tests] Force system's libcxx on tests failing with debug symbols
The tests in this patch expose failures of LLDBs expression evaluator
when a standard library is compiled with debug symbols. This is the case
for RelWithDebugInfo builds of llvm-project (with libcxx).

Until these bugs are fixed, we force these tests to use the system's
standard library.

Differential Revision: https://reviews.llvm.org/D139361
2022-12-05 17:42:00 -05:00
Jakub Kuderski
2442aa3447 [mlir][spirv] Add extensions implied by SPIR-V 1.6
This adds existing extensions as implied by SPIR-V 1.6.

Also clean up the surrounding code.

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

Reviewed By: antiagainst

Differential Revision: https://reviews.llvm.org/D139369
2022-12-05 17:40:29 -05:00
Lei Zhang
2c7827da4f [mlir][spirv] Add GPU subgroup MMA to spirv.MMAMatrixTimesScalar
Along the way, make the default pattern fail instead of crashing
when an elementwise op is not supported yet.

Reviewed By: kuhar

Differential Revision: https://reviews.llvm.org/D139280
2022-12-05 22:30:50 +00:00
Leonard Chan
96d63993dd Revert "[CMake] Use LLVM_TARGET_TRIPLE in runtimes"
This reverts commit bec8a372fc0db95852748691c0f4933044026b25.

This causes many of these errors to appear when rebuilding runtimes part
of fuchsia's toolchain:

ld.lld: error:
/usr/local/google/home/paulkirth/llvm-upstream/build/lib/x86_64-unknown-linux-gnu/libunwind.a(libunwind.cpp.o)
is incompatible with elf64-x86-64

This can be reproduced by making a complete toolchain, saving any source
file with no changes, then rerunning ninja distribution.
2022-12-05 22:20:51 +00:00
Leonard Chan
7358c29a42 [llvm] Teach FastISel for AArch64 about tagged globals
This addresses https://github.com/llvm/llvm-project/issues/57750. For
some globals, the tag wasn't propagated correctly because the necessary
movk wasn't emitted sometimes.

Differential Revision: https://reviews.llvm.org/D138615
2022-12-05 22:16:55 +00:00
Lei Zhang
3c278e5e27 [mlir][spirv] Fix spirv.MatrixTimesScalar for cooperative matrix
spirv.MatrixTimesScalar is allowed to use cooperative matrix.

Reviewed By: kuhar

Differential Revision: https://reviews.llvm.org/D139279
2022-12-05 22:13:23 +00:00
Peiming Liu
8a7e69d145 [mlir][sparse] Refactoring: abstract sparse tensor memory scheme into a SparseTensorDescriptor class.
This patch abstracts sparse tensor memory scheme into a SparseTensorDescriptor class. Previously, the field accesses are performed in a relatively error-prone way, this patch hides the hairy details behind a SparseTensorDescriptor class to allow users access sparse tensor fields in a more cohesive way.

Reviewed By: aartbik

Differential Revision: https://reviews.llvm.org/D138627
2022-12-05 22:11:53 +00:00
Hanhan Wang
0d03ba62c5 [mlir][tensor] Implement TilingInterface for tensor.pack op.
We can compute the offsets and sizes for the slice of input because the
iteration domain is defined over outer loops. If the dimension is tiled,
the i-th index is the product of offset_i and inner_tile_i.

Different from tiling a pad op, we do not have to deal with reading zero
data from input. Because the tiling sizes are indicated to packed outer
dimensions. We will read either the entire tile or partial tile for each
packed tile. The scf.if and tensor.generate ops are not needed in this
context.

Co-authored-by: Lorenzo Chelini <l.chelini@icloud.com>

Reviewed By: rengolin, mravishankar

Differential Revision: https://reviews.llvm.org/D138631
2022-12-05 14:00:10 -08:00
Jez Ng
7ca32bd402 Reland "[lld-macho] Overhaul map file code"
This reverts commit 38d6202a425462ce5923d038bc54532115a80a1f.

Differential Revision: https://reviews.llvm.org/D137368
2022-12-05 16:57:35 -05:00
Argyrios Kyrtzidis
3ed6311b1b [lldb] Make sure the value of eSymbolContextVariable is not conflicting with RESOLVED_FRAME_CODE_ADDR
Differential Revision: https://reviews.llvm.org/D139066
2022-12-05 13:43:36 -08:00
Jeff Niu
c48e0cf03a [mlir] Remove TypedAttr and ElementsAttr from DenseArrayAttr
This patch removes the implementation of TypedAttr and ElementsAttr
from DenseArrayAttr and, in doing so, removes the need store a shaped
type. The attribute now stores a size (number of elements), an MLIR type
as a discriminator, and a raw byte array.

The intent of DenseArrayAttr was not to be a drop-in replacement for DenseElementsAttr. It was meant to be a simple container of integers or floats that map to C++ types. The ElementsAttr implementation on DenseArrayAttr had many holes in it, and fixing those holes would require evolving DenseArrayAttr in a way that is incompatible with its original purpose.

Reviewed By: rriddle

Differential Revision: https://reviews.llvm.org/D137606
2022-12-05 13:27:55 -08:00