Hassnaa Hamdi [Tue, 1 Nov 2022 14:34:29 +0000 (14:34 +0000)]
[AArch64-SVE]: Force generating code compatible to streaming mode.
When streaming mode is enabled, custom-lower arithmetic and logical fixed-width vector ops;
to force generateing code compatible to streaming mode.
Differential Revision: https://reviews.llvm.org/D135324
Yeting Kuo [Tue, 8 Nov 2022 13:18:36 +0000 (21:18 +0800)]
[RISCV][NFC] Fix unused variable warning.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D137633
wanglei [Thu, 10 Nov 2022 11:56:36 +0000 (19:56 +0800)]
[LoongArch] Added spill/reload/copy support for CFRs
1, spill/reload
When a function call is made immediately after a floating point
comparison, the result of the comparison needs to be spilled before
function call and reloaded after the function returns.
2, copy
Support `GPR` to `CFR` and `CFR` to `GRP` copys. Therefore, the correct
register class can be used in the pattern template, and the hard-coding
of mutual coping of `CFR` and `GRP` is eliminated, reducing redundant
comparison instructions.
Note: Since the `COPY` instruction between CFRs is not provided in
LoongArch, we only use `$fcc0` in the register allocation.
Reviewed By: SixWeining
Differential Revision: https://reviews.llvm.org/D137004
Alvin Wong [Thu, 10 Nov 2022 11:32:07 +0000 (13:32 +0200)]
[LLD][MinGW] Add --error-limit=<N> option
This maps to -errorlimit:<N> in the COFF linker and is functionally
identical to the same option in the ELF and MachO linker.
Reviewed By: mstorsjo
Differential Revision: https://reviews.llvm.org/D137489
Sergio Afonso [Thu, 10 Nov 2022 11:38:31 +0000 (05:38 -0600)]
[flang][OpenMP] Add parser support for Requires directive
OpenMP 5.0 adds support for the "requires" directive. This patch adds parser support for it in flang.
Differential revision: https://reviews.llvm.org/D136867
v1nh1shungry [Thu, 10 Nov 2022 11:15:41 +0000 (12:15 +0100)]
[clangd] Implement hover for string literals
Show string-literals' type and size in a hover card
Issue related: https://github.com/clangd/clangd/issues/1016
Reviewed By: kadircet
Differential Revision: https://reviews.llvm.org/D137650
Sander de Smalen [Thu, 10 Nov 2022 09:21:59 +0000 (09:21 +0000)]
Reland "[AArch64][SME] Disable GlobalISel/FastISel for SME functions."
It turns that the issue was unrelated to the code-changes, but only triggered
by one of the tests. The SMEABI pass incorrectly marked the CFG as preserved,
even though it modified the CFG.
This reverts commit
8bcf5df3043a906c7124b70b59eda925eddd7319.
Vladislav Vinogradov [Wed, 9 Nov 2022 12:59:15 +0000 (15:59 +0300)]
[mlir][NFC] Use fully qualified names in BufferizableOpInterface
To allow interface usage in standalone projects outside of `mlir` namespace.
Reviewed By: springerm
Differential Revision: https://reviews.llvm.org/D137769
Simon Pilgrim [Thu, 10 Nov 2022 10:36:00 +0000 (10:36 +0000)]
[X86] Add missing Zen3 model subtypes
This patch adds support for detecting all current Zen/Zen3+ submodels
Based off a mixture of https://github.com/torvalds/linux/blob/master/drivers/hwmon/k10temp.c#L436 and InstLatx64 https://github.com/InstLatx64/InstLatx64/tree/master/AuthenticAMD CPUID dumps and confirmed by @GGanesh
Differential Revision: https://reviews.llvm.org/D137695
Hassnaa Hamdi [Mon, 24 Oct 2022 09:47:03 +0000 (09:47 +0000)]
[AArch64-SVE][streaming-mode]: Add tests for masked/truncating/extending load/store.
Add tests for masked/truncating/extending load/store and enable streaming-mode.
Differential Revision: https://reviews.llvm.org/D136585
Tim Northover [Tue, 18 Oct 2022 11:38:14 +0000 (12:38 +0100)]
X86: call fp16-conversion functions soft-float on Darwin.
We've been shipping implementations of these with a soft-float ABI since MacOS
10.10 in 2014 and there's evidence they're in binaries now, so we can't easily
switch to %xmm0.
This emits special libcalls with casts in place to restore the soft-float ABI
for __truncdfhf2, __truncsfhf2, and __extendhfsf2.
gonglingqin [Thu, 10 Nov 2022 09:12:02 +0000 (17:12 +0800)]
[Clang][LoongArch] Implement __builtin_loongarch_dbar builtin
Differential Revision: https://reviews.llvm.org/D136906
Weining Lu [Thu, 27 Oct 2022 12:31:05 +0000 (20:31 +0800)]
[Clang][LoongArch] Define more LoongArch specific built-in macros
Define below macros according to LoongArch toolchain conventions [1].
* `__loongarch_grlen`
* `__loongarch_frlen`
* `__loongarch_lp64`
* `__loongarch_hard_float`
* `__loongarch_soft_float`
* `__loongarch_single_float`
* `__loongarch_double_float`
Note:
1. `__loongarch__` has been defined in earlier patch.
2. `__loongarch_arch` is not defined because I don't know how `TargetInfo` can get the arch name specified by `-march`.
3. `__loongarch_tune` will be defined in future.
[1]: https://loongson.github.io/LoongArch-Documentation/LoongArch-toolchain-conventions-EN.html
Depends on D136146
Differential Revision: https://reviews.llvm.org/D136413
Weining Lu [Thu, 27 Oct 2022 12:28:56 +0000 (20:28 +0800)]
[Clang][LoongArch] Handle -march/-m{single,double,soft}-float/-mfpu options
This patch adds options -march, -msingle-float, -mdouble-float,
-msoft-float and -mfpu for LoongArch.
Clang options `msingle_float` and `mdouble_float` are moved from
`m_mips_Features_Group` to `m_Group` because now more than targets use
them.
Reference:
https://github.com/loongson/LoongArch-Documentation/blob/main/docs/LoongArch-toolchain-conventions-EN.adoc
TODO: add -mtune.
Differential Revision: https://reviews.llvm.org/D136146
David Sherwood [Mon, 7 Nov 2022 18:01:40 +0000 (18:01 +0000)]
[AArch64][SVE2] Add the SVE2.1 permute vector elements (quadword) instructions
This patch adds the assembly/disassembly for the following instructions:
zipq1 : Interleave elements from low halves of each pair of quadword vector segments
zipq2 : Interleave elements from high halves of each pair of quadword vector segments
uzpq1 : Concatenate even elements within each pair of quadword vector segments
uzpq2 : Concatenate odd elements within each pair of quadword vector segments
tblq : Programmable table lookup within each quadword vector segment (zeroing)
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
Differential Revision: https://reviews.llvm.org/D137619
David Sherwood [Tue, 8 Nov 2022 11:11:40 +0000 (11:11 +0000)]
[AArch64][SVE2] Add the SVE2.1 tbxq instruction
This patch adds the assembly/disassembly for the following instruction:
tbxq : Programmable table lookup within each quadword vector segment (merging)
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
Differential Revision: https://reviews.llvm.org/D137625
gonglingqin [Thu, 10 Nov 2022 03:27:37 +0000 (11:27 +0800)]
[LoongArch] Fix atomic store pointer operand sequence error
Differential Revision: https://reviews.llvm.org/D137687
Chuanqi Xu [Thu, 10 Nov 2022 08:41:23 +0000 (16:41 +0800)]
[C++20] [Modules] Document the behavior about reserved module names
We would diagnose about the reserved names in
b8ceb9f4e4bd. And the
patch documents about the related behaviors.
Wu, Yingcong [Thu, 10 Nov 2022 07:29:04 +0000 (23:29 -0800)]
[SanitizerCoverage] Fix wrong pointer type return from CreateSecStartEnd()
`CreateSecStartEnd()` will return pointer to the input type, so when called with `CreateSecStartEnd(M, SanCovCFsSectionName, IntptrPtrTy)`, `SecStartEnd.first` and `SecStartEnd.second` will have type `IntptrPtrPtrTy`, not `IntptrPtrTy`.
This problem should not impact the functionality and with opaque pointer enable, this will not trigger any alarm. But if runs with `-no-opaque-pointers`, this mismatch pointer type will cause type check assertion in `CallInst::init()` to fail.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D137310
Matt Jacobson [Sat, 6 Aug 2022 05:01:35 +0000 (01:01 -0400)]
[ObjC] avoid crashing when emitting synthesized getter/setter and ptrdiff_t is smaller than long
On targets where ptrdiff_t is smaller than long, clang crashes when emitting
synthesized getters/setters that call objc_[gs]etProperty. Explicitly emit a
zext/trunc of the ivar offset value (which is defined to long) to ptrdiff_t,
which objc_[gs]etProperty takes.
Add a test using the AVR target, where ptrdiff_t is smaller than long. Test
failed previously and passes now.
Differential Revision: https://reviews.llvm.org/D112049
wlei [Thu, 10 Nov 2022 07:04:53 +0000 (23:04 -0800)]
Run test only on x86_64-linux to fix a build break
WANG Xuerui [Thu, 10 Nov 2022 05:51:12 +0000 (13:51 +0800)]
[ADT][Triple] Add environment kinds for LoongArch GNU multiarch tuples
The canonical multiarch tuples for LoongArch are defined in [the
LoongArch toolchain conventions][1] document. As the musl port is still
WIP, only the GNU triples are added for now.
The spec mentions `loongarch64-linux-gnuf64`, which is functionally the
same as the existing `loongarch64-linux-gnu` triple, only with the
floating-point ABI part explicitly spelled out. Both forms are
supported, but normalization of one into another is not implemented in
this patch, to give the ecosystem some time to experiment and discuss.
[1]: https://loongson.github.io/LoongArch-Documentation/LoongArch-toolchain-conventions-EN.html
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D135751
sandeepkosuri [Thu, 10 Nov 2022 07:02:12 +0000 (01:02 -0600)]
[NFC] Fixing a comment and some indentations
wlei [Tue, 25 Oct 2022 07:31:46 +0000 (00:31 -0700)]
[SampleFDO] Persist profile staleness metrics into binary
With https://reviews.llvm.org/D136627, now we have the metrics for profile staleness based on profile statistics, monitoring the profile staleness in real-time can help user quickly identify performance issues. For a production scenario, the build is usually incremental and if we want the real-time metrics, we should store/cache all the old object's metrics somewhere and pull them in a post-build time. To make it more convenient, this patch add an option to persist them into the object binary, the metrics can be reported right away by decoding the binary rather than polling the previous stdout/stderrs from a cache system.
For implementation, it writes the statistics first into a new metadata section(llvm.stats) then encode into a special ELF `.llvm_stats` section. The section data is formatted as a list of key/value pair so that future statistics can be easily extended. This is also under a new switch(`-persist-profile-staleness`)
In terms of size overhead, the metrics are computed at module level, so the size overhead should be small, measured on one of our internal service, it costs less than < 1MB for a 10GB+ binary.
Reviewed By: wenlei
Differential Revision: https://reviews.llvm.org/D136698
Teizhu Yang [Thu, 10 Nov 2022 05:48:22 +0000 (13:48 +0800)]
[LLDB] Add LoongArch software breakpoint trap opcode
Use `break 0x5` for LoongArch software breakpoint traps.
The magic number 0x5 means `BRK_SSTEPBP` as defined in
the kernel header `asm/break.h` on LoongArch.
Reviewed By: SixWeining, xen0n
Differential Revision: https://reviews.llvm.org/D137519
zhanglimin [Thu, 10 Nov 2022 05:46:01 +0000 (13:46 +0800)]
[OpenMP][test] Add #include <cstdint> for gcc-13
Due to https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes.
Reviewed By: SixWeining, MaskRay
Differential Revision: https://reviews.llvm.org/D137543
Youling Tang [Thu, 10 Nov 2022 05:44:10 +0000 (13:44 +0800)]
[fuzzer][test] Add #include <cstdint> for gcc-13
See https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes.
Reviewed By: SixWeining
Differential Revision: https://reviews.llvm.org/D137696
bixia1 [Thu, 10 Nov 2022 01:33:25 +0000 (17:33 -0800)]
[mlir][sparse] Fix Python interface for bufferization.alloc_tensor.
Add size_hint operand to the Python interface.
Fix pytaco.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D137754
Youling Tang [Thu, 10 Nov 2022 05:38:07 +0000 (13:38 +0800)]
[sanitizer] Add symbolizer support for loongarch64
Reviewed By: xry111
Differential Revision: https://reviews.llvm.org/D137383
Youling Tang [Thu, 10 Nov 2022 05:35:49 +0000 (13:35 +0800)]
[sanitizer][test] Fix FastUnwindTest on LoongArch
Fixes the `FastUnwindTest` unit test for LoongArch.
This change is similar to RISCV D90574.
The following test cases pass after applying the patch:
```
$ ./runtimes/runtimes-bins/compiler-rt/lib/sanitizer_common/tests/Sanitizer-loongarch64-Test
...
[ FAILED ] FastUnwindTest.Basic
[ FAILED ] FastUnwindTest.FramePointerLoop
[ FAILED ] FastUnwindTest.MisalignedFramePointer
[ FAILED ] FastUnwindTest.FPBelowPrevFP
[ FAILED ] FastUnwindTest.CloseToZeroFrame
```
Reviewed By: SixWeining, xen0n, MaskRay
Differential Revision: https://reviews.llvm.org/D137314
Youling Tang [Thu, 10 Nov 2022 05:34:19 +0000 (13:34 +0800)]
[sanitizer] Add the settings of Read and Write flags in SignalContext for LoongArch
The bit-30 in this `__flags` means the address error is due to memory load, and the
bit-31 means the address error is due to memory store. (see SC_ADDRERR_RD
and SC_ADDRERR_WR in kernel arch/loongarch/include/uapi/asm/sigcontext.h).
`illegal_write_test.cpp` and `illegal_read_test.cpp` have been tested and passed.
Reviewed By: SixWeining, xen0n, XiaodongLoong
Differential Revision: https://reviews.llvm.org/D137231
Youling Tang [Thu, 10 Nov 2022 05:32:24 +0000 (13:32 +0800)]
[sanitizer] Add GetMaxVirtualAddress() support for LoongArch
Add support for getting the maximum virtual address, LoongArch has multiple
address space layouts, the default maximum virtual address of the current
user space is 47 bits. (from TASK_SIZE in the kernel for loongarch64).
Reviewed By: SixWeining
Differential Revision: https://reviews.llvm.org/D137219
Lang Hames [Wed, 9 Nov 2022 23:21:45 +0000 (15:21 -0800)]
[ORC-RT] Add a SymbolStringPool class to the ORC runtime.
This is a counterpart to llvm::orc::SymbolStringPool. It holds uniqued,
ref-counted strings; and can be used to avoid redundant storage of strings,
and speed up comparison of strings held in the pool (these become pointer
comparisons).
Lang Hames [Wed, 9 Nov 2022 21:39:29 +0000 (13:39 -0800)]
[ORC] Fix comments: SymbolStringPool is thread-safe, not multi-threaded.
Lang Hames [Wed, 9 Nov 2022 01:40:11 +0000 (17:40 -0800)]
[ORC-RT][MachO] Add RecordSectionsTracker utility to track metadata sections.
Newly added sections can be processed by calling processNewSections. Calling
reset moves all sections back to the "new" state for reprocessing (expected to
be used by dlclose).
Chen Zheng [Tue, 8 Nov 2022 06:35:55 +0000 (01:35 -0500)]
[PowerPC] add a new subtarget feature fastMFLR
Some PowerPC CPU may have slow MFLR instruction, so we need to
schedule the MFLR and its store in function prologue away to
hidden the long latency for slow MFLR instruction.
This patch adds a new feature fastMFLR and the new feature will
be used in https://reviews.llvm.org/D137423.
Reviewed By: RolandF
Differential Revision: https://reviews.llvm.org/D137612
Aart Bik [Wed, 9 Nov 2022 22:57:43 +0000 (14:57 -0800)]
[mlir][sparse] skip zeros during dense2sparse
This enables the full matmul integration test with runtime_lib=true/false!
Background:
https://github.com/llvm/llvm-project/issues/51657
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D137750
Jordan Rupprecht [Thu, 10 Nov 2022 04:48:11 +0000 (20:48 -0800)]
[bazel] Update gtest move to third-party
a11cd0d94ed3cabf0998a0289aead05da94c86eb moved googletest to third-party.
This creates a corresponding BUILD file in third-party/unittest, moved from the chunk in llvm/BUILD.bazel.
We must refine the .bazelignore which is setup to ignore the benchmarking library so that we don't ignore the new dir here.
Prashant Kumar [Fri, 4 Nov 2022 17:09:22 +0000 (17:09 +0000)]
The fillOp's value needs to casted
During elementwise fusion the fillOp's value was directly
referred without casting which can create mismatching dtypes.
Reviewed By: mravishankar, ThomasRaoux
Differential Revision: https://reviews.llvm.org/D137447
Louis Dionne [Thu, 10 Nov 2022 02:50:51 +0000 (16:50 -1000)]
[libc++] Add a script to generate the libc++ BuildKite pipeline dynamically
Tom Stellard [Thu, 10 Nov 2022 00:31:01 +0000 (00:31 +0000)]
cmake: Fix build with -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON
This was broken by
a11cd0d94ed3cabf0998a0289aead05da94c86eb.
Nico Weber [Thu, 10 Nov 2022 00:55:31 +0000 (19:55 -0500)]
[gn build] port
a11cd0d94ed3 (gtest llvm/utils/unittest -> third-party/unittest)
Lei Zhang [Thu, 10 Nov 2022 00:37:19 +0000 (19:37 -0500)]
[mlir][vector] Convert extract_strided_slice to extract & insert chain
This is useful for breaking down extract_strided_slice and potentially
cancel with other extract / insert ops before or after.
Reviewed By: ThomasRaoux
Differential Revision: https://reviews.llvm.org/D137471
Dinar Temirbulatov [Thu, 10 Nov 2022 00:38:28 +0000 (00:38 +0000)]
[AArch64][SVE] Migrate tests to use opaque pointers (NFC)
Test updates were performed using:
https://gist.github.com/nikic/
98357b71fd67756b0f064c9517b62a34
bixia1 [Mon, 7 Nov 2022 21:46:29 +0000 (13:46 -0800)]
[mlir][sparse] Add optional size_hint operand to bufferization.alloc_tensor.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D137585
Lang Hames [Thu, 10 Nov 2022 00:11:40 +0000 (16:11 -0800)]
[ORC] Fix typo in unit test.
Slava Zakharin [Wed, 9 Nov 2022 23:18:50 +0000 (15:18 -0800)]
[flang] Support arith::FastMathFlagsAttr for fir::CallOp.
The main purpose of this patch is to propagate fastmath attribute
to SimplifyIntrinsicsPass, so that the inline code can inherit
the call operation's attributes. Even though I added translation
of fastmath from fir::CallOp to LLVM::CallOp, there are no fastmath
attributes in LLVM IR. It looks like the translation drops it.
This will need additional commits.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D137602
Tom Stellard [Wed, 9 Nov 2022 16:51:34 +0000 (08:51 -0800)]
Move googletest to the third-party directory
Rre-commit of
59052468c3e38cab15582cefbb5133fd4c2ffce5 with a typo
fix in compiler-rt/CMakeLists.txt
Slava Zakharin [Wed, 9 Nov 2022 23:01:47 +0000 (15:01 -0800)]
[flang] Propagate more FastMath flags to lowering.
Plugged in propagation of nnan/nsz/arcp/afn/reassoc related options
to lowering/FirOpBuilder.
Reviewed By: jeanPerier, tblah, awarzynski
Differential Revision: https://reviews.llvm.org/D137580
Alexander Shaposhnikov [Wed, 9 Nov 2022 21:36:18 +0000 (21:36 +0000)]
[CodeGen][AArch64] Enable LDAPR under +RCPC
This is a follow-up to D126250 and enables LDAPR
if the RCPC extensions are enabled.
Test plan: ninja check-all
Differential revision: https://reviews.llvm.org/D137590
Nikolas Klauser [Wed, 9 Nov 2022 20:01:42 +0000 (21:01 +0100)]
[libc++] Add FTM for constexpr vector
It looks like we forgot to set the FTM when adding constexpr vector support.
Reviewed By: ldionne, #libc
Spies: libcxx-commits, arichardson
Differential Revision: https://reviews.llvm.org/D137729
Aart Bik [Wed, 9 Nov 2022 21:05:43 +0000 (13:05 -0800)]
[mlir][sparse] first end-to-end matmul with codegen
(1) also fixes memory leak in sparse2dense rewriting
(2) still needs fix in dense2sparse by skipping zeros
Reviewed By: wrengr
Differential Revision: https://reviews.llvm.org/D137736
Sander de Smalen [Wed, 9 Nov 2022 21:14:25 +0000 (21:14 +0000)]
Revert "[AArch64][SME] Disable GlobalISel/FastISel for SME functions."
Reverting the patch due to a buildbot failure.
This reverts commit
e1e260cc64bd900d5f3f88187c60cb02d3a805f5.
Michael Francis [Tue, 8 Nov 2022 19:37:29 +0000 (19:37 +0000)]
[Test][AIX][pg] Add 32-bit linker invocation tests
Differential Review: https://reviews.llvm.org/D137372
stanley-nod [Wed, 9 Nov 2022 19:26:20 +0000 (11:26 -0800)]
[mlir][vector] Modify constraint and interface for warp reduce on f16 and i8
Quantization method is crucial and ubiqutous in accelerating machine
learning workloads. Most of these methods uses f16 and i8 types.
This patch relaxes the type contraints on warp reduce distribution to
allow these types. Furthermore, this patch also changed the interface
and moved the initial reduction of data to a single thread into the
distributedReductionFn, this gives flexibility for developers to control
how they are obtaining the initial lane value, which might differ based
on the input types. (i.e to shuffle 32-width type, we need to reduce f16
to 2xf16 types rather than a single element).
Reviewed By: ThomasRaoux
Differential Revision: https://reviews.llvm.org/D137691
Michael Francis [Tue, 8 Nov 2022 19:32:44 +0000 (19:32 +0000)]
[Test][AIX][p] Add 64-bit linker invocation tests
Differential Review: https://reviews.llvm.org/D137373
Leonard Chan [Tue, 8 Nov 2022 23:11:26 +0000 (23:11 +0000)]
[compiler-rt][hwasan] Call __hwasan_library_loaded via
__sanitizer_library_loaded on Fuchsia
Differential Revision: https://reviews.llvm.org/D133806
Leonard Chan [Tue, 8 Nov 2022 23:06:19 +0000 (23:06 +0000)]
[compiler-rt][hwasan] Do not call InitLoadedGlobals in __hwasan_init
Fuchsia's libc provides a new hook (__sanitizer_module_loaded) which calls
hwasan_library_loaded in the startup path which will register globals in
loaded modules.
Differential Revision: https://reviews.llvm.org/D137676
Jannik Silvanus [Thu, 27 Oct 2022 07:14:40 +0000 (09:14 +0200)]
[llvm-diff] Fix false-positive diffs on forward-referencing phi nodes
When a phi node references a variable defined in a basic block dominated
by the the basic block containing the phi node, llvm-diff currently cannot determine
whether the variable is equivalent, and thus treats the phi node as different
and reports a difference. This leads to false positive differences as demonstrated
by the loop.ll diff, for which llvm-diff reports a diff when comparing the file
with itself.
Fix that issue by adding the concept of *equivalence assumptions*.
When encountering a pair of values which can neither be proven to be equivalent
nor to be non-equivalent, instead optimistically assume equivalence, and store
somewhere that the equivalence of the currently compared basic blocks depends
on this assumption.
Later, once all BBs have been processed, check all made assumptions and report
blocks as different whose equivalence was depending on an incorrect assumption,
or an assumption we could not prove to be correct.
In order to preserve the original diff report order, also schedule diffs
of blocks already known to be different using the same mechanism, so all block
diffs are now generated at the very end of function diffing.
In case an incorrect assumption was made, all further shown equivalences between
old and new values implictly depend on the incorrect assumption. Some of these
may in fact be not equivalent, but these are neither reverted nor reported,
because they are considered indirect diffs caused by an earlier direct diff.
See inline comments for an argument why we do not run into issues caused by circular
proof dependencies.
Differential Revision: https://reviews.llvm.org/D137318
Tom Stellard [Wed, 9 Nov 2022 19:32:26 +0000 (11:32 -0800)]
Revert "Move googletest to the third-party directory"
This reverts commit
59052468c3e38cab15582cefbb5133fd4c2ffce5.
It looks like this patch breaks the build when compiler-rt is passed to
LLVM_ENABLE_PROJECTS instead of LLVM_ENABLE_RUNTIMES.
Craig Topper [Wed, 9 Nov 2022 19:16:00 +0000 (11:16 -0800)]
[RISCV] Support BSET/BCLR/BINV in hasAllWUsers.
These instructions set, clear, or invert a single bit. If their
users don't use the upper 32 bits, they don't use the upper 32 bits
of their input.
Additionally the second operand BSET/BCLR/BINV is a shift amount
which only uses 6 bits of the source.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D137452
Craig Topper [Wed, 9 Nov 2022 19:15:30 +0000 (11:15 -0800)]
[RISCV] Support shift/rotate amount operands in isAllUsesReadW.
These operands use 6 bits.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D137450
Craig Topper [Wed, 9 Nov 2022 19:15:03 +0000 (11:15 -0800)]
[RISCV] Improve support for ADD_UW/SHXADD_UW in hasAllWUsers.
The first use operand of these is implicitly zero extended. We
can consider that a W read. If the use is the other operand, we
need to look through the instruction.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D137449
Craig Topper [Wed, 9 Nov 2022 19:14:21 +0000 (11:14 -0800)]
[RISCV] Support SB/SH/SW in hasAllWUsers in RISCVSExtWRemoval.
After D137446 we can see which operand is the user. If the user
is the value operand of a SB/SH/SW then the upper 32 bits aren't
used.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D137448
Craig Topper [Wed, 9 Nov 2022 07:40:15 +0000 (23:40 -0800)]
[RISCV] Rework hasAllWUsers in RISCVSExtWRemoval. NFCI
Instead of storing the uses to check in the worklist, store the
instruction we want to check uses for.
Now we pop and instruction from the worklist, loop over its uses
and check them. If it's something we need to look across, we'll push
it to the worklist.
By doing it this way, we can have access to which operand
of the user is using the instruction. This will allow supporting
store instructions since we'll be able to disambiguate the the value
operand and the pointer operand. We can also improve support for
*add.uw instructions and shift amount uses.
Reviewed By: mohammed-nurulhoque, asb
Differential Revision: https://reviews.llvm.org/D137446
Craig Topper [Wed, 9 Nov 2022 07:24:01 +0000 (23:24 -0800)]
[clang] Mention vector in the description for -mno-implict-float.
As far as I understand, this disables all integer vectors too.
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D134089
Lang Hames [Wed, 9 Nov 2022 19:13:18 +0000 (11:13 -0800)]
[ORC] Add a unit test to verify that bound weak symbols can't be overridden.
Weak symbols can be overridden while they're in the NeverSearched state, but
should not be able to be overridden once they've been bound by some lookup.
Historically we guaranteed this by stripping the weak flag once a symbol as
bound, causing it to appear as if it were strong. In
ffe2dda29f3 we changed
that behavior to retain weak flags on symbols (to facilitate tracking for
dynamic re-binding during dlopen). This test checks that we still fail as
required after
ffe2dda29f3.
Tom Stellard [Wed, 9 Nov 2022 16:51:34 +0000 (08:51 -0800)]
Move googletest to the third-party directory
This will help improve the project's layering, so that sub-projects
that don't actually need any llvm code can still use googletest
without having to reference code in the llvm directory.
This will also make it easier to consolidate and simplify the standalone
build configurations.
Reviewed By: stellaraccident, lattner, probinson, phosek
Differential Revision: https://reviews.llvm.org/D131919
Renaud-K [Wed, 9 Nov 2022 19:04:22 +0000 (11:04 -0800)]
Using higher level interface to insert new arguments so arguments
and their corresponding attributes are moved together
Differential revision: https://reviews.llvm.org/D13767
v1nh1shungry [Wed, 9 Nov 2022 20:04:20 +0000 (21:04 +0100)]
[clangd] Fix the code action `RemoveUsingNamespace`
Avoid adding qualifiers before user-defined literals
Reviewed By: tom-anders
Differential Revision: https://reviews.llvm.org/D137550
Jim Ingham [Wed, 9 Nov 2022 18:11:16 +0000 (10:11 -0800)]
Handle aliasing a non-top-level command.
This didn't work previously because we had to check whether the incoming
command was an alias command, but if it wasn't we still used the result
of that lookup - which was by the command's node name. That fails for
non-top-level commands. In this case, the resolution is pretty simple since
we already have the node's CommandObject, so all we needed to do was turn
it into a shared pointer, for which I added enable_shared_from_this to the
CommandObject.
Differential Revision: https://reviews.llvm.org/D137662
Jim Ingham [Wed, 9 Nov 2022 18:03:30 +0000 (10:03 -0800)]
Don't try to create Expressions when the process is running.
We generally prohibit this at a higher level - for instance requiring
the process to be stopped for "expr". But when we trigger an expression
for internal purposes (e.g. to fetch types from the ObjC runtime) we weren't
checking the process state. Now we explicitly check this at the very start
of the job so we don't get into bad states.
Differential Revision: https://reviews.llvm.org/D137684
Ilya Biryukov [Wed, 9 Nov 2022 17:31:14 +0000 (18:31 +0100)]
[include-cleaner] Add dependency to fix build with shared libraries
Jason Molenda [Wed, 9 Nov 2022 16:38:57 +0000 (08:38 -0800)]
Rename unique-types2/TestUniqueTypes.py to TestUniqueTypes2.py
lang/cpp/unique-types/TestUniqueTypes.py already exists.
Simon Pilgrim [Wed, 9 Nov 2022 17:08:36 +0000 (17:08 +0000)]
[X86] Replace unnecessary CVTPS2PI/CVTPS2DQ overrides with better base class defs
Broadwell/Haswell were completely overriding the WriteCvtPD2I class defs - we can remove those overrides entirely by just choosing better class defs.
Also fixes the scheduler for a missing YMM folded case - confirmed with Agner + uops.info that the port usage is correct
Jon Chesterfield [Wed, 9 Nov 2022 16:54:20 +0000 (16:54 +0000)]
Revert "[amdgpu][lds] Use the same isKernel predicate consistently"
Looks like this composed poorly with a nominally independent patch, will fix
This reverts commit
0ba0398517778514eb44cb7ba9bf9d4d20a856e0.
Jon Chesterfield [Wed, 9 Nov 2022 16:45:02 +0000 (16:45 +0000)]
[amdgpu][lds] Use the same isKernel predicate consistently
isKernelCC != isKernel(F->getCallingConv())
There's a test case (lower-kernel-lds.ll) that explicitly skips amdgpu_ps
so this change picks the isKernel predicate that continues to skip that
calling convention.
isKernel returns true for AMDGPU_KERNEL and SPIR_KERNEL. isKernelCC also
returns true for other calling conventions.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D136599
Jon Chesterfield [Wed, 9 Nov 2022 16:17:33 +0000 (16:17 +0000)]
Revert "[LLD] Enable --no-undefined-version by default."
This reverts commit
eedbe44b8755f7d162eee43cb3e8c9da1e61ebad.
Sander de Smalen [Wed, 9 Nov 2022 15:53:53 +0000 (15:53 +0000)]
[AArch64][SME] Disable GlobalISel/FastISel for SME functions.
This patch ensures that GlobalISel and FastISel fall back to regular DAG ISel when:
* A function requires streaming-mode to be enabled at the start/end of the function.
This happens when the function has no streaming interface, but does have a streaming body.
* A function requires a lazy-save to be committed at the start of the function.
This happens if the function has the `aarch64_pstate_za_new` attribute.
* A call to a function requires a change in streaming-mode.
* A call to a function requires a lazy-save buffer to be set up.
Patch by @CarolineConcatto
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D136361
Jon Chesterfield [Wed, 9 Nov 2022 15:57:38 +0000 (15:57 +0000)]
[amdgpu][lds] Use a consistent order of fields in generated structs
Avoids spurious and confusing test failures on changing implementation.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D136598
Sander de Smalen [Tue, 8 Nov 2022 13:22:48 +0000 (13:22 +0000)]
[AArch64] NFC: Remove unused parameter from allocateLazySaveBuffer
Oleg Shyshkov [Wed, 9 Nov 2022 14:59:54 +0000 (15:59 +0100)]
Revert "[mlir][linalg] Replace "string" iterator_types attr with enums in LinalgInterface."
Breaks linalg python tests. Would need to also update python/mlir/dialects/linalg/opdsl.
This reverts commit
b809d73973bb5aeedeb6a18cac2a7b3111d0c8d2.
Simon Pilgrim [Wed, 9 Nov 2022 14:54:03 +0000 (14:54 +0000)]
[X86] Replace unnecessary CVTSD2SI/CVTSS2SI overrides with better base class defs
Broadwell/Haswell were completely overriding the WriteCvtSD2I/WriteCvtSS2I class defs - we can remove those overrides entirely by just choosing better class defs.
Oleg Shyshkov [Wed, 9 Nov 2022 14:42:40 +0000 (15:42 +0100)]
[mlir][linalg] Replace "string" iterator_types attr with enums in LinalgInterface.
[RFC: EnumAttr for iterator types in Linalg](https://discourse.llvm.org/t/rfc-enumattr-for-iterator-types-in-linalg/64535)
This affect touches and probably breaks most of the code that creates `linalg.generic`. A fix would be to replace calls to `getParallelIteratorTypeName/getReductionIteratorTypeName` with `mlir::utils::IteratorType::parallel/reduction` and types from `StringRef` to `mlir::utils::IteratorType`.
Due to limitations of tablegen, shared C++ definition of IteratorType enum lives in StructuredOpsUtils.td, but each dialect should have it's own EnumAttr wrapper. To avoid conflict, all enums in a dialect are put into a separate file with a separate tablegen rule.
Test dialect td files are refactored a bit.
Printed format of `linalg.generic` temporarily remains unchanged to avoid breaking code and tests in the same change.
Differential Revision: https://reviews.llvm.org/D137658
David Sherwood [Thu, 3 Nov 2022 11:04:43 +0000 (11:04 +0000)]
[AArch64][SVE2] Add the SVE2.1 integer quadword reduction instructions
This patch adds the assembly/disassembly for the following instructions:
addqv : Unsigned add reduction of quadword vector segments
andqv : Bitwise AND reduction of quadword vector segments
eorqv : Bitwise exclusive OR reduction of quadword vector segments
orqv : Bitwise inclusive OR reduction of quadword vector segments
smaxqv : Signed maximum reduction of quadword vector segments
sminqv : Signed minimum reduction of quadword vector segments
umaxqv : Unsigned maximum reduction of quadword vector segments
uminqv : Unsigned minimum reduction of quadword vector segments
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
Differential Revision: https://reviews.llvm.org/D137411
Nikita Popov [Wed, 9 Nov 2022 14:25:38 +0000 (15:25 +0100)]
[SCCP] Add tests for with.overflow intrinsics (NFC)
Aaron Ballman [Wed, 9 Nov 2022 14:19:24 +0000 (09:19 -0500)]
Fix Clang sphinx build
This addresses the issue found by:
https://lab.llvm.org/buildbot/#/builders/92/builds/35350
Tomasz Kamiński [Wed, 9 Nov 2022 13:31:49 +0000 (14:31 +0100)]
[analyzer] Fix crash for array-delete of UnknownVal values.
We now skip the destruction of array elements for `delete[] p`,
if the value of `p` is UnknownVal and does not have corresponding region.
This eliminate the crash in `getDynamicElementCount` on that
region and matches the behavior for deleting the array of
non-constant range.
Reviewed By: isuckatcs
Differential Revision: https://reviews.llvm.org/D136671
Vladislav Vinogradov [Wed, 2 Nov 2022 11:22:14 +0000 (14:22 +0300)]
[Support] Format provider improvements
Remove `std::forward` call for `iterator_range` iterator de-reference.
It fixes formatting usage for some tricky cases, like special ranges,
which de-reference to value type.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D94769
Nicolas Vasilache [Wed, 9 Nov 2022 13:09:39 +0000 (05:09 -0800)]
[mlir][Transform] Fix transform.sequence crash in the presence of propagated silenceable errors and yield operations
Differential Revision: https://reviews.llvm.org/D137708
Sven van Haastregt [Wed, 9 Nov 2022 13:17:23 +0000 (13:17 +0000)]
[OpenCL] Guard read_write image3d with cl_khr_3d_image_writes
Not all `read_write image3d_t` occurrences in opencl-c.h were guarded
with `cl_khr_3d_image_writes`. Align with `-fdeclare-opencl-builtins`.
Vladislav Vinogradov [Wed, 9 Nov 2022 13:14:39 +0000 (16:14 +0300)]
Revert "[Support] Format provider improvements"
This reverts commit
791bdba0b183371ca3e16bb8411a059b4f8636ac.
Bot failure: https://lab.llvm.org/buildbot/#/builders/223/builds/9914
Vladislav Vinogradov [Wed, 2 Nov 2022 11:22:14 +0000 (14:22 +0300)]
[Support] Format provider improvements
Remove `std::forward` call for `iterator_range` iterator de-reference.
It fixes formatting usage for some tricky cases, like special ranges,
which de-reference to value type.
Reviewed By: sammccall
Differential Revision: https://reviews.llvm.org/D94769
Haojian Wu [Wed, 9 Nov 2022 12:03:12 +0000 (13:03 +0100)]
Fix an unused-variable warning in release build, NFC.
Tomas Matheson [Sun, 23 Oct 2022 20:44:21 +0000 (21:44 +0100)]
[ARM] Move Triple::getARMCPUForArch into ARMTargetParser
This is very backend specific so either belongs in Toolchains/ARM or in
ARMTargetParser. Since it is used in lldb, ARMTargetParser made more sense.
This is part of an effort to move information about ARM/AArch64 architecture
versions, extensions and CPUs into their respective TargetParsers.
Differential Revision: https://reviews.llvm.org/D137564
OCHyams [Wed, 9 Nov 2022 11:39:29 +0000 (11:39 +0000)]
[Assignment Tracking][10/*] salvageDebugInfo for dbg.assign intrinsics
The Assignment Tracking debug-info feature is outlined in this RFC:
https://discourse.llvm.org/t/
rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir
Plumb in salvaging for the address part of dbg.assign intrinsics.
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D133293
Nikita Popov [Wed, 9 Nov 2022 11:18:18 +0000 (12:18 +0100)]
[SCCP] Add helper for getting constant range (NFC)
Add a helper for the recurring pattern of getting a constant range
if the value lattice element is one, or a full range otherwise.
Victor Campos [Wed, 19 Oct 2022 13:03:57 +0000 (14:03 +0100)]
[AArch64] Add support for the Cortex-X3 CPU
Cortex-X3 is an Armv9-A AArch64 CPU.
This patch introduces support for Cortex-X3.
Technical Reference Manual: https://developer.arm.com/documentation/101593/latest
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D136589
Kai Sasaki [Wed, 9 Nov 2022 11:11:55 +0000 (12:11 +0100)]
[mlir][complex] Canonicalize complex.sub zero
Subtracting zero constant can be fold in no complex.sub operation.
Reviewed By: pifon2a
Differential Revision: https://reviews.llvm.org/D137523
OCHyams [Wed, 9 Nov 2022 10:49:55 +0000 (10:49 +0000)]
[Assignment Tracking][9/*] Don't drop DIAssignID in dropUnknownNonDebugMetadata
The Assignment Tracking debug-info feature is outlined in this RFC:
https://discourse.llvm.org/t/
rfc-assignment-tracking-a-better-way-of-specifying-variable-locations-in-ir
A DIAssignID attachment is debug metadata, so don't drop it.
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D133292