Craig Topper [Tue, 13 Dec 2022 17:09:42 +0000 (09:09 -0800)]
[RISCV] Use reduction result type for EXTRACT_VECTOR_ELT in lowerReductionSeq.
Remove the call to getSExtOrTrunc.
Reduction ISD nodes produce a scalar result and that result is
allowed to be larger than the vector element type due to type
legalization. This is the same rule we allow for EXTRACT_VECTOR_ELT
for the same reason.
We can copy the result type over from the reduction node to
EXTRACT_VECTOR_ELT.
Reviewed By: reames
Differential Revision: https://reviews.llvm.org/D139757
Craig Topper [Tue, 13 Dec 2022 17:00:45 +0000 (09:00 -0800)]
[RISCV] Add support for call returns to RISCVSExtWRemoval.
The implementation is inspired by code from PPCInstrInfo.
We look for a copy from X10(A0) preceded by an ADJCALLSTACKUP and
a PseudoCall. We use the PseudoCall to look up the IR function being
called to find it's return attributes.
Reviewed By: asb
Differential Revision: https://reviews.llvm.org/D139808
Philip Reames [Tue, 13 Dec 2022 17:02:01 +0000 (09:02 -0800)]
[RISCV] Use lowerScalarInsert when folding op into reduction [nfc]
This doesn't cause any functional change since this is being applied to a insert generated by the same routine. This is mostly about consolidating the logic for vmv.s.x into one place to simplify future changes.
Philip Reames [Tue, 13 Dec 2022 16:47:49 +0000 (08:47 -0800)]
[RISCV] Use lowerScalarInsert in lowerReductionSeq [nfc]
Use the newly introduced helper routine. At the moment, this generates the same code (at this call site!) since LMUL is restricted to LMUL1 or less, and VL is hard coded to 1. In a future patch, I will loosen the second part.
Kirill Stoimenov [Tue, 6 Dec 2022 22:26:41 +0000 (22:26 +0000)]
[HWASAN] Implemented LsanMetadata in HWASAN.
Please note that that this code is not used. It will be connected at some point when the rest of the code is ready.
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D139464
Alex Brachet [Tue, 13 Dec 2022 17:01:07 +0000 (17:01 +0000)]
[llvm-driver] Just use argv[0]'s filename for finding tool
Usually we want the stem of argv[0] so something like clang-15
will correctly be identified as clang. For lld however, ld.lld
or ld-link would have a stem of just ld, so we also want to
use the full filename. The bug previously was that we were using
all of argv[0] so if you use a full path that happens to include a tool
name then that could be found first. This was the case in 2 stage
build where the binaries are stored in "tools/clang/stage2-bins/"
so some tools would end up as clang and not their intended tool.
Sameer Sahasrabuddhe [Mon, 12 Dec 2022 08:06:45 +0000 (13:36 +0530)]
[AAPointerInfo] track multiple constant offsets for each use
An expression of the form `gep(base, select(pred, const1, const2))` can result
in a set of offsets instead of just one. PointerInfo can now track these sets
instead of conservatively modeling them as Unknown. In general, AAPointerInfo
now uses AAPotentialConstantValues to examine the operands of the GEP.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D138646
Alex Brachet [Tue, 13 Dec 2022 16:56:08 +0000 (16:56 +0000)]
[CMake] Add missing tablegen deps
LLVM GN Syncbot [Tue, 13 Dec 2022 16:27:58 +0000 (16:27 +0000)]
[gn build] Port
233ca84a25a7
Matt Arsenault [Wed, 30 Nov 2022 04:27:26 +0000 (23:27 -0500)]
InstCombine: Add baseline tests for and/or of fcmp to class combine
This is for patterns like !isfinite || zero.
Jakub Kuderski [Tue, 13 Dec 2022 16:05:47 +0000 (11:05 -0500)]
Revert "[mlir][arith] Add canonicalization patterns for 'mul*i_extended'"
This reverts commit
834c17f618ce87b14446e42250d924b8d5f01abe.
Revert to properly address post-commit comments by @jpienaar
under https://reviews.llvm.org/D139778.
Pavel Kopyl [Tue, 13 Dec 2022 15:31:17 +0000 (18:31 +0300)]
[NVPTX] Backend support for variadic functions
This patch adds lowering for function calls with variadic number of
arguments as well as enables support for the following
instructions/intrinsics:
- va_arg
- va_start
- va_end
- va_copy
Note that this patch doesn't intent to include clang's support for
variadic functions for CUDA.
According to the docs:
PTX version 6.0 supports passing unsized array parameter to a
function which can be used to implement variadic functions. [0]
The last parameter in the parameter list may be a .param array of
type .b8 with no size specified. It is used to pass an arbitrary
number of parameters to the function packed into a single array
object.
When calling a function with such an unsized last argument, the last
argument may be omitted from the call instruction if no parameter is
passed through it. Accesses to this array parameter must be within
the bounds of the array. The result of an access is undefined if no
array was passed, or if the access was outside the bounds of the
actual array being passed. [1]
Note that aggregates passed by value as variadic arguments are not
currently supported.
[0] https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#variadic-functions
[1] https://docs.nvidia.com/cuda/parallel-thread-execution/index.html#kernel-and-function-directives-func
Differential Revision: https://reviews.llvm.org/D138531
Guillaume Chatelet [Tue, 13 Dec 2022 16:05:35 +0000 (16:05 +0000)]
[libc][bazel] Add missing dependency in string_memory_utils
Nikita Popov [Tue, 13 Dec 2022 15:56:59 +0000 (16:56 +0100)]
[ThinLTO] Convert tests to opaque pointers (NFC)
Philip Reames [Tue, 13 Dec 2022 15:54:46 +0000 (07:54 -0800)]
[RISCV] Use vmv.v.i for insertion into lane 0 of undef vector when profitable
If we're initializing lane 0 of an undef vector, we can optionally write to other lanes of the vector. Doing so may require additional work, so we don't want to e.g. always use a splat. However, since we don't have an immediate form of vmv.s.x it's useful to use a vmv.v.i if the work required is expected to be equal in practice. We restrict this to when LMUL <= 1 to a) prevent doing additional work at higher LMULs, and b) avoid overconstraining the register allocator.
At the moment, the new utility is only used by one case in INSERT_VECTOR_ELT lowering. My expectation is that we will reuse this in a couple other places, but each of those deserve individual review.
This change is inspired by D137530, but is not directly related to it. I vaguely remember we discussed the tradeoffs of using vmv.v.i in another recent review, but couldn't find it.
Differential Revision: https://reviews.llvm.org/D139648
Philip Reames [Tue, 13 Dec 2022 15:47:53 +0000 (07:47 -0800)]
[RISCV][InsertVSETVLI] Reverse traversal order of block in post pass [nfc]
his unblocks a following change to be more sophisticated during post pass rewriting.
Review wise, I basically just want a second set of eyes. This change should be straight forward, but since it took me an embarrassing number of attempts to get make check to pass. Let's make sure I'm not missing yet another cornercase.
Differential Revision: https://reviews.llvm.org/D139877
Matt Arsenault [Thu, 17 Nov 2022 06:12:22 +0000 (22:12 -0800)]
InstCombine: Fold logic of fp_classes together
Move logical operators on pairs of llvm.is.fpclass on the same value
into the test mask of a single is_fpclass.
or (class x, mask0), (class x, mask1) -> class x, (mask0 | mask1)
and (class x, mask0), (class x, mask1) -> class x, (mask0 & mask1)
xor (class x, mask0), (class x, mask1) -> class x, (mask0 ^ mask1)
The and/or cases should appear frequently in the builtin math
libraries; haven't seen the xor case but handle it for completeness.
Matt Arsenault [Thu, 1 Dec 2022 15:30:36 +0000 (10:30 -0500)]
InstCombine: Perform simpler test of APFloat first
Jakub Kuderski [Tue, 13 Dec 2022 15:49:14 +0000 (10:49 -0500)]
[mlir][arith] Add canonicalization patterns for 'mul*i_extended'
- Add a fold for `mulsi_extended(x, 1)`
- Add folds to demote wide integer multiplication to `mul*i_extended` when the result is shifted
and truncated: `trunci(shrui(mul(*ext(x), *ext(y)), c)) -> mul*i_extended(x, y)`
Reviewed By: Mogball
Differential Revision: https://reviews.llvm.org/D139778
Philip Reames [Tue, 13 Dec 2022 15:31:05 +0000 (07:31 -0800)]
[llvm-stress] Support scalable vectors and out of bounds indices to vector ops
This change does two things.
First, it supports scalable vectors in llvm-stress output. There's an off-by-default flag -enable-scalable-vectors which generates a scalable vector with 50% probability when a random vector type is selected. Because of the existing implementation, this tends to skew an entire test towards either scalable or fixed since we most select initial values, not random types.
Second, it selects a random value for the index of an insertelement or extractelement. As a result, out of bounds indices can not appear for fixed lengh vectors. Previously, it chose a random constant which was, by construction, in range.
Pierre van Houtryve [Tue, 13 Dec 2022 15:20:42 +0000 (10:20 -0500)]
[AMDGPU] Add `.workgroup_processor_mode` to v5 MD
Adds Workgroup Processor Mode (WGP) to the HSA Metadata for Code Object v5/GFX10+.
The field is already present as an asm directive and in the compute program resource register but is also needed in the MD.
Reviewed By: kzhuravl
Differential Revision: https://reviews.llvm.org/D139931
Nikita Popov [Tue, 13 Dec 2022 15:22:27 +0000 (16:22 +0100)]
[Linker] Convert some tests to opaque pointers (NFC)
Pierre van Houtryve [Tue, 13 Dec 2022 14:59:20 +0000 (09:59 -0500)]
[AMDGPU] Add bf16 storage support
- [Clang] Declare AMDGPU target as supporting BF16 for storage-only purposes on amdgcn
- Add Sema & CodeGen tests cases.
- Also add cases that D138651 would have covered as this patch replaces it.
- [AMDGPU] Add BF16 storage-only support
- Support legalization/dealing with bf16 operations in DAGIsel.
- bf16 as a type remains illegal and is represented as i16 for storage purposes.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D139398
Krasimir Georgiev [Tue, 13 Dec 2022 15:30:54 +0000 (16:30 +0100)]
Revert "[RISC-V][HWASAN] Add support for HWASAN code instrumentation for RISC-V"
This reverts commit
0eb694bec09df488bb6ab33d0207b6b061718d98.
Temporarily revert as it causes a new warning:
https://reviews.llvm.org/D131575#inline-1351186
Nico Weber [Tue, 13 Dec 2022 15:27:00 +0000 (10:27 -0500)]
Revert "Update tests by update_test_checks.py"
This reverts commit
3a8f4649a0a4b7b9cab93d73c0651a14b0fd1c34.
Broke check-llvm everywhere, see e.g.:
* https://lab.llvm.org/buildbot/#/builders/139/builds/32724
* http://45.33.8.238/linux/94174/step_12.txt
* http://45.33.8.238/macm1/50831/step_11.txt
* http://45.33.8.238/win/71928/step_11.txt
Qiongsi Wu [Tue, 13 Dec 2022 14:40:07 +0000 (09:40 -0500)]
[clang][PPC] Checking Unknown Values Passed to -mcpu
Currently `ppc::getPPCTargetCPU` returns an empty string when it encounters an unknown value passed to `-mcpu`. This causes `clang` to ignore unknown `-mcpu` values silently.
This patch changes the behaviour of `ppc::getPPCTargetCPU` so that it passes the unknown option to the target info, so the target info can actually check if the CPU string is supported, and report an error when encountering unknown/unsupported CPU string.
Reviewed By: jamieschmeiser
Differential Revision: https://reviews.llvm.org/D139720
Nikita Popov [Tue, 13 Dec 2022 15:15:00 +0000 (16:15 +0100)]
[CanonicalizeAliases] Convert test to opaque pointers (NFC)
Looks like this transform only has a single test :)
Nikita Popov [Tue, 13 Dec 2022 15:14:14 +0000 (16:14 +0100)]
[FunctionImport] Convert tests to opaque pointers (NFC)
Nikita Popov [Tue, 13 Dec 2022 15:10:51 +0000 (16:10 +0100)]
[ThinLTOBitcodeWriter] Convert tests to opaque pointers (NFC)
Yaxun (Sam) Liu [Mon, 12 Dec 2022 20:50:44 +0000 (15:50 -0500)]
[HIP] support --offload-arch=native
This patch detects system GPU and use them
in --offload-arch if 'native' is specified. If system GPU
cannot be detected clang will fall back to the default GPU arch.
Reviewed by: Artem Belevich
Differential Revision: https://reviews.llvm.org/D139045
Nikita Popov [Tue, 13 Dec 2022 15:06:46 +0000 (16:06 +0100)]
[DebugInfo] Convert most tests to opaque pointers (NFC)
Nikita Popov [Tue, 13 Dec 2022 15:05:27 +0000 (16:05 +0100)]
[BugPoint] Convert tests to opaque pointers (NFC)
Krasimir Georgiev [Tue, 13 Dec 2022 15:03:11 +0000 (16:03 +0100)]
Revert "Delete sanitizer_common-based ('old') scudo: o7"
This reverts commit
512a98e7184e5d48cefbe39da049af3b08ad3919.
We'll need some time to migrate some internal usages off this.
Will sync up with @hctim and @vitalybuka directly.
Alexey Baturo [Wed, 10 Aug 2022 05:41:26 +0000 (08:41 +0300)]
[RISC-V][HWASAN] Add support for HWASAN code instrumentation for RISC-V
Reviewed by: vitalybuka
Differential Revision: https://reviews.llvm.org/D131575
Matt Arsenault [Sat, 10 Dec 2022 17:24:53 +0000 (12:24 -0500)]
InstCombine: Add baseline test for and/or/xor of is.fpclass
Matt Arsenault [Thu, 17 Nov 2022 05:01:09 +0000 (21:01 -0800)]
InstCombine: Add baseline tests for negated fpclass tests
As suggested in https://reviews.llvm.org/D137811
Matt Arsenault [Thu, 17 Nov 2022 04:46:08 +0000 (20:46 -0800)]
InstCombine: Add tests for is_fpclass with ninf sources
Matt Arsenault [Wed, 30 Nov 2022 15:49:49 +0000 (10:49 -0500)]
InstCombine: Add a few tests for daz behavior with is_fpclass
luxufan [Tue, 13 Dec 2022 14:53:22 +0000 (22:53 +0800)]
Update tests by update_test_checks.py
Nikita Popov [Tue, 13 Dec 2022 14:45:54 +0000 (15:45 +0100)]
[Tests] Convert Feature tests to opaque pointers (NFC)
Phoebe Wang [Tue, 13 Dec 2022 14:43:50 +0000 (22:43 +0800)]
[NFC] Fix duplicated `Src`
Nikita Popov [Tue, 13 Dec 2022 14:41:17 +0000 (15:41 +0100)]
[GlobalOpt] Convert remaining tests to opaque pointers (NFC)
Nikita Popov [Tue, 13 Dec 2022 14:35:26 +0000 (15:35 +0100)]
[GlobalOpt] Regenerate test checks (NFC)
Nikita Popov [Tue, 13 Dec 2022 14:23:47 +0000 (15:23 +0100)]
[GlobalOpts] Convert tests to opaque pointers (NFC)
Phoebe Wang [Tue, 13 Dec 2022 14:28:47 +0000 (22:28 +0800)]
[NFC] Add checks for potential null returns
Nico Weber [Tue, 13 Dec 2022 14:25:17 +0000 (09:25 -0500)]
[gn build] Port
7a85192166b5
Nikita Popov [Tue, 13 Dec 2022 14:20:13 +0000 (15:20 +0100)]
[IndVarSimplify] Convert last test to opaque pointers (NFC)
After addressing the SCEVExpander issue that caused me pause.
Also delete a redundant test that is no longer needed.
Nikita Popov [Tue, 13 Dec 2022 14:05:54 +0000 (15:05 +0100)]
[SCEVExpander] Produce canonical constant GEP
Go through IRBuilder to enable DL-based folding, so that we produce
a canonical constant GEP. Noticed while converting tests to opaque
pointers.
Matt Arsenault [Sun, 11 Dec 2022 13:37:26 +0000 (08:37 -0500)]
APFloat: Add isPosInfinity and isNegInfinity helpers
Simon Pilgrim [Tue, 13 Dec 2022 13:42:16 +0000 (13:42 +0000)]
[X86] lowerShuffleAsVTRUNC - support offseted truncations
Extend the <0,Scale,2*Scale,..> pattern to allow for a fixed offset <Offset,Offset+Scale,Offset+2*Scale,..> pattern, which will lower to a single additional bitshift/pshufd.
At the moment I've limited this to cases where the LHS/RHS operands are concatenated for free, but this is only to avoid a couple of regressions that should be easily addressable in followups.
Valentin Clement [Tue, 13 Dec 2022 13:59:39 +0000 (14:59 +0100)]
[flang] Handle type generation for unlimited polymorphic function result
An unlimited polymorphic entity is considered to have a derived category
in its dynamic type but no type descriptor. Avoid a nullptr dereference when
an unlimited polymorphic type needs to be generated.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D139923
Nikita Popov [Tue, 13 Dec 2022 13:44:27 +0000 (14:44 +0100)]
[IndVarSimplify] Convert tests to opaque pointers (NFC)
This leaves lftr.ll alone, because there is a suspicious test diff.
Dani Ferreira Franco Moura [Tue, 13 Dec 2022 13:31:57 +0000 (14:31 +0100)]
[clang][dataflow] Change the diagnoser API to receive a correctly typed lattice element
Previously, the diagnoser could only receive the Environment at a given program point. Now, it receives the complete dataflow state: the environment and lattice element.
This change does not contain any tests because we modify the checkDataflow function to rely on the newly introduced lattice element in PostVisitCFG, and existing tests that verify lattice elements depend on this overload of checkDataflow.
Reviewed By: gribozavr2, ymandel
Differential Revision: https://reviews.llvm.org/D139868
Matt Arsenault [Tue, 13 Dec 2022 13:12:36 +0000 (08:12 -0500)]
ConstantFolding: Ignore output denorm mode for canonicalize
Alive2 opt plugin is now happy with the test. Fixes issue 59245
Matt Arsenault [Fri, 18 Nov 2022 22:49:15 +0000 (14:49 -0800)]
ConstantFolding: Fix handling of canonicalize for ppc_fp128 0s
Nikita Popov [Tue, 13 Dec 2022 13:12:34 +0000 (14:12 +0100)]
[Assembler] Convert tests to opaque pointers (NFC)
Some tests are removed because the error conditions can no longer
occur with opaque pointers.
Roman Lebedev [Tue, 13 Dec 2022 13:13:34 +0000 (16:13 +0300)]
[NFC][CMake] Explicitly link to MC when needed
These targets use `MCInst`, but don't explicitly link
to the library providing it (MC), and just rely on it
being pulled transitively through e.g. MCDisassembler,
but that only pulls includes, and does not link to it.
Case in point, when i add explicit destructor to `MCInst`,
defined in `.cpp`, these targets were failing to link.
Matt Arsenault [Thu, 17 Nov 2022 05:26:29 +0000 (21:26 -0800)]
InstCombine: Fold negations of is_fpclass intrinsics
Can invert the result by inverting the test mask.
Matt Arsenault [Tue, 13 Dec 2022 13:01:48 +0000 (08:01 -0500)]
InstCombine: Regenerate checks
update_test_checks has changed what it emits for function labels,
so keep this noise out of a real output change.
Aliia Khasanova [Tue, 13 Dec 2022 12:35:24 +0000 (13:35 +0100)]
Remove sentinel argument from dispatchIndexOpFoldResults.
Post clean-up after merger of kDynamicSize and kDynamicStrideOrOffset.
Differential Revision: https://reviews.llvm.org/D139929
Guillaume Chatelet [Fri, 9 Dec 2022 14:30:40 +0000 (14:30 +0000)]
[libc] Add compiler, builtin and feature detection
This is a first step to support GCC. This patch adds support for builtin and feature detection.
Differential Revision: https://reviews.llvm.org/D139712
OCHyams [Mon, 12 Dec 2022 09:18:59 +0000 (09:18 +0000)]
Reapply [Assignment Tracking][13/*] Account for assignment tracking in SROA
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
Split dbg.assign intrinsics into fragments similarly to what SROA already does
for dbg.declares, except that there's many more intrinsics to split. The
function migrateDebugInfo generates new dbg.assigns intrinsic for each part of
a split store.
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D133296
Alexey Baturo [Tue, 13 Dec 2022 12:43:49 +0000 (15:43 +0300)]
re-land [RISC-V][HWASAN] Support tagging global variables for RISC-V HWASAN
Now with fix to limit added tagged-globals.ll to risc-v platform
--
[RISC-V][HWASAN] Support tagging global variables for RISC-V HWASAN
Reviewed by: luismarques
Differential Revision: https://reviews.llvm.org/D132995
Roman Lebedev [Tue, 13 Dec 2022 12:22:00 +0000 (15:22 +0300)]
[exegesis] Benchmark: provide optional progress meter / ETA
Now that `--opcode-index=-1` is mostly stable,
and i can migrate off of my custom tooling that emulated it,
there comes a bit of confusion as to the status of the run.
It is normal for the single all-opcode run to take ~3 minutes,
and it's a bit more than one can be comfortable with,
without having some sort of visual indication of the progress.
Thus, i present:
```
$ ./bin/llvm-exegesis -mode=inverse_throughput --opcode-index=-1 --benchmarks-file=/dev/null --dump-object-to-disk=0 --measurements-print-progress --skip-measurements
<...>
XAM_Fp80: unsupported opcode: pseudo instruction
XBEGIN: Unsupported opcode: isPseudo/usesCustomInserter
XBEGIN_2: Unsupported opcode: isBranch/isIndirectBranch
XBEGIN_4: Unsupported opcode: isBranch/isIndirectBranch
XCH_F: unsupported second-form X87 instruction
Processing... 1%, ETA 02:10
Processing... 2%, ETA 02:03
Processing... 3%, ETA 02:00
Processing... 4%, ETA 01:57
Processing... 5%, ETA 01:54
Processing... 6%, ETA 01:53
Processing... 7%, ETA 01:51
Processing... 8%, ETA 01:50
Processing... 9%, ETA 01:49
Processing... 10%, ETA 01:48
Processing... 11%, ETA 01:46
Processing... 12%, ETA 01:45
Processing... 13%, ETA 01:44
Processing... 14%, ETA 01:43
Processing... 15%, ETA 01:42
Processing... 16%, ETA 01:42
Processing... 17%, ETA 01:41
```
As usual, the ETA estimation is statically-insignificant,
and is a lie/does not converge at least until 50% through.
It would be nice to have an actual progress indicator like in LIT,
but i'm not sure we have such a luxury in C++ form in LLVM codebase already.
Reviewed By: courbet
Differential Revision: https://reviews.llvm.org/D139797
Guillaume Chatelet [Tue, 13 Dec 2022 10:31:00 +0000 (10:31 +0000)]
[rereland][Alignment][NFC] Remove access to deprecated GlobalObject::getAlignment from llvm
Differential Revision: https://reviews.llvm.org/D139836
Alexey Baturo [Tue, 13 Dec 2022 12:17:27 +0000 (15:17 +0300)]
Revert "[RISC-V][HWASAN] Support tagging global variables for RISC-V HWASAN"
This reverts commit
11937ca5642216a67e021e69fc824f709267bada.
gonglingqin [Tue, 13 Dec 2022 11:44:06 +0000 (19:44 +0800)]
[OpenMP] Skip extra blank line when parsing /proc/cpuinfo on LoongArch64
This fixes the following test cases:
* affinity/kmp-affinity.c
* affinity/kmp-hw-subset.c
* affinity/omp-places.c
Differential Revision: https://reviews.llvm.org/D139802
Nikita Popov [Tue, 13 Dec 2022 12:06:09 +0000 (13:06 +0100)]
[Tests] Convert Other tests to opaque pointers (NFC)
Nikita Popov [Tue, 13 Dec 2022 11:36:48 +0000 (12:36 +0100)]
[Bitcode] Convert test to opaque pointers (NFC)
Alexey Baturo [Tue, 30 Aug 2022 18:05:24 +0000 (21:05 +0300)]
[RISC-V][HWASAN] Support tagging global variables for RISC-V HWASAN
Reviewed by: luismarques
Differential Revision: https://reviews.llvm.org/D132995
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:48:36 +0000 (14:48 +0300)]
[AMDGPU][GFX1030][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
- Enable abs and neg modifiers for v_cndmask_b32_dpp (https://reviews.llvm.org/D135900).
- Enable literal operands for permlane16/permlanex16 (https://reviews.llvm.org/D137332).
- Enable omod modifiers for v_max3_f16, v_min3_f16, etc. (https://reviews.llvm.org/D139469).
- Correct v_mov_b32_sdwa (it does not support abs and neg input modifiers yet).
- Enable tfe modifier for MUBUF loads (https://reviews.llvm.org/D137783).
- Enable image_gather4h (https://reviews.llvm.org/D130764).
- Minor corrections and improvements.
Nikita Popov [Tue, 13 Dec 2022 11:46:09 +0000 (12:46 +0100)]
[AsmWriter] Fix printing of atomicrmw xchg with pointer op
atomicrmw always needs to print all types, even if the xchg value
type happens to be the same as the pointer operand type. This
couldn't occur prior to opaque pointers.
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:44:02 +0000 (14:44 +0300)]
[AMDGPU][GFX1013][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:36:43 +0000 (14:36 +0300)]
[AMDGPU][GFX10][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
- Enable abs and neg modifiers for v_cndmask_b32_dpp (https://reviews.llvm.org/D135900).
- Enable literal operands for permlane16/permlanex16 (https://reviews.llvm.org/D137332).
- Enable omod modifiers for v_max3_f16, v_min3_f16, etc. (https://reviews.llvm.org/D139469).
- Correct v_mov_b32_sdwa (it does not support abs and neg input modifiers yet).
- Enable tfe modifier for MUBUF loads (https://reviews.llvm.org/D137783).
- Enable image_gather4h (https://reviews.llvm.org/D130764).
- Minor corrections and improvements.
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:26:34 +0000 (14:26 +0300)]
[AMDGPU][GFX940][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable VOP3 variants of dot2c/dot4c/dot8c instructions (https://reviews.llvm.org/D138494).
- Enable abs and neg modifiers for v_cndmask_b32 (https://reviews.llvm.org/D135900).
- Enable omod modifiers for v_max3_f16, v_min3_f16, etc. (https://reviews.llvm.org/D139469).
- Correct v_mov_b32_sdwa (it does not support abs and neg input modifiers yet).
- Enable abs and neg modifiers for v_dot2c_f32_f16_dpp.
- Minor corrections and improvements.
Nikita Popov [Tue, 13 Dec 2022 11:19:35 +0000 (12:19 +0100)]
[Bitcode] Convert test to opaque pointers (NFC)
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:18:20 +0000 (14:18 +0300)]
[AMDGPU][GFX90A][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
- Enable VOP3 variants of dot2c/dot4c/dot8c instructions (https://reviews.llvm.org/D138494).
- Enable omod modifiers for v_max3_f16, v_min3_f16, etc. (https://reviews.llvm.org/D139469).
- Enable abs and neg modifiers for v_cndmask_b32 (https://reviews.llvm.org/D135900).
- Correct v_mov_b32_sdwa (it does not support abs and neg input modifiers yet).
- Enable abs and neg modifiers for v_dot2c_f32_f16_dpp.
- Minor corrections and improvements.
Haojian Wu [Tue, 13 Dec 2022 11:15:39 +0000 (12:15 +0100)]
[clangd] Fix a semantic highlighting crash on dependent code.
Daniel Grumberg [Wed, 26 Oct 2022 17:23:37 +0000 (18:23 +0100)]
[clang][ExtractAPI] Add support for single symbol SGF and libclang support
This is mainly adding an entry point to `SymbolGraphSerializer` at
`serializeSingleSymbolSGF` and exposing the necessary data to make this
possible. Additionaly there are some changes to how symbol kinds and
path components are serialized to make the usage more ergonomic in
`serializeSingleSymbolSGF`.
On the libclang side this introduces APIs to:
- create an APISet from a TU
- dispose of an APISet
- query an APISet for a single symbol SGF for a given USR.
- generate a single symbol SGF for a given CXCursor, this only traverses
the necessary AST nodes to construct the result as oppposed as going
through the entire AST.
Differential Revision: https://reviews.llvm.org/D139115
Nikita Popov [Tue, 13 Dec 2022 11:15:55 +0000 (12:15 +0100)]
[Bitcode] Update test to use opaque pointers (NFC)
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:12:09 +0000 (14:12 +0300)]
[AMDGPU][GFX908][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable VOP3 variants of dot2c/dot4c/dot8c instructions (https://reviews.llvm.org/D138494).
- Enable abs and neg modifiers for v_dot2c_f32_f16_dpp.
- Minor corrections and improvements.
Dmitry Preobrazhensky [Tue, 13 Dec 2022 11:01:17 +0000 (14:01 +0300)]
[AMDGPU][GFX9][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
- Enable omod modifiers for v_max3_f16, v_min3_f16, etc. (https://reviews.llvm.org/D139469).
- Enable abs and neg modifiers for v_cndmask_b32 (https://reviews.llvm.org/D135900).
- Correct v_mov_b32_sdwa (it does not support abs and neg input modifiers yet).
- Enable tfe modifier for MUBUF loads (https://reviews.llvm.org/D137783).
- Enable image_gather4h (https://reviews.llvm.org/D130764).
- Minor corrections and improvements.
Dmitry Preobrazhensky [Tue, 13 Dec 2022 10:54:28 +0000 (13:54 +0300)]
[AMDGPU][GFX8][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
- Enable abs and neg modifiers for v_cndmask_b32 (https://reviews.llvm.org/D135900).
- Correct v_mov_b32_sdwa (it does not support abs and neg input modifiers yet).
- Enable tfe modifier for MUBUF loads (https://reviews.llvm.org/D137783).
- Minor corrections and improvements.
Dmitry Preobrazhensky [Tue, 13 Dec 2022 10:46:56 +0000 (13:46 +0300)]
[AMDGPU][GFX7][DOC][NFC] Update assembler syntax description
Summary of changes:
- Enable register tuples with 9, 10, 11 and 12 registers (https://reviews.llvm.org/D138205).
- Enable tfe modifier for MUBUF loads (https://reviews.llvm.org/D137783).
- Enable abs and neg modifiers for v_cndmask_b32_e64.
- Minor corrections and improvements.
Nikita Popov [Tue, 13 Dec 2022 10:48:14 +0000 (11:48 +0100)]
[Clang] Update some CUDA tests to opaque pointers (NFC)
Denis Antrushin [Mon, 28 Nov 2022 18:58:47 +0000 (01:58 +0700)]
[RS4GC] Add few tests for derived pointer rematerialization. NFC.
Precommit few tests for the upcoming 'rematerialize derived pointers
at uses' feature.
Reviewed By: skatkov
Differential Revision: https://reviews.llvm.org/D138911
Joshua Cao [Sat, 19 Nov 2022 18:25:30 +0000 (13:25 -0500)]
[CVP] Eliminate urem when LHS < RHS
Fol `X % Y -> X` when we can determine `X < Y` based on constant
range information.
Fixes https://github.com/llvm/llvm-project/issues/58408.
Differential Revision: https://reviews.llvm.org/D138360
Daniel Woodworth [Tue, 13 Dec 2022 10:35:17 +0000 (11:35 +0100)]
[IRBuilder] Fix CreateFDivFMF ignoring source FMF
This change fixes a small bug in IRBuilderBase::CreateFDivFMF introduced
by accident in rGf34dcf27637f which caused the builder's default fast math
flags to be used for the new fdiv instruction instead of the ones from
the source instruction. It also adds unit testing for the CreateF*FMF
family of functions to more easily catch similar bugs in the future.
Differential Revision: https://reviews.llvm.org/D139583
Nikita Popov [Tue, 13 Dec 2022 10:28:20 +0000 (11:28 +0100)]
[InstCombine] Support logical ops in foldAndOrOfICmpsWithConstEq() (NFC)
This is largely just for the sake of completeness. For logical ops,
this is mostly subsumed by foldSelectValueEquivalence() in a more
generic way. The only exception is vector support, as select
value equivalence folding currently doesn't support this for the
case where the replacement does not simplify.
Fangrui Song [Tue, 13 Dec 2022 10:14:09 +0000 (10:14 +0000)]
[DWARFLinker] llvm::Optional => std::optional
Fangrui Song [Tue, 13 Dec 2022 10:06:57 +0000 (10:06 +0000)]
[WindowsDriver] llvm::Optional => std::optional
Fangrui Song [Tue, 13 Dec 2022 10:04:35 +0000 (10:04 +0000)]
LLParser: llvm::Optional => std::optional
Rainer Orth [Tue, 13 Dec 2022 09:58:58 +0000 (10:58 +0100)]
Reland "[compiler-rt][test] Heed COMPILER_RT_DEBUG when compiling unittests"
When trying to debug some `compiler-rt` unittests, I initially had a hard
time because
- even in a `Debug` build one needs to set `COMPILER_RT_DEBUG` to get
debugging info for some of the code and
- even so the unittests used a hardcoded `-O2` which often makes debugging
impossible.
This patch addresses this by instead using `-O0` if `COMPILER_RT_DEBUG`.
Changes relative to the previous commit:
- Use `string(APPEND)` for `COMPILER_RT_TEST_COMPILER_CFLAGS`.
- Omit `-O3` from `COMPILER_RT_TEST_COMPILER_CFLAGS` in non-debug builds for now.
- Provide `__sanitizer::integral_constant<bool, true>::value` instantiation
for `sanitizer_type_traits_test.cpp` in debug builds.
- Disable subtests of `tsan/tests/unit/tsan_trace_test.cpp` that deadlock
in debug builds.
- `XFAIL` `tsan/Linux/check_memcpy.c` in debug builds.
Tested on `sparcv9-sun-solaris2.11`, `amd64-pc-solaris2.11`, and
`x86_64-pc-linux-gnu`.
Differential Revision: https://reviews.llvm.org/D91620
Nikita Popov [Tue, 13 Dec 2022 09:56:00 +0000 (10:56 +0100)]
[InstCombine] Add additional foldAndOrOfICmpsWithConstEq() tests (NFC)
Add logical variants of vector tests.
Krasimir Georgiev [Tue, 13 Dec 2022 09:54:26 +0000 (09:54 +0000)]
Revert "[Assignment Tracking][13/*] Account for assignment tracking in SROA"
This reverts commit
3bfba672afd52dfd5bde54dc8b67ec96275f9e15.
Temporary revert since this potentially causes
https://github.com/llvm/llvm-project/issues/59490.
Mehdi Amini [Tue, 13 Dec 2022 09:41:13 +0000 (09:41 +0000)]
[mlir][scf] Fixes IndexSwitchOp verifier crash
Fixes #59460
Martin Storsjö [Tue, 13 Dec 2022 09:36:12 +0000 (11:36 +0200)]
Revert "[AArch64][GlobalISel] Lower formal arguments of AAPCS & ms_abi variadic functions."
This reverts commit
56fd846f370adf16bea333b12637038ea2f3c225.
This commit regressed handling of functions with floats as arguments,
reproducible e.g. like this:
$ cat test.c
double func(double f) {
return f;
}
$ clang -target aarch64-windows -S -o - test.c -fno-asynchronous-unwind-tables
func:
sub sp, sp, #16
str x0, [sp, #8]
ldr d0, [sp, #8]
add sp, sp, #16
ret
Nikita Popov [Tue, 13 Dec 2022 09:02:46 +0000 (10:02 +0100)]
[InstCombine] Support logical ops in foldAndOrOfICmpEqZeroAndICmp()
If the and/or is logical and one of the operands only occurs on the
RHS, we need to freeze it: https://alive2.llvm.org/ce/z/vuMuE_
Denis Antrushin [Wed, 23 Nov 2022 15:31:41 +0000 (22:31 +0700)]
[RS4GC] Turn lambda into static function. NFC.
Extract `rematerializeChain()` lambda into static function.
We'll need it in upcoming patch to RS4GC pass.
There is small interface change: now reversal of `ChainToBase` is
performed within this function, not outside.
Still this is non-functional change.
Reviewed By: skatkov
Differential Revision: https://reviews.llvm.org/D138910
Nikita Popov [Tue, 13 Dec 2022 09:07:54 +0000 (10:07 +0100)]
[InstCombine] Add additional tests for foldAndOrOfICmpEqZeroAndICmp (NFC)
Adds logical variants of the commuted tests.