platform/upstream/llvm.git
2 years agodependency cycle fix in DynamicLoaderDarwinKernel
Jason Molenda [Sat, 10 Sep 2022 00:34:23 +0000 (17:34 -0700)]
dependency cycle fix in DynamicLoaderDarwinKernel

DynamicLoaderDarwinKernel calls in to PlatformDarwinKernel, and
with my changes in https://reviews.llvm.org/D133534, PlatformDarwinKernel
calls in to DynamicLoaderDarwinKernel.  This results in a cmake
dependency if accurately included in the link libraries list.

lldbPluginDynamicLoaderDarwinKernel is specfically for kernel
debugging and is uncommonly linked in to anything except a full
lldb.  lldbPluginPlatformMacOSX is any Darwin platform, including
PlatformDarwinKernel, and is referenced a number of time in shell
tests, for instance.

I believe anything linking the darwin kernel DynamicLoader plugin
will already have lldbPluginPlatformMacOSX in its dependency list,
so not explicitly expressing this dependency is safe.

2 years ago[clang][cmake] Remove extra brace
Mohammed Keyvanzadeh [Fri, 9 Sep 2022 20:11:17 +0000 (00:41 +0430)]
[clang][cmake] Remove extra brace

Remove the extra trailing brace from the local variable accessor.

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

2 years ago[mlir][sparse] fix some asan detected leaks in integration tests
Aart Bik [Fri, 9 Sep 2022 23:55:03 +0000 (16:55 -0700)]
[mlir][sparse] fix some asan detected leaks in integration tests

One was an oversight, but the others seem something that regressed.
Matthias to have look later.

https://github.com/llvm/llvm-project/issues/57663

Reviewed By: Peiming

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

2 years ago[llvm][lit] Respect GTEST_TOTAL_SHARDS and GTEST_SHARD_INDEX env vars
Joe Loser [Thu, 8 Sep 2022 23:34:09 +0000 (17:34 -0600)]
[llvm][lit] Respect GTEST_TOTAL_SHARDS and GTEST_SHARD_INDEX env vars

There are a variety of issues with using GTest sharding by default for users of
`lit` using the Google Test formatter as mentioned in
https://github.com/llvm/llvm-project/issues/56492 and
https://github.com/llvm/llvm-project/issues/56491.

Currently, there is no way for users to explicitly control the sharding
behavior, even with the environment variables that GTest provides. This patch
teaches the `googletest` formatter to actually respect `GTEST_TOTAL_SHARDS`
and `GTEST_SHARD_INDEX` environment variables if they are set.

In practice, we could go one step further and not do any of the post-processing
of the JSON files if `GTEST_TOTAL_SHARDS` is `1` for example, but that it left
as a follow-up if desired.  There may be preferred alternative approaches to
disabling sharding entirely through another mechanism, such as a lit config
variable.

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

2 years ago[llvm] Remove includes of `llvm/Support/STLArrayExtras.h`
Joe Loser [Fri, 9 Sep 2022 18:47:56 +0000 (12:47 -0600)]
[llvm] Remove includes of `llvm/Support/STLArrayExtras.h`

`llvm` and downstream internal callers no longer use `array_lengthof`, so drop
the include everywhere.

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

2 years ago[Clang][ScanDeps] Change multiple-commands.c test to use -fmodules-cache-path on...
Bruno Cardoso Lopes [Fri, 9 Sep 2022 22:10:31 +0000 (15:10 -0700)]
[Clang][ScanDeps] Change multiple-commands.c test to use -fmodules-cache-path on implicit builds

The module cache escapes the test output dirs in this test. Since its default location maybe
composed of system and user related path this can cause problems in some builders (e.g. not
accessible paths inherited in a chroot environment).

Clean the test a bit by passing `-fmodules-cache-path` inside the test output dirs.

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

2 years ago[gn build] port 1a608cfb5ca8
Nico Weber [Fri, 9 Sep 2022 23:17:41 +0000 (19:17 -0400)]
[gn build] port 1a608cfb5ca8

2 years ago[gn build] port 48506fbbbf2732d (Mach-O-Fileset)
Nico Weber [Fri, 9 Sep 2022 23:17:19 +0000 (19:17 -0400)]
[gn build] port 48506fbbbf2732d (Mach-O-Fileset)

2 years agoAdd the ability to show when variables fails to be available when debug info is valid.
Greg Clayton [Tue, 30 Aug 2022 22:46:57 +0000 (15:46 -0700)]
Add the ability to show when variables fails to be available when debug info is valid.

Many times when debugging variables might not be available even though a user can successfully set breakpoints and stops somewhere. Letting the user know will help users fix these kinds of issues and have a better debugging experience.

Examples of this include:
- enabling -gline-tables-only and being able to set file and line breakpoints and yet see no variables
- unable to open object file for DWARF in .o file debugging for darwin targets due to modification time mismatch or not being able to locate the N_OSO file.

This patch adds an new API to SBValueList:

  lldb::SBError lldb::SBValueList::GetError();

object so that if you request a stack frame's variables using SBValueList SBFrame::GetVariables(...), you can get an error the describes why the variables were not available.

This patch adds the ability to get an error back when requesting variables from a lldb_private::StackFrame when calling GetVariableList.

It also now shows an error in response to "frame variable" if we have debug info and are unable to get varialbes due to an error as mentioned above:

(lldb) frame variable
error: "a.o" object from the "/tmp/libfoo.a" archive: either the .o file doesn't exist in the archive or the modification time (0x63111541) of the .o file doesn't match

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

2 years ago[mlir][linalg] Add decomposition from conv_2d_nchw
Stanley Winata [Fri, 9 Sep 2022 23:00:33 +0000 (16:00 -0700)]
[mlir][linalg] Add decomposition from conv_2d_nchw

Decompose conv_2d_nchw_fchw -> conv_1d_ncw_fcw

Reviewed By: hanchung

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

2 years agoAdapt LLDB dataformatters for libcxx change D129386
Adrian Prantl [Fri, 9 Sep 2022 22:58:14 +0000 (15:58 -0700)]
Adapt LLDB dataformatters for libcxx change D129386

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

2 years ago[ADT] Move LLVM_DEPRECATED before type after D133502
Fangrui Song [Fri, 9 Sep 2022 22:56:57 +0000 (15:56 -0700)]
[ADT] Move LLVM_DEPRECATED before type after D133502

`[[deprecated(...)]]` cannot appear between `inline size_t`.

2 years ago[LLDB][NativePDB] Replace blocks.cpp with blocks.s so the test won't be affected...
Zequan Wu [Fri, 9 Sep 2022 22:47:17 +0000 (15:47 -0700)]
[LLDB][NativePDB] Replace blocks.cpp with blocks.s so the test won't be affected by codegen changes.

2 years ago[Bazel] Port eb65327fe9d8b1a6824937e2b76f759101cd6416
Fangrui Song [Fri, 9 Sep 2022 22:35:52 +0000 (15:35 -0700)]
[Bazel] Port eb65327fe9d8b1a6824937e2b76f759101cd6416

2 years ago[mlir] Fix asan leak in BlockAndValueMapping test
River Riddle [Fri, 9 Sep 2022 21:57:04 +0000 (14:57 -0700)]
[mlir] Fix asan leak in BlockAndValueMapping test

Operations were being created without being erased.

2 years ago[mlir:SymbolTable] Add "remove" method that drops a symbol without erasing it
River Riddle [Fri, 9 Sep 2022 09:03:47 +0000 (02:03 -0700)]
[mlir:SymbolTable] Add "remove" method that drops a symbol without erasing it

There are various use cases where we don't want to immediately erase
an operation when removing it from the symbol table. This commit adds
a "remove" method to support that.

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

2 years ago[NFC] Cleanup test for D132913 Preserve vec3 for HLSL
Xiang Li [Fri, 9 Sep 2022 22:03:35 +0000 (15:03 -0700)]
[NFC] Cleanup test for D132913 Preserve vec3 for HLSL

Support number for parameter test added in
https://reviews.llvm.org/D132913

2 years agoRecognize a platform binary in ProcessGDBRemote which determines plugins
Jason Molenda [Fri, 9 Sep 2022 21:52:59 +0000 (14:52 -0700)]
Recognize a platform binary in ProcessGDBRemote which determines plugins

Complete support of the binary-addresses key in the qProcessInfo packet
in ProcessGDBRemote, for detecting if one of the binaries needs to be
handled by a Platform plugin, and can be used to set the Process'
DynamicLoader plugin and the Target's Platform plugin.

Implement this method in PlatformDarwinKernel to recognize a kernel
fileset at that address, find the actual kernel address in the
fileset, set DynamicLoaderDarwinKernel and PlatformDarwinKernel
in the Process/Target; register the kernel address with the dynamic
loader so it will be loaded later during attach.

This patch only addresses the live debug scenario with a gdb remote
serial protocol connection. I'll handle corefiles in a subsequent
patch that builds on this.

Differential Revision: https://reviews.llvm.org/D133534
rdar://98754861

2 years ago[ELF] Merge Symbol::needs* into uint16_t flags. NFC
Fangrui Song [Fri, 9 Sep 2022 21:37:18 +0000 (14:37 -0700)]
[ELF] Merge Symbol::needs* into uint16_t flags. NFC

Split off from D133003 ([ELF] Parallelize relocation scanning) to make its diff smaller.

2 years ago[ADT] Mark `llvm::array_lengthof` as deprecated
Joe Loser [Thu, 8 Sep 2022 15:13:17 +0000 (09:13 -0600)]
[ADT] Mark `llvm::array_lengthof` as deprecated

As a follow-up of 5e96cea1db0623a833d5376c9ea2ce4528771f97, mark
`llvm::array_lengthof` as deprecated in favor of using `std::size` function
directly.

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

2 years ago[lld] Use std::size instead of llvm::array_lengthof
Joe Loser [Fri, 9 Sep 2022 18:43:07 +0000 (12:43 -0600)]
[lld] Use std::size instead of llvm::array_lengthof

LLVM contains a helpful function for getting the size of a C-style
array: `llvm::array_lengthof`. This is useful prior to C++17, but not as
helpful for C++17 or later: `std::size` already has support for C-style
arrays.

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

2 years ago[mlir][arith] Fix unused variable warning. NFC.
Jakub Kuderski [Fri, 9 Sep 2022 21:17:50 +0000 (17:17 -0400)]
[mlir][arith] Fix unused variable warning. NFC.

2 years ago[test] Use either `127.0.0.1` or `[::1]` to run in ipv6-only environments.
Jordan Rupprecht [Wed, 7 Sep 2022 01:46:40 +0000 (18:46 -0700)]
[test] Use either `127.0.0.1` or `[::1]` to run in ipv6-only environments.

Test for both IPv4 and IPv6 support to determine if either `127.0.0.1` or `[::1]` are appropriate IP addresses to attempt to connect to. In an IPv6-only environment, `127.0.0.1` is not available.

Using `localhost` is problematic because we might not be able to get the same port on each IP flavor, and later try to connect to the wrong thing.

Reviewed By: labath

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

2 years ago[mlir][sparse] Add new option (enable-runtime-library) to sparse compiler pipeline
Peiming Liu [Fri, 9 Sep 2022 18:37:59 +0000 (18:37 +0000)]
[mlir][sparse] Add new option (enable-runtime-library) to sparse compiler pipeline

Add new option (enable-runtime-library) to sparse compiler pipeline, it allows us to decide whether we need to rewrite operations (e.g., concatenate, reshape) within sparsification (when using codegen) or convert them after sparsification (when using runtime library).

Reviewed By: aartbik

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

2 years ago[mlir][arith] Support wide integer addition emulation
Jakub Kuderski [Fri, 9 Sep 2022 20:48:00 +0000 (16:48 -0400)]
[mlir][arith] Support wide integer addition emulation

I tested this implementation for all i16 input pairs, when emulating i16
operations with i8 operations.

Reviewed By: antiagainst, Mogball

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

2 years ago[mlir][spirv] Add support for fast math mode
Lei Zhang [Fri, 9 Sep 2022 20:16:36 +0000 (16:16 -0400)]
[mlir][spirv] Add support for fast math mode

This commit introduces a new option to SPIRVConversionOptions
to allow enabling fast math mode. With it, various patterns
would assume no NaN/infinity for floating point values and
avoid guards to check them. This is particularly useful for
CodeGen towards WebGPU environment, where fast math is assumed.

Along the way, fixed the conversion for arith.minf/maxf to
handle the NaN cases properly for Shader cases.

Part of https://github.com/llvm/llvm-project/issues/57584.

Reviewed By: ThomasRaoux, hanchung

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

2 years ago[Libomptarget][NFC] Remove unused variable
Joseph Huber [Fri, 9 Sep 2022 20:26:02 +0000 (15:26 -0500)]
[Libomptarget][NFC] Remove unused variable

2 years ago[Libomptarget] Fix compiling with asserts using the bitcode library
Joseph Huber [Fri, 9 Sep 2022 18:18:16 +0000 (13:18 -0500)]
[Libomptarget] Fix compiling with asserts using the bitcode library

Sumnmary:
A previous patch introduces an `exports` file which contains all the
symbol names that are not internalized in the bitcode library. This is
done to reduce the size of the bitcode library and only export needed
functions. This export file must contain all the functoins expected to
be called from the device. Since its introduction the `__assert_fail`
function used to be provided but was mistakenly not included. This patch
adds it.

Fixes #57656

Reviewed By: jdoerfert

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

2 years ago[mlir][spirv] NFC: move conversion options out of the type converter
Lei Zhang [Fri, 9 Sep 2022 19:46:17 +0000 (15:46 -0400)]
[mlir][spirv] NFC: move conversion options out of the type converter

This is a step for adding more options not directly related to type
conversion. Also with this we can now avoid the explicit constructor.

Reviewed By: kuhar

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

2 years ago[LV] Remove now dead variable after 2a78890b7b7f08 (NFC).
Florian Hahn [Fri, 9 Sep 2022 19:25:54 +0000 (20:25 +0100)]
[LV] Remove now dead variable after 2a78890b7b7f08 (NFC).

2 years ago[gn build] port 4d50a392401c (llvm-exegesis multi-target)
Nico Weber [Fri, 9 Sep 2022 19:04:04 +0000 (15:04 -0400)]
[gn build] port 4d50a392401c (llvm-exegesis multi-target)

Also ports follow-up 5a425b0b2f855c (I'm getting linker errors without it).

2 years ago[mlir] NFC: ConvertAsyncToLLVM: sort deps alphabetically
Emilio Cota [Fri, 9 Sep 2022 18:59:46 +0000 (14:59 -0400)]
[mlir] NFC: ConvertAsyncToLLVM: sort deps alphabetically

2 years ago[mlir] Improve bitEnumContains methods.
Hanhan Wang [Fri, 9 Sep 2022 18:56:29 +0000 (11:56 -0700)]
[mlir] Improve bitEnumContains methods.

https://github.com/llvm/llvm-project/commit/839b436c93604e042f74050cf2adadd75f30e898
changes the behavior. Based on the discussion, we also want to support
"and" behavior. The revision changes it into two functions, bitEnumContainsAny
and bitEnumContainsAll.

Reviewed By: krzysz00, antiagainst

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

2 years ago[gn build] port 5e0464e38bcb (lld test zstd)
Nico Weber [Fri, 9 Sep 2022 18:48:26 +0000 (14:48 -0400)]
[gn build] port 5e0464e38bcb (lld test zstd)

2 years ago[mlir][CallGraph] Add special call graph node for representing unknown callees
Markus Böck [Fri, 9 Sep 2022 18:13:08 +0000 (20:13 +0200)]
[mlir][CallGraph] Add special call graph node for representing unknown callees

The callgraph currently contains a special external node that is used both as the quasi caller for any externally callable as well as callees that could not be resolved.
This has one negative side effect however, which is the motivation for this patch: It leads to every externally callable which contains a call that could not be resolved (eg. an indirect call), to be put into one giant SCC when iterating over the SCCs of the call graph.

This patch fixes that issue by creating a second special callgraph node that acts as the callee for any unresolved callable. This breaks the cycles produced in the callgraph, yielding proper SCCs for all direct calls.

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

2 years ago[VPlan] Move SCEV expansion for pointer induction to VPExpandSCEV (NFC).
Florian Hahn [Fri, 9 Sep 2022 18:20:12 +0000 (19:20 +0100)]
[VPlan] Move SCEV expansion for pointer induction to VPExpandSCEV (NFC).

Use VPExpandSCEVRecipe to expand the step of pointer inductions. This
cleanup addresses a corresponding FIXME.

It should be NFC, as steps for pointer induction must be constants,
which makes expansion trivial.

2 years agoSpeculative bot fix after 4d50a392
Philip Reames [Fri, 9 Sep 2022 18:16:53 +0000 (11:16 -0700)]
Speculative bot fix after 4d50a392

https://lab.llvm.org/buildbot#builders/56/builds/3201 failed with a link error being unable to initialize the disassembler.  Oddly, this bot is the *only* bot which appears to have failed in this way.  (A bunch sent warnings, but that appears to be spurious due to cmake rebuilds on incremental bots.)  Why only polly would witness this is an excercise for the reader - because I have no clue.

2 years agoOpenMP: mark allocptr attribute on __kmpc_free_shared
Augie Fackler [Wed, 27 Apr 2022 00:33:35 +0000 (20:33 -0400)]
OpenMP: mark allocptr attribute on __kmpc_free_shared

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

2 years ago[mlir][sparse] Avoid generating DimOp in conversion passes.
Peiming Liu [Fri, 9 Sep 2022 17:29:16 +0000 (17:29 +0000)]
[mlir][sparse] Avoid generating DimOp in conversion passes.

Reviewed By: aartbik

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

2 years ago[HLSL] Preserve vec3 for HLSL.
Xiang Li [Tue, 30 Aug 2022 07:35:25 +0000 (00:35 -0700)]
[HLSL] Preserve vec3 for HLSL.

Preserve vec3 for HLSL by set -fpreserve-vec3-type.

Reviewed By: beanz

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

2 years agoLoop names used in reporting can grow very large
Jamie Schmeiser [Fri, 9 Sep 2022 17:43:58 +0000 (13:43 -0400)]
Loop names used in reporting can grow very large

Summary:
The code for generating a name for loops for various reporting scenarios
created a name by serializing the loop into a string.  This may result in
a very large name for a loop containing many blocks.  Use the getName()
function on the loop instead.

Author: Jamie Schmeiser <schmeise@ca.ibm.com>
Reviewed By: Whitney (Whitney Tsang), aeubanks (Arthur Eubanks)
Differential Revision: https://reviews.llvm.org/D133587

2 years agoTemporarily XFAIL libcxx tests.
Adrian Prantl [Fri, 9 Sep 2022 17:40:41 +0000 (10:40 -0700)]
Temporarily XFAIL libcxx tests.

These tests started failing on green dragon after a configuration change that compiles tests using the just-built libcxx. We may need to force the system libcxx here, or change LLDB to import the std module from the just-built libcxx, too.

2 years ago[ELF] Add --compress-debug-sections=zstd
Fangrui Song [Fri, 9 Sep 2022 17:30:18 +0000 (10:30 -0700)]
[ELF] Add --compress-debug-sections=zstd

`clang -gz=zstd a.o` passes this option to the linker. This option compresses output
debug sections with zstd and sets ch_type to ELFCOMPRESS_ZSTD. As of today, very
few DWARF consumers recognize ELFCOMPRESS_ZSTD.

Use the llvm::zstd::compress API with level llvm::zstd::DefaultCompression (5),
which we may tune after we have more experience with zstd output.
zstd has built-in parallel compression support (so we don't need to do D117853
for zlib), which is not leveraged yet.

Reviewed By: peter.smith

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

2 years ago[Flang][OpenMP] Add support for logical and reduction in worksharing-loop
Dylan Fleming [Fri, 9 Sep 2022 17:18:27 +0000 (17:18 +0000)]
[Flang][OpenMP] Add support for logical and reduction in worksharing-loop

Adds support for .and. reductions with logical types.

Because arith.addi doesn'to work with fir.logical<4> types
logical<4> must be converted to i1 prior to the operation.

This means that the pattern matched by integer reductions
(load -> op -> store) will not match logical reductions.
Instead, the pattern being searched for here is
load -> convert(logical<4> to i1) -> op -> convert(i1 to logical<4>) -> store

Reviewed By: kiranchandramohan

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

2 years ago[ELF] Support ELFCOMPRESS_ZSTD input
Fangrui Song [Fri, 9 Sep 2022 17:25:37 +0000 (10:25 -0700)]
[ELF] Support ELFCOMPRESS_ZSTD input

so that lld accepts relocatable object files produced by `clang -c -g -gz=zstd`.

We don't want to increase the size of InputSection, so do redundant but cheap
ch_type checks instead.

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

2 years ago[ELF] Rename InputSectionBase::uncompress to decompress. NFC
Fangrui Song [Fri, 9 Sep 2022 17:18:46 +0000 (10:18 -0700)]
[ELF] Rename InputSectionBase::uncompress to decompress. NFC

The canonical verb is "decompress" (also used in llvm-objcopy). "uncompressed"
describes the state.

2 years ago[NFC] Remove a FIXME fixed by an earlier patch.
Yitzhak Mandelbaum [Fri, 9 Sep 2022 17:04:24 +0000 (17:04 +0000)]
[NFC] Remove a FIXME fixed by an earlier patch.

Commit 28bd7945eabdbde2b1fc071ab2f9b78e6e754a1a incidentally fixed the
associated FIXME, but didn't delete it.

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

2 years ago[AArch64][CostModel] Detects that {extract,insert}-element at lane 0 has the same...
Mingming Liu [Tue, 21 Jun 2022 20:38:30 +0000 (13:38 -0700)]
[AArch64][CostModel] Detects that {extract,insert}-element at lane 0 has the same cost as the other lane for vector instructions in the IR.

Currently, {extract,insert}-element has zero cost at lane 0 [1]. However, there is a cost (by fmov instruction [2], or ext/ins instruction) to move values from SIMD registers to GPR registers, when the element is used explicitly as integers.

See https://godbolt.org/z/faPE1nTn8, when fmov is generated for d* register -> x* register conversion.

Implementation-wise, add a private method `AArch64TTIImpl::getVectorInstrCostHelper` as a helper function. This way, instruction-based method could share the core logic (e.g.,
returning zero cost if type is legalized to scalar).

[1] https://github.com/llvm/llvm-project/blob/2cf320d41ed708679e01eeeb93f58d6c5c88ba7a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp#L1853
[2] https://github.com/llvm/llvm-project/blob/2cf320d41ed708679e01eeeb93f58d6c5c88ba7a/llvm/lib/Target/AArch64/AArch64InstrInfo.td#L8150-L8157

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

2 years ago[llvm-exegesis] Cross compile all enabled targets
Philip Reames [Fri, 9 Sep 2022 15:30:50 +0000 (08:30 -0700)]
[llvm-exegesis] Cross compile all enabled targets

llvm-exegesis is rather odd in the LLVM ecosystem in code is selectively compiled based on the native machine. LLVM is cross compiler by default, so this stands out as odd. It's also less then helpful when working on code for a target other than your native dev environment.

This change only changes the build setup. A later change will enable -march support to allow actual benchmarking under e.g. simulators in a cross compilation environment.

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

2 years ago[mlir][vector] Fix bug in transfer op flattening
Thomas Raoux [Fri, 9 Sep 2022 00:34:47 +0000 (00:34 +0000)]
[mlir][vector] Fix bug in transfer op flattening

The logic to figure out if a transfer op can be flattened wasn't
considering the shape being loaded therefore it was incorrectly assuming
some transfer ops were reading contigous data.

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

2 years agoFrontend: Respect -working-directory when checking if output files can be written
Steven Wu [Fri, 9 Sep 2022 15:56:53 +0000 (08:56 -0700)]
Frontend: Respect -working-directory when checking if output files can be written

Call `FixupRelativePath` when opening output files to ensure that
`-working-directory` is used when checking up front for write failures,
not just when finalizing the files at the end. This also moves the
temporary file into the same directory as the output file.

Reviewed By: benlangmuir

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

2 years ago[MLIR] Improve interaction of TypedValue with BlockAndValueMapping
Tyker [Fri, 9 Sep 2022 15:26:06 +0000 (08:26 -0700)]
[MLIR] Improve interaction of TypedValue with BlockAndValueMapping

2 years ago[ASAN][DARWIN] Remove getpwnam(NULL) test for undefined behavior
Blue Gaston [Fri, 9 Sep 2022 15:53:05 +0000 (08:53 -0700)]
[ASAN][DARWIN] Remove getpwnam(NULL) test for undefined behavior

Reverting a patch that was added to test for getpwnam(NULL) -- it was noted at the time the behavior might have been a bug, however the patch was added for binary compatibility. Because of the change in the expected behavior, we are reverting this commit, as the test added is no longer passing.

Update: Rather than reverting the original commit, updating this to only remove the unnecessary test.

Original Patch: https://reviews.llvm.org/D40052

rdar://98592334

2 years ago[AArch64][CodeGen]Fold the mov and lsl into ubfiz
zhongyunde [Fri, 9 Sep 2022 15:44:58 +0000 (23:44 +0800)]
[AArch64][CodeGen]Fold the mov and lsl into ubfiz

Fix the issue exposed by D132322, depand on D132939
Reviewed By: efriedma, paulwalker-arm
Differential Revision: https://reviews.llvm.org/D132325

2 years ago[InstCombine] move/adjust comments about demanded bits; NFC
Sanjay Patel [Fri, 9 Sep 2022 15:46:50 +0000 (11:46 -0400)]
[InstCombine] move/adjust comments about demanded bits; NFC

The code has been moved/copied around, but the comments were not updated to match.

2 years ago[flang] Compute type allocation size based on the actual target representation.
Slava Zakharin [Thu, 8 Sep 2022 17:13:45 +0000 (10:13 -0700)]
[flang] Compute type allocation size based on the actual target representation.

This change makes sure that we compute the element size and the byte stride
based on the target representation of the element type.

For example, when REAL*10 is mapped to x86_fp80 each element occupies
16 bytes rather than 10 because of the padding.

Note that the size computation method used here actually returns
the distance between two adjacent element of the *same* type in memory
(which is equivalent to llvm::DataLayout::getTypeAllocSize()).
It does not return the number of bytes that may be overwritten
by storing a value of the specified type (e.g. what can be computed
via llvm::DataLayout::getTypeStoreSize(), but not available in
mlir::DataLayout).

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

2 years ago[Libomptarget] Add proper LLVM libraries now that the AMDGPU plugin uses them
Joseph Huber [Fri, 9 Sep 2022 15:31:03 +0000 (10:31 -0500)]
[Libomptarget] Add proper LLVM libraries now that the AMDGPU plugin uses them

Summary:
The AMDGPU and CUDA plugins now relies on the Object and Support
libraries. This patch adds them explicitly rather than hoping that they
share the symbols loaded from the standard `libomptarget`.

2 years ago[mlir][linalg] Fix tiling interface implementation ordering of parallel_insert_slice
Guray Ozen [Fri, 9 Sep 2022 14:39:50 +0000 (16:39 +0200)]
[mlir][linalg] Fix tiling interface implementation ordering of parallel_insert_slice

The tiling interface generates the order of parallel_insert_slice incorrectly when there are multiple destionation operands. This revision fixes that and adds a test for it. It depends on D132937

Reviewed By: nicolasvasilache

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

2 years ago[LV] Autogen a test for ease of update
Philip Reames [Fri, 9 Sep 2022 15:12:29 +0000 (08:12 -0700)]
[LV] Autogen a test for ease of update

2 years ago[gdb-remote] Move broadcasting logic down to GDBRemoteClientBase
Michał Górny [Wed, 7 Sep 2022 15:13:57 +0000 (17:13 +0200)]
[gdb-remote] Move broadcasting logic down to GDBRemoteClientBase

Move the broadcasting support from GDBRemoteCommunication
to GDBRemoteClientBase since this is where it is actually used.  Remove
GDBRemoteCommunication and subclass constructor arguments left over
after Communication cleanup.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.llvm.org/D133427

2 years ago[clang-format] NFC remove incorrect whitespace causing documentation issue
mydeveloperday [Fri, 9 Sep 2022 14:55:34 +0000 (15:55 +0100)]
[clang-format] NFC remove incorrect whitespace causing documentation issue

2 years ago[AMDGPU] Fix crash legalizing G_EXTRACT_VECTOR_ELT with negative index
Jay Foad [Tue, 30 Aug 2022 13:09:19 +0000 (14:09 +0100)]
[AMDGPU] Fix crash legalizing G_EXTRACT_VECTOR_ELT with negative index

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

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

2 years ago[mlir][linalg] Relax tiling constraint when there are multiple destination operands
Guray Ozen [Fri, 9 Sep 2022 14:34:10 +0000 (16:34 +0200)]
[mlir][linalg] Relax tiling constraint when there are multiple destination operands

This revision relaxes constraint of tiling when there are multiple destination operands. It also adds a test.

Reviewed By: nicolasvasilache

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

2 years ago[LV] Pull out common expression [nfc]
Philip Reames [Fri, 9 Sep 2022 14:31:46 +0000 (07:31 -0700)]
[LV] Pull out common expression [nfc]

2 years ago[VPlan] Only generate single instr for stores uniform across all parts.
Philip Reames [Fri, 9 Sep 2022 14:14:19 +0000 (07:14 -0700)]
[VPlan] Only generate single instr for stores uniform across all parts.

Extend the approach taken by D133019 to store instructions.

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

2 years ago[AST] Fix unit test to use BatchAA (NFC)
Nikita Popov [Fri, 9 Sep 2022 14:06:49 +0000 (16:06 +0200)]
[AST] Fix unit test to use BatchAA (NFC)

2 years ago[HLSL] Call global constructors inside entry
Chris Bieneman [Wed, 7 Sep 2022 15:05:44 +0000 (10:05 -0500)]
[HLSL] Call global constructors inside entry

HLSL doesn't have a runtime loader model that supports global
construction by a loader or runtime initializer. To allow us to leverage
global constructors with minimal code generation impact we put calls to
the global constructors inside the generated entry function.

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

2 years ago[libc][math] Implement acosf function correctly rounded for all rounding modes.
Tue Ly [Fri, 9 Sep 2022 02:30:37 +0000 (22:30 -0400)]
[libc][math] Implement acosf function correctly rounded for all rounding modes.

Implement acosf function correctly rounded for all rounding modes.

We perform range reduction as follows:

- When `|x| < 2^(-10)`, we use cubic Taylor polynomial:
```
  acos(x) = pi/2 - asin(x) ~ pi/2 - x - x^3 / 6.
```
- When `2^(-10) <= |x| <= 0.5`, we use the same approximation that is used for `asinf(x)` when `|x| <= 0.5`:
```
  acos(x) = pi/2 - asin(x) ~ pi/2 - x - x^3 * P(x^2).
```
- When `0.5 < x <= 1`, we use the double angle formula: `cos(2y) = 1 - 2 * sin^2 (y)` to reduce to:
```
  acos(x) = 2 * asin( sqrt( (1 - x)/2 ) )
```
- When `-1 <= x < -0.5`, we reduce to the positive case above using the formula:
```
  acos(x) = pi - acos(-x)
```

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

$ CORE_MATH_PERF_MODE="rdtsc" ./perf.sh asinf --latency
GNU libc version: 2.35
GNU libc release: stable
CORE-MATH latency   : 55.554
System LIBC latency : 76.879
LIBC latency        : 62.118
```

Reviewed By: orex, zimmermann6

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

2 years ago[AST] Use BatchAA in aliasesUnknownInst() (NFCI)
Nikita Popov [Fri, 9 Sep 2022 13:54:24 +0000 (15:54 +0200)]
[AST] Use BatchAA in aliasesUnknownInst() (NFCI)

2 years ago[mlir][vector] Extend WarpExecutionOnLane0 pattern support to allow deduplicating...
Nicolas Vasilache [Fri, 9 Sep 2022 08:13:09 +0000 (01:13 -0700)]
[mlir][vector] Extend WarpExecutionOnLane0 pattern support to allow deduplicating identical yield values.

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

2 years ago[Flang] Update build documentation
Peter Steinfeld [Tue, 23 Aug 2022 20:18:04 +0000 (13:18 -0700)]
[Flang] Update build documentation

Changes to build instructions based on the latest requirements with
compiler-rt.

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

2 years agoAdd helper func to get first non-alloca position
Sebastian Neubauer [Fri, 9 Sep 2022 13:14:59 +0000 (15:14 +0200)]
Add helper func to get first non-alloca position

The LLVM performance tips suggest that allocas should be placed at the
beginning of the entry block. So far, llvm doesn’t provide any helper to
find that position.

Add BasicBlock::getFirstNonPHIOrDbgOrAlloca and IRBuilder::SetInsertPointPastAllocas(Function*)
that get an insert position after the (static) allocas at the start of a
function and use it in ShadowStackGCLowering.

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

2 years agoAdd command line argument parsing to the Windows packaging script.
Carlos Alberto Enciso [Fri, 9 Sep 2022 13:36:40 +0000 (14:36 +0100)]
Add command line argument parsing to the Windows packaging script.

As discussed here:
https://discourse.llvm.org/t/build-llvm-release-bat-script-options

Add a function to parse command line arguments: `parse_args`.

The format for the arguments is:
  Boolean: --option
  Value:   --option<separator>value
    with `<separator>` being: space, colon, semicolon or equal sign

Command line usage example:
  my-batch-file.bat --build --type=release --version 123

It will create 3 variables:
  `build` with the value `true`
  `type` with the value `release`
  `version` with the value `123`

Usage:
  set "build="
  set "type="
  set "version="

  REM Parse arguments.
  call :parse_args %*

  if defined build (
    ...
  )
  if %type%=='release' (
    ...
  )
  if %version%=='123' (
    ...
  )

2 years ago[LICM] Regenerate test checks (NFC)
Nikita Popov [Fri, 9 Sep 2022 13:30:05 +0000 (15:30 +0200)]
[LICM] Regenerate test checks (NFC)

2 years ago[mlir][linalg] Retire LinalgStrategyEnablePass
Guray Ozen [Fri, 9 Sep 2022 08:19:48 +0000 (10:19 +0200)]
[mlir][linalg] Retire LinalgStrategyEnablePass

This revision retires LinalgStrategyEnablePass.

Reviewed By: nicolasvasilache

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

2 years ago[lldb-server] Report launch error in vRun packets
Pavel Labath [Tue, 6 Sep 2022 13:36:23 +0000 (15:36 +0200)]
[lldb-server] Report launch error in vRun packets

Uses our existing "error string" extension to provide a better
indication of why the launch failed (the client does not make use of the
error yet).

Also, fix the way we obtain the launch error message (make sure we read
the whole message, and skip trailing garbage), and reduce the size of
TestLldbGdbServer by splitting some tests into a separate file.

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

2 years ago[lldb] Fix ThreadedCommunication races
Pavel Labath [Wed, 7 Sep 2022 09:25:44 +0000 (11:25 +0200)]
[lldb] Fix ThreadedCommunication races

The Read function could end up blocking if data (or EOF) arrived just as
it was about to start waiting for the events. This was only discovered
now, because we did not have unit tests for this functionality before.
We need to check for data *after* we start listening for incoming
events. There were no changes to the read thread code needed, as we
already use this pattern in SynchronizeWithReadThread, so I just updated
the comments to make it clear that it is used for reading as well.

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

2 years ago[X86] Fix VPPERM load folding latency
Simon Pilgrim [Fri, 9 Sep 2022 12:57:39 +0000 (13:57 +0100)]
[X86] Fix VPPERM load folding latency

Noticed while investigating BITREVERSE cost numbers with the D103695 script - VPPERM folded loads was using the WriteVarShuffleX defaults and was missing an override like the VPPERM reg-reg variants

2 years ago[NFC][AMDGPU] Pre-commit test for D132837.
Thomas Symalla [Fri, 9 Sep 2022 12:08:10 +0000 (14:08 +0200)]
[NFC][AMDGPU] Pre-commit test for D132837.

2 years agoFix LLVM sphinx build
Aaron Ballman [Fri, 9 Sep 2022 11:55:12 +0000 (07:55 -0400)]
Fix LLVM sphinx build

Addresses the issue found by:
https://lab.llvm.org/buildbot/#/builders/30/builds/25791

We can use anonymous references rather than explicit ones.

2 years ago[llvm-objdump] Create name for fake sections
Namhyung Kim [Fri, 9 Sep 2022 08:36:41 +0000 (09:36 +0100)]
[llvm-objdump] Create name for fake sections

It doesn't have a section header string table so add a vector to have
the strings and create name based on the program header type and the
index.

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

2 years ago[Clang] Use virtual FS in processing config files
Serge Pavlov [Fri, 9 Sep 2022 11:23:52 +0000 (18:23 +0700)]
[Clang] Use virtual FS in processing config files

Clang has support of virtual file system for the purpose of testing, but
treatment of config files did not use it. This change enables VFS in it
as well.

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

2 years ago[LICM] Allow promotion with non-load/store users
Nikita Popov [Thu, 8 Sep 2022 12:27:31 +0000 (14:27 +0200)]
[LICM] Allow promotion with non-load/store users

If there are non-load/store users of the promoted pointer, we
currently abort promotion. However, having such users isn't really
relevant to the transform. We already separately check that a)
there are no instructions that modref the promoted pointer and
b) that a pointer capture disables store promotion.

In the affected @test_captured_in_loop test case we have a readnone
capture of the promoted pointer, which means that load promotion
can be performed (while store promotion cannot).

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

2 years ago[AMDGPU][MC][GFX11][NFC] Update disassembler tests for VOPD instructions
Dmitry Preobrazhensky [Fri, 9 Sep 2022 10:10:55 +0000 (13:10 +0300)]
[AMDGPU][MC][GFX11][NFC] Update disassembler tests for VOPD instructions

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

2 years ago[AMDGPU][MC][GFX11][NFC] Update disassembler tests for VOP3P instructions
Dmitry Preobrazhensky [Fri, 9 Sep 2022 10:06:44 +0000 (13:06 +0300)]
[AMDGPU][MC][GFX11][NFC] Update disassembler tests for VOP3P instructions

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

2 years ago[AMDGPU][MC][GFX11][NFC] Correct VOPD parsing
Dmitry Preobrazhensky [Fri, 9 Sep 2022 10:01:17 +0000 (13:01 +0300)]
[AMDGPU][MC][GFX11][NFC] Correct VOPD parsing

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

2 years ago[CostModel][X86] Add missing i8 throughput cost
Simon Pilgrim [Fri, 9 Sep 2022 09:58:40 +0000 (10:58 +0100)]
[CostModel][X86] Add missing i8 throughput cost

2 years ago[mlir][vector] NFC - Clean up vector patterns and propagate benefit through populate...
Nicolas Vasilache [Fri, 9 Sep 2022 08:13:09 +0000 (01:13 -0700)]
[mlir][vector] NFC - Clean up vector patterns and propagate benefit through populate functions

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

2 years agoRevert "[Clang] Use virtual FS in processing config files"
Serge Pavlov [Fri, 9 Sep 2022 09:42:00 +0000 (16:42 +0700)]
Revert "[Clang] Use virtual FS in processing config files"

This reverts commit 9424497e43aff088e014d65fd952ec557e28e6cf.
Some buildbots failed, reverted for investigation.

2 years ago[mlir] Bump building CRunnerUtils from C++11 to C++17
Brad Smith [Fri, 9 Sep 2022 09:31:44 +0000 (05:31 -0400)]
[mlir] Bump building CRunnerUtils from C++11 to C++17

Reviewed By: nikic

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

2 years ago[Clang] Use virtual FS in processing config files
Serge Pavlov [Mon, 29 Aug 2022 05:50:36 +0000 (12:50 +0700)]
[Clang] Use virtual FS in processing config files

Clang has support of virtual file system for the purpose of testing, but
treatment of config files did not use it. This change enables VFS in it
as well.

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

2 years ago[NFC][LV] Convert masked call tests to use update script
Graham Hunter [Fri, 9 Sep 2022 09:07:39 +0000 (10:07 +0100)]
[NFC][LV] Convert masked call tests to use update script

2 years ago"Recommit "[AggressiveInstCombine] Lower Table Based CTTZ""
Djordje Todorovic [Fri, 9 Sep 2022 07:44:10 +0000 (09:44 +0200)]
"Recommit "[AggressiveInstCombine] Lower Table Based CTTZ""

This reverts commit 053841c5624ca7eacd108a26071d8a1cefe1bebd.

We faced a use-after-free after pushing the D113291, since the
foldSqrt() has a call to eraseFromParent(). The function
should be at the end of the main loop that folds the patterns.
This patch fixes that.

2 years ago[OpenMP] Install ompt-multiplex.h alongside omp.h
serge-sans-paille [Wed, 7 Sep 2022 12:48:10 +0000 (14:48 +0200)]
[OpenMP] Install ompt-multiplex.h alongside omp.h

The default install direction may not be in the compiler search path.

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

2 years ago[msan] Insert simplification passes after instrumentation
Vitaly Buka [Fri, 9 Sep 2022 06:33:07 +0000 (23:33 -0700)]
[msan] Insert simplification passes after instrumentation

This resolves TODO from D96406.
InstCombine issue is fixed with D133394.

Save 4.5% of .text on CTMark.

2 years ago[bazel] Port 7fa1d743d073
Benjamin Kramer [Fri, 9 Sep 2022 07:31:13 +0000 (09:31 +0200)]
[bazel] Port 7fa1d743d073

2 years ago[clang][MinGW] Add `-mguard=cf` and `-mguard=cf-nochecks`
Alvin Wong [Fri, 9 Sep 2022 06:18:02 +0000 (09:18 +0300)]
[clang][MinGW] Add `-mguard=cf` and `-mguard=cf-nochecks`

This option can be used to enable Control Flow Guard checks and
generation of address-taken function table. They are equivalent to
`/guard:cf` and `/guard:cf,nochecks` in clang-cl. Passing this flag to
the Clang driver will also pass `--guard-cf` to the MinGW linker.

This feature is disabled by default. The option `-mguard=none` is also
available to explicitly disable this feature.

Reviewed By: rnk

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

2 years ago[LLD][MinGW] Add --[no-]guard-cf and --[no-]guard-longjmp
Alvin Wong [Fri, 9 Sep 2022 06:17:33 +0000 (09:17 +0300)]
[LLD][MinGW] Add --[no-]guard-cf and --[no-]guard-longjmp

These will be LLD-specific options to support Control Flow Guard for the
MinGW target. They are disabled by default, but enabling `--guard-cf`
will also enable `--guard-longjmp` unless `--no-guard-longjmp` is also
specified. These options maps to `-guard:cf,[no]longjmp`.

Note that these features require the `_load_config_used` symbol to
contain the load config directory and be filled with the required
symbols. While current versions of mingw-w64 do not supply this symbol,
the user can provide their own version of it.

Reviewed By: MaskRay, rnk

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

2 years ago[mlir][vector] Don't duplicate transfer_read during vector distribution
Thomas Raoux [Thu, 8 Sep 2022 22:57:54 +0000 (22:57 +0000)]
[mlir][vector] Don't duplicate transfer_read during vector distribution

Only apply the pattern if the transfer_read can be distributed for all
its uses.

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

2 years ago[LoongArch] Add codegen support for frint
gonglingqin [Fri, 9 Sep 2022 06:12:07 +0000 (14:12 +0800)]
[LoongArch] Add codegen support for frint

According to the revised description in `LoongArch Reference Manual v1.02`,
frint.[s/d] does not judge whether floating-point inexact exceptions are
allowed indicated by FCSR, i.e. always executes roundToIntegralExact(x).
What's more, the manual also specifically defines that frint.s/d is only
necessary to be defined in LA64. So ISD::FRINT is legal for LA64.

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