503475 Commits

Author SHA1 Message Date
Simon Pilgrim
d32d20f3a0 NumericalStabilitySanitizer.cpp - fix MSVC "not all control paths return a value" warnings. NFC. 2024-07-01 12:10:36 +01:00
Anton Lydike
c46a95c147
[MLIR] Fix documentation generation for DLTI dialect. (#97052)
This patch fixes the docs generation for the DLTI dialect to include
attributes (CMake config pointed to the wrong tablegen file). It also
fixes formatting in places so that proper markdown is generated.
2024-07-01 11:58:40 +01:00
Nikita Popov
11484cb817 [InstCombine] Pass SimplifyQuery to SimplifyDemandedBits()
This will enable calling SimplifyDemandedBits() with a SimplifyQuery
that has CondContext set in the future.

Additionally this also marginally strengthens the analysis by
retaining the original context instruction for one-use chains.
2024-07-01 12:41:21 +02:00
David Sherwood
7b2e16f952
[AArch64] Fix scheduling model issue #96394 (#97047)
The NeoverseZeroMove predicate assumes that the first operand is always
an immediate, which isn't always true. For example, it could be a stack
offset, etc. This patch fixes that by checking if the operand is an
immediate first.
2024-07-01 11:34:23 +01:00
Matt Arsenault
8eee6d33f7
DAG: Call SimplifyDemandedBits on copysign value operand (#97180)
So far the only cases that seem to benefit are the weird
copysign with different typed inputs.
2024-07-01 12:29:11 +02:00
Nikita Popov
a632364bce [InstCombine] Add test for SimplifyDemanded context (NFC) 2024-07-01 12:21:57 +02:00
Matt Arsenault
db9252b115
DAG: Call SimplifyDemandedBits on fcopysign sign value (#97151)
Math library code has quite a few places with complex bit
logic that are ultimately fed into a copysign. This helps
avoid some regressions in a future patch.

This assumes the position in the float type, which should
at least be valid for IEEE types. Not sure if we need to guard
against ppc_fp128 or anything else weird.

There appears to be some value in simplifying the value operand
as well, but I'll address that separately.
2024-07-01 12:19:17 +02:00
Matt Arsenault
c769dc457c
AMDGPU: Add baseline test for copysign combine (#97150)
Pre-commit tests showing we try to SimplifyDemandedBits on the
sign operand.
2024-07-01 12:14:57 +02:00
Sergio Afonso
03d9a31772
[Flang][OpenMP] Update flang with changes to the OpenMP dialect (#92524)
This patch applies fixes after the updates to OpenMP clause operands, as
well as updating some tests that were impacted by changes to the
ordering or assembly format of some clauses in MLIR.
2024-07-01 11:08:14 +01:00
Sergio Afonso
d1fcfce834
[MLIR][OpenMP] Clause-based OpenMP operation definition (#92523)
This patch updates `OpenMP_Op` definitions to be based on the new set of
`OpenMP_Clause` definitions, and to take advantage of clause-based
automatically-generated argument lists, descriptions, assembly format
and class declarations.

There are also changes introduced to the clause operands structures to
match the current set of tablegen clause definitions. These two are very
closely linked and should be kept in sync. It would probably be a good
idea to try generating clause operands structures from the tablegen
`OpenMP_Clause` definitions in the future.

As a result of this change, arguments for some operations have been
reordered. This patch also addresses this by updating affected operation
build calls and unit tests. Some other updates to tests related to the
order of arguments in the resulting assembly format and others due to
certain previous inconsistencies in the printing/parsing of clauses are
addressed.

The printer and parser functions for the `map` clause are updated, so
that they are able to handle `map` clauses linked to entry block
arguments as well as those which aren't.

This PR causes a build failure in the flang subproject. This is addressed
by the next PR in the stack.
2024-07-01 11:07:59 +01:00
Sergio Afonso
3e168f5643
[MLIR][OpenMP] Add OpenMP_Clause tablegen definitions (#92521)
This patch adds a new tablegen file for the OpenMP dialect containing
the list of clauses currently supported.
2024-07-01 11:06:55 +01:00
Timm Bäder
42fc93d3ff [clang][Interp][NFC] Make a local pointer const 2024-07-01 11:59:56 +02:00
Timm Bäder
7f1d672d70 [clang][Interp] Diagnose static declarations in constexpr functions 2024-07-01 11:58:56 +02:00
David Spickett
208a08c3b7
Reland "[lldb] Parse and display register field enums" (#97258)" (#97270)
This reverts commit d9e659c538516036e40330b6a98160cbda4ff100.

I could not reproduce the Mac OS ASAN failure locally but I narrowed it
down to the test `test_many_fields_same_enum`. This test shares an enum
between x0, which is 64 bit, and cpsr, which is 32 bit.

My theory is that when it does `register read x0`, an enum type is
created where the undlerying enumerators are 64 bit, matching the
register size.

Then it does `register read cpsr` which used the cached enum type, but
this register is 32 bit. This caused lldb to try to read an 8 byte value
out of a 4 byte allocation:
READ of size 8 at 0x60200014b874 thread T0
<...>
=>0x60200014b800: fa fa fd fa fa fa fd fa fa fa fd fa fa fa[04]fa

To fix this I've added the register's size in bytes to the constructed
enum type's name. This means that x0 uses:
__lldb_register_fields_enum_some_enum_8
And cpsr uses:
__lldb_register_fields_enum_some_enum_4

If any other registers use this enum and are read, they will use the
cached type as long as their size matches, otherwise we make a new type.
2024-07-01 10:45:56 +01:00
Dominik Adamski
8bb00cb160
[AMDGPU][OpenMP] Do not attach -fcuda-is-device flag for AMDGPU OpenMP (#96909)
`-fcuda-is-device` flag is not used for OpenMP offloading for AMD GPUs
and it does not need to be added as clang cc1 option for OpenMP code.
2024-07-01 11:36:49 +02:00
Matt Arsenault
3562001007 AMDGPU: Regenerate test checks to avoid spurious diff 2024-07-01 11:10:17 +02:00
Luke Lau
f76ea31996 [RISCV] Deduplicate AVL forwarding in RISCVInsertVSETVLI. NFC
We do the AVL forwarding trick in both getInfoForVSETVLI and
computeInfoForInstr, but there's a bug with this that I plan on fixing
in an upcoming patch. This factors it out to so we only need to fix it
in one place.
2024-07-01 16:25:05 +08:00
Graham Hunter
4311b14e9c
[LSR] Recognize vscale-relative immediates (#88124)
Extends LoopStrengthReduce to recognize immediates multiplied by vscale, and query the current target for whether they are legal offsets for memory operations or adds.
2024-07-01 09:23:31 +01:00
Mikhail Goncharov
c3eea8991f [bazel] update for 6c1c451b867f250f1c2fab709f0c8657ffd21116
it's interesting that bazel build passes
2024-07-01 10:18:37 +02:00
Shengchen Kan
32273ea22d [X86][test] Add a separate test for NDD CMOV 2024-07-01 15:32:23 +08:00
Nikita Popov
77eb056830
[InstCombine] Simplify select using KnownBits of condition (#95923)
Simplify the arms of a select based on the KnownBits implied by its condition.
For now this only handles the case where the select arm folds to a constant,
but this can be generalized to handle other patterns by using
SimplifyDemandedBits instead (in that case we would also have to limit to
non-undef conditions).

This is implemented by adding a new member to SimplifyQuery that can be used
to inject an additional condition. The affected values are pre-computed and
we don't call computeKnownBits() if the select arms don't contain affected
values. This reduces the cost in some pathological cases.
2024-07-01 09:26:01 +02:00
CarolineConcatto
6859e5a169
[CLANG][LLVM][AArch64]Add SME2.1 intrinsics for MOVAZ array to vector (#88901)
According to the specification in
    ARM-software/acle#309 this adds the intrinsics

    Move and zero multiple ZA single-vector groups to vector registers

    // Variants are also available for _za8_u8, _za16_s16, _za16_u16,
    // _za16_f16, _za16_bf16, _za32_s32, _za32_u32, _za32_f32,
    // _za64_s64, _za64_u64 and _za64_f64
    svint8x2_t svreadz_za8_s8_vg1x2(uint32_t slice)
    __arm_streaming __arm_inout("za");

    // Variants are also available for _za8_u8, _za16_s16, _za16_u16,
    // _za16_f16, _za16_bf16, _za32_s32, _za32_u32, _za32_f32,
    // _za64_s64, _za64_u64 and _za64_f64
    svint8x4_t svreadz_za8_s8_vg1x4(uint32_t slice)
    __arm_streaming __arm_inout("za");
2024-07-01 08:23:16 +01:00
Fangrui Song
22c7317f1e [MC] Remove the MCAsmLayout parameter from relocation related functions 2024-07-01 00:16:48 -07:00
David Spickett
1e6d5ded35 [libcxx][Docs] Correct link syntax in hardening docs 2024-07-01 08:08:42 +01:00
David Spickett
d9e659c538
Revert "[lldb] Parse and display register field enums" (#97258)
Reverts llvm/llvm-project#95768 due to a test failure on macOS with
ASAN:

https://green.lab.llvm.org/job/llvm.org/view/LLDB/job/lldb-cmake-sanitized/425/console
2024-07-01 07:46:19 +01:00
Shan Huang
37661a17e2
[DebugInfo][JumpThreading] Fix missing debug location updates for br instructions (#96889)
Fix #96885 .
2024-07-01 14:06:04 +08:00
Luke Lau
651e91658b [RISCV] Add missing CHECK lines for new vsetvli test. NFC 2024-07-01 14:05:22 +08:00
Shan Huang
8f9d156ded
[DebugInfo][SeparateConstOffsetFromGEP] Fix missing debug location updates (#96849)
Fix #96841 .
2024-07-01 14:03:25 +08:00
Luke Lau
d03e812057 [RISCV] Update LiveIntervals before erasing instr in RISCVInsertVSETVLI
Hopefully fixes a use-after-poison reported from the asan buildbots. I
wasn't able to recreate the assertion locally though.
2024-07-01 14:02:48 +08:00
Daniel Bertalan
77a074be52
[LTO] Fix tests with ld64 from Xcode 16 (#97193)
ld64 tests now fail with the following error if the target platform
(e.g. `-macosx_version_min`) is not specified:

```
warning: platform not specified
warning: No platform min-version specified on command line
kernelKit can only be used with -r, -kext and -static
```
2024-07-01 07:47:53 +02:00
Fangrui Song
4289c422a8 [MC] Remove the MCAsmLayout parameter from MCObjectWriter::recordRelocation 2024-06-30 22:13:54 -07:00
Fangrui Song
262ad4cdf4 [MC] Remove the MCAsmLayout parameter from MCMachObjectTargetWriter 2024-06-30 21:53:35 -07:00
Mingming Liu
8598bcb993
[compiler-rt][test]Use c-style headers in instrprof-vtable-value-prof.cpp (#97245)
Use c-style headers just like other compiler-rt/profile tests do [1], to
fix ` 'cstdio' file not found` in
https://lab.llvm.org/buildbot/#/builders/122/builds/150

[1]
9b9405621b/compiler-rt/test/profile/instrprof-value-prof.c (L27-L30)
and
9b9405621b/compiler-rt/test/tsan/printf-1.c (L6-L16)
2024-06-30 19:20:10 -07:00
Luke Lau
95b0187165
[RISCV] Remove deleted AVL register defs from LiveInterval instr maps (#97011)
When coalescing vsetvlis we might remove a use of a register AVL, which
in turn might leave the AVL def dead. When it's dead (currently limited
to just ADDIs) we delete the def, but we were forgetting to remove it
from LiveInterval's instruction map. This fixes #95865
2024-07-01 10:15:58 +08:00
Ryotaro KASUGA
e6a961dbef
Revert "[MachinePipeliner] Fix constraints aren't considered in certain cases" (#97246)
Reverts llvm/llvm-project#95356

Due to ppc64le test failures caught by the LLVM Buildbot.
https://lab.llvm.org/buildbot/#/builders/176/builds/576
2024-07-01 10:32:58 +09:00
zhicong zhong
1d4ce574a4
[mlir][bufferization] skip empty tensor elimination if they have different element type (#96998)
In the origin implementation, the empty tensor elimination will add a
`tensor.cast` and eliminate the tensor even if they have different
element type(f32, bf16). Here add a check for element type and skip the
elimination if they are different.
2024-07-01 09:30:04 +08:00
Phoebe Wang
9b9405621b
[X86] Relax VPERMV3 to VPERMV combine for more types (#97206)
This is a follow up of #96414
2024-07-01 08:41:19 +08:00
Ryotaro KASUGA
e19ac0dcfd
[MachinePipeliner] Fix constraints aren't considered in certain cases (#95356)
when scheduling

When scheduling an instruction, if both any predecessors and any
successors of the instruction are already scheduled, `SchedStart` isn't
taken into account. It may result generating incorrect code. This patch
fixes the problem. Also, this patch merges `SchedStart` into
`EarlyStart` (same for `SchedEnd`).

Fixes https://github.com/llvm/llvm-project/issues/93936
2024-07-01 09:07:32 +09:00
OverMighty
6c1c451b86
[libc][math][c23] Add f16sqrt{,l,f128} C23 math functions (#96642)
Part of #95250.
2024-06-30 19:20:39 -04:00
Fangrui Song
67957a45ee [MC] Start merging MCAsmLayout into MCAssembler
Follow-up to 10c894cffd0f4bef21b54a43b5780240532e44cf.

MCAsmLayout, introduced by ac8a95498a99eb16dff9d3d0186616645d200b6e
(2010), provides APIs to compute fragment/symbol/section offsets.
The separate class is cumbersome and passing it around has overhead.
Let's remove it as the underlying implementation is tightly coupled with
MCAsmLayout anyway.

Some forwarders are added to ease migration.
2024-06-30 16:10:27 -07:00
Kazu Hirata
3cf762b7b7
[Transforms] Migrate to a new version of getValueProfDataFromInst (#96380) 2024-06-30 14:54:07 -07:00
Fangrui Song
10c894cffd [MC] Move MCAsmLayout from MCFragment.cpp to MCAssembler.cpp. NFC
8d736236d36ca5c98832b7631aea2e538f6a54aa (2015) moved these MCAsmLayout
functions to MCFragment.cpp, but the original placement is better as
these functions are tightly coupled with MCAssembler.cpp.
2024-06-30 14:22:25 -07:00
Mingming Liu
038bc1c18c
[Test][compiler-rt]Require lld for instrprof-vtable-value-prof.cpp (#97228)
Fix test failure on
https://lab.llvm.org/buildbot/#/builders/95/builds/672
* lld project is disabled on that build bot [1] and external lld
`/home/buildbots/llvm-external-buildbots/clang.16.0.1/bin/ld.lld` is
used to run the test [2]. It doesn't know new options like
`-enable-vtable-value-profiling` (which was introduced in
1351d17826)
* Update test to require `lld` and `lld-available`.

Tested:
1. By disabling lld in the project and using old `lld` installed
previously[3], I can reproduce the failure.
2. With `requires: lld`, the test become unsupported.

[1]
https://lab.llvm.org/buildbot/#/builders/95/builds/672/steps/4/logs/stdio
[2]
https://lab.llvm.org/buildbot/#/builders/95/builds/672/steps/6/logs/FAIL__Profile-powerpc64le__instrprof-vtable-value-
[3] `cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug
-DLLVM_ENABLE_PROJECTS='clang;compiler-rt' -DLLVM_USE_SPLIT_DWARF=On
-DLLVM_USE_LINKER=lld -DLLVM_ENABLE_SPHINX=ON
-DLLVM_OPTIMIZED_TABLEGEN=TRUE -DLLVM_TARGETS_TO_BUILD=X86
-DLLVM_ENABLE_ZLIB=1 ../llvm`
2024-06-30 13:15:44 -07:00
Yingwei Zheng
4997af98a0
[SimplifyCFG] Simplify nested branches (#97067)
This patch folds the following pattern (I don't know what to call this):
```
bb0:
  br i1 %cond1, label %bb1, label %bb2
bb1:
  br i1 %cond2, label %bb3, label %bb4
bb2:
  br i1 %cond2, label %bb4, label %bb3
bb3:
  ...
bb4:
  ...
```
into
```
bb0:
  %cond = xor i1 %cond1, %cond2
  br i1 %cond, label %bb4, label %bb3
bb3:
  ...
bb4:
  ...
```

Alive2: https://alive2.llvm.org/ce/z/5iOJEL
Closes https://github.com/llvm/llvm-project/issues/97022.
Closes https://github.com/llvm/llvm-project/issues/83417.

I found this pattern in some verilator-generated code, which is widely
used in RTL simulation. This fold will reduces branches and improves the
performance of CPU frontend. To my surprise, this pattern is also common
in C/C++ code base.
Affected libraries/applications:
cmake/cvc5/freetype/git/gromacs/jq/linux/openblas/openmpi/openssl/php/postgres/ruby/sqlite/wireshark/z3/...
2024-07-01 03:35:39 +08:00
Javed Absar
3efac5c68a
[MLIR][Linalg] Add pass to convert linalg.generic back to named ops (#95656)
Add a new mlir-opt  pass `--linalg-specialize-generic-ops` which lifts generic,
where possible, to linalg named ops.
Much like `-linalg-generalize-named-ops` lowers named ops to linalg.generic .
Also add patterns to recognize contractions which can be specialized from 
linalg.generic to named op: `linalg.{batch_}?matmul{_transpose_(a|b)}?`
2024-06-30 19:37:51 +01:00
Théo Degioanni
69d3793ffb
[mlir][sroa] Update name of subelement types in destructurable slots (#97226)
The `elementPtrs` has changed meaning over time and the name is now
outdated which may be confusing. This PR updates it to a name
representative of current usage.
2024-06-30 20:24:56 +02:00
Fangrui Song
cd68532e37 [RISCV] relaxDwarfCallFrameFragment: remove unneeded relocations for -mno-relax
Follow-up to 2ef56d16adbe888a7e8c20684aa98d3f07c0eb98 for -mrelax.
https://reviews.llvm.org/D155357 allowed us to use Layout as the
parameter without correctness issues.
2024-06-30 11:10:37 -07:00
Fangrui Song
41a08e764a [MC] Move Mach-O specific getAtom and isSectionAtomizableBySymbols to Mach-O files
and devirtualize isSectionAtomizableBySymbols.
2024-06-30 10:23:13 -07:00
Fangrui Song
4066a32060 [TypeProf] Include unordered_map after #81442
Needed by VTableAddressPointOffsetValMap.
2024-06-30 09:53:25 -07:00
Fangrui Song
6cb69d6c1a [MC] Move bool members earlier. NFC
RelaxAll/SubsectionsViaSyms are used more frequently then vector members
like Sections/Symbols. The size of MCAssembler doesn't particularly
matter, so avoid bit fields.
2024-06-30 09:49:32 -07:00