Augusto Noronha [Mon, 24 Oct 2022 19:11:56 +0000 (12:11 -0700)]
[lldb] Skip TestFullLtoStepping in older clangs
Aaron Ballman [Mon, 24 Oct 2022 19:09:36 +0000 (15:09 -0400)]
Update the status of more C99 DRs
This adds test coverage and updates the related entries for five more
C99 DRs.
Aaron Ballman [Mon, 24 Oct 2022 19:01:46 +0000 (15:01 -0400)]
Correct a typo in the release notes; NFC
I intended to fix this when landing the changes, but forgot to add the
file to the commit.
Alex Brachet [Mon, 24 Oct 2022 19:05:10 +0000 (19:05 +0000)]
[PGO] Make emitted symbols hidden
This was reverted because it was breaking when targeting Darwin which
tried to export these symbols which are now hidden. It should be safe
to just stop attempting to export these symbols in the clang driver,
though Apple folks will need to change their TAPI allow list described
in the commit where these symbols were originally exported
https://github.com/llvm/llvm-project/commit/
f5380185623be243ba0f1b18d4bd594ac5cc7163
Bug: https://github.com/llvm/llvm-project/issues/58265
Differential Revision: https://reviews.llvm.org/D135340
Peiming Liu [Mon, 24 Oct 2022 18:41:19 +0000 (18:41 +0000)]
[mlir][sparse] add some APIs for merger to query the tensor id for output tensor and synthetic tensor.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D136630
Erich Keane [Mon, 24 Oct 2022 18:16:28 +0000 (11:16 -0700)]
Reapply "GH58368: Correct concept checking in a lambda defined in concept""
This reverts commit
52930162870fee52d0d9c07c5d66e5dce32b08e8.
Now with updating the ASTBitcodes to show that this AST is incompatible
from the last.
Valentin Clement [Mon, 24 Oct 2022 18:42:31 +0000 (20:42 +0200)]
[flang] Carry dynamic type in fir.rebox code generation
Load the pointer of the dynamic type descriptor from the
original box and update the destination descriptor with this pointer.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D136618
Zhiyao Ma [Mon, 24 Oct 2022 18:01:10 +0000 (11:01 -0700)]
[ARM] Support -mexecute-only with -mlong-calls.
Instead of using constant pools, use movw movt pair.
Differential Revision: https://reviews.llvm.org/D136203
rkayaith [Sun, 23 Oct 2022 19:35:18 +0000 (15:35 -0400)]
[mlir][Translation] Make commandline option registration optional
This moves the commandline option registration into its own function, so
that users can register translations without registering the options.
Reviewed By: cota
Differential Revision: https://reviews.llvm.org/D136561
David Green [Mon, 24 Oct 2022 18:38:19 +0000 (19:38 +0100)]
[ARM] Add a test demonstrating reductions with reused extend. NFC
D136227 showed that tests for this case in getReductionPatternCost were
missing.
Michael Jones [Fri, 21 Oct 2022 20:57:01 +0000 (13:57 -0700)]
[libc] add performance options for string to float
This allows the client to set compile flags to disable the passes that
the string to float function uses. A client may be willing to trade off
performance for a reduction in code size, and this allows for that
fine-tuning.
Reviewed By: sivachandra
Differential Revision: https://reviews.llvm.org/D136495
Michał Górny [Mon, 24 Oct 2022 11:08:00 +0000 (13:08 +0200)]
[mlir] Fix INSTALL_INTERFACE path for MLIRSparseTensorEnums
Fix INSTALL_INTERFACE path for exported MLIRSparseTensorEnums target
to include the include directory. Otherwise, CMake attempts to find it
relatively to CMAKE_INSTALL_PREFIX rather than the include directory,
resulting in flang failing to configure with the following error:
CMake Error at /usr/lib/llvm/16/lib64/cmake/llvm/AddLLVM.cmake:581 (add_library):
Cannot find source file:
/usr/lib/llvm/16/mlir/Dialect/SparseTensor/IR/Enums.h
Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h
.hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc
Call Stack (most recent call first):
cmake/modules/AddFlang.cmake:64 (llvm_add_library)
lib/Lower/CMakeLists.txt:3 (add_flang_library)
Differential Revision: https://reviews.llvm.org/D136590
Carlos Alberto Enciso [Mon, 24 Oct 2022 11:28:52 +0000 (12:28 +0100)]
[llvm-debuginfo-analyzer] (07/09) - Compare elements
The test case 'CompareElements' caused a failure in:
https://lab.llvm.org/buildbot#builders/5/builds/28502
https://lab.llvm.org/buildbot#builders/168/builds/9671
SUMMARY: AddressSanitizer: 2144 byte(s) leaked in 14 allocation(s).
The 'Insert' function conditionally adds the 'Child' logical
element to a logical scope. The not added logical elements,
caused the memory leak. Just record them to be destroyed
when the logical reader is destroyed.
Changed 'EXPECT_NE' with 'ASSERT_NE'.
Missing in the main review.
Jonas Devlieghere [Mon, 24 Oct 2022 18:13:51 +0000 (11:13 -0700)]
[lldb] Fix stale diagnostic event comments (NFC)
The diagnostic events were heavily inspired by the progress events and
several comments incorrectly referenced "progress" rather than
"diagnostic" events.
Mahesh Ravishankar [Mon, 24 Oct 2022 17:31:06 +0000 (17:31 +0000)]
[mlir][Tensor] Add a helper build method for pad operations with constant padding.
Drop the `createPadScalarOp` from Utils.h since it is a duplicate of
the `build` method added here.
Differential Revision: https://reviews.llvm.org/D136493
Fangrui Song [Mon, 24 Oct 2022 17:54:09 +0000 (10:54 -0700)]
[ELF] Add --no-warnings/-w
Mach-O ld64 supports -w to suppress warnings. GNU ld 2.40 will support the
option as well (https://sourceware.org/bugzilla/show_bug.cgi?id=29654).
This feature has some small value. E.g. when analyzing a large executable with
relocation overflow issues, we may use --noinhibit-exec --emit-relocs to get an
output file with static relocations despite relocation overflow issues. -w can
significantly improve the link time as printing the massive warnings is slow.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D136569
Guozhi Wei [Mon, 24 Oct 2022 17:46:46 +0000 (17:46 +0000)]
[X86] New test case for reassociation of ADD instructions.
This is a pre-commit test case for D136396.
Differential Revision: https://reviews.llvm.org/D136501
zhijian [Mon, 24 Oct 2022 17:31:01 +0000 (13:31 -0400)]
[XCOFF] llvm-readobj support decoding the loader section header field for XCOFF object file.
Reviewers: James Henderson, Esme Yi
Differential Revision: https://reviews.llvm.org/D134883
Roman Lebedev [Mon, 24 Oct 2022 17:11:19 +0000 (20:11 +0300)]
[X86] `DAGTypeLegalizer::ModifyToType()`: when widening w/ zeros, insert into undef and `and`-mask the padding away
We can expect that the sequence of inserting-of-extracts-into-undef
will be successfully lowered back into widening of the source vector,
but it seems that at least for X86 mask vectors, we have a really hard time
recovering from inserting-into-zero.
I've looked into alternative fix injection points, and they are much more
involved, by the time of `LowerBUILD_VECTORvXi1()`/`LowerINSERT_VECTOR_ELT()`
the constants might be obscured, so it does not seem like we can easily
deal with this by lowering into bit math later on,
some other pieces are missing.
Instead, it seems like just clearing the padding away via an `AND`-mask
is at least not a worse choice. Why create a problem where there wasn't one.
Though yes, it is possible that there are cases where constants originate
from the source IR, so some other fix may still be needed.
Reviewed By: pengfei
Differential Revision: https://reviews.llvm.org/D136046
Erich Keane [Mon, 24 Oct 2022 17:15:41 +0000 (10:15 -0700)]
Revert "GH58368: Correct concept checking in a lambda defined in concept"
This reverts commit
b7c922607c5ba93db8b893d4ba461052af8317b5.
This seems to cause some problems with some modules related things,
which makes me think I should have updated the version-major in
ast-bit-codes? Going to revert to confirm this was a problem, then
change that and re-try a commit.
Alexey Bataev [Thu, 20 Oct 2022 19:54:32 +0000 (12:54 -0700)]
[SLP][NFC]Fix PR58476: Fix compile time for reductions, NFC.
Improve O(N^2) to O(N) in some cases, reduce number of allocations by
reserving memory.
Also, improve analysis of loads reduction values to avoid analysis
of not vectorizable cases.
Paul Robinson [Mon, 24 Oct 2022 16:50:02 +0000 (09:50 -0700)]
[lit][REQUIRES] Fix REQUIRES on an NVPTX test so it will run
Differential Revision: https://reviews.llvm.org/D136619
zhongyunde [Mon, 24 Oct 2022 17:04:59 +0000 (01:04 +0800)]
[InstCombine] Fold series of instructions into mull
The following sequence should be folded into in0 * in1
In0Lo = in0 & 0xffffffff; In0Hi = in0 >> 32;
In1Lo = in1 & 0xffffffff; In1Hi = in1 >> 32;
m01 = In1Hi * In0Lo; m10 = In1Lo * In0Hi; m00 = In1Lo * In0Lo;
addc = m01 + m10;
ResLo = m00 + (addc >> 32);
Reviewed By: spatel, RKSimon
Differential Revision: https://reviews.llvm.org/D136015
Craig Topper [Mon, 24 Oct 2022 14:16:24 +0000 (07:16 -0700)]
Recommit "[TargetLowering][RISCV][X86] Support even divisors in expandDIVREMByConstant."
This reverts commit
65aaecca8842dec30d03734a7fe8ce33c5afec81.
There was an ordering problem in the calculation of the partial
remainder.
Original commit message:
If the divisor is even, we can first shift the dividend and divisor
right by the number of trailing zeros. Now the divisor is odd and we
can do the original algorithm to calculate a remainder. Then we shift
that remainder left by the number of trailing zeros and add the bits
that were shifted out of the dividend.
Differential Revision: https://reviews.llvm.org/D135541
Simon Pilgrim [Mon, 24 Oct 2022 16:54:53 +0000 (17:54 +0100)]
Fix MSVC "not all control paths return a value" warning. NFC.
Simon Pilgrim [Mon, 24 Oct 2022 16:47:52 +0000 (17:47 +0100)]
[X86] 2012-01-12-extract-sv.ll - add AVX2 test coverage
Peiming Liu [Fri, 21 Oct 2022 23:21:53 +0000 (23:21 +0000)]
[mlir][sparse] fix bufferizableOpInterface for InsertOp
Address comments in D136372
Reviewed By: aartbik, springerm
Differential Revision: https://reviews.llvm.org/D136510
Felipe de Azevedo Piovezan [Mon, 24 Oct 2022 14:27:46 +0000 (10:27 -0400)]
[lldb-tests] Force use of system stdlib for Objective-C test
The test TestObjCDirectMethods loads the Objective C runtime, which
doesn't work well with custom a libcxx, resulting in two copies of the
standard library being loaded at runtime.
Like what was done for `TestObjCExceptions`, this commit forces the
usage of the system's library instead. The minimum required Clang
version is set to the oldest Clang that can compile the libraries
available in the lldb-matrix bots.
Differential Revision: https://reviews.llvm.org/D136600
Felipe de Azevedo Piovezan [Mon, 24 Oct 2022 15:02:26 +0000 (15:02 +0000)]
[lldb-tests] Remove libstdc++ requirement from test
This requirement dates back to ten years ago and the test seems to work
nowadays with either libc++ or libstdc++.
Differential Revision: https://reviews.llvm.org/D136608
Michał Górny [Mon, 24 Oct 2022 14:45:23 +0000 (16:45 +0200)]
[flang] Fix building against LLVM dylib
Differential Revision: https://reviews.llvm.org/D136607
Corentin Jabot [Fri, 21 Oct 2022 12:33:26 +0000 (14:33 +0200)]
[Clang] Implement P2513
Implement P2513
This change allows initializing an array of unsigned char,
or char from u8 string literals.
This was done both to support legacy code and for compatibility
with C where char8_t will be typedef to unsigned char.
This is backported to C++20 as per WG21 guidance.
Reviewed By: aaron.ballman
Differential Revision: https://reviews.llvm.org/D136449
Kevin P. Neal [Mon, 24 Oct 2022 15:33:05 +0000 (11:33 -0400)]
[StrictFP][IPSCCP] Constant fold intrinsics with metadata arguments
This teaches the SCCP Solver how to constant fold more intrinsics. Constant
folding appears to be just as good as D115737 but much, much lower in code
change impact as suggested by nikic.
The constrained floating-point intrinsics all take at least one metadata
argument and were the motivation for the change.
Differential Revision: https://reviews.llvm.org/D136466
Ahmed Bougacha [Mon, 24 Oct 2022 15:12:24 +0000 (08:12 -0700)]
[AArch64][PAC] Select XPAC for ptrauth.strip intrinsic.
Differential Revision: https://reviews.llvm.org/D132385
Ahmed Bougacha [Mon, 24 Oct 2022 15:08:33 +0000 (08:08 -0700)]
[AArch64][PAC] Add helper enum/functions to handle PAC keys/ops.
Kadir Cetinkaya [Wed, 19 Oct 2022 21:16:38 +0000 (23:16 +0200)]
[IncludeCleaner] Add public API
Introduces walkUsed, a very simple version of the public API to enable
incremental development on rest of the pieces.
Differential Revision: https://reviews.llvm.org/D136293
Ahmed Bougacha [Mon, 24 Oct 2022 15:02:11 +0000 (08:02 -0700)]
[InstCombine] Combine ptrauth sign/resign + auth/resign intrinsics.
(sign|resign) + (auth|resign) can be folded by omitting the middle
sign+auth component if the key and discriminator match.
Differential Revision: https://reviews.llvm.org/D132383
Amy Kwan [Sat, 22 Oct 2022 22:33:14 +0000 (17:33 -0500)]
[PowerPC] Fix invalid cast for vector shuffles when lowering to the xxsplti32dx instruction.
When lowering vector shuffles into the xxsplti32dx instruction on Power10, we
canonicalize the right operand to be a BUILD_VECTOR and as a result, get the
commuted vector shuffle node.
However, a vector shuffle will not always be returned as the result for a
commuted vector shuffle. In such a scenario, this patch updates the original
cast of a shuffle into a dyn_cast<> and checks if the shuffle is a valid vector
shuffle node prior to obtaining the commuted shuffle mask.
This patch also adds a new test case that demonstrates this scenario (primarily
seen on 32-bit), and was originally a crash prior to this fix.
Differential Revision: https://reviews.llvm.org/D135024
Craig Topper [Mon, 24 Oct 2022 14:05:21 +0000 (07:05 -0700)]
Revert "[TargetLowering][RISCV][X86] Support even divisors in expandDIVREMByConstant."
This reverts commit
f6a7b47820904c5e69cc4f133d382c74a87c44e8.
I received a report that this fails on 32-bit X86.
Dmitry Preobrazhensky [Mon, 24 Oct 2022 10:30:25 +0000 (13:30 +0300)]
[AMDGPU][MC] Correct definition of aliases
Differential Revision: https://reviews.llvm.org/D136370
Michał Górny [Sun, 23 Oct 2022 12:47:50 +0000 (14:47 +0200)]
[lldb] Include gtest in standalone build only if LLDB_INCLUDE_TESTS
Build gtest targets when building standalone only if LLDB_INCLUDE_TESTS
is true. Prior to this change, they were built whenever
LLVM_MAIN_SRC_DIR was available, independently whether tests themselves
would be run.
Differential Revision: https://reviews.llvm.org/D136551
Simon Pilgrim [Mon, 24 Oct 2022 13:42:40 +0000 (14:42 +0100)]
[X86] Treat PSLLDQ/PSRLDQ as a shuffle not a shift
This appears to be a copy+paste typo in the znver1/2 AMD SoG tables, treating the byte shift instructions like bit shifts
Older AMD SoG referred to PSLLDQ/PSRLDQ as shuffles, and Agner/instlatx64 both report they are integer shuffles
Jean Perier [Mon, 24 Oct 2022 13:35:19 +0000 (15:35 +0200)]
[flang] Add kernel to lower expressions to HLFIR
This patch adds the kernel to lower evaluate::Expr to HLFIR to a
hlfir::FortranEntity (a single mlir::Value that can be interpreted as
a Fortran variable or the value of a Fortram expression).
It implements lowering of simple name designators ("x") and starts
adding a translation layer in AbstractConverter::genExprBox and
AbstractConverter::genExprAddr so that the new expression lowering
can be used without any changes for now in the current statement and
construct lowering.
Differential Revision: https://reviews.llvm.org/D136453
Erich Keane [Thu, 20 Oct 2022 18:55:01 +0000 (11:55 -0700)]
GH58368: Correct concept checking in a lambda defined in concept
As that bug reports, the problem here is that the lambda's
'context-decl' was not set to the concept, and the lambda picked up
template arguments from the concept. SO, we failed to get the correct
template arguments in SemaTemplateInstantiate.
However, a Concept Specialization is NOT a decl, its an expression, so
we weren't able to put the concept in the decl tree like we needed.
This patch introduces a ConceptSpecializationDecl, which is the smallest
type possible to use for this purpose, containing only the template
arguments.
The net memory impliciation of this is turning a
trailing-objects into a pointer to a type with trailing-objects, so it
should be minor.
As future work, we may consider giving this type more responsibility, or
figuring out how to better merge duplicates, but as this is just a
template-argument collection at the moment, there isn't much value to
it.
Differential Revision: https://reviews.llvm.org/D136451
Adrian Kuegel [Mon, 24 Oct 2022 13:24:42 +0000 (15:24 +0200)]
[mlir] Apply ClangTidy performance fix (NFC)
Sanjay Patel [Mon, 24 Oct 2022 13:13:28 +0000 (09:13 -0400)]
[InstCombine] vary commuted patterns for mul fold; NFC
Try to get better coverage for the pattern-matching
possibilities in D136015.
Sanjay Patel [Mon, 24 Oct 2022 12:54:43 +0000 (08:54 -0400)]
[InstCombine] adjust mul tests to avoid reliance on other folds; NFC
This gets the tests closer to the form that we are
trying to test in D136015. Note that the IR has
changed, but the check lines have not changed.
This also shows that the desired commuted pattern
coverage is not as expected.
Arthur Grillo [Mon, 24 Oct 2022 12:38:21 +0000 (08:38 -0400)]
Fix caret position to be on the non null parameter
When checking for non null arguments the wrong SourceLocation was given,
this fix to pass the proper argument's location.
Fixes #58273
Differential Revision: https://reviews.llvm.org/D136355
Matthias Springer [Mon, 24 Oct 2022 12:19:31 +0000 (14:19 +0200)]
[mlir][scf][bufferize] Fix bufferizesToMemoryRead with 0 loop iterations
There was a bug in scf.for loop bufferization that could lead to a missing buffer copy (alloc was there, but not the copy).
Differential Revision: https://reviews.llvm.org/D135053
Sjoerd Meijer [Mon, 24 Oct 2022 12:00:34 +0000 (17:30 +0530)]
[Clang][AArch64] Add support for -mcpu=grace
This adds Clang command line support for the NVIDIA Grace CPU [1], which
we would like to target with -mcpu=grace.
Grace is based on the Arm Neoverse V2 CPU [1], which is why, in the
driver, we pass neoverse-v2 to the compiler when grace is requested.
Thus, for now, it's an alias to Neoverse V2.
This adds support for grace in user-facing tool Clang, but not yet the
developer tools like opt and llc, so we probably want to follow up on
this.
[1] https://www.nvidia.com/en-us/data-center/grace-cpu/
Differential Revision: https://reviews.llvm.org/D136425
Petar Avramovic [Mon, 24 Oct 2022 10:54:41 +0000 (12:54 +0200)]
GlobalISel: Artifact combine merge-like and unmerges into merge-like
Recognize when sub-vectors have been split to elements which are used to
build large vector.
This happens when instructions have different vector sizes available.
For example a few arithmetic instruction are required to process all
elements of larger vector that can be stored using one instruction.
Differential Revision: https://reviews.llvm.org/D109242
Petar Avramovic [Mon, 24 Oct 2022 10:52:39 +0000 (12:52 +0200)]
GlobalISel: Artifact combine merge-like and unmerge into unmerge
Recognize when source could have been unmerged to pieces with DstTy
without having to split source to smaller elements
and then merge small elements into DstTy pieces.
This happens when vector was meant to be split to sub-vectors but there
was leftover. At this point artifact combiner have already dealt with
leftover and we can continue to use sub-vectors.
Differential Revision: https://reviews.llvm.org/D109241
Petar Avramovic [Mon, 24 Oct 2022 10:51:10 +0000 (12:51 +0200)]
GlobalISel: Artifact combine merge-like and unmerge into copy
Recognize copy that is represented as split of a source register to
elements that were reassembled to another register with the same type.
Differential Revision: https://reviews.llvm.org/D109240
Petar Avramovic [Mon, 24 Oct 2022 10:49:05 +0000 (12:49 +0200)]
GlobalISel: Precommit for artifact combine patches
Differential Revision: https://reviews.llvm.org/D117655
Nico Weber [Mon, 24 Oct 2022 11:32:13 +0000 (07:32 -0400)]
[gn build] port
97bd44f436ea
Benjamin Maxwell [Mon, 24 Oct 2022 09:41:19 +0000 (09:41 +0000)]
Add nocapture to pointer parameters of masked stores/loads
The lack of this attribute (particularly on the load intrinsics)
prevented InstCombine from optimizing away allocas and memcpys
for arrays that could be read directly from rodata.
This now also includes a new test to check the masked load/store
intrinsics have the expected attributes (specifically nocapture).
Differential Revision: https://reviews.llvm.org/D135656
Guillaume Chatelet [Mon, 24 Oct 2022 10:39:33 +0000 (10:39 +0000)]
[llvm-exegesis] Fix missing dependency in BUILD.bazel
This was broken by https://reviews.llvm.org/D136351
Guillaume Chatelet [Mon, 24 Oct 2022 10:33:58 +0000 (10:33 +0000)]
[libc] Fix BUILD.bazel missing dependency
Guillaume Chatelet [Mon, 24 Oct 2022 10:27:53 +0000 (10:27 +0000)]
[libc] Use cpp::byte instead of char in mem* functions
`cpp::byte` is better than `char` which -depending on platform- can be `signed char` or `unsigned char`. This has introduced subtle arithmetic errors.
David Green [Mon, 24 Oct 2022 10:22:06 +0000 (11:22 +0100)]
[AArch64] Alter v8.5a FRINT neon intrinsics to be target-based, not preprocessor based
This switches the v8.5-a FRINT intrinsics over to be target-gated,
behind preprocessor defines. This one is pretty simple, being AArch64
only.
Differential Revision: https://reviews.llvm.org/D135646
Michał Górny [Sun, 23 Oct 2022 12:52:22 +0000 (14:52 +0200)]
[lldb] Add LLVM include dirs prior to gtest target in standalone build
Move include_directories() declaration before gtest targets are created
in standalone build. This fixes build failure due to gtest targets
being unable to find LLVM headers, e.g.:
/var/tmp/portage/dev-util/lldb-16.0.0_pre20221023/work/llvm/utils/unittest/googletest/include/gtest/internal/custom/raw-ostream.h:43:10: fatal error: llvm/ADT/Optional.h: No such file or directory
Differential Revision: https://reviews.llvm.org/D136552
David Spickett [Mon, 24 Oct 2022 08:54:33 +0000 (08:54 +0000)]
[LLDB] Check that RegisterInfo and ContextInfo are trivial
RegisterInfo is often initialised with a memcpy, and ContextInfo
does not run destructors for anything within it.
This was discussed in https://reviews.llvm.org/D134041.
Reviewed By: labath
Differential Revision: https://reviews.llvm.org/D136584
Guillaume Chatelet [Mon, 24 Oct 2022 10:15:28 +0000 (10:15 +0000)]
[libc] Fix generic 32-bit implementation of Bcmp/Memcmp
Guillaume Chatelet [Mon, 24 Oct 2022 09:54:19 +0000 (09:54 +0000)]
[libc] Fix broken tests on arm32
Simon Pilgrim [Mon, 24 Oct 2022 09:46:04 +0000 (10:46 +0100)]
[llvm-exegesis] getNonRedundantWriteProcRes - perform basic toplogical sorting (PR58500)
getNonRedundantWriteProcRes was assuming that tblgen topologically sorted the cpu ModelProcResources[] arrays so that resource units were declared before the resource groups that used them, but unfortunately that doesn't appear to be true - in most cases it was just getting lucky based off the alphanumeric sorting that was being performed and the choice of the resource pipe names in most scheduler models (Intel models in particular).
This patch adds an explicit sort, based off llvm-mca's initializeUsedResources, that sorts by resource mask - I'm hoping this basic sorting is enough, I don't think overlapping groups or Super resources are a problem.
I'd like to take this further in the future and start sharing more code between llvm-mca and llvm-exegesis - while triaging this bug I saw how similar both approaches are, but are just dissimilar enough that any refactor isn't going to be trivial :(
Working with @courbet on a follow up unit test
Fixes #58500
Fixes #37045
Differential Revision: https://reviews.llvm.org/D136351
Simon Pilgrim [Mon, 24 Oct 2022 09:27:00 +0000 (10:27 +0100)]
[DAG] Fold (abs (sign_extend_inreg x)) -> (zero_extend (abs (truncate x))) (PR43370)
If the upper half of an abs() is all sign bits, then we can perform the abs() using just the lower half and then zero extend.
I've limited the DAG combine to only sign_extend_inreg (and free truncate/zero_extend) to minimise any later promotion issues, but for legalization a similar fold can use ComputeNumSignBits to be more aggressive.
Alive2: https://alive2.llvm.org/ce/z/y32fS4
Fixes #43370
Differential Revision: https://reviews.llvm.org/D136559
Guillaume Chatelet [Sat, 22 Oct 2022 11:23:04 +0000 (11:23 +0000)]
[libc] mem* framework v3
This version is more composable and also simpler at the expense of being more explicit and more verbose.
This patch provides rationale for the framework, implementation and unit tests but the functions themselves are still using the previous version. The change in implementation will come in a follow up patch.
Differential Revision: https://reviews.llvm.org/D136292
Piyou Chen [Mon, 24 Oct 2022 08:26:46 +0000 (01:26 -0700)]
[RISCV] Add Svnapot extension
Reviewed By: kito-cheng
Differential Revision: https://reviews.llvm.org/D136570
LLVM GN Syncbot [Mon, 24 Oct 2022 07:30:12 +0000 (07:30 +0000)]
[gn build] Port
e98a4c5acb37
Carlos Alberto Enciso [Mon, 24 Oct 2022 06:18:36 +0000 (07:18 +0100)]
[llvm-debuginfo-analyzer] (07/09) - Compare elements
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.
The code has been divided into the following patches:
1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader
Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570
This patch:
Compare elements
- Support for logical elements comparison. See '--compare' options.
LVCompare
Reviewed By: psamolysov, probinson
Differential Revision: https://reviews.llvm.org/D125782
Matthias Springer [Mon, 24 Oct 2022 07:17:44 +0000 (09:17 +0200)]
[mlir][interfaces] Remove getDestinationOperands from TilingInterface
`getDestinationOperands` was almost a duplicate of `DestinationStyleOpInterface::getOutputOperands`. Now that the interface has been moved to mlir/Interfaces, it is no longer needed.
Differential Revision: https://reviews.llvm.org/D136240
Kazu Hirata [Mon, 24 Oct 2022 07:23:51 +0000 (00:23 -0700)]
[SelectionDAG] Use std::clamp (NFC)
Kazu Hirata [Mon, 24 Oct 2022 07:14:56 +0000 (00:14 -0700)]
[ADT] Remove redundant typename (NFC)
gonglingqin [Mon, 24 Oct 2022 06:49:04 +0000 (14:49 +0800)]
[LoongArch] Add support for ISD::FRAMEADDR and ISD::RETURNADDR
For now, only support lowering frame/return address for current frame.
Differential Revision: https://reviews.llvm.org/D136215
Adrian Kuegel [Mon, 24 Oct 2022 07:10:30 +0000 (09:10 +0200)]
River Riddle [Sat, 22 Oct 2022 21:13:20 +0000 (14:13 -0700)]
[mlir:LLVM] Add attribute/op definitions for debug info
This adds a subset of the necessary metadata for defining
debug info in the LLVM dialect. It doesn't import everything,
but just enough to start actually generating LLVM debug info
the expected way. Export/Import to LLVMIR will be added in a
followup.
Differential Revision: https://reviews.llvm.org/D136542
River Riddle [Sat, 22 Oct 2022 21:01:41 +0000 (14:01 -0700)]
[mlir] Refactor alias generation to support nested aliases
We currently only support one level of aliases, which isn't great
in situations where an attribute/type can have multiple duplicated
components nested within it(e.g. debuginfo metadata). This commit
refactors alias generation to support nested aliases, which requires
changing alias grouping to take into account the depth of child
aliases, to ensure that attributes/types aren't printed before the
aliases they use.
The only real user facing change here was that we no longer print
0 as an alias suffix, which would be unnecessarily expensive to keep
in the new alias generation method (and isn't that valuable of a
behavior to preserve).
Differential Revision: https://reviews.llvm.org/D136541
River Riddle [Sat, 22 Oct 2022 20:57:15 +0000 (13:57 -0700)]
[mlir] Better handling for bit groups in enum parser/printer
We currently wrap all multi-bit cases with a string, but this is
overly restrictive. This commit refactors to use keywords when
we know they are valid, and only degrade to string when the validity
of the bitgroup is unknown.
Differential Revision: https://reviews.llvm.org/D136540
Michael Buch [Mon, 24 Oct 2022 06:42:01 +0000 (07:42 +0100)]
[lldb][Test] Add CPlusPlusNameParser unit-test: C-array function arguments
Tests that `CPlusPlusLanguage::MethodName` can parse demangled
names that contain references to C-arrays.
Example taken from libcxx API in the wild.
Muhammad Omair Javaid [Mon, 17 Oct 2022 11:32:40 +0000 (16:32 +0500)]
[LIT] Add AArch64/Windows to LP64 feature
This patch adds AArch64 to the LP64 feature to avoid running LLP64
incompatible test on AArch64/Windows platform.
Differential Revision: https://reviews.llvm.org/D136070
Pierre van Houtryve [Fri, 21 Oct 2022 13:19:31 +0000 (13:19 +0000)]
[AMDGPU] Autogenerate icmp codegen test
Switch to autogenerated tests so we can use the same test for GISel and DAGIsel.
Reviewed By: arsenm
Differential Revision: https://reviews.llvm.org/D136446
Kazu Hirata [Mon, 24 Oct 2022 06:24:59 +0000 (23:24 -0700)]
[mlir] Fix a warning
This patch fixes:
mlir/include/mlir/IR/PatternMatch.h:1092:63: warning: parameter
‘values’ set but not used [-Wunused-but-set-parameter]
Rong Xu [Mon, 24 Oct 2022 05:31:10 +0000 (22:31 -0700)]
[Clang] Change AnonStructIds in MangleContext to per-function based
Clang is generating different mangled names for the same lambda
function in slightly changed builds (like with non-related
source/Macro change). This is due to the fact that clang uses a
cross-translation-unit sequential string "$_<n>" in lambda's
mangled name. Here, "n" is the AnonStructIds field in MangleContext.
Different mangled names for a unchanged function is undesirable:
it makes perf comparison harder, and can cause some unnecessary
profile mismatch in SampleFDO.
This patch makes mangled name for lambda functions more stable
by changing AnonStructIds to a per-function based seq number if the
DeclContext is a function.
Differential Revision: https://reviews.llvm.org/D136397
Michael Liao [Mon, 24 Oct 2022 05:32:34 +0000 (01:32 -0400)]
[llvm-debuginfo-analyzer] Fix shared build. NFC.
Carlos Alberto Enciso [Mon, 24 Oct 2022 04:55:47 +0000 (05:55 +0100)]
[llvm-debuginfo-analyzer] (06/09) - Warning and internal options
The 'clang-ppc64le-linux-multistage24452' buildbot fails with:
https://lab.llvm.org/buildbot#builders/121/builds/24452
undefined reference to `llvm::dwarf::TagString(unsigned int)'
Add 'DebugInfoDWARF' in the CMakeLists.txt CMake file.
Sheng [Mon, 24 Oct 2022 04:56:26 +0000 (04:56 +0000)]
[NFC][X86] Fix typo: stric => strict
LLVM GN Syncbot [Mon, 24 Oct 2022 04:14:21 +0000 (04:14 +0000)]
[gn build] Port
2c155d379960
Carlos Alberto Enciso [Fri, 21 Oct 2022 05:08:48 +0000 (06:08 +0100)]
[llvm-debuginfo-analyzer] (06/09) - Warning and internal options
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level
format.
The code has been divided into the following patches:
1) Interval tree
2) Driver and documentation
3) Logical elements
4) Locations and ranges
5) Select elements
6) Warning and internal options
7) Compare elements
8) ELF Reader
9) CodeView Reader
Full details:
https://discourse.llvm.org/t/llvm-dev-rfc-llvm-dva-debug-information-visual-analyzer/62570
This patch:
Warning and internal options
- Support for '--warning' options.
- Support for '--internal' options.
Reviewed By: psamolysov, probinson
Differential Revision: https://reviews.llvm.org/D125781
Michał Górny [Sun, 23 Oct 2022 17:08:47 +0000 (19:08 +0200)]
[mlir] Support overriding LLVM_LIT_ARGS in standalone builds
Introduce LLVM_LIT_ARGS cache variable in standalone builds, to let
the caller override the options passed by LLVM to lit calls. Once
defined, this is automatically handled by LLVM's cmake logic.
Differential Revision: https://reviews.llvm.org/D136556
Sheng [Mon, 24 Oct 2022 01:37:48 +0000 (09:37 +0800)]
[NFC][M68k] Update the status of ISA implementation
LINK/UNLNK have been implemented in
64d326c33c6d3f008.
Katherine Rasmussen [Tue, 20 Sep 2022 22:35:48 +0000 (15:35 -0700)]
[flang] Add atomic_define and atomic_ref to list of intrinsics
Add the atomic subroutines, atomic_define and atomic_ref, to the
list of intrinsic subroutines. Add a new function
CheckAtomicDefineAndRef to check that for each of these procedures,
that their value arguments are the same type as their atom
arguments, and that their 3rd argument is not coindexed.
Reviewed By: PeteSteinfeld
Differential Revision: https://reviews.llvm.org/D136206
Evgeny Shulgin [Sun, 23 Oct 2022 11:00:41 +0000 (11:00 +0000)]
[clang] Fix time profile in "isIntegerConstantExpr"
The time profiler in `Expr::isIntegerConstantExpr` used to
call `Loc->printToString`, it was inconsistent with other time
profiles in the file and caused segfaults if `Loc` was `nullptr`.
Fixes https://github.com/llvm/llvm-project/issues/58551
Reviewed By: dyung, jloser
Differential Revision: https://reviews.llvm.org/D136549
Matt Arsenault [Thu, 13 Oct 2022 21:42:15 +0000 (14:42 -0700)]
llvm-reduce: Add conditional reduction passes
Copy this technique from bugpoint. Before trying to blindly
delete blocks, try to fold branch conditions. This intuitively
makes more sense for a faster reduction, since you can find
dead paths in the function to prune out before trying to bisect
blocks in source order.
Seems to provide some speedup on my multi-hour reduction samples.
This does have the potential to produce testcases with unreachable
blocks. This is already a problem with the existing block
reduction pass. I'm struggling dealing with invalid reductions
in these cases, so in the future this should probably start
deleting those. However, I do sometimes try to reduce failures
in code that becomes unreachable, so I'm not totally sure
what to do here.
Matt Arsenault [Sat, 22 Oct 2022 16:38:33 +0000 (09:38 -0700)]
llvm-reduce: Fix opcode reduction leaving behind dead instructions
ce3c3cb2912425bb4367bfbe9a4c68a6d6f0a04a broke this by
speculatively making transforms before checking shouldKeep.
Originally I tried to roll back changes to the IR, but it's probably
best to not touch it before querying.
Min-Yih Hsu [Sun, 23 Oct 2022 21:36:35 +0000 (14:36 -0700)]
[M68k][NFC] Use OS and ABI agnostic triple in codegen tests
Use 'm68k' (i.e. m68k-unknown-unknown) in all codegen tests rather
than m68k-linux-gnu. NFC.
LLVM GN Syncbot [Sun, 23 Oct 2022 22:17:33 +0000 (22:17 +0000)]
[gn build] Port
596fdf75d99f
LLVM GN Syncbot [Sun, 23 Oct 2022 22:17:32 +0000 (22:17 +0000)]
[gn build] Port
27902eea0f0a
Matt Arsenault [Wed, 19 Oct 2022 04:00:33 +0000 (21:00 -0700)]
CodeExtractor: Fix assertion with non-0 alloca address spaces
emitCallAndSwitchStatement creates placeholder allocas to pass
to these, so the types need to match.
Matt Arsenault [Tue, 18 Oct 2022 23:51:50 +0000 (16:51 -0700)]
llvm-reduce: Remove okToRemove logic in block reduction
This was making decisions based on BBsToDelete, while being
used to determine BBsToDelete which doesn't really work.
Additionally, this is a lot of logic just to avoid deleting
the entry block when we can just skip it.
Matt Arsenault [Sun, 23 Oct 2022 17:40:08 +0000 (10:40 -0700)]
llvm-reduce: Fix some broken test checks
Matt Arsenault [Fri, 21 Oct 2022 21:59:07 +0000 (14:59 -0700)]
llvm-reduce: Add a reduction to replace atomics with non-atomics
Make load and store non-atomic. Make the others monotonic.
We could probably try to incrementally relax the orderings; not sure
how useful that would be.