484696 Commits

Author SHA1 Message Date
Brandon Wu
111a229065
[RISCV] Implement multi-lib reuse rule for RISC-V bare-metal toolchain (#73765)
Extend the multi-lib re-use selection mechanism for RISC-V.
This funciton will try to re-use multi-lib if they are compatible.
Definition of compatible:
  - ABI must be the same.
  - multi-lib is a subset of current arch, e.g. multi-lib=march=rv32im
    is a subset of march=rv32imc.
  - march that contains atomic extension can't reuse multi-lib that
    doesn't has atomic, vice versa. e.g. multi-lib=march=rv32im and
    march=rv32ima are not compatible, because software and hardware
    atomic operation can't work together correctly.
2023-12-18 15:52:14 +08:00
Yeting Kuo
b83b28779e
[RISCV] Make Zhinx and Zvfh imply Zhinxmin and Zvfhmin respectively (#75735)
Zhinxmin is a subset of Zhinx and Zvfhmin is also a subset of Zvfh.
2023-12-18 11:46:22 +08:00
Craig Topper
5c1f44193d
[RISCV] Simplify PrintExtension. NFC (#75427)
Instead of using a format string that needs to be parsed, we can use
left_justify to print each string with padding.
2023-12-17 19:21:36 -08:00
Jakub Kuderski
2c668fddad [mlir][gpu] Trim trailing whitespace in GPUOps.td. NFC. 2023-12-17 21:34:29 -05:00
Akira Hatanaka
31429e7a89
[CodeGen] Emit a more accurate alignment for non-temporal loads/stores (#75675)
Call EmitPointerWithAlignment to compute the alignment based on the
underlying lvalue's alignment when it's available.
2023-12-17 18:22:44 -08:00
Jakub Kuderski
dd45be028d [mlir][gpu] Trim trailing whitespace in dialect docs. NFC. 2023-12-17 21:00:06 -05:00
Craig Topper
dbe9a60256 [RISCV] Correct the VLOperand for masked vssrl/vssra intrinsics.
Though I can't prove it matters for anything. The only use of
VLOperand I know of is for handling i64 splat operands to .vx
intrinsics on RV32. Shifts are special and always use XLen for .vx
so they are always legal.
2023-12-17 17:42:08 -08:00
Kazu Hirata
5ac12951b4
[ADT] Deprecate StringRef::{starts,ends}with (#75491)
This patch deprecates StringRef::{starts,ends}with.  Note that I've
replaced all known uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.
2023-12-17 15:52:50 -08:00
Kazu Hirata
364d7e775f [lldb] Use StringRef::starts_with (NFC)
This patch replaces uses of StringRef::startswith with
StringRef::starts_with for consistency with
std::{string,string_view}::starts_with in C++20.

I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
2023-12-17 15:51:48 -08:00
Kazu Hirata
211f5d00e2 [llvm] Fix typos in documentation 2023-12-17 15:36:44 -08:00
Kazu Hirata
f1ab90ab63 [IR] Use llvm::find (NFC) 2023-12-17 15:36:42 -08:00
Owen Pan
401f0396c3
[clang-format] Fix a bug in IndentExternBlock: NoIndent (#75731)
Fixes #36620.
Fixes #75719.
2023-12-17 15:07:11 -08:00
Arthur Eubanks
68c976bf64 [X86] Fix referencing local tagged globals
We should treat the medium code model like the small code model.
Classifying non-local references already properly handled this.
2023-12-17 13:49:50 -08:00
Dimitry Andric
aad5c2f887
[cmake] Honor CMAKE_VERBOSE_MAKEFILE when building external projects (#75749)
When the top-level CMake invocation has `CMAKE_VERBOSE_MAKEFILE=ON`,
indicating the user wants to have verbose builds (i.e. all executed
commands explicitly echoed), some of the subprojects and runtimes (such
as compiler-rt, libcxx, etc) do not build in verbose mode. For example,
with Ninja:

```
[ 99% 6252/6308] cd /build/runtimes/builtins-bins && /usr/local/bin/cmake --build .
[  0% 6/308] Building C object CMakeFiles/clang_rt.builtins-i386.dir/absvti2.c.o
[  0% 7/308] Building C object CMakeFiles/clang_rt.builtins-i386.dir/absvdi2.c.o
[  0% 8/308] Building C object CMakeFiles/clang_rt.builtins-i386.dir/absvsi2.c.o
...
```

This is because `llvm_ExternalProject_Add()` and `add_custom_libcxx()`
use CMake's `ExternalProject_Add()` function to configure such
subproject builds, and do not pass through the `CMAKE_VERBOSE_MAKEFILE`
setting.

Similar to what is done in `clang/CMakeLists.txt`, add
`-DCMAKE_VERBOSE_MAKEFILE=ON` to the `ExternalProject_Add()` invocations
in `llvm_ExternalProject_Add()` and `add_custom_libcxx()`, whenever the
top-level CMake invocation had `CMAKE_VERBOSE_MAKEFILE` turned on.
2023-12-17 22:43:34 +01:00
Florian Hahn
c014454f43
[ConstraintElim] Add extra tests with AND and OR of conditions.
Add additional tests where one of the operands of the AND/OR implies the
other.
2023-12-17 21:08:26 +00:00
Antonio Frighetto
151ddf07a6 [InstCombine] Stop propagating undef when element is demanded
Do not poison `undef` demanded elements in `SimplifyDemandedVectorElts`.
A miscompilation issue has been addressed with refined checking.

Proofs: https://alive2.llvm.org/ce/z/WA5oD5.
2023-12-17 21:41:03 +01:00
Antonio Frighetto
fc520f8b29 [InstCombine] Precommit tests for PR75745 (NFC) 2023-12-17 21:41:02 +01:00
darkbuck
d14ee76181
[GISel][TableGen] Enhance default ops support (#75689)
- Instead of checking the default ops directly, this change queries DAG
default operands collected during patterns reading. It does not only
simplify the code but also handle few cases where integer values are
converted from convertible types, such as 'bits'.
- A test case is added GlobalISelEmitter.td as the regression test of
default 'bits' values.
2023-12-17 15:02:10 -05:00
Rik Huijzer
6561efe142
[mlir][python][nfc] Test -print-ir-after-all (#75742)
The functionality to `-print-ir-after-all` was added in
caa159f044.
This PR adds a test and, with that, some documentation.

---------

Co-authored-by: Maksim Levental <maksim.levental@gmail.com>
2023-12-17 20:24:47 +01:00
Kazu Hirata
6655581038 [Dialect] Use llvm::is_contained (NFC) 2023-12-17 09:41:22 -08:00
Kazu Hirata
6eaf15d05e [Analysis] Use llvm::erase (NFC) 2023-12-17 09:41:20 -08:00
Kazu Hirata
2570c7e284 [CodeGen] Remove unused forward declarations (NFC) 2023-12-17 09:09:39 -08:00
Kazu Hirata
4b3078ef2d [CodeGen] Remove unnecessary includes (NFC) 2023-12-17 09:09:38 -08:00
Simon Pilgrim
a418be96de [X86] combineLoad - extract target constants at the minimum scalar element width.
No need to extract at the byte level, and will make it easier to reconstruct constants in a future patch.
2023-12-17 13:44:17 +00:00
Jie Fu
b6cce87110 [RISCV] Fix -Wbraced-scalar-init in RISCVISelLowering.cpp (NFC)
llvm-project/llvm/lib/Target/RISCV/RISCVISelLowering.cpp:339:24:
 error: braces around scalar initializer [-Werror,-Wbraced-scalar-init]
  339 |     setOperationAction({ISD::ROTL}, XLenVT, Expand);
      |                        ^~~~~~~~~~~
1 error generated.
2023-12-17 19:59:42 +08:00
Rik Huijzer
9f5afc3de9 Revert "[mlir][vector] Fix invalid LoadOp indices being created (#75519)"
This reverts commit 3a1ae2f46db473cfde4baa6e1b090f5dae67e8db.
2023-12-17 12:34:17 +01:00
Simon Pilgrim
fb877c19c0 [X86] combineLoad - don't bother truncating the alternative target constant data. NFC.
We only iterate over the original target constant/undef width, so keep the alternative data in its original form.

This should help if we try to merge constant data in the future.
2023-12-17 11:31:21 +00:00
melonedo
3eaed9e6f5
[RISCV] Implement intrinsics for XCVbitmanip extension in CV32E40P (#74993)
Implement XCVbitmanip intrinsics for CV32E40P according to the
specification.

This commit is part of a patch-set to upstream the vendor specific
extensions of CV32E40P that need LLVM intrinsics to implement Clang
builtins.

Contributors: @CharKeaney, @ChunyuLiao, @jeremybennett, @lewis-revill,
@NandniJamnadas, @PaoloS02, @simonpcook, @xingmingjie.

Spec:
05481cf0ef/specifications/corev-builtin-spec.md (listing-of-pulp-bit-manipulation-builtins-xcvbitmanip).

Previously reviewed on Phabricator: https://reviews.llvm.org/D157510.
Parallel GCC patch:
https://gcc.gnu.org/pipermail/gcc-patches/2023-November/635795.html.

Co-authored-by: melonedo <funanzeng@gmail.com>
2023-12-17 19:29:40 +08:00
Rik Huijzer
3a1ae2f46d
[mlir][vector] Fix invalid LoadOp indices being created (#75519)
Fixes https://github.com/llvm/llvm-project/issues/71326.

The cause of the issue was that a new `LoadOp` was created which looked
something like:
```mlir
%arg4 = 
func.func main(%arg1 : index, %arg2 : index) {
  %alloca_0 = memref.alloca() : memref<vector<1x32xi1>>
  %1 = vector.type_cast %alloca_0 : memref<vector<1x32xi1>> to memref<1xvector<32xi1>>
  %2 = memref.load %1[%arg1, %arg2] : memref<1xvector<32xi1>>
  return
}
```
which crashed inside the `LoadOp::verify`. Note here that `%alloca_0` is
0 dimensional, `%1` has one dimension, but `memref.load` tries to index
`%1` with two indices.

This is now fixed by using the fact that `unpackOneDim` always unpacks
one dim


1bce61e6b0/mlir/lib/Conversion/VectorToSCF/VectorToSCF.cpp (L897-L903)

and so the `loadOp` should just index only one dimension.

---------

Co-authored-by: Benjamin Maxwell <macdue@dueutil.tech>
2023-12-17 11:42:35 +01:00
Kazu Hirata
a3952b4f02 [Analysis] Remove unused forward declarations (NFC) 2023-12-17 00:57:24 -08:00
Fangrui Song
d08b59f333 [test] Improve MC/X86/index-operations.s 2023-12-17 00:42:27 -08:00
Carl Ritson
5139299618
[AMDGPU] Track physical VGPRs used for SGPR spills (#75573)
Physical VGPRs used for SGPR spills need to be tracked independent of
WWM reserved registers. The WWM reserved set contains extra registers
allocated during WWM pre-allocation pass.

This causes SGPR spills allocated after WWM pre-allocation to overlap
with WWM register usage, e.g. if frame pointer is spilt during
prologue/epilog insertion.
2023-12-17 16:44:16 +09:00
Matthias Springer
ea979b24b0
[mlir][SparseTensor][NFC] Remove isNestedIn helper function (#75729)
Use `Region::findAncestorBlockInRegion` instead of a custom IR
traversal.
2023-12-17 13:19:27 +09:00
Fangrui Song
942b0901b0 [llvm-objdump,test] Improve zero dumping and inline relocs tests 2023-12-16 16:54:45 -08:00
Kazu Hirata
2aaeef1fad [Index] Fix recursive-cxx-member-calls.cpp
b8f89b84bc26c46a5a10d01eb5414fbde3c8700a inadvertently replaced
startswith/endswith with starts_with/ends_with even though the test
uses a custom StringRef.  This patch reverts the change.
2023-12-16 16:24:32 -08:00
Fangrui Song
0ca95b269f [llvm-objdump,test] Improve zero dumping and inline relocs tests 2023-12-16 15:43:41 -08:00
Kazu Hirata
b8f89b84bc Use StringRef::{starts,ends}_with (NFC)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.

I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
2023-12-16 15:02:17 -08:00
Kazu Hirata
ee667db4b8 [lldb] Use StringRef::{starts,ends}_with (NFC)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.

I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
2023-12-16 15:02:15 -08:00
Craig Topper
c26510a2bf [RISCV] Fix intrinsic names in sf_vfwmacc_4x4x4.ll. NFC
The type strings in the intrinsic name were using f16 instead of
bf16 for float types. Nothing really checks these strings so everything
still worked.
2023-12-16 14:54:50 -08:00
Kazu Hirata
038871ae68 [llvm] Use StringRef::{starts,ends}_with (NFC)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.

I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
2023-12-16 14:47:16 -08:00
Kazu Hirata
744f38913f [lldb] Use StringRef::{starts,ends}_with (NFC)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.

I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
2023-12-16 14:39:37 -08:00
Fangrui Song
01c8af5739 [ELF,test] Improve duplicate "symbol not found" error tests 2023-12-16 13:12:17 -08:00
Kazu Hirata
395f9ce30e Use StringRef::{starts,ends}_with (NFC)
This patch replaces uses of StringRef::{starts,ends}with with
StringRef::{starts,ends}_with for consistency with
std::{string,string_view}::{starts,ends}_with in C++20.

I'm planning to deprecate and eventually remove
StringRef::{starts,ends}with.
2023-12-16 10:14:44 -08:00
Youngsuk Kim
f49e2b05bf
[clang][CGCUDANV] Unify PointerType members of CGNVCUDARuntime (NFC) (#75668)
Unify 3 `Pointertype *` members which all refer to the same llvm type.

Opaque pointer clean-up effort.
2023-12-16 11:47:37 -05:00
Quinn Dawkins
82ab0f7f36
[mlir][linalg] Fix rank-reduced cases for extract/insert slice in DropUnitDims (#74723)
Inferring the reshape reassociation indices for extract/insert slice ops
based on the read sizes of the original slicing op will generate an
invalid expand/collapse shape op for already rank-reduced cases. Instead
just infer from the shape of the slice.

Ported from Differential Revision: https://reviews.llvm.org/D147488
2023-12-16 10:08:51 -05:00
Stefan Pintilie
c398fa009a Revert "Reapply "RegisterCoalescer: Add implicit-def of super register when coalescing SUBREG_TO_REG""
This reverts commit f4b5be1ecdc85ca4257b739afb8d57e23c7a8030.

The above change was breaking the clang-ppc64le-linux-test-suite bot.
2023-12-16 07:30:53 -06:00
Hristo Hristov
e564d246b2
[libc++][spaceship][NFC] Status page - added papers (#75043)
Added C++20 papers to Spaceship status page

Co-authored-by: Hristo Hristov <zingam@outlook.com>
2023-12-16 14:17:28 +01:00
Dinar Temirbulatov
50f5b5a80b
[AArch64][SME2] Add FCLAMP, CNTP builtins for SME2 (#72487)
This change enables FCLAMP, CNTP builtins for SME2 target.
2023-12-16 12:03:54 +00:00
Andrzej Warzyński
76041a45bb
[flang][nfc] Refactor linker invocation logic (#75648)
Refactor how the Fortran runtime libs are added to the linker
invocation. This is a non-functional change.

This is an updated version of #75534. This iteration makes sure that
FortranMain.a comes before FortranRuntme.a (the former depends on the
latter).
2023-12-16 11:13:20 +00:00
Yingwei Zheng
c59ea32f82
[InstCombine] Canonicalize icmp pred (X +/- C1), C2 into icmp pred X, C2 -/+ C1 with nowrap flag implied by with.overflow intrinsic (#75511)
This patch tries to canonicalize the pattern `Overflow | icmp pred Res,
C2` into `Overflow | icmp pred X, C2 +/- C1`, where `Overflow` and `Res`
are return values of `xxx.with.overflow X, C1`.
Alive2: https://alive2.llvm.org/ce/z/PhR_3S

Fixes #75360.
2023-12-16 17:58:57 +08:00