platform/upstream/llvm.git
18 months ago[InstCombine] Fix buggy `(mul X, Y)` -> `(shl X, Log2(Y))` transform PR62175
Noah Goldstein [Tue, 18 Apr 2023 21:34:02 +0000 (16:34 -0500)]
[InstCombine] Fix buggy `(mul X, Y)` -> `(shl X, Log2(Y))` transform PR62175

Bug was because we recognized patterns like `(shl 4, Z)` as a power of
2 we could take Log2 of (`2 + Z`), but doing `(shl X, (2 + Z))` can
cause a poison shift.
    https://alive2.llvm.org/ce/z/yuJm_k

The fix is to verify that `Log2(Y)` will be a non-poisonous shift
amount. We can do this with:
    `nsw` flag:
        - https://alive2.llvm.org/ce/z/yyyJBr
        - https://alive2.llvm.org/ce/z/YgubD_
    `nuw` flag:
        - https://alive2.llvm.org/ce/z/-4mpyV
        - https://alive2.llvm.org/ce/z/a6ik6r
    Prove `Y != 0`:
        - https://alive2.llvm.org/ce/z/ced4su
        - https://alive2.llvm.org/ce/z/X-JJHb

Reviewed By: nikic

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

18 months ago[ExecutionEngine] Allow JIT tests to run on PowerPC.
Lang Hames [Tue, 18 Apr 2023 22:11:58 +0000 (15:11 -0700)]
[ExecutionEngine] Allow JIT tests to run on PowerPC.

These tests passed on my ppc64le test machine. If they survive testing by the
buildbots then we can leave them enabled, and this will allow us to land the
new ppc64 JITLink backend (https://reviews.llvm.org/D148192).

18 months ago[AsmPrinter] Fix placement of function entry comments
Fangrui Song [Tue, 18 Apr 2023 22:01:36 +0000 (15:01 -0700)]
[AsmPrinter] Fix placement of function entry comments

The placement is currently wrong in the presence of function entry related
instrumentations (prefixdata, -fpatchable-function-entry=, -fsanitize=kcfi,
etc).

18 months ago[gwp_asan] Employ EXPECT_DEATH for zxtest compatibility
Caslyn Tonelli [Thu, 30 Mar 2023 00:03:05 +0000 (00:03 +0000)]
[gwp_asan] Employ EXPECT_DEATH for zxtest compatibility

Employ a similar tactic introduced by https://reviews.llvm.org/D94362
for gwp_asan tests. zxtest `ASSERT_DEATH` syntax differs from gtest in
that it expects a lambda.

zxtest does not have `EXPECT_DEATH`, so it introduced for Fuchsia builds
and wraps the expression with a lambda to create a compatible syntax
between zxtest and gtest for death tests.

An example of where this compatiblity is needed is in
`never_allocated.cpp`.

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

18 months agoRefactor BasicBlockSectionsProfileReader::getBBClusterInfoForFunction.
Rahman Lavaee [Tue, 18 Apr 2023 21:19:28 +0000 (21:19 +0000)]
Refactor BasicBlockSectionsProfileReader::getBBClusterInfoForFunction.

18 months ago[gn build] Port 76e1521b0acf
LLVM GN Syncbot [Tue, 18 Apr 2023 21:16:29 +0000 (21:16 +0000)]
[gn build] Port 76e1521b0acf

18 months agoNon-debuginfo JITLink perf jitdump support
Prem Chintalapudi [Tue, 18 Apr 2023 21:15:32 +0000 (17:15 -0400)]
Non-debuginfo JITLink perf jitdump support

This patch ports PerfJITEventListener to a JITLink plugin, but adds unwind record support and drops debuginfo support temporarily. Debuginfo can be enabled in the future by providing a way to obtain a DWARFContext from a LinkGraph.

See D146060 for an experimental implementation that adds debuginfo parsing.

Reviewed By: lhames

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

18 months ago[mlir][spirv][vector] Enable vector3 when converting to dot product
Lei Zhang [Tue, 18 Apr 2023 20:57:35 +0000 (13:57 -0700)]
[mlir][spirv][vector] Enable vector3 when converting to dot product

It's common to see such cases for contraction from convolution with
input channel as 3. Although we aren't utilizing all 4 lanes for
dot product, it should still be better than performing the multiply
and reduction separately.

Reviewed By: kuhar

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

18 months ago[Clang][NFC] Rename methods/vars to reflect their real usage
Bill Wendling [Mon, 17 Apr 2023 23:31:42 +0000 (16:31 -0700)]
[Clang][NFC] Rename methods/vars to reflect their real usage

The "getField" method is a bit confusing considering we also have a
"getFieldName" method. Instead, use "getFieldDecl" rather than
"getField".

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

18 months agoRemove hardcoded address bits in ABIMacOS_arm64
Jason Molenda [Tue, 18 Apr 2023 20:01:49 +0000 (13:01 -0700)]
Remove hardcoded address bits in ABIMacOS_arm64

A default number of addressing bits was hardcoded in
ABIMacOSX_arm64::FixAddress while we updated different
environments to fetch the value dynamically.  Remove
the old hardcoded value.

Differential Revision: https://reviews.llvm.org/D148603
rdar://108068497

18 months ago[NFC][lsan] Rename test function
Vitaly Buka [Tue, 18 Apr 2023 19:43:13 +0000 (12:43 -0700)]
[NFC][lsan] Rename test function

18 months ago[lsan] Disabled D148281 test on Darwin
Vitaly Buka [Tue, 18 Apr 2023 19:41:43 +0000 (12:41 -0700)]
[lsan] Disabled D148281 test on Darwin

For unknown reason it fails to link.

18 months ago[libc] Add two more recipes to do a cross build.
Siva Chandra Reddy [Fri, 31 Mar 2023 19:19:58 +0000 (12:19 -0700)]
[libc] Add two more recipes to do a cross build.

Reviewed By: jeffbailey

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

18 months ago[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic...
Alexey Bataev [Thu, 13 Apr 2023 18:28:54 +0000 (11:28 -0700)]
[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic add member functions.

Implemented the reshuffling in finalize member function + add basic
support for add member functions, used during vector build.

Part of D110978

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

18 months ago[libc][NFC] Move RoundingModeUtils to LibcFPTestHelpers.
Siva Chandra Reddy [Tue, 18 Apr 2023 00:35:28 +0000 (00:35 +0000)]
[libc][NFC] Move RoundingModeUtils to LibcFPTestHelpers.

Reviewed By: lntue

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

18 months agoReland "[clang-repl] Enable debugging of JIT-ed code."
Vassil Vassilev [Tue, 18 Apr 2023 16:22:04 +0000 (16:22 +0000)]
Reland "[clang-repl] Enable debugging of JIT-ed code."

Original commit message: "
[clang-repl] Enable debugging of JIT-ed code.

    This change follows llvm/llvm-project@21b5ebd and makes use of the jitlink
    infrastructure. In order to use this feature inside lldb one needs to run the
    lldb command: settings set plugin.jit-loader.gdb.enable on

    This works currently only on Darwin since jitlink is not a default ELF/x86-64
    backend yet.

    Differential revision: https://reviews.llvm.org/D148481
"

This patch reverts commit e64fbf2cca8c4763a058ba59a48ab8e4b8193028 and adds
the missing library dependencies which caused the initial failure.

18 months ago[mlir][sparse] remove redundate integration tests.
Peiming Liu [Tue, 18 Apr 2023 17:19:30 +0000 (17:19 +0000)]
[mlir][sparse] remove redundate integration tests.

The removed tests evaluate the same kernels in existing tests, namely `sparse_conv2d.mlir` and `spares_conv3d.mlir`.

Reviewed By: aartbik

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

18 months ago"Reland "[hwasan] Provide aliases for c allocation functions for Fuchsia"
Leonard Chan [Tue, 18 Apr 2023 18:26:01 +0000 (18:26 +0000)]
"Reland "[hwasan] Provide aliases for c allocation functions for Fuchsia"

This reverts commit cdf71d2ccd84ed7b8891924b04d1603f344038e9.

Relanding this because this only affects fuchsia builders and we moved
our hwasan builders to a non-blocking pool in the meantime.

18 months ago[PowerPC][LLD] Update DataLayout in tests
David Tenty [Tue, 18 Apr 2023 18:19:45 +0000 (14:19 -0400)]
[PowerPC][LLD] Update DataLayout in tests

Missed by the original commit of D147016 which updated the DataLayout for Power.

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

18 months ago[libc][Obvious] Fix the performance table in math function documentation.
Tue Ly [Tue, 18 Apr 2023 18:09:42 +0000 (14:09 -0400)]
[libc][Obvious] Fix the performance table in math function documentation.

18 months agoRevert "[SLP]Add final resize to ShuffleCostEstimator::finalize member function and...
Alexey Bataev [Tue, 18 Apr 2023 17:40:20 +0000 (10:40 -0700)]
Revert "[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic add member functions."

This reverts commit cd341f3f4878137d1c9e7a05c4c3a7bd8ff216dc to fix
a crash revealed by buildbot https://lab.llvm.org/buildbot#builders/124/builds/7108.

18 months ago[DAG] Restrict (fp_round (copysign X, Y)) -> (copysign (fp_round X), Y) combine
Philip Reames [Mon, 17 Apr 2023 21:36:27 +0000 (14:36 -0700)]
[DAG] Restrict (fp_round (copysign X, Y)) -> (copysign (fp_round X), Y) combine

This transformation creates an copysign node whose argument types do not match. RISCV does not handle such a case which results in a crash today. Looking at the relevant code in DAG, it looks like the process of enabling the non-matching types case was never completed for vectors at all. The transformation which triggered the RISCV crash is a specialization of another transform (specifically due to one use for profitability) which isn't enabled by default. Given that, I chose to match the preconditions for that other transform.

Other options here include:
* Updating RISCV codegen to handle the mismatched argument type case for vectors. This is slightly tricky as I don't see an obvious profitable lowering for this case which doesn't involve simply adding back in the round/trunc.
* Disabling the transform via a target hook.

This patch does involve two changes for AArch64 codegen. These could be called regressions, but well, the code after actually looks better than the code before.

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

18 months ago[ClangFE] Handle statement expressions properly with CheckAtomicAlignment().
Jonas Paulsson [Fri, 14 Apr 2023 10:12:29 +0000 (12:12 +0200)]
[ClangFE] Handle statement expressions properly with CheckAtomicAlignment().

Make CheckAtomicAlignment() return the computed pointer for reuse to avoid
emitting it twice.

Reviewed By: efriedma

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

18 months ago[X86] Create all-one vector(v8i32) for TESTC(X,~X) == TESTC(X,-1) if X is v8f32
Bing1 Yu [Tue, 18 Apr 2023 17:27:05 +0000 (01:27 +0800)]
[X86] Create all-one vector(v8i32) for TESTC(X,~X) == TESTC(X,-1) if X is v8f32

getAllOnesConstant can only take v8i32 instead of v8f32

Reviewed By: RKSimon

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

18 months ago[PowerPC] Add function pointer alignment to DataLayout
David Tenty [Tue, 18 Apr 2023 15:36:10 +0000 (11:36 -0400)]
[PowerPC] Add function pointer alignment to DataLayout

The alignment of function pointers was added to the Datalayout by
D57335 but currently is unset for the Power target. This will cause us
to compute a conservative minimum alignment of one if places like
Value::getPointerAlignment.

This patch implements the function pointer alignment in the Datalayout
for the Power backend and Power targets in clang, so we can query the
value for a particular Power target.

We come up with the correct value one of two ways:

- If the target uses function descriptor objects (i.e. ELFv1 & AIX ABIs),
  then a function pointer points to the descriptor, so use the alignment
  we would emit the descriptor with.
- If the target doesn't use function descriptor objects (i.e. ELFv2), a
  function pointer points to the global entry point, so use the minimum
  alignment for code on Power (i.e. 4-bytes).

Reviewed By: nemanjai

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

18 months ago[OpenMP][libomptarget][NFC] Remove error data member from AsyncInfoWrapperTy
Kevin Sala [Tue, 11 Apr 2023 16:41:39 +0000 (18:41 +0200)]
[OpenMP][libomptarget][NFC] Remove error data member from AsyncInfoWrapperTy

This patch removes the Err data member from the AsyncInfoWrapperTy class. Now the error
is stored externally, in the caller side, and it is explicitly passed to the
AsyncInfoWrapperTy::finalize() function as a reference.

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

18 months ago[vector] When trimming leading insertion dimensions, base the final result on the...
Benjamin Kramer [Tue, 18 Apr 2023 14:53:17 +0000 (16:53 +0200)]
[vector] When trimming leading insertion dimensions, base the final result on the ranks

This was incorrect when the number of dropped source dims was smaller
than the number of dropped dst dims. We still need to insert zeros if
there is anything dropped from the src.

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

18 months ago[Headers][doc] Add FMA intrinsic descriptions
Paul Robinson [Tue, 18 Apr 2023 16:26:35 +0000 (09:26 -0700)]
[Headers][doc] Add FMA intrinsic descriptions

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

18 months ago[GlobalOpt] Don't evaluate large memset (PR62191)
Nikita Popov [Tue, 18 Apr 2023 16:22:37 +0000 (18:22 +0200)]
[GlobalOpt] Don't evaluate large memset (PR62191)

If the memset is large, checking every single byte of the global
may be very slow. Add an upper bound on the size of memset we
handle.

For the common special case of memset zeroinitializer to zero,
add a fastpath that checks just that and is not length limited.

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

18 months ago[libc][NFC] Move ExecuteFunction test util to test/UnitTest.
Siva Chandra Reddy [Tue, 18 Apr 2023 08:09:18 +0000 (08:09 +0000)]
[libc][NFC] Move ExecuteFunction test util to test/UnitTest.

Reviewed By: lntue

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

18 months ago[flang] Fixed substr access in embox/rebox CodeGen.
Slava Zakharin [Tue, 18 Apr 2023 00:06:14 +0000 (17:06 -0700)]
[flang] Fixed substr access in embox/rebox CodeGen.

The code was using the original operand of the operation, while
it should have been using the remapped operands via the adaptor.

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

18 months agoRevert "[libc] handle memset sequence as a separate struct"
Guillaume Chatelet [Tue, 18 Apr 2023 15:24:24 +0000 (15:24 +0000)]
Revert "[libc] handle memset sequence as a separate struct"

This patch broke the build bots.
This reverts commit 6fdc244e9f13d2ce20a26d05513f22a1e099f90a.

18 months ago[libc] handle memset sequence as a separate struct
Guillaume Chatelet [Tue, 18 Apr 2023 15:16:20 +0000 (15:16 +0000)]
[libc] handle memset sequence as a separate struct

These sequence of calls don't really make sense for head_tail and loop_and_tail.

18 months ago[CostModel][X86] Add BSWAP cost model estimations
Simon Pilgrim [Tue, 18 Apr 2023 15:04:59 +0000 (16:04 +0100)]
[CostModel][X86] Add BSWAP cost model estimations

Use a modified version of the D103695 script to determine more accurate throughput/latency/codesize/size-latency cost estimates

18 months ago[clang-scan-deps] Add clang-scan-deps to llvm-driver build
Alex Brachet [Tue, 18 Apr 2023 15:02:23 +0000 (15:02 +0000)]
[clang-scan-deps] Add clang-scan-deps to llvm-driver build

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

18 months ago[AMDGPU][AsmParser] Refine parsing SDWA operands.
Ivan Kosarev [Tue, 18 Apr 2023 14:26:09 +0000 (15:26 +0100)]
[AMDGPU][AsmParser] Refine parsing SDWA operands.

Removes the need for the custom code in parseCustomOperand().

Reviewed By: foad

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

18 months agoRevert "[clang-repl] Enable debugging of JIT-ed code."
Vassil Vassilev [Tue, 18 Apr 2023 13:40:52 +0000 (13:40 +0000)]
Revert "[clang-repl] Enable debugging of JIT-ed code."

This reverts commit 1e4891e681c51f3e2a724b4ac4e42380ec4a9be1.

Some bots complain about undefined llvm_orc_registerJITLoaderGDBAllocAction.

18 months ago[libc] Add debug messages to bcmp and memcmp tests
Guillaume Chatelet [Tue, 18 Apr 2023 13:35:18 +0000 (13:35 +0000)]
[libc] Add debug messages to bcmp and memcmp tests

18 months ago[clang-repl] Enable debugging of JIT-ed code.
Vassil Vassilev [Sun, 16 Apr 2023 20:43:29 +0000 (20:43 +0000)]
[clang-repl] Enable debugging of JIT-ed code.

This change follows llvm/llvm-project@21b5ebd and makes use of the jitlink
infrastructure. In order to use this feature inside lldb one needs to run the
lldb command: settings set plugin.jit-loader.gdb.enable on

This works currently only on Darwin since jitlink is not a default ELF/x86-64
backend yet.

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

18 months ago[SCEV] Add additional tests for addrec nowrap flags (NFC)
Nikita Popov [Tue, 18 Apr 2023 13:14:59 +0000 (15:14 +0200)]
[SCEV] Add additional tests for addrec nowrap flags (NFC)

18 months ago[MC] Simplify uses of subregs/superregs. NFC.
Jay Foad [Tue, 18 Apr 2023 13:12:14 +0000 (14:12 +0100)]
[MC] Simplify uses of subregs/superregs. NFC.

18 months ago[libc] Add AVX detectionwq
Guillaume Chatelet [Tue, 18 Apr 2023 13:10:51 +0000 (13:10 +0000)]
[libc] Add AVX detectionwq

18 months ago[Test] Add IRCE tests with non-canonical range check
Max Kazantsev [Tue, 18 Apr 2023 13:06:46 +0000 (20:06 +0700)]
[Test] Add IRCE tests with non-canonical range check

Patch by Aleksandr Popov!

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

18 months ago[coro][nfc] Use Load/Store instruction APIs
Felipe de Azevedo Piovezan [Mon, 17 Apr 2023 21:17:04 +0000 (17:17 -0400)]
[coro][nfc] Use Load/Store instruction APIs

Instead of hard-coding operand indices, it is cleaner to use the APIs
provided by the Load/Store Inst classes.

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

18 months ago[CodeGen] Enable processing of interconnected complex number operations
Igor Kirillov [Mon, 27 Mar 2023 16:32:40 +0000 (16:32 +0000)]
[CodeGen] Enable processing of interconnected complex number operations

With this patch, ComplexDeinterleavingPass now has the ability to handle
any number of interconnected operations involving complex numbers.
For example, the patch enables the processing of code like the following:

for (int i = 0; i < 1000; ++i) {
    a[i] =  w[i] * v[i];
    b[i] =  w[i] * u[i];
}

This code has multiple arrays containing complex numbers and a common
subexpression `w` that appears in two expressions.

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

18 months ago[BPI] Add method to swap outgoing edges probabilities
Max Kazantsev [Tue, 18 Apr 2023 12:35:49 +0000 (19:35 +0700)]
[BPI] Add method to swap outgoing edges probabilities

The motivation is need to update branch probability info after
swapping successors of branch instruction.

Differential Revision: https://reviews.llvm.org/D148237
Reviewed By: nikic

18 months ago[MC] Fix M68k build after D148613
Jay Foad [Tue, 18 Apr 2023 12:58:35 +0000 (13:58 +0100)]
[MC] Fix M68k build after D148613

18 months ago[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic...
Alexey Bataev [Thu, 13 Apr 2023 18:28:54 +0000 (11:28 -0700)]
[SLP]Add final resize to ShuffleCostEstimator::finalize member function and basic add member functions.

Implemented the reshuffling in finalize member function + add basic
support for add member functions, used during vector build.

Part of D110978

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

18 months ago[llvm-remarkutil] Add an option to display DebugLoc when collecting counts for remarks.
Zain Jaffal [Tue, 18 Apr 2023 12:48:41 +0000 (13:48 +0100)]
[llvm-remarkutil] Add an option to display DebugLoc when collecting counts for remarks.

Reviewed By: paquette

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

18 months ago[AMDGPU] Remove unnecessary assert
David Stuttard [Tue, 18 Apr 2023 10:38:49 +0000 (11:38 +0100)]
[AMDGPU] Remove unnecessary assert

Also remove the function attributes from the test. For PAL based shaders this isn't required.

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

18 months ago[BPI][Test] Check the probabilities after swapping branch successors
Max Kazantsev [Tue, 18 Apr 2023 12:31:08 +0000 (19:31 +0700)]
[BPI][Test] Check the probabilities after swapping branch successors

Patch by Aleksandr Popov!

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

18 months ago[gn] port 1ae57fed880688 and fix mistake from 1203a24764bfa
Nico Weber [Tue, 18 Apr 2023 12:29:50 +0000 (08:29 -0400)]
[gn] port 1ae57fed880688 and fix mistake from 1203a24764bfa

18 months ago[MC] Use subregs/superregs instead of MCSubRegIterator/MCSuperRegIterator. NFC.
Jay Foad [Mon, 17 Apr 2023 20:09:19 +0000 (21:09 +0100)]
[MC] Use subregs/superregs instead of MCSubRegIterator/MCSuperRegIterator. NFC.

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

18 months ago[AMDGPU] Refactor PromoteAlloca implementation
pvanhout [Mon, 17 Apr 2023 13:26:24 +0000 (15:26 +0200)]
[AMDGPU] Refactor PromoteAlloca implementation

We're getting a lot of mileage out of PromoteAlloca, and the pass had grown somewhat organically over the year.
This patch attempts to clean up the implementation and restructure it. For instance,
the exact same code path is now used for both promote alloca to LDS and
promote alloca to vector - just with different parameters.
This removes some redundancy here and there.
I also reordered functions in a way that hopefully makes more sense (e.g. all of the pass API is in the same place)

No functionality change is intended in the patch, but some checks were movved around so I'm not using the NFC tag.

Reviewed By: arsenm

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

18 months ago[Assignment Tracking][SelectionDAG] Downgrade dbg.assigns to dbg.values if assignment...
OCHyams [Tue, 18 Apr 2023 11:41:37 +0000 (12:41 +0100)]
[Assignment Tracking][SelectionDAG] Downgrade dbg.assigns to dbg.values if assignment tracking is not enabled

We shouldn't be able to reach this code path from source code but this provides
a better fail-safe than asserting. The result of the downgrade is a degraded
debugging experience, but it is better than nothing.

Reviewed By: jmorse

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

18 months ago[libunwind] Remove the legacy Unwind_AppleExtras.cpp
Louis Dionne [Sat, 15 Apr 2023 23:36:23 +0000 (00:36 +0100)]
[libunwind] Remove the legacy Unwind_AppleExtras.cpp

Unwind_AppleExtras.cpp contained annotations telling the linker that
some symbols are not available on some very old platforms. However,
those platforms are not supported anymore, so the annotations are not
used.

Why remove this? In addition to cleaning up the code base, this also
removes the possibility of implementing those annotations incorrectly
(which was the case previously), which could lead to important symbols
being hidden when they should have been visible.

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

18 months ago[mlir][NVGPU] Support cache all (.ca) in nvgpu.device_async_copy
Nicolas Vasilache [Tue, 18 Apr 2023 11:28:45 +0000 (04:28 -0700)]
[mlir][NVGPU] Support cache all (.ca) in nvgpu.device_async_copy

This patch adds support for cache all (.ca) in conversion from nvgpu-to-nvvm for inline asm `cp.async`.

For sizes other than 16 bytes cp.async cache global is not allowed and cache all is required to generate a valid ptx.

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

Authored-by: Manish Gupta <manigupta@google.com>
18 months ago[mlir][Linalg] NFC - Add builder for MatchOp
Nicolas Vasilache [Tue, 18 Apr 2023 09:45:35 +0000 (02:45 -0700)]
[mlir][Linalg] NFC - Add builder for MatchOp

18 months ago[mlir][Linalg] NFC - Pass TrackingListeners to all transforms
Nicolas Vasilache [Mon, 17 Apr 2023 14:36:52 +0000 (07:36 -0700)]
[mlir][Linalg] NFC - Pass TrackingListeners to all transforms

This commit properly passes tracking listeners to all Linalg transform operations.
It has no visible API or behavioral change but it helps downstream clients make better use of tracking facilities.

18 months ago[mlir][Linalg] NFC - Add builder for TileToScfForOp
Nicolas Vasilache [Mon, 17 Apr 2023 14:16:04 +0000 (07:16 -0700)]
[mlir][Linalg] NFC - Add builder for TileToScfForOp

18 months ago[AMDGPU] Do not crash on agpr_hi16 in AMDGPUResourceUsageAnalysis
pvanhout [Mon, 17 Apr 2023 12:19:11 +0000 (14:19 +0200)]
[AMDGPU] Do not crash on agpr_hi16 in AMDGPUResourceUsageAnalysis

Reviewed By: #amdgpu, arsenm

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

18 months agoFix uninitialized pointer members
Akshay Khadse [Tue, 18 Apr 2023 11:07:28 +0000 (19:07 +0800)]
Fix uninitialized pointer members

Reviewed By: LuoYuanke

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

18 months agoRevert "[Flang] Change fir.divc to perform library call rather than generate inline...
Kiran Chandramohan [Tue, 18 Apr 2023 11:08:16 +0000 (11:08 +0000)]
Revert "[Flang] Change fir.divc to perform library call rather than generate inline operations."

This reverts commit a7bb8e273f433cceeb547e87d04114178573496a.

Revertin since this runs into an ABI issue.

18 months ago[X86] Fix checks for illegal physreg COPY instructions
Jay Foad [Mon, 17 Apr 2023 14:44:07 +0000 (15:44 +0100)]
[X86] Fix checks for illegal physreg COPY instructions

D105263 changed this test to not expect a MachineVerifier error on this
instruction:

    ; FP16 reg is sub_reg of xmm
    %0:_(s16) = COPY $xmm0

D107082 changed the behaviour back again so that this instruction did
cause an error, but the test was not updated to expect the error.

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

18 months agoFix uninitialized pointer members in TableGen
Akshay Khadse [Tue, 18 Apr 2023 09:47:00 +0000 (17:47 +0800)]
Fix uninitialized pointer members in TableGen

Fixes static code analysis errors

Reviewed By: LuoYuanke

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

18 months agoReland [Modules] Remove unnecessary check when generating name lookup table in ASTWriter
Ilya Biryukov [Mon, 17 Apr 2023 11:50:59 +0000 (13:50 +0200)]
Reland [Modules] Remove unnecessary check when generating name lookup table in ASTWriter

Fixes #61065.

This reverts commit 363c98b2d67986b9766bb1426739970ce6d9a6f3 and relands
db987b9589be1eb604fcb74c85b410469e31485f with fixes from
bc95f27337c7ed77c28e713c855272848f01802a.

The module-related issues surfaced there are fixed in the
previous commit.

18 months ago[Modules] Do not rewrite existing decls when deserializing class fields
Ilya Biryukov [Mon, 17 Apr 2023 12:02:48 +0000 (14:02 +0200)]
[Modules] Do not rewrite existing decls when deserializing class fields

Classes can have implicit members that were added before fields were
deserialized. These members were previously silently removed from
`decls()` when fields were deserialized after them.

This was the root cause of a compilation error exposed in
bc95f27337c7ed77c28e713c855272848f01802a, added a test for it.

Reviewed By: ChuanqiXu

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

18 months ago[ValueTracking] Use SmallPtrSetImpl (NFC)
Nikita Popov [Tue, 18 Apr 2023 10:36:51 +0000 (12:36 +0200)]
[ValueTracking] Use SmallPtrSetImpl (NFC)

Don't hardcode set size in function signature.

18 months ago[CostModel][X86] Add more thorough BSWAP test coverage
Simon Pilgrim [Mon, 17 Apr 2023 22:05:07 +0000 (23:05 +0100)]
[CostModel][X86] Add more thorough BSWAP test coverage

Replace the existing tests with more complete coverage for all cost model kinds

18 months ago[CostModel][X86] Add BITREVERSE cost model estimations
Simon Pilgrim [Mon, 17 Apr 2023 21:23:29 +0000 (22:23 +0100)]
[CostModel][X86] Add BITREVERSE cost model estimations

Use a modified version of the D103695 script to determine more accurate throughput/latency/codesize/size-latency cost estimates

18 months ago[InstCombine] Don't reassociate GEPs for loop invariance
Nikita Popov [Tue, 11 Apr 2023 08:46:20 +0000 (10:46 +0200)]
[InstCombine] Don't reassociate GEPs for loop invariance

Since D146813, LICM will reassociate GEPs to expose hoisting
opportunities itself. Don't perform this transform in InstCombine,
where it is fragile because it depends on an optional LoopInfo
analysis.

18 months ago[clang] Return std::unique_ptr<TargetInfo> from AllocateTarget
Stoorx [Tue, 18 Apr 2023 09:54:40 +0000 (09:54 +0000)]
[clang] Return std::unique_ptr<TargetInfo> from AllocateTarget

In file 'clang/lib/Basic/Targets.cpp' the function 'AllocateTarget' had a raw pointer as a return type, which have been wrapped in the 'std::unique_ptr' in all usages.
This commit changes the signature of the function to return an instance of 'std::unique_ptr' directly.

Reviewed By: DavidSpickett

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

18 months ago[mlir][llvm] Handle invoke op branching to block with its result as an argument
Victor Perez [Fri, 14 Apr 2023 08:54:38 +0000 (09:54 +0100)]
[mlir][llvm] Handle invoke op branching to block with its result as an argument

In LLVM, having an invoke instruction branching to a block with a phi
node receiving the invoke instruction result as an argument is
perfectly legal. However, the translation of this construct to MLIR
would result in an invoke with its result being used as a block
argument to a successor, i.e., the operation result would be used in
its definition.

In order to fix this issue due to different IR structures (phi nodes
vs block arguments), this construct is interpreted with an llvm.invoke
operation branching to a dummy block having a single llvm.br operation
passing the required block arguments (including the result of the
llvm.invoke operation) to the actual successor block.

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

18 months ago[LV] Regenerate test checks (NFC)
Nikita Popov [Tue, 18 Apr 2023 09:52:12 +0000 (11:52 +0200)]
[LV] Regenerate test checks (NFC)

18 months agoFix uninitialized pointer members in MC
Akshay Khadse [Tue, 18 Apr 2023 09:32:18 +0000 (17:32 +0800)]
Fix uninitialized pointer members in MC

Reviewed By: LuoYuanke

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

18 months ago[llvm-opt-fuzzer] Skip creating/initializing legacy PM passes
Bjorn Pettersson [Fri, 14 Apr 2023 21:41:07 +0000 (23:41 +0200)]
[llvm-opt-fuzzer] Skip creating/initializing legacy PM passes

Afaict llvm-opt-fuzzer is using the new pass manager. So there
shouldn't be a need to create/initialize/register the legacy PM
version of passes.

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

18 months agoRecommit "[VPlan] Unify Value2VPValue and VPExternalDefs maps (NFCI)."
Florian Hahn [Tue, 18 Apr 2023 09:29:17 +0000 (10:29 +0100)]
Recommit "[VPlan] Unify Value2VPValue and VPExternalDefs maps (NFCI)."

This reverts the revert commit 8c2276f89887d0a27298a1bbbd2181fa54bbb509.

The updated patch re-orders the getDefiningRecipe check in getVPalue to avoid
a use-after-free.

Original commit message:

    Before this patch, a VPlan contained 2 mappings for Values -> VPValue:
    1) Value2VPValue and 2) VPExternalDefs.

    This duplication is unnecessary and there are already cases where
    external defs are added to Value2VPValue. This patch replaces all uses
    of VPExternalDefs with Value2VPValue.

    It clarifies the naming of getOrAddVPValue (to getOrAddExternalVPValue)
    and addVPValue (to addExternalVPValue).

    At the moment, this is NFC, but will enable additional simplifications
    in D147783.

    Depends on D147891.

    Reviewed By: Ayal

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

18 months ago[LV][AArch64] Autogenerate checks for scalable-strict-fadd.ll (NFC)
Graham Hunter [Tue, 18 Apr 2023 08:59:15 +0000 (09:59 +0100)]
[LV][AArch64] Autogenerate checks for scalable-strict-fadd.ll (NFC)

Precommit for D145163.

18 months ago[clang-format] C# short ternary operator misinterpreted as a CSharpNullable
mydeveloperday [Tue, 18 Apr 2023 09:17:28 +0000 (10:17 +0100)]
[clang-format] C# short ternary operator misinterpreted as a CSharpNullable

Refactor the CSharpNullable assignment code to be a little easier to read (Honestly I don't like it when an if expression get really long and complicated).
Handle the case where '?' is actually a ternary operator.

Fixes: #58067

Reviewed By: owenpan, HazardyKnusperkeks

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

18 months agoAdd loop-versioning pass to improve unit-stride
Mats Petersson [Fri, 16 Dec 2022 18:52:28 +0000 (18:52 +0000)]
Add loop-versioning pass to improve unit-stride

Introduce conditional code to identify stride of "one element", and simplify the array accesses for that case.

This allows better loop performance in various benchmarks.

Reviewed By: tblah, kiranchandramohan

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

18 months ago[RISCV][NFC] Fix comment in RISCVISAInfo after f98ca363bed
Alex Bradbury [Tue, 18 Apr 2023 08:50:53 +0000 (09:50 +0100)]
[RISCV][NFC] Fix comment in RISCVISAInfo after f98ca363bed

My fault for missing this in initial review -
f98ca363bed7405a23ad4b77167e39505a1ca9dd didn't properly update the
comment to reflect the change.

18 months agoAdd -f[no-]loop-versioning option
Mats Petersson [Mon, 9 Jan 2023 15:30:29 +0000 (15:30 +0000)]
Add -f[no-]loop-versioning option

Add flags for loop-versioning pass enable/disable

Reviewed By: awarzynski, tblah

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

18 months ago[MachineCSE] Add a test with mutiple blocks between instructions.
Serguei Katkov [Tue, 18 Apr 2023 07:55:31 +0000 (14:55 +0700)]
[MachineCSE] Add a test with mutiple blocks between instructions.

Due to limitation that we consider only one alone predecessor
we cannot generate the code like
ucomiss
jp
ja
jne

18 months ago[mlir][Arith] Fix Windows build
Matthias Springer [Tue, 18 Apr 2023 08:29:19 +0000 (17:29 +0900)]
[mlir][Arith] Fix Windows build

18 months ago[RISCV][test] Add test for RISCVISAInfo::OrderedExtensionMap ordering
Alex Bradbury [Tue, 18 Apr 2023 08:20:36 +0000 (09:20 +0100)]
[RISCV][test] Add test for RISCVISAInfo::OrderedExtensionMap ordering

18 months ago[llvm] Remove llvm-compilers-check script
David Spickett [Mon, 17 Apr 2023 13:08:04 +0000 (13:08 +0000)]
[llvm] Remove llvm-compilers-check script

I do not know of anyone currently using this and could not
find any uses over in llvm-zorg.

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

18 months ago[TableGen] Const-correct TreePatternNode::getChild. NFC
Craig Topper [Tue, 18 Apr 2023 08:19:29 +0000 (01:19 -0700)]
[TableGen] Const-correct TreePatternNode::getChild. NFC

Make the const version return a const TreePatterNode* and add a non-const
version to return a non-const TreePatternNode*.

18 months ago[RISCV] Modify arch string parsing order according to latest riscv spec
Jun Sha (Joshua) [Tue, 18 Apr 2023 08:20:08 +0000 (16:20 +0800)]
[RISCV] Modify arch string parsing order according to latest riscv spec

According to latest risc-v spec, the canonical order in which extension names must appear in the name string specified in Table 29.1 is different from before. In the latest table, non-standard extensions must be listed after all standard extensions. To keep consistent, we now change the parsing order in parseArchString().

Reviewed By: asb

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

18 months ago[lldb] Use llvm::byteswap in DumpRegisterValue
David Spickett [Tue, 18 Apr 2023 08:15:50 +0000 (08:15 +0000)]
[lldb] Use llvm::byteswap in DumpRegisterValue

7978abd5aef1ba84d7a1cefbc3443245acff2c48 fixed a build issue
on MSVC with some code I previously added, by adding some
ifdefs.

Now I realise that I should have been using llvm::byteswap
in the first place, which does exactly that.

18 months ago[mlir][llvm] Fix for MemRefBuilder when using opaque pointers.
Stephan Herhut [Mon, 17 Apr 2023 16:29:27 +0000 (18:29 +0200)]
[mlir][llvm] Fix for MemRefBuilder when using opaque pointers.

Loading the offset of an unranked memref descriptor is creating an invalid load.

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

18 months ago[include-cleaner] Unify behaviour for static & instance members
Kadir Cetinkaya [Mon, 17 Apr 2023 18:25:25 +0000 (20:25 +0200)]
[include-cleaner] Unify behaviour for static & instance members

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

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

18 months ago[mlir][Arith] ValueBoundsOpInterface: Reify with Arith ops
Matthias Springer [Tue, 18 Apr 2023 07:44:44 +0000 (16:44 +0900)]
[mlir][Arith] ValueBoundsOpInterface: Reify with Arith ops

This revision adds an additional `reifyValueBounds` helper that reifies the IR with Arith ops instead of Affine ops. This is needed to support value bounds for integer types different from `index` in a subsequent revision.

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

18 months ago[test] Remove occurences of br undef in CodeGen/AMDGPU tests
Kriti Gupta [Tue, 18 Apr 2023 07:46:54 +0000 (08:46 +0100)]
[test] Remove occurences of br undef in CodeGen/AMDGPU tests

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

18 months ago[Assignment Tracking] Skip empty-metadata dbg.declares in AssignmentTrackingPass
OCHyams [Tue, 18 Apr 2023 07:11:31 +0000 (08:11 +0100)]
[Assignment Tracking] Skip empty-metadata dbg.declares in AssignmentTrackingPass

Debug intrinsics sometimes end up with empty metadata location operands. The
debug intrinsic interfaces return nullptr when retrieving location operand in
this case.

Skip empty-metadata dbg.declares to avoid dereferencing the nullptr. This
doesn't affect the final debug info in any way.

Reviewed By: jryans

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

18 months ago[Assignment Tracking][SelectionDAG] Fix dbg.declare location nullptr deref
OCHyams [Tue, 18 Apr 2023 07:05:12 +0000 (08:05 +0100)]
[Assignment Tracking][SelectionDAG] Fix dbg.declare location nullptr deref

Debug intrinsics sometimes end up with empty metadata location operands. The
debug intrinsic interfaces return nullptr when retrieving location operand in
this case.

When assignment tracking is not enabled a dbg.declare with a nullptr location
operand is skipped. Do the same when assignment tracking is enabled (a nullptr
address component of a dbg.assign is already handled correctly.

Reviewed By: jmorse

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

18 months ago[mlir][affine][NFC] Split `reifyValueBound` in two functions
Matthias Springer [Tue, 18 Apr 2023 07:27:02 +0000 (16:27 +0900)]
[mlir][affine][NFC] Split `reifyValueBound` in two functions

There are now two entry points. One for shaped values and one for index-typed values. This addresses a comment in D146524.

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

18 months ago[TableGen] Call std::vector::reserve to preallocate memory before a loop of push_back...
Craig Topper [Tue, 18 Apr 2023 07:16:36 +0000 (00:16 -0700)]
[TableGen] Call std::vector::reserve to preallocate memory before a loop of push_back. NFC

18 months agoAdd assert to avoid unexpected situation
Wang, Xin10 [Tue, 18 Apr 2023 06:49:18 +0000 (02:49 -0400)]
Add assert to avoid unexpected situation

In line 68, func getBlockFreqRelativeToEntryBlock assume getEntryFreq() is
non-zero, but the function could return 0, add assert to confirm it.

Reviewed By: HaohaiWen

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

18 months ago[clang][dataflow] Associate `FunctionToPointerDecay` nodes with a value.
Martin Braenne [Tue, 18 Apr 2023 04:49:38 +0000 (04:49 +0000)]
[clang][dataflow] Associate `FunctionToPointerDecay` nodes with a value.

To ensure that we have a pointee for the `PointerValue`, we also create
storage locations for `FunctionDecl`s referenced in the function under analysis.

Reviewed By: gribozavr2

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

18 months agoRevert "[InstCombine] Add transforms for `(icmp {u|s}ge/le (xor X, Y), X)`"
Noah Goldstein [Tue, 18 Apr 2023 06:23:40 +0000 (01:23 -0500)]
Revert "[InstCombine] Add transforms for `(icmp {u|s}ge/le (xor X, Y), X)`"

May be related to PR62175

This reverts commit a3fd060d4223c6a7470554561bc479d4b8e423f4.