Tom Stellard [Thu, 10 Nov 2022 20:18:49 +0000 (12:18 -0800)]
docs: Add instructions for stand-alone builds of clang
More sub-projects will be added to the table once they have been verified
to be buildable in stand-alone mode.
Reviewed By: MaskRay, mgorny
Differential Revision: https://reviews.llvm.org/D123968
William Huang [Thu, 10 Nov 2022 00:34:07 +0000 (00:34 +0000)]
[InstCombine] PR58901 - fix bug with swapping GEP of different types
Fix https://github.com/llvm/llvm-project/issues/58901 by adding stricter check whether non-opaque GEP can be swapped. This will not affect GEP swapping optimization in the future since we are switching to opaque GEP
Reviewed By: clin1
Differential Revision: https://reviews.llvm.org/D137752
Konrad Kleine [Thu, 10 Nov 2022 11:11:33 +0000 (12:11 +0100)]
[release] Add third-party tarball to release for standalone builds
With the advent of https://reviews.llvm.org/D131919 and
https://github.com/llvm/llvm-project/commit/
a11cd0d94ed3cabf0998a0289aead05da94c86eb
the third-party directory is required to build LLVM and other packages and in standalone
builds the third-party directory is not available from the llvm tarball anymore.
Differential Revision: https://reviews.llvm.org/D137777
Anastasia Stulova [Thu, 10 Nov 2022 19:50:19 +0000 (19:50 +0000)]
Updated contact email address.
Mark de Wever [Thu, 4 Aug 2022 16:31:03 +0000 (18:31 +0200)]
[libc++] Documents details of the pre-commit CI.
This documentation aims to make it cleare how the libc++ pre-commit CI
works. For libc++ developers and other LLVM projects whose changes can
affect libc++.
This was discusses with @aaron.ballman as a follow on some unclearities
for the Clang communitee how the libc++ pre-commit CI works.
Note some parts depend on patches under review as commented in the
documentation.
Reviewed By: ldionne, #libc, philnik
Differential Revision: https://reviews.llvm.org/D133249
Sanjay Patel [Thu, 10 Nov 2022 19:09:57 +0000 (14:09 -0500)]
[VectorCombine] widen a load with subvector insert
This adapts/copies code from the existing fold that allows
widening of load scalar+insert. It can help in IR because
it removes a shuffle, and the backend can already narrow
loads if that is profitable in codegen.
We might be able to consolidate more of the logic, but
handling this basic pattern should be enough to make a small
difference on one of the motivating examples from issue #17113.
The final goal of combining loads on those patterns is not
solved though.
Differential Revision: https://reviews.llvm.org/D137341
Sanjay Patel [Thu, 10 Nov 2022 17:08:25 +0000 (12:08 -0500)]
[SystemZ] add test for mergeTruncStores miscompile; NFC
This is based on the example in issue #58883. I'm not sure
if the output currently shows the potential miscompile,
so we may want to adjust the test in a follow-up.
Matt Arsenault [Thu, 10 Nov 2022 17:09:25 +0000 (09:09 -0800)]
AArch64/GlobalISel: Regenerate some test checks to include -NEXT
Alexey Bataev [Fri, 16 Sep 2022 20:57:04 +0000 (13:57 -0700)]
[SLP]Redesign vectorization of the gather nodes.
Gather nodes are vectorized as simply vector of the scalars instead of
relying on the actual node. It leads to the fact that in some cases
we may miss incorrect transformation (non-matching set of scalars is
just ended as a gather node instead of possible vector/gather node).
Better to rely on the actual nodes, it allows to improve stability and
better detect missed cases.
Differential Revision: https://reviews.llvm.org/D135174
Anastasia Stulova [Thu, 10 Nov 2022 15:20:34 +0000 (15:20 +0000)]
[OpenCL] Fix diagnostics with templates in kernel args.
Improve checking for the standard layout type when diagnosing
the kernel argument with templated types. The check doesn't work
correctly for references or pointers due to the lazy template
instantiation.
Current fix only improves cases where nested types in the templates
do not depend on the template parameters.
Differential Revision: https://reviews.llvm.org/D134445
Jorge Gorbe Moya [Thu, 10 Nov 2022 18:25:04 +0000 (10:25 -0800)]
[lldb] Make callback-based formatter matching available from the CLI.
This change adds a `--recognizer-function` (`-R`) to `type summary add`
and `type synth add` that allows users to specify that the names in
the command are not type names but python function names.
It also adds an example to lldb/examples, and a section in the data
formatters documentation on how to use recognizer functions.
Differential Revision: https://reviews.llvm.org/D137000
Jason Molenda [Thu, 10 Nov 2022 18:21:29 +0000 (10:21 -0800)]
add LoongArchTargetParser.def to LLVM_Utils module
Weinling Lu's change from https://reviews.llvm.org/D136146
fails to build with -DLLVM_ENABLE_MODULES=1 cmake builds
like the LLDB Incremental CI bot on greendragon; this entry
is sufficient to unblock that style of build, it seems.
Alexey Bataev [Thu, 10 Nov 2022 18:12:51 +0000 (10:12 -0800)]
[SLP][NFC]Add a test for vectorization with scheduling blocks order
different than the instruction order, NFC.
Krzysztof Parzyszek [Tue, 1 Nov 2022 16:15:08 +0000 (09:15 -0700)]
Add deduction guides for IRBuilder
Differential Revision: https://reviews.llvm.org/D137173
Matt Arsenault [Thu, 10 Nov 2022 17:05:26 +0000 (09:05 -0800)]
AArch64/GlobalISel: Regenerate test checks
Renaud-K [Mon, 7 Nov 2022 19:02:57 +0000 (11:02 -0800)]
Add constant time mapping from enumeration to string in ENUM_CLASS
macro
Differential revision: https://reviews.llvm.org/D137577
Renaud-K [Thu, 10 Nov 2022 01:55:03 +0000 (17:55 -0800)]
In the case the function body is empty, shifting attributes as inserting argument is not supported
Differential revision: https://reviews.llvm.org/D137757
Caroline Concatto [Wed, 2 Nov 2022 11:32:48 +0000 (11:32 +0000)]
[AArch64]SME2 Multi vector Sel Load and Store instructions
This patch adds the assembly/disassembly for the following instruction:
SEL: Multi-vector conditionally select elements from two vectors
for 2 and 4 registers
Non-constiguous load with stride resgisters:
LD1B (scalar + immediate): Contiguous load of bytes to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load of bytes to multiple strided vectors (scalar index).
LD1D (scalar + immediate): Contiguous load of doublewords to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load of doublewords to multiple strided vectors (scalar index).
LD1H (scalar + immediate): Contiguous load of halfwords to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load of halfwords to multiple strided vectors (scalar index).
LD1W (scalar + immediate): Contiguous load of words to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load of words to multiple strided vectors (scalar index).
LDNT1B (scalar + immediate): Contiguous load non-temporal of bytes to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load non-temporal of bytes to multiple strided vectors (scalar index).
LDNT1D (scalar + immediate): Contiguous load non-temporal of doublewords to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load non-temporal of doublewords to multiple strided vectors (scalar index).
LDNT1H (scalar + immediate): Contiguous load non-temporal of halfwords to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load non-temporal of halfwords to multiple strided vectors (scalar index).
LDNT1W (scalar + immediate): Contiguous load non-temporal of words to multiple strided vectors (immediate index).
(scalar + scalar): Contiguous load non-temporal of words to multiple strided vectors (scalar index).
Non-constiguous store with stride resgisters:
ST1B (scalar + immediate): Contiguous store of bytes from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store of bytes from multiple strided vectors (scalar index).
ST1D (scalar + immediate): Contiguous store of doublewords from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store of doublewords from multiple strided vectors (scalar index).
ST1H (scalar + immediate): Contiguous store of halfwords from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store of halfwords from multiple strided vectors (scalar index).
ST1W (scalar + immediate): Contiguous store of words from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store of words from multiple strided vectors (scalar index).
STNT1B (scalar + immediate): Contiguous store non-temporal of bytes from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store non-temporal of bytes from multiple strided vectors (scalar index).
STNT1D (scalar + immediate): Contiguous store non-temporal of doublewords from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store non-temporal of doublewords from multiple strided vectors (scalar index).
STNT1H (scalar + immediate): Contiguous store non-temporal of halfwords from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store non-temporal of halfwords from multiple strided vectors (scalar index).
STNT1W (scalar + immediate): Contiguous store non-temporal of words from multiple strided vectors (immediate index).
(scalar + scalar): Contiguous store non-temporal of words from multiple strided vectors (scalar index).
The reference can be found here:
https://developer.arm.com/documentation/ddi0602/2022-09
This patch also adds a new SVE vector list to represent the stride loads/stores
ZPRVectorListStrided and the sets of 2 and 4 ZA registers:
ZZ_[b|h|w|d]_strided and ZZZZ_[b|h|w|d]_strided
Differential Revision: https://reviews.llvm.org/D136172
Andrzej Warzynski [Thu, 10 Nov 2022 15:54:57 +0000 (15:54 +0000)]
[flang][nfc] Add missing `REQUIRES` flag in a test
D129156 has caused a buildbot failure:
* https://lab.llvm.org/buildbot/#/builders/175/builds/20472.
Clearly `examples` is missing from the `REQUIRES` list. Sending this
without a review as a quick fix.
bixia1 [Thu, 10 Nov 2022 00:16:03 +0000 (16:16 -0800)]
[mlir][sparse] Add option enable-buffer-initialization to the sparse-tensor-codegen pass.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D137733
Nico Weber [Thu, 10 Nov 2022 15:13:51 +0000 (10:13 -0500)]
[gn build] port
e1b88c8a09be (clang resource dir uses only major version)
Tarun Prabhu [Thu, 10 Nov 2022 14:56:03 +0000 (07:56 -0700)]
[flang] Add -fpass-plugin option to flang
This patch adds the -fpass-plugin option to flang which dynamically loads LLVM
passes from the shared object passed as the argument to the flag. The behavior
of the option is designed to replicate that of the same option in clang and
thus has the same capabilities and limitations.
Features:
Multiple instances of -fpass-plugin=path-to-file can be specified and each
of the files will be loaded in that order.
The flag can be passed to both flang-new and flang-new -fc1.
The flag will be listed when the -help flag is passed to both flang-new and
flang-new -fc1. It will also be listed when the --help-hidden flag is passed.
Limitations:
Dynamically loaded plugins are not supported in clang on Windows and are not
supported in flang either.
Addenda:
Some minor stylistic changes are made in the files that were modified to
enable this functionality. Those changes make the naming of functions more
consistent, but do not change any functionality that is not directly
related to enabling -fpass-plugin.
Differential Revision: https://reviews.llvm.org/D129156
Haojian Wu [Wed, 2 Nov 2022 10:39:59 +0000 (11:39 +0100)]
[include-cleaner] Add export IWYU pragma support.
- add support to PragmaIncludes to handle IWYU export/begin_exports/end_exports
pragma;
- implement an API to retrieve the direct exporter headers;
Differential Revision: https://reviews.llvm.org/D137319
Stefan Pintilie [Wed, 9 Nov 2022 21:09:31 +0000 (15:09 -0600)]
[PowerPC] Add the SUBFUS instruction to Future CPU.
Add a new instruction called SUBUFS that does saturating subtract.
This instruction is only for Future CPU.
Reviewed By: amyk
Differential Revision: https://reviews.llvm.org/D137643
Benjamin Kramer [Thu, 10 Nov 2022 14:24:37 +0000 (15:24 +0100)]
[bazel] Provide CLANG_VERSION_MAJOR_STRING for
e1b88c8a09be25b86b13f98755a9bd744b4dbf14
Matthias Springer [Thu, 10 Nov 2022 14:04:23 +0000 (15:04 +0100)]
[mlir][vector] Support vector.extractelement distribution of 1D vectors
Ops such as `%1 = vector.extractelement %0[%pos : index] : vector<96xf32>`.
In case of an extract from a 1D vector, the source vector is distributed. The lane into which the requested position falls, extracts the element and shuffles it to all other lanes.
Differential Revision: https://reviews.llvm.org/D137336
Keith Walker [Fri, 4 Nov 2022 10:02:29 +0000 (10:02 +0000)]
[AArch64] RME MEC instructions and system registers
This patch adds assembler/disassembler support for
RME MEC (Memory Encryption Contexts).
Cache maintence instructions added:
- DC CIPAPA
- DC CIGDPAPA
System registers added:
- MECIDR_EL2
- MECID_P0_EL2
- MECID_A0_EL2
- MECID_P1_EL2
- MECID_A1_EL2
- VMECID_P_EL2
- VMECID_A_EL2
- MECID_RL_A_EL3
Differential Revision: https://reviews.llvm.org/D137431
Valentin Clement [Thu, 10 Nov 2022 14:01:38 +0000 (15:01 +0100)]
[flang][NFC] Rename RewriteLoop.cpp to ControlFlowConverter.cpp
RewriteLoop.cpp is containing more than just loop conversion. It will
soon contains the fir.select_type conversion as well. This patch
renames the file so it is in line with the pass name.
Reviewed By: jeanPerier
Differential Revision: https://reviews.llvm.org/D137773
Timm Bäder [Thu, 9 Jun 2022 06:05:41 +0000 (08:05 +0200)]
[clang] Only use major version in resource dir
This causes unnecessary churn for downstreams.
For the full discussion, see https://discourse.llvm.org/t/should-we-continue-embed-the-full-llvm-version-in-lib-clang/62094
Differential Revision: https://reviews.llvm.org/D125860
LLVM GN Syncbot [Thu, 10 Nov 2022 13:53:38 +0000 (13:53 +0000)]
[gn build] Port
85f08c4197ae
LLVM GN Syncbot [Thu, 10 Nov 2022 13:53:37 +0000 (13:53 +0000)]
[gn build] Port
135a9272a4c9
Nico Weber [Thu, 10 Nov 2022 13:53:06 +0000 (08:53 -0500)]
[gn build] port
b60f801607543
Hassnaa Hamdi [Wed, 9 Nov 2022 12:24:41 +0000 (12:24 +0000)]
[AArch64][SVE][NFC] Add streaming mode SVE tests
Add sve-fixed-length testing files and enable streaming mode flag for:
and-combine.ll
bitcast.ll
reshuffle.ll
rev.ll
sdiv-pow2.ll
splat-vector.ll
int-extends.ll
Differential Revision: https://reviews.llvm.org/D137093
Krasimir Georgiev [Thu, 10 Nov 2022 13:48:45 +0000 (14:48 +0100)]
jinge90 [Thu, 10 Nov 2022 13:46:49 +0000 (21:46 +0800)]
[libunwind][NFC] Fix typo in libunwind debug string
Reviewed By: mstorsjo
Differential Revision: https://reviews.llvm.org/D137529
Signed-off-by: jinge90 <ge.jin@intel.com>
wanglei [Thu, 10 Nov 2022 13:01:05 +0000 (21:01 +0800)]
[LoongArch] Override TargetFrameLowering::spillCalleeSavedRegisters
When using `llvm.returnaddress` intrinsic, special handling is required
for the spill of the `RA` register. Otherwise it will cause the verifier
fail in some cases (e.g. pr17377.c of the GCC C Torture Suite).
Specifically:
```
*** Bad machine code: Using an undefined physical register ***
- function: f
- basic block: %bb.0 entry (0xd94d18)
- instruction: ST_D killed $r1, $r22, -40 :: (store (s64) into %stack.2)
- operand 0: killed $r1
```
Reviewed By: SixWeining
Differential Revision: https://reviews.llvm.org/D137387
Bing1 Yu [Fri, 4 Nov 2022 06:20:43 +0000 (14:20 +0800)]
[X86] Add necessary check isReg() when updating LiveVariables in convertToThreeAddress
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D137388
Alexander Timofeev [Wed, 9 Nov 2022 22:05:44 +0000 (23:05 +0100)]
[PEI][NFC] Refactoring of the debug instructions frame index replacement
This is required for the upcoming backward PEI::replaceFrameIndices version.
Both forward and backward versions will use same code for debug instruction processing.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D137741
wanglei [Thu, 10 Nov 2022 12:28:23 +0000 (20:28 +0800)]
[LoongArch] Support parsing target specific flags for MIR
These hooks ensure that the LoongArch backend can serialize and parse
MIR correctly.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D137482
Ivan Kosarev [Thu, 10 Nov 2022 12:49:18 +0000 (12:49 +0000)]
[AMDGPU][AsmParser] Remove extra checks on missing instruction modifiers.
https://reviews.llvm.org/D137549 makes them unnecessary.
Reviewed By: dp
Differential Revision: https://reviews.llvm.org/D137638
Ivan Kosarev [Mon, 7 Nov 2022 10:22:51 +0000 (10:22 +0000)]
[AsmParser] Match mandatory operands following optional operands.
Currently, the asm parser stops matching instruction operands as soon as
the first optional operand is encountered. This leads to the need for
custom checks on missing mandatory operands that come after optional
operands.
The patch changes the parser to always match all optional and mandatory
instruction operands, thus making the custom checks unnecessary. This is
particularly useful for the AMDGPU backend where we have numerous
optional instruction modifiers.
Differential Revision: https://reviews.llvm.org/D137549
Ivan Kosarev [Thu, 10 Nov 2022 12:19:53 +0000 (12:19 +0000)]
[AsmParser] Match mandatory operands following optional operands.
Currently, the asm parser stops matching instruction operands as soon as the first optional operand is encountered. This leads to the need for custom checks on missing mandatory operands that come after optional operands.
The patch changes the parser to always match all optional and mandatory instruction operands, thus making the custom checks unnecessary. This is particularly useful for the AMDGPU backend where we have numerous optional instruction modifiers.
Reviewed By: dp
Differential Revision: https://reviews.llvm.org/D137549
Simon Pilgrim [Thu, 10 Nov 2022 11:58:45 +0000 (11:58 +0000)]
[X86] SkylakeClientModel - conversion instructions don't use Port015
Fixes a lot of throughput mismatches - the more complicated conversion instructions use SKLPort5+SKLPort01, not SKLPort5+SKLPort015 (SKLPort015 is mainly used for basic Logic + blend ops)
Fixing this should allow us to remove a lot of unnecessary scheduler overrides from SkylakeClientModel
Confirmed by both Agner + uops.info
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