Louis Dionne [Thu, 18 Mar 2021 21:05:25 +0000 (14:05 -0700)]
[libc++] NFCI: Remove dead code in the Lit configuration
I was trying to fix something else and I stumbled upon several methods
that are not used anymore in target_info.py.
Differential Revision: https://reviews.llvm.org/D98896
Arnamoy Bhattacharyya [Fri, 19 Mar 2021 18:54:06 +0000 (14:54 -0400)]
[Flang][OpenMP] Add more sema checks for ordered construct
This patch fixes a bug to allow ordered construct within a non-worksharing loop, also adds more sema checks.
Reviewed By: kiranchandramohan
Differential Revision: https://reviews.llvm.org/D98733
Craig Topper [Fri, 19 Mar 2021 18:23:27 +0000 (11:23 -0700)]
[AArch64] Fix LowerMGATHER to return the chain result for floating point gathers.
Found by adding asserts to LegalizeDAG to make sure custom legalized
results had the right types.
Reviewed By: kmclaughlin
Differential Revision: https://reviews.llvm.org/D98968
Rob Suderman [Fri, 19 Mar 2021 18:42:22 +0000 (11:42 -0700)]
[mlir][tosa] Add tosa.cast to linalg lowering
Handles lowering from the tosa CastOp to the equivalent linalg lowering. It
includes support for interchange between bool, int, and floating point.
Reviewed By: antiagainst
Differential Revision: https://reviews.llvm.org/D98828
Rob Suderman [Fri, 19 Mar 2021 18:24:52 +0000 (11:24 -0700)]
[mlir][tosa] Add tosa.logical_* to linalg lowerings
Adds lowerings for logical_* boolean operations. Each of these ops only operate
on booleans allowing simple lowerings.
Reviewed By: NatashaKnk
Differential Revision: https://reviews.llvm.org/D98910
David Green [Fri, 19 Mar 2021 18:30:11 +0000 (18:30 +0000)]
[ARM] Tone down the MVE scalarization overhead
The scalarization overhead was set deliberately high for MVE, whilst the
codegen was new. It helps protect us against the negative ramifications
of mixing scalar and vector instructions. This decreases that,
especially for floating point where the cost of extracting/inserting
lane elements can be low. For integer the cost is still fairly high due
to the cross-register-bank copy, but is no longer n^2 in the length of
the vector.
In general, this will decrease the cost of scalarizing floats and long
integer vectors. i64 increase in cost, having a high cost before and
after this patch. For floats this allows up to start doing things like
vectorizing fdiv instructions, even if they are scalarized.
Differential Revision: https://reviews.llvm.org/D98245
Stella Laurenzo [Wed, 17 Mar 2021 01:05:19 +0000 (18:05 -0700)]
[mlir][linalg] Add structured op builders from python opdsl.
* Makes the wrapped functions of the `@linalg_structured_op` decorator callable such that they emit IR imperatively when invoked.
* There are numerous TODOs that I will keep working through to achieve generality.
* Will true up exception handling tests as the feature progresses (for things that are actually errors once everything is implemented).
* Includes the addition of an `isinstance` method on concrete types in the Python API.
Differential Revision: https://reviews.llvm.org/D98754
Vy Nguyen [Fri, 19 Mar 2021 18:17:51 +0000 (14:17 -0400)]
[lld-macho][nfc] Fixed typo in comment
Missed this one from https://reviews.llvm.org/D97007?id=331759#inline-930034
Differential Revision: https://reviews.llvm.org/D98973
Philip Reames [Fri, 19 Mar 2021 18:15:29 +0000 (11:15 -0700)]
Update basic deref API to account for possiblity of free [NFC]
This patch is plumbing to support work towards the goal outlined in the recent llvm-dev post "[llvm-dev] RFC: Decomposing deref(N) into deref(N) + nofree".
The point of this change is purely to simplify iteration on other pieces on way to making the switch. Rebuilding with a change to Value.h is slow and painful, so I want to get the API change landed. Once that's done, I plan to more closely audit each caller, add the inference rules in their own patch, then post a patch with the langref changes and test diffs. The value of the command line flag is that we can exercise the inference logic in standalone patches without needing the whole switch ready to go just yet.
Differential Revision: https://reviews.llvm.org/D98908
Vy Nguyen [Thu, 18 Mar 2021 22:49:45 +0000 (18:49 -0400)]
[lld-macho] Define __mh_*_header synthetic symbols.
Bug: https://bugs.llvm.org/show_bug.cgi?id=49290
Differential Revision: https://reviews.llvm.org/D97007
Jonas Devlieghere [Fri, 19 Mar 2021 18:11:59 +0000 (11:11 -0700)]
[lldb] Make the API, Shell and Unit tests independent lit test suites
Make the API, Shell and Unit tests independent lit test suites. This
allows us to specify different dependencies and skip rebuilding all the
unit test (which is particularly expensive) when running check-lldb-api
or check-lldb-shell.
This does not change the autogenerated targets such as
check-lldb-shell-driver or the top level check-lldb target, which all
continue to work as before.
Differential revision: https://reviews.llvm.org/D98842
Alexey Bataev [Tue, 2 Mar 2021 18:53:49 +0000 (10:53 -0800)]
[Cost]Canonicalize the cost for logical or/and reductions.
The generic cost of logical or/and reductions should be cost of bitcast
<ReduxWidth x i1> to iReduxWidth + cmp eq|ne iReduxWidth.
Differential Revision: https://reviews.llvm.org/D97961
Bjorn Pettersson [Tue, 16 Mar 2021 11:47:16 +0000 (12:47 +0100)]
[LangRef] Describe memory layout for vectors types
There are a couple of caveats when it comes to how vectors are
stored to memory, and thereby also how bitcast between vector
and integer types work, in LLVM IR. Specially in relation to
endianess. This patch is an attempt to document such things.
Reviewed By: nlopes
Differential Revision: https://reviews.llvm.org/D94964
Craig Topper [Fri, 19 Mar 2021 17:47:47 +0000 (10:47 -0700)]
[RISCV] Add missing bitcasts to the results of lowerINSERT_SUBVECTOR and lowerEXTRACT_SUBVECTOR when handling mask vectors.
Found by adding asserts to LegalizeDAG to catch incorrect result
types being returned.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D98964
Craig Topper [Fri, 19 Mar 2021 17:47:32 +0000 (10:47 -0700)]
[Hexagon] Return an i64 for result 0 from LowerREADCYCLECOUNTER instead of an i32.
As far as I can tell, the node coming in has an i64 result so the
return should have the same type. The HexagonISD node used for
this has a type profile that says the result is i64.
Found while trying to add assserts to LegalizeDAG to catch
result type mismatches.
Reviewed By: kparzysz
Differential Revision: https://reviews.llvm.org/D98962
Jianzhou Zhao [Fri, 19 Mar 2021 17:53:13 +0000 (17:53 +0000)]
[dfsan] Turn on testing origin tracking at atomics.ll
Andrei Elovikov [Fri, 19 Mar 2021 16:41:44 +0000 (09:41 -0700)]
[NFC][VPlan] Guard print routines with "#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)"
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D98897
Andrei Elovikov [Thu, 18 Mar 2021 18:32:34 +0000 (11:32 -0700)]
[VPlan] Add plain text (not DOT's digraph) dumps
I foresee two uses for this:
1) It's easier to use those in debugger.
2) Once we start implementing more VPlan-to-VPlan transformations (especially
inner loop massaging stuff), using the vectorized LLVM IR as CHECK targets in
LIT test would become too obscure. I can imagine that we'd want to CHECK
against VPlan dumps after multiple transformations instead. That would be
easier with plain text dumps than with DOT format.
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D96628
Craig Topper [Fri, 19 Mar 2021 17:39:33 +0000 (10:39 -0700)]
[RISCV] Lower scalable vector masked loads to intrinsics to match fixed vectors and reduce isel patterns.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D98840
thomasraoux [Fri, 19 Mar 2021 17:32:23 +0000 (10:32 -0700)]
[mlir] Fix cuda integration test failure
Fraser Cormack [Fri, 19 Mar 2021 10:17:06 +0000 (10:17 +0000)]
[RISCV] Maintain fixed-length info when optimizing BUILD_VECTORs
I'm not sure how I failed to notice this before, but when optimizing
dominant-element BUILD_VECTORs we would lower via the scalable container type,
which lost us the information about the fixed length of the vector types. By
lowering via the fixed-length type we can preserve that information and
eliminate redundant vsetvli instructions.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D98938
Emily Shi [Fri, 19 Mar 2021 02:14:40 +0000 (19:14 -0700)]
[asan] specify c++ version in tests to fix compile error
If we don't specify the c++ version in these tests, it could cause compile errors because the compiler could default to an older c++
rdar://
75247244
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D98913
Philip Reames [Fri, 19 Mar 2021 17:07:12 +0000 (10:07 -0700)]
[SCEV] Factor out a lambda for strict condition splitting [NFC]
Fraser Cormack [Fri, 19 Mar 2021 12:27:15 +0000 (12:27 +0000)]
[RISCV] Add missing CHECKs to vector test
Since the "LMUL-MAX=2" output for some test functions differed between
RV32 and RV64, the update_llc_test_checks script failed to emit a
unified LMULMAX2 check for them. I'm not sure why it didn't warn about
this.
This patch also takes the opportunity to add unified RV32/RV64 checks to
help shorten the test file when the output for LMULMAX1 and LMULMAX2 is
identical but differs between the two ISAs.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D98944
Fraser Cormack [Wed, 17 Mar 2021 12:30:11 +0000 (12:30 +0000)]
[RISCV] Fix missing scalable->fixed-length vector conversion
Returning the scalable-vector container type would present problems when
the fixed-length INSERT_VECTOR_ELT was used by later operations.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D98776
Martin Storsjö [Sat, 27 Feb 2021 12:46:16 +0000 (14:46 +0200)]
[libcxx] [test] Account for differences in a trailing slash in weakly_canonical
This seems to be a documented quirk in libc++'s implementation of
weakly_canonical (in a comment in the weakly_canonical test).
Together with a difference between windows and posix regarding whether
paths can go through nonexistent dirs, this results in a difference in
a trailing slash.
Just document this as expected, and degrade the comment from fixme to
a note, as MS STL and libstdc++ behave in the same way.
Differential Revision: https://reviews.llvm.org/D98642
Martin Storsjö [Fri, 19 Mar 2021 11:47:43 +0000 (13:47 +0200)]
[cmake] Enable Clang warnings about redundant semicolons
This matches what GCC warns about when -pedantic is enabled.
This should avoid such redundant semicolons creeping into the codebase.
Differential Revision: https://reviews.llvm.org/D98941
Jay Foad [Fri, 19 Mar 2021 16:43:52 +0000 (16:43 +0000)]
[AMDGPU] Rationalize some check prefixes and use more common prefixes. NFC.
Jay Foad [Fri, 19 Mar 2021 16:08:10 +0000 (16:08 +0000)]
[AMDGPU] Remove weird target triples from tests. NFC.
Markus Böck [Fri, 19 Mar 2021 16:47:07 +0000 (17:47 +0100)]
[Driver] Add -print-runtime-dir
This patch adds a new command line option to clang which outputs the directory containing clangs runtime libraries to stdout.
The primary use case for this command line flag is for build systems using clang-cl. Build systems when using clang-cl invoke the linker, that is either link or lld-link in this case, directly instead of invoking the compiler for the linking process as is common with the other drivers. This leads to issues when runtime libraries of clang, such as sanitizers or profiling, have to be linked in as the compiler cannot communicate the link directory to the linker.
Using this flag, build systems would be capable of getting the directory containing all of clang's runtime libraries and add it to the linker path.
Differential Revision: https://reviews.llvm.org/D98868
David Spickett [Wed, 17 Mar 2021 11:09:41 +0000 (11:09 +0000)]
[libcxx][Arm] Move buildbot flags into cmake files
Reviewed By: #libc, Mordante, curdeius
Differential Revision: https://reviews.llvm.org/D98771
Nicolas Vasilache [Fri, 19 Mar 2021 16:21:15 +0000 (16:21 +0000)]
[mlir][Linalg] NFC - Expose helper function `substituteMin`.
Jianzhou Zhao [Wed, 17 Mar 2021 16:22:01 +0000 (16:22 +0000)]
[dfsan] Add origin ABI wrappers
supported: dl_get_tls_static_info, calloc, clock_gettime,
dfsan_set_write_callback, dl_iterato_phdr, dlopen, memcpy,
memmove, memset, pread, read, strcat, strdup, strncpy
This is a part of https://reviews.llvm.org/D95835.
Reviewed By: morehouse
Differential Revision: https://reviews.llvm.org/D98790
Paul Robinson [Fri, 19 Mar 2021 14:43:36 +0000 (07:43 -0700)]
[RGT] Recode more unreachable assertions and tautologies
Count iterations of zero-trip loops and assert the count is zero,
rather than asserting inside the loop.
Unreachable functions should use llvm_unreachable.
Remove tautological 'if' statements, even when they're following a
pattern of checks.
Found by the Rotten Green Tests project.
Simon Pilgrim [Fri, 19 Mar 2021 16:02:31 +0000 (16:02 +0000)]
[DAG] computeKnownBits - add ISD::MULHS/MULHU/SMUL_LOHI/UMUL_LOHI handling
Reuse the existing KnownBits multiplication code to handle the 'extend + multiply + extract high bits' pattern for multiply-high ops.
Noticed while looking at the codegen for D88785 / D98587 - the patch helps division-by-constant expansion code in particular, which suggests that we might have some further KnownBits div/rem cases we could handle - but this was far easier to implement.
Differential Revision: https://reviews.llvm.org/D98857
Jay Foad [Thu, 18 Mar 2021 17:00:14 +0000 (17:00 +0000)]
[AMDGPU] Add atomic optimizer nouse tests
Add some atomic optimizer tests where there is no use of the result of
the atomic operation, which is a common case in real code. NFC.
Differential Revision: https://reviews.llvm.org/D98952
Stanislav Mekhanoshin [Fri, 19 Mar 2021 15:36:03 +0000 (08:36 -0700)]
[AMDGPU] Remove dead glc1 handing in asm parser. NFC.
Balázs Kéri [Fri, 19 Mar 2021 14:46:20 +0000 (15:46 +0100)]
[clang][ASTImporter] Add import support for SourceLocExpr.
It is possible that imported `SourceLocExpr` can cause not expected behavior (if `__builtin_LINE()` is used together with `__LINE__` for example) but still it may be worth to import these because some projects use it.
Reviewed By: teemperor
Differential Revision: https://reviews.llvm.org/D98876
Christian Kühnel [Wed, 24 Feb 2021 14:50:02 +0000 (15:50 +0100)]
propose Chocolately as package manager
Installing the Unix tools on Windows is quite painful. To make things easier,
I explained how to use a package manager or a Docker image.
Note: This still uses the GNUWin tools as explained on this page. Once we
replace these with something else, we would also need to update the
installation commands.
Differential Revision: https://reviews.llvm.org/D97387
Arthur O'Dwyer [Tue, 16 Mar 2021 16:51:24 +0000 (12:51 -0400)]
[libc++] Consistency on _LIBCPP_CLANG_VER tests in <type_traits>.
This came out of my review comments on D97283.
This patch re-enables the use of `__is_fundamental`, `__is_signed`, etc.
on non-Clang compilers. Previously, when we found that a builtin didn't
work on old Clangs, we had been reacting by limiting its use to new Clangs
(i.e., we'd also stop using it on new GCCs and new MSVCs, just because of
the old Clang bug). I claim that this was unintentional.
Notice that on Apple Clang, `_LIBCPP_COMPILER_CLANG` is defined and
`_LIBCPP_CLANG_VER` is not defined (therefore `0` in arithmetic expressions).
We assume that Apple Clang has all the bugs of all the Clangs.
Differential Revision: https://reviews.llvm.org/D98720
Simon Pilgrim [Fri, 19 Mar 2021 13:34:47 +0000 (13:34 +0000)]
[DAG] Fold shuffle(bop(shuffle(x,y),shuffle(z,w)),undef) -> bop(shuffle'(x,y),shuffle'(z,w))
Followup to D96345, handle unary shuffles of binops (as well as binary shuffles) if we can merge the shuffle with inner operand shuffles.
Differential Revision: https://reviews.llvm.org/D98646
Martin Storsjö [Wed, 14 Oct 2020 12:37:13 +0000 (15:37 +0300)]
[libcxx] [test] Fix weakly_canonical for windows
Differential Revision: https://reviews.llvm.org/D98643
Martin Storsjö [Tue, 16 Mar 2021 12:37:28 +0000 (14:37 +0200)]
[libcxx] [test] Avoid race conditions between tests regarding temp directories
Prior to
e0d01294bc124211a8ffb55e69162eb34a242680, all tests used a
random directory name, but now it is deterministic, based on the
test name. This change was done under the assumption that the filename
portion of the cwd is unique across tests that use the filesystem
test temporary directories.
When running tests locally, the cwd of the test is something like
"<build-dir>/test/<test path>/Output/copy_assign.pass.cpp.dir",
and the filename portion, "copy_assign.pass.cpp.dir", is used as
base for the temp directory names.
The change noted that there's a risk for race conditions if multiple
threads within one test try to create temp directories in parallel, but
that doesn't really happen in practice.
However, if running tests with a large number of parallel workers,
multiple tests with the same filename portion, e.g. "copy_assign.pass.cpp.dir",
can run in parallel, leading to race conditions across processes.
Therefore, add a hash of the full cwd to distinguish such cases
from each other.
Secondly, don't use two separate levels of temporary directories
(<base>/static_env.0). When cleaning up, only the individual
directory is removed, leaving the empty intermediate directory
behind littering the temp directory.
Differential Revision: https://reviews.llvm.org/D98703
Martin Storsjö [Fri, 26 Feb 2021 13:10:53 +0000 (15:10 +0200)]
[libcxx] [test] Fix windows errors in fs.op.rename
Differential Revision: https://reviews.llvm.org/D98640
Paul C. Anagnostopoulos [Thu, 25 Feb 2021 21:33:08 +0000 (16:33 -0500)]
[TableGen] Improve handling of template arguments
This requires changes to TableGen files and some C++ files due to
incompatible multiclass template arguments that slipped through
before the improved handling.
Ricky Taylor [Wed, 17 Mar 2021 21:34:36 +0000 (21:34 +0000)]
[M68k] Replace unknown operand with explicit type
Replace the unknown operand used for immediate operands for DIV/MUL with a fixed 16-bit immediate.
This is required since the assembly parser generator requires that all operands are typed.
Differential Revision: https://reviews.llvm.org/D98819
Maxim Kuvyrkov [Fri, 19 Mar 2021 13:37:19 +0000 (13:37 +0000)]
[WoA][MSVC] Use default linker setting in MSVC-compatible driver [take 2]
At the moment "link.exe" is hard-coded as default linker in MSVC.cpp,
so there's no way to use LLD as default linker for MSVC driver.
This patch adds checking of CLANG_DEFAULT_LINKER to MSVC.cpp and
updates unit-tests that expect link.exe linker to explicitly select it
via -fuse-ld=link, so that buildbots and other builds that set
-DCLANG_DEFAULT_LINKER=foobar don't fail these tests.
This is a squash of
- https://reviews.llvm.org/D98493 (MSVC.cpp change) and
- https://reviews.llvm.org/D98862 (unit-tests change)
Reviewed By: maxim-kuvyrkov
Differential Revision: https://reviews.llvm.org/D98935
Jeroen Dobbelaere [Fri, 19 Mar 2021 13:34:25 +0000 (14:34 +0100)]
Support intrinsic overloading on unnamed types
This patch adds support for intrinsic overloading on unnamed types.
This fixes PR38117 and PR48340 and will also be needed for the Full Restrict Patches (D68484).
The main problem is that the intrinsic overloading name mangling is using 's_s' for unnamed types.
This can result in identical intrinsic mangled names for different function prototypes.
This patch changes this by adding a '.XXXXX' to the intrinsic mangled name when at least one of the types is based on an unnamed type, ensuring that we get a unique name.
Implementation details:
- The mapping is created on demand and kept in Module.
- It also checks for existing clashes and recycles potentially existing prototypes and declarations.
- Because of extra data in Module, Intrinsic::getName needs an extra Module* argument and, for speed, an optional FunctionType* argument.
- I still kept the original two-argument 'Intrinsic::getName' around which keeps the original behavior (providing the base name).
-- Main reason is that I did not want to change the LLVMIntrinsicGetName version, as I don't know how acceptable such a change is
-- The current situation already has a limitation. So that should not get worse with this patch.
- Intrinsic::getDeclaration and the verifier are now using the new version.
Other notes:
- As far as I see, this should not suffer from stability issues. The count is only added for prototypes depending on at least one anonymous struct
- The initial count starts from 0 for each intrinsic mangled name.
- In case of name clashes, existing prototypes are remembered and reused when that makes sense.
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D91250
Christian Sigg [Fri, 19 Mar 2021 09:11:51 +0000 (10:11 +0100)]
[mlir] Rename gpu-to-llvm pass implementation file
Also remove populate patterns function and binary annotation name option.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D98930
Aaron Ballman [Fri, 19 Mar 2021 12:33:27 +0000 (08:33 -0400)]
Automate common diagnostic checking for statement attributes
Clang currently automates a fair amount of diagnostic checking for
declaration attributes based on the declarations in Attr.td. It checks
for things like subject appertainment, number of arguments, language
options, etc. This patch uses the same machinery to perform diagnostic
checking on statement attributes.
Nemanja Ivanovic [Fri, 19 Mar 2021 11:24:42 +0000 (06:24 -0500)]
[PowerPC] Fix the check for 16-bit signed field in peephole
When a D-Form instruction is fed by an add-immediate, we attempt
to merge the two immediates to form a single displacement so we
can remove the add-immediate.
However, we don't check whether the new displacement fits into
a 16-bit signed immediate field early enough. Namely, we do a
sign-extend from 16 bits first which will discard high bits and
then we check whether the result is a 16-bit signed immediate.
It of course will always be.
Move the check prior to the sign extend to ensure we are checking
the correct value.
Fixes https://bugs.llvm.org/show_bug.cgi?id=49640
Abhina Sreeskantharajan [Fri, 19 Mar 2021 12:09:01 +0000 (08:09 -0400)]
[SystemZ][z/OS] Distinguish between text and binary files on z/OS
This patch consists of the initial changes to help distinguish between text and binary content correctly on z/OS. I would like to get feedback from Windows users on setting OF_None for all ToolOutputFiles. This seems to have been done as an optimization to prevent CRLF translation on Windows in the past.
Reviewed By: zibi
Differential Revision: https://reviews.llvm.org/D97785
Simonas Kazlauskas [Fri, 19 Mar 2021 00:18:34 +0000 (02:18 +0200)]
[X86, NFC] Update stack-clash tests using the automated tooling
This is in preparation of changes in this area (such as D98789 and D98906).
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D98909
Ricky Taylor [Thu, 11 Mar 2021 20:37:00 +0000 (20:37 +0000)]
[M68k] Convert register Aliases to AltNames
This makes it simpler to determine when two registers are actually the
same vs just partially aliasing.
The only real caveat is that it becomes impossible to know which name
was used for the register previously. (i.e. parsing assembly and then
disassembling it can result in the register name changing.)
Differential Revision: https://reviews.llvm.org/D98536
Ricky Taylor [Thu, 11 Mar 2021 20:35:04 +0000 (20:35 +0000)]
[M68k] Introduce DReg bead
This is required in order to determine during disassembly whether a
Reg bead without associated DA bead is referring to a data register.
Differential Revision: https://reviews.llvm.org/D98534
Jay Foad [Fri, 19 Mar 2021 09:27:11 +0000 (09:27 +0000)]
[AMDGPU] Remove some redundant code. NFC.
This is redundant because we have already checked that we can't handle
divergent 64-bit atomic operands.
Jay Foad [Thu, 18 Mar 2021 17:16:48 +0000 (17:16 +0000)]
[AMDGPU] Skip building some IR if it won't be used. NFC.
Jay Foad [Thu, 18 Mar 2021 16:52:04 +0000 (16:52 +0000)]
[AMDGPU] Remove duplicate test functions. NFC.
Jay Foad [Thu, 18 Mar 2021 16:13:16 +0000 (16:13 +0000)]
[AMDGPU] Sink Intrinsic::getDeclaration calls to where they are used. NFC.
Martin Storsjö [Fri, 19 Mar 2021 10:30:08 +0000 (12:30 +0200)]
Revert "[lit] Handle plain negations directly in the internal shell"
This reverts commit
d09adfd3993cbc1043b4d20232bce8bd774232cc.
That commit caused failures in
clang-tidy/infrastructure/validate-check-names.cpp on windows
buildbots.
That change exposed a surprising issue, not directly related to
this change in itself, but in how TestRunner quotes command line
arguments that later are going to be interpreted by a msys based
tool (like grep.exe, when provided by Git for Windows). This
worked accidentally before, when grep was invoked via not.exe
which took a more conservative approach to windows argument quoting.
Muhammad Omair Javaid [Fri, 19 Mar 2021 10:29:53 +0000 (15:29 +0500)]
[LLDB] Skip TestExitDuringExpression on aarch64/linux buildbot
TestExitDuringExpression test_exit_before_one_thread_unwind fails
sporadically on both Arm and AArch64 linux buildbots.
This seems like a thread timing issue. I am marking it skip for now.
Kristof Beyls [Fri, 19 Mar 2021 09:27:34 +0000 (10:27 +0100)]
[docs] Add calendar info for SVE sync-ups
Simon Pilgrim [Thu, 18 Mar 2021 22:36:01 +0000 (22:36 +0000)]
[KnownBits] Add knownbits analysis for mulhs/mulu 'multiply high' instructions
Split off from D98857
https://reviews.llvm.org/D98866
Alexander Belyaev [Thu, 18 Mar 2021 21:35:48 +0000 (22:35 +0100)]
[mlir] Add a roundtrip test for 'linalg.tiled_loop' on buffers.
https://llvm.discourse.group/t/rfc-add-linalg-tileop/2833
Differential Revision: https://reviews.llvm.org/D98900
Christian Sigg [Fri, 19 Mar 2021 08:27:55 +0000 (09:27 +0100)]
[mlir] Remove ConvertKernelFuncToBlob
All users have been converted to gpu::SerializeToBlobPass.
Reviewed By: ftynse
Differential Revision: https://reviews.llvm.org/D98928
Mikael Holmen [Fri, 19 Mar 2021 08:26:14 +0000 (09:26 +0100)]
[NVPTX] Fix warning, remove extra ";" [NFC]
gcc complained with
../lib/Target/NVPTX/NVPTXLowerArgs.cpp:203:2: warning: extra ';' [-Wpedantic]
203 | };
| ^
Clement Courbet [Fri, 19 Mar 2021 07:47:28 +0000 (08:47 +0100)]
[InstCombine] Add unit test with @llvm.annotation.
In preparation for https://reviews.llvm.org/D98925
Martin Storsjö [Thu, 18 Mar 2021 12:08:10 +0000 (14:08 +0200)]
[lit] Pass the USERPROFILE variable through on Windows
When running in a Windows Container, the Git for Windows Unix tools
(C:\Program Files\Git\usr\bin) just hang if this variable isn't
passed through.
Currently, running the LLVM/clang tests in a Windows Container fails
if that directory is added to the path, but succeeds after this change.
(After this change, the previously used GnuWin tools can be left out
entirely, too, as lit automatically picks up the Git for Windows tools
if necessary.)
Differential Revision: https://reviews.llvm.org/D98858
Martin Storsjö [Tue, 16 Mar 2021 11:19:11 +0000 (13:19 +0200)]
[libcxx] [test] Explicitly check that some env vars are ignored in the temp_dir_path test
This was suggested in the review of D98139.
Differential Revision: https://reviews.llvm.org/D98696
Martin Storsjö [Thu, 18 Mar 2021 07:44:01 +0000 (09:44 +0200)]
[lit] Handle plain negations directly in the internal shell
Keep running "not --crash" via the external "not" executable, but
for plain negations, and for cases that use the shell "!" operator,
just skip that argument and invert the return code.
The libcxx tests only use the shell operator "!" for negations,
never the "not" executable, because libcxx tests can be run without
having a fully built llvm tree available providing the "not"
executable.
This allows using the internal shell for libcxx tests.
Differential Revision: https://reviews.llvm.org/D98859
Max Kazantsev [Fri, 19 Mar 2021 07:25:08 +0000 (14:25 +0700)]
[Test] Precommit one more test
Christian Sigg [Fri, 19 Mar 2021 07:22:50 +0000 (00:22 -0700)]
[mlir] Remove mlir-rocm-runner
This change combines for ROCm what was done for CUDA in D97463, D98203, D98360, and D98396.
I did not try to compile SerializeToHsaco.cpp or test mlir/test/Integration/GPU/ROCM because I don't have an AMD card. I fixed the things that had obvious bit-rot though.
Reviewed By: whchung
Differential Revision: https://reviews.llvm.org/D98447
Max Kazantsev [Fri, 19 Mar 2021 07:17:35 +0000 (14:17 +0700)]
[Test] Precommit test
Max Kazantsev [Fri, 19 Mar 2021 07:03:31 +0000 (14:03 +0700)]
[NFC] Move function up in code
Max Kazantsev [Fri, 19 Mar 2021 06:07:57 +0000 (13:07 +0700)]
[NFC] Factor out utility function for finding common dom of user set
Petr Hosek [Fri, 19 Mar 2021 06:42:31 +0000 (23:42 -0700)]
Revert "[WoA][MSVC] Use default linker setting in MSVC-compatible driver"
This reverts commit
ace56d41aca8cac7cead9c2c97278aa50fc945b1 which
broke builders that set CLANG_DEFAULT_LINKER.
Fangrui Song [Fri, 19 Mar 2021 06:22:58 +0000 (23:22 -0700)]
[X86] Fix -Wunused-function in -DLLVM_ENABLE_ASSERTIONS=off builds
Andrew Young [Fri, 19 Mar 2021 03:06:02 +0000 (20:06 -0700)]
[mlir] Support use-def cycles in graph regions during regionDCE
When deleting operations in DCE, the algorithm uses a post-order walk of
the IR to ensure that value uses were erased before value defs. Graph
regions do not have the same structural invariants as SSA CFG, and this
post order walk could delete value defs before uses. This problem is
guaranteed to occur when there is a cycle in the use-def graph.
This change stops DCE from visiting the operations and blocks in any
meaningful order. Instead, we rely on explicitly dropping all uses of a
value before deleting it.
Reviewed By: mehdi_amini, rriddle
Differential Revision: https://reviews.llvm.org/D98919
Vladislav Vinogradov [Fri, 19 Mar 2021 05:32:19 +0000 (05:32 +0000)]
[mlir] Fix Python bindings tests failure in Debug mode after D98474
Add extra `type.isa<FloatType>()` check to `FloatAttr::get(Type, double)` method.
Otherwise it tries to call `type.cast<FloatType>()`, which fails with assertion in Debug mode.
The `!type.isa<FloatType>()` case just redirercts the call to `FloatAttr::get(Type, APFloat)`,
which will perform the actual check and emit appropriate error.
Reviewed By: mehdi_amini
Differential Revision: https://reviews.llvm.org/D98764
Max Kazantsev [Fri, 19 Mar 2021 05:00:06 +0000 (12:00 +0700)]
[IndVars] Provide eliminateIVComparison with context
We can prove more predicates when we have a context when eliminating ICmp.
As first (and very obvious) approximation we can use the ICmp instruction itself,
though in the future we are going to use a common dominator of all its users.
Need some refactoring before that.
Observed ~0.5% negative compile time impact.
Differential Revision: https://reviews.llvm.org/D98697
Reviewed By: lebedev.ri
Hongtao Yu [Wed, 17 Mar 2021 18:17:17 +0000 (11:17 -0700)]
[UniqueLinkageName] Use consistent checks when mangling symbo linkage name and debug linkage name.
C functions may be declared and defined in different prototypes like below. This patch unifies the checks for mangling names in symbol linkage name emission and debug linkage name emission so that the two names are consistent.
static int go(int);
static int go(a) int a;
{
return a;
}
Test Plan:
Differential Revision: https://reviews.llvm.org/D98799
Wenlei He [Sat, 20 Feb 2021 06:46:30 +0000 (22:46 -0800)]
[CSSPGO] Add attribute metadata for context profile
This changes adds attribute field for metadata of context profile. Currently we have an inline attribute that indicates whether the leaf frame corresponding to a context profile was inlined in previous build.
This will be used to help estimating inlining and be taken into account when trimming context. Changes for that in llvm-profgen will follow. It will also help tuning.
Differential Revision: https://reviews.llvm.org/D98823
Max Kazantsev [Fri, 19 Mar 2021 04:29:48 +0000 (11:29 +0700)]
[SCEV] Add false->any implication
By definition of Implication operator, `false -> true` and `false -> false`. It means that
`false` implies any predicate, no matter true or false. We don't need to go any further
trying to prove the statement we need and just always say that `false` implies it in this case.
In practice it means that we are trying to prove something guarded by `false` condition,
which means that this code is unreachable, and we can safely prove any fact or perform any
transform in this code.
Differential Revision: https://reviews.llvm.org/D98706
Reviewed By: lebedev.ri
Richard Smith [Fri, 19 Mar 2021 03:06:11 +0000 (20:06 -0700)]
Fix example in documentation.
Richard Smith [Fri, 19 Mar 2021 02:58:21 +0000 (19:58 -0700)]
Improve documentation for the [[clang::lifetimebound]] attribute.
Jim Ingham [Fri, 19 Mar 2021 00:44:17 +0000 (17:44 -0700)]
Don't assume that stepping out of a function will land on the next line.
For instance, some recent clang emits this code on x86_64:
0x100002b99 <+57>: callq 0x100002b40 ; step_out_of_here at main.cpp:11
-> 0x100002b9e <+62>: xorl %eax, %eax
0x100002ba0 <+64>: popq %rbp
0x100002ba1 <+65>: retq
and the "xorl %eax, %eax" is attributed to the same line as the callq. Since
step out is supposed to stop just on returning from the function, you can't guarantee
it will end up on the next line. I changed the test to check that we were either
on the call line or on the next line, since either would be right depending on the
debug information.
Philip Reames [Fri, 19 Mar 2021 00:33:12 +0000 (17:33 -0700)]
Add a couple of missing attribute query methods [NFC]
Thomas Lively [Fri, 19 Mar 2021 00:13:50 +0000 (17:13 -0700)]
[WebAssembly] Remove experimental instructions from wasm_simd128.h
These experimental builtin functions and the feature macro they were gated
behind have been removed.
Reviewed By: aheejin
Differential Revision: https://reviews.llvm.org/D98907
Hsiangkai Wang [Mon, 15 Mar 2021 05:58:11 +0000 (13:58 +0800)]
[RISCV] Spilling for Zvlsseg registers.
For Zvlsseg, we create several tuple register classes. When spilling for
these tuple register classes, we need to iterate NF times to load/store
these tuple registers.
Differential Revision: https://reviews.llvm.org/D98629
Fangrui Song [Thu, 18 Mar 2021 23:46:04 +0000 (16:46 -0700)]
[SanitizerCoverage] Make __start_/__stop_ symbols extern_weak
On ELF, we place the metadata sections (`__sancov_guards`, `__sancov_cntrs`,
`__sancov_bools`, `__sancov_pcs` in section groups (either `comdat any` or
`comdat noduplicates`).
With `--gc-sections`, LLD since D96753 and GNU ld `-z start-stop-gc` may garbage
collect such sections. If all `__sancov_bools` are discarded, LLD will error
`error: undefined hidden symbol: __start___sancov_cntrs` (other sections are similar).
```
% cat a.c
void discarded() {}
% clang -fsanitize-coverage=func,trace-pc-guard -fpic -fvisibility=hidden a.c -shared -fuse-ld=lld -Wl,--gc-sections
...
ld.lld: error: undefined hidden symbol: __start___sancov_guards
>>> referenced by a.c
>>> /tmp/a-456662.o:(sancov.module_ctor_trace_pc_guard)
```
Use the `extern_weak` linkage (lowered to undefined weak symbols) to avoid the
undefined error.
Differential Revision: https://reviews.llvm.org/D98903
Craig Topper [Thu, 18 Mar 2021 23:22:19 +0000 (16:22 -0700)]
[RISCV] Correct the output chain in lowerFixedLengthVectorMaskedLoadToRVV
We returned the input chain instead of the output chain from the
new load. This bypasses the load in the chain. I haven't found a
good way to test this yet. IR order prevents my initial attempts
at causing reordering.
George Balatsouras [Tue, 16 Mar 2021 19:05:15 +0000 (12:05 -0700)]
[dfsan] Add -dfsan-fast-8-labels flag
This is only adding support to the dfsan instrumentation pass but not
to the runtime.
Added more RUN lines for testing: for each instrumentation test that
had a -dfsan-fast-16-labels invocation, a new invocation was added
using fast8.
Reviewed By: stephan.yichao.zhao
Differential Revision: https://reviews.llvm.org/D98734
Rob Suderman [Thu, 18 Mar 2021 23:14:05 +0000 (16:14 -0700)]
[mlir][tosa] Add lowering for tosa.rescale to linalg.generic
This adds a tosa.apply_scale operation that handles the scaling operation
common to quantized operatons. This scalar operation is lowered
in TosaToStandard.
We use a separate ApplyScale factorization as this is a replicable pattern
within TOSA. ApplyScale can be reused within pool/convolution/mul/matmul
for their quantized variants.
Tests are added to both tosa-to-standard and tosa-to-linalg-on-tensors
that verify each pass is correct.
Reviewed By: silvas
Differential Revision: https://reviews.llvm.org/D98753
Jessica Paquette [Thu, 18 Mar 2021 22:34:37 +0000 (15:34 -0700)]
Recommit "[AArch64][GlobalISel] Fold constants into G_GLOBAL_VALUE"
This reverts commit
962b73dd0fc3906980e597f72a35eee7121cc5e2.
This commit was reverted because of some internal SPEC test failures.
It turns out that this wasn't actually relevant to anything in open source, so
it's safe to recommit this.
Rob Suderman [Wed, 17 Mar 2021 20:41:53 +0000 (13:41 -0700)]
[mlir][tosa] Add tosa.concat to subtensor inserts lowering
Includes lowering for tosa.concat with indice computation with subtensor insert
operations. Includes tests along two different indices.
Differential Revision: https://reviews.llvm.org/D98813
Yuanfang Chen [Thu, 18 Mar 2021 22:52:14 +0000 (15:52 -0700)]
Fix test case in
b4a8c0ebb6d4
Craig Topper [Thu, 18 Mar 2021 22:29:52 +0000 (15:29 -0700)]
[DAGCombiner][RISCV] Teach visitMGATHER/MSCATTER to remove gather/scatters with all zeros masks that use SPLAT_VECTOR.
Previously only all zeros BUILD_VECTOR was recognized.
Yuanfang Chen [Thu, 18 Mar 2021 22:32:29 +0000 (15:32 -0700)]
[LTO][MC] Discard non-prevailing defined symbols in module-level assembly
This is the alternative approach to D96931.
In LTO, for each module with inlineasm block, prepend directive ".lto_discard <sym>, <sym>*" to the beginning of the inline
asm. ".lto_discard" is both a module inlineasm block marker and (optionally) provides a list of symbols to be discarded.
In MC while emitting for inlineasm, discard symbol binding & symbol
definitions according to ".lto_disard".
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D98762
Shilei Tian [Thu, 18 Mar 2021 22:25:21 +0000 (18:25 -0400)]
[OpenMP] Fixed a crash in hidden helper thread
It is reported that after enabling hidden helper thread, the program
can hit the assertion `new_gtid < __kmp_threads_capacity` sometimes. The root
cause is explained as follows. Let's say the default `__kmp_threads_capacity` is
`N`. If hidden helper thread is enabled, `__kmp_threads_capacity` will be offset
to `N+8` by default. If the number of threads we need exceeds `N+8`, e.g. via
`num_threads` clause, we need to expand `__kmp_threads`. In
`__kmp_expand_threads`, the expansion starts from `__kmp_threads_capacity`, and
repeatedly doubling it until the new capacity meets the requirement. Let's
assume the new requirement is `Y`. If `Y` happens to meet the constraint
`(N+8)*2^X=Y` where `X` is the number of iterations, the new capacity is not
enough because we have 8 slots for hidden helper threads.
Here is an example.
```
#include <vector>
int main(int argc, char *argv[]) {
constexpr const size_t N = 1344;
std::vector<int> data(N);
#pragma omp parallel for
for (unsigned i = 0; i < N; ++i) {
data[i] = i;
}
#pragma omp parallel for num_threads(N)
for (unsigned i = 0; i < N; ++i) {
data[i] += i;
}
return 0;
}
```
My CPU is 20C40T, then `__kmp_threads_capacity` is 160. After offset,
`__kmp_threads_capacity` becomes 168. `1344 = (160+8)*2^3`, then the assertions
hit.
Reviewed By: protze.joachim
Differential Revision: https://reviews.llvm.org/D98838
Craig Topper [Thu, 18 Mar 2021 20:19:42 +0000 (13:19 -0700)]
[SelectionDAG] Don't pass a scalable vector to MachinePointerInfo::getWithOffset in a unit test.
Suppresses an implicit TypeSize to uint64_t conversion warning.
We might be able to just not offset it since we're writing to a
Fixed stack object, but I wasn't sure so I just did what
DAGTypeLegalizer::IncrementPointer does.
Reviewed By: sdesmalen
Differential Revision: https://reviews.llvm.org/D98736