platform/upstream/llvm.git
3 years ago[X86][AMX] Add test cases for AMX load/store lowering.
Luo, Yuanke [Sun, 21 Mar 2021 02:58:57 +0000 (10:58 +0800)]
[X86][AMX] Add test cases for AMX load/store lowering.

Differential Revision: https://reviews.llvm.org/D99030

3 years ago[Driver] Detect Debian hack g++-multiarch-incdir.diff to simplify addLibStdCXXInclude...
Fangrui Song [Mon, 22 Mar 2021 00:33:30 +0000 (17:33 -0700)]
[Driver] Detect Debian hack g++-multiarch-incdir.diff to simplify addLibStdCXXIncludePaths call sites

3 years ago[test] Add test for cross compiling on Linux
Fangrui Song [Sun, 21 Mar 2021 22:37:35 +0000 (15:37 -0700)]
[test] Add test for cross compiling on Linux

3 years ago[test] Delete obsoleted debian_multiarch_tree and ubuntu_13.04_multiarch_tree
Fangrui Song [Sun, 21 Mar 2021 22:23:49 +0000 (15:23 -0700)]
[test] Delete obsoleted debian_multiarch_tree and ubuntu_13.04_multiarch_tree

They are quite outdated. Delete them to avoid unnecessary test churn.

3 years agoUpdate examples post OwningRewritePatternList change
Jacques Pienaar [Sun, 21 Mar 2021 22:15:34 +0000 (15:15 -0700)]
Update examples post OwningRewritePatternList change

3 years agoRevert "[lld-macho] Implement -dependency_info (partially - more opcodes needed)"
Nico Weber [Sun, 21 Mar 2021 20:35:38 +0000 (16:35 -0400)]
Revert "[lld-macho] Implement -dependency_info (partially - more opcodes needed)"

This reverts commit c53a1322f329e29446c7625da423f58f09ec1a55.
Test only passes depending on build dir having a lexicographically later name
than the source dir, and doesn't link on mac/win. See
https://reviews.llvm.org/D98559#2640265 onward.

3 years ago[clang][Codegen] EmitBranchOnBoolExpr(): emit prof branch counts even at -O0
Roman Lebedev [Sun, 21 Mar 2021 20:22:41 +0000 (23:22 +0300)]
[clang][Codegen] EmitBranchOnBoolExpr(): emit prof branch counts even at -O0

This restores the original behaviour before i unadvertedly broke it in
e3a470162738871bba982416748ae5f5e3572947 and clang/test/Profile/ caught it.

3 years ago[clang][CodeGen] Lower Likelihood attributes to @llvm.expect intrin instead of branch...
Roman Lebedev [Sun, 21 Mar 2021 19:13:47 +0000 (22:13 +0300)]
[clang][CodeGen] Lower Likelihood attributes to @llvm.expect intrin instead of branch weights

08196e0b2e1f8aaa8a854585335c17ba479114df exposed LowerExpectIntrinsic's
internal implementation detail in the form of
LikelyBranchWeight/UnlikelyBranchWeight options to the outside.

While this isn't incorrect from the results viewpoint,
this is suboptimal from the layering viewpoint,
and causes confusion - should transforms also use those weights,
or should they use something else, D98898?

So go back to status quo by making LikelyBranchWeight/UnlikelyBranchWeight
internal again, and fixing all the code that used it directly,
which currently is only clang codegen, thankfully,
to emit proper @llvm.expect intrinsics instead.

3 years agoRevert "[BranchProbability] move options for 'likely' and 'unlikely'"
Roman Lebedev [Sun, 21 Mar 2021 16:55:21 +0000 (19:55 +0300)]
Revert "[BranchProbability] move options for 'likely' and 'unlikely'"

Upon reviewing D98898 i've come to realization that these are
implementation detail of LowerExpectIntrinsicPass,
and they should not be exposed to outside of it.

This reverts commit ee8b53815ddf6f6f94ade0068903cd5ae843fafa.

3 years ago[Driver] Gnu.cpp: fix libstdc++ search path for multilib
Fangrui Song [Sun, 21 Mar 2021 19:01:44 +0000 (12:01 -0700)]
[Driver] Gnu.cpp: fix libstdc++ search path for multilib

With this change, on Debian x86-64 (with a MULTILIB_OSDIRNAMES local patch
../lib64 -> ../lib; this does not matter because /usr/lib64/crt{1,i,n}.o do not exist),
`clang++ --target=aarch64-linux-gnu a.cc -Wl,--dynamic-linker=/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 -Wl,-rpath,/usr/aarch64-linux-gnu/lib`
built executable can run under qemu-user. Previously this failed with
`/usr/lib/gcc-cross/aarch64-linux-gnu/10/../../../../include/c++/10/iostream:38:10: fatal error: 'bits/c++config.h' file not found`

On Arch Linux, due to the MULTILIB_OSDIRNAMES patch and the existence of
/usr/lib64/crt{1,i,n}.o, clang driver may pick
/usr/lib64/crt{1,i,n}.o and cause a linker error. -B can work around the problem.
`clang++ --target=aarch64-linux-gnu -B /usr/aarch64-linux-gnu/lib a.cc -Wl,--dynamic-linker=/usr/aarch64-linux-gnu/lib/ld-linux-aarch64.so.1 -Wl,-rpath,/usr/aarch64-linux-gnu/lib64:/usr/aarch64-linux-gnu/lib`

3 years ago[lld-macho] Implement -dependency_info (partially - more opcodes needed)
Vy Nguyen [Fri, 12 Mar 2021 22:40:37 +0000 (17:40 -0500)]
[lld-macho] Implement -dependency_info (partially - more opcodes needed)

Bug: https://bugs.llvm.org/show_bug.cgi?id=49278
The flag is not well documented, so this implementation is based on observed behaviour.

When specified, `-dependency_info <path>` produced a text file containing information pertaining to the current linkage, such as input files, output file, linker version, etc.

This file's layout is also not documented, but it seems to be a series of null ('\0') terminated strings in the form `<op code><path>`

`<op code>` could be:
   `0x00` : linker version
   `0x10` : input
   `0x11` : files not found(??)
   `0x40` : output

`<path>` : is the file path, except for the linker-version case.

(??) This part is a bit unclear. I think it means all the files the linker attempted to look at, but could not find.

Differential Revision: https://reviews.llvm.org/D98559

3 years ago[DAGCombiner] Minor compile time improvement to (sext_in_reg (sign_extend_vector_inre...
Craig Topper [Sun, 21 Mar 2021 17:44:31 +0000 (10:44 -0700)]
[DAGCombiner] Minor compile time improvement to (sext_in_reg (sign_extend_vector_inreg x)) optimization.

Don't bother calling ComputeNumSignBits if N00Bits < ExtVTBits. No
matter what answer we get back this will be true:
(N00Bits - DAG.ComputeNumSignBits(N00, DemandedSrcElts)) < ExtVTBits)

So we might as well save the computation. This makes the code more
consistent with the similar (sext_in_reg (sext x)) handling above.

3 years ago[ValueTracking] Improve mul handling in isKnownNonEqual()
Nikita Popov [Sun, 21 Mar 2021 17:36:20 +0000 (18:36 +0100)]
[ValueTracking] Improve mul handling in isKnownNonEqual()

X != X * C is true if:
 * C is not 0 or 1
 * X is not 0
 * mul is nsw or nuw

Proof: https://alive2.llvm.org/ce/z/uwF29z

This is motivated by one of the cases in D98422.

3 years ago[ValueTracking] Add more tests for isKnownNonEqual() of mul (NFC)
Nikita Popov [Sun, 21 Mar 2021 17:14:43 +0000 (18:14 +0100)]
[ValueTracking] Add more tests for isKnownNonEqual() of mul (NFC)

This is for the case of (x * C) == x, rather than the
(x * C1) == (x * C2) variant that we already cover.

3 years agoRemove the extraneous MLIRContext argument from populateWithGenerated. NFC.
Chris Lattner [Sun, 21 Mar 2021 17:38:35 +0000 (10:38 -0700)]
Remove the extraneous MLIRContext argument from populateWithGenerated.  NFC.

3 years agoMIR: Fix missing serialization for HasTailCall
Matt Arsenault [Sun, 21 Mar 2021 16:00:55 +0000 (12:00 -0400)]
MIR: Fix missing serialization for HasTailCall

3 years agoAMDGPU: Fix allowing immediates for tail call pseudo.
Matt Arsenault [Sun, 14 Mar 2021 20:59:34 +0000 (16:59 -0400)]
AMDGPU: Fix allowing immediates for tail call pseudo.

The pseudo was using SSrc_b64, so it allowed folding immediates into
the destination operand for a tail call to null. However, this is not
a valid operand for the s_setpc_b64 this will be lowered to. Avoids
printing the operand as an invalid immediate.

Avoids a regression when tail calls are enabled in GlobalISel (somehow
tail calls to null get deleted in the DAG).

3 years ago[ShapeDialect] Silence a build warning, NFC
Chris Lattner [Sun, 21 Mar 2021 17:10:38 +0000 (10:10 -0700)]
[ShapeDialect] Silence a build warning, NFC

mlir/lib/Dialect/Shape/IR/Shape.cpp:573:26: warning: loop variable 'shape' is always a copy because the range of type '::mlir::Operation::operand_range' (aka 'mlir::OperandRange') does not return a reference [-Wrange-loop-analysis]
        for (const auto &shape : shapes()) {
                         ^

3 years agoChange OwningRewritePatternList to carry an MLIRContext with it.
Chris Lattner [Sat, 20 Mar 2021 23:29:41 +0000 (16:29 -0700)]
Change OwningRewritePatternList to carry an MLIRContext with it.

This updates the codebase to pass the context when creating an instance of
OwningRewritePatternList, and starts removing extraneous MLIRContext
parameters.  There are many many more to be removed.

Differential Revision: https://reviews.llvm.org/D99028

3 years agoReapply [ConstantFold] Handle vectors in ConstantFoldLoadThroughBitcast()
Nikita Popov [Sat, 6 Mar 2021 11:14:48 +0000 (12:14 +0100)]
Reapply [ConstantFold] Handle vectors in ConstantFoldLoadThroughBitcast()

There seems to be an impedance mismatch between what the type
system considers an aggregate (structs and arrays) and what
constants consider an aggregate (structs, arrays and vectors).

Adjust the type check to consider vectors as well. The previous
version of the patch dropped the type check entirely, but it
turns out that getAggregateElement() does require the constant
to be an aggregate in some edge cases: For Poison/Undef the
getNumElements() API is called, without checking in advance that
we're dealing with an aggregate. Possibly the implementation should
avoid doing that, but for now I'm adding an assert so the next
person doesn't fall into this trap.

3 years ago[InstSimplify] Add load of undef aggregate test (NFC)
Nikita Popov [Sun, 21 Mar 2021 16:40:17 +0000 (17:40 +0100)]
[InstSimplify] Add load of undef aggregate test (NFC)

To make sure this doesn't crash the following commit.

3 years ago[InstSimplify] Regenerate test checks (NFC)
Nikita Popov [Sun, 21 Mar 2021 16:32:14 +0000 (17:32 +0100)]
[InstSimplify] Regenerate test checks (NFC)

3 years ago[InstSimplify] Add additional select operand replacement tests (NFC)
Nikita Popov [Sun, 21 Mar 2021 12:45:23 +0000 (13:45 +0100)]
[InstSimplify] Add additional select operand replacement tests (NFC)

This tests for binops with identity elements.

3 years ago[InstSimplify] Clean up SimplifyReplacedWithOp implementation (NFCI)
Nikita Popov [Sun, 21 Mar 2021 12:32:24 +0000 (13:32 +0100)]
[InstSimplify] Clean up SimplifyReplacedWithOp implementation (NFCI)

Replace Op with RepOp up-front, and then always work with the new
operands, rather than checking for replacement in various places.

3 years agoGlobalISel: Avoid unnecessary truncation to i64
Matt Arsenault [Sat, 20 Mar 2021 17:42:17 +0000 (13:42 -0400)]
GlobalISel: Avoid unnecessary truncation to i64

We can just directly pass through the APInt to create a new constant.

3 years agoAMDGPU/GlobalISel: Enable CSE in pre-legalizer combiner
Matt Arsenault [Sat, 20 Mar 2021 16:53:58 +0000 (12:53 -0400)]
AMDGPU/GlobalISel: Enable CSE in pre-legalizer combiner

3 years ago[DAG] Limit (sext_in_reg (zero_extend_vector_inreg x)) to exact sign extension
Simon Pilgrim [Sun, 21 Mar 2021 14:00:59 +0000 (14:00 +0000)]
[DAG] Limit (sext_in_reg (zero_extend_vector_inreg x)) to exact sign extension

As commented by @craig.topper on rG1ba5c550d418, we can't guarantee that we'll be extending zero bits, just sign bit. So, revert to the old code for zero_extend_vector_inreg cases.

3 years ago[lld-macho][nfc] Format Options.td
Jez Ng [Sun, 21 Mar 2021 05:10:04 +0000 (01:10 -0400)]
[lld-macho][nfc] Format Options.td

Summary: A good chunk of it was mis-indented. Fixed by using the
formatting settings from llvm/utils/vim.

3 years ago[X86][AVX] ComputeNumSignBitsForTargetNode - add X86ISD::VBROADCAST handling for...
Simon Pilgrim [Sun, 21 Mar 2021 12:22:51 +0000 (12:22 +0000)]
[X86][AVX] ComputeNumSignBitsForTargetNode - add X86ISD::VBROADCAST handling for scalar sources

The target shuffle code handles vector sources, but X86ISD::VBROADCAST can also accept a scalar source for splatting.

Added as an extension to PR49658

3 years ago[X86] Add 'mulhs' variant of PR49658 test case
Simon Pilgrim [Sun, 21 Mar 2021 12:08:53 +0000 (12:08 +0000)]
[X86] Add 'mulhs' variant of PR49658 test case

3 years ago[ARM] VINS f16 pattern
David Green [Sun, 21 Mar 2021 12:00:06 +0000 (12:00 +0000)]
[ARM] VINS f16 pattern

This adds an extra pattern for inserting an f16 into a odd vector lane
via an VINS. If the dual-insert-lane pattern does not happen to apply,
this can help with some simple cases.

Differential Revision: https://reviews.llvm.org/D95471

3 years ago[RISCV] remove redundant instruction when eliminate frame index
luxufan [Fri, 19 Mar 2021 09:02:28 +0000 (17:02 +0800)]
[RISCV] remove redundant instruction when eliminate frame index

The reason for generating mv a0, a0 instruction is when the stack object offset is large then int<12>. To deal this situation, in the elimintateFrameIndex function, it will
create a virtual register, which needs the register scavenger to scavenge it. If the machine instruction that contains the stack object and the opcode is ADDI(the addi
was generated by frameindexNode), and then this instruction's destination register was the same as the register that was generated by the register scavenger, then the
mv a0, a0 was generated. So to eliminnate this instruction, in the eliminateFrameIndex function, if the instrution opcode is ADDI, then the virtual register can't be created.

Differential Revision: https://reviews.llvm.org/D92479

3 years ago[X86][AVX] computeKnownBitsForTargetNode - add X86ISD::VBROADCAST handling for scalar...
Simon Pilgrim [Sun, 21 Mar 2021 10:40:57 +0000 (10:40 +0000)]
[X86][AVX] computeKnownBitsForTargetNode - add X86ISD::VBROADCAST handling for scalar sources

The target shuffle code handles vector sources, but X86ISD::VBROADCAST can also accept a scalar source for splatting.

Suggested by @craig.topper on PR49658

3 years ago[X86] Add PR49658 test case
Simon Pilgrim [Sun, 21 Mar 2021 10:16:55 +0000 (10:16 +0000)]
[X86] Add PR49658 test case

3 years ago[X86] computeKnownBitsForTargetNode - add X86ISD::PMULUDQ handling
Simon Pilgrim [Sun, 21 Mar 2021 09:57:20 +0000 (09:57 +0000)]
[X86] computeKnownBitsForTargetNode - add X86ISD::PMULUDQ handling

Reuse the existing KnownBits multiplication code to handle what is effectively a ISD::UMUL_LOHI varient

3 years ago[Driver] Linux.cpp: add -internal-isystem lib/../$triple/include
Fangrui Song [Sun, 21 Mar 2021 07:56:03 +0000 (00:56 -0700)]
[Driver] Linux.cpp: add -internal-isystem lib/../$triple/include

With this change, for `#include <ar.h>`, `clang --target=aarch64-linux-gnu`
will read `/usr/lib/gcc/aarch64-linux-gnu/10/../../../../aarch64-linux-gnu/include/ar.h`
(on Debian gcc->gcc-cross)
instead of `/usr/include/ar.h`. Some glibc headers (e.g. gnu/stubs.h) are different across architectures.

3 years ago[Driver] Gnu.cpp: drop an unneeded special rule related to sysroot
Fangrui Song [Sun, 21 Mar 2021 04:37:49 +0000 (21:37 -0700)]
[Driver] Gnu.cpp: drop an unneeded special rule related to sysroot

3 years ago[Driver] Gnu.cpp: drop an unneeded special rule related to sysroot
Fangrui Song [Sun, 21 Mar 2021 04:32:55 +0000 (21:32 -0700)]
[Driver] Gnu.cpp: drop an unneeded special rule related to sysroot

Seem unnecessary to diverge from GCC here.
Beside, lib/../$OSLibDir can be considered closer to the GCC
installation then the system root. The comment should not apply.

3 years ago[Driver] Gnu.cpp: remove unneeded -L detection hack for -mx32
Fangrui Song [Sun, 21 Mar 2021 03:12:45 +0000 (20:12 -0700)]
[Driver] Gnu.cpp: remove unneeded -L detection hack for -mx32

Removing the hack actually improves our compatibility with gcc -mx32.

3 years ago[Driver] Gnu.cpp: remove unneeded -L detection for libc++
Fangrui Song [Sun, 21 Mar 2021 01:56:40 +0000 (18:56 -0700)]
[Driver] Gnu.cpp: remove unneeded -L detection for libc++

If clang is installed in the system, the other -L suffice;
otherwise $ccc_install_dir/../lib below suffices.

3 years ago[Driver] Gnu.cpp: remove unneeded -L lib/gcc/$triple/$version/../../../$triple
Fangrui Song [Sun, 21 Mar 2021 01:50:14 +0000 (18:50 -0700)]
[Driver] Gnu.cpp: remove unneeded -L lib/gcc/$triple/$version/../../../$triple

After path resolution, it duplicates a subsequent -L entry. The entry below
(lib/gcc/$triple/$version/../../../../$OSLibDir) usually does not exist (e.g.
Arch Linux; Debian cross gcc). When it exists, it typically just has ld.so (e.g.
Debian native gcc) which cannot cause collision. Removing the -L (similar to
reordering it) is therefore justified.

3 years ago[RISCV] Add test case to show a case where (mul (and X, 0xffffffff), (and Y, 0xffffff...
Craig Topper [Sun, 21 Mar 2021 00:43:30 +0000 (17:43 -0700)]
[RISCV] Add test case to show a case where (mul (and X, 0xffffffff), (and Y, 0xffffffff)) optimization does not improve code.

If the mul add two users, one of which was a sext.w, the mul
would also be selected to a MULW before our pattern runs. This
causes the ANDs to now be used by the already selected MULW and
the mul we still need to select. They are unneeded on the MULW
since MULW only reads the lower bits. So they get selected to
SLLI+SRLI for the MULW use. The use for the
(mul (and X, 0xffffffff), (and Y, 0xffffffff)) manages to reuse
the SLLI.

The end result is increased register pressure and no improvement
to how soon we can start the MULW.

3 years ago[Canonicalizer] Process regions top-down instead of bottom up & reuse existing constants.
Chris Lattner [Sat, 20 Mar 2021 04:22:15 +0000 (21:22 -0700)]
[Canonicalizer] Process regions top-down instead of bottom up & reuse existing constants.

This reapplies b5d9a3c / https://reviews.llvm.org/D98609 with a one line fix in
processExistingConstants to skip() when erasing a constant we've already seen.

Original commit message:

 1) Change the canonicalizer to walk the function in top-down order instead of
    bottom-up order.  This composes well with the "top down" nature of constant
    folding and simplification, reducing iterations and re-evaluation of ops in
    simple cases.
 2) Explicitly enter existing constants into the OperationFolder table before
    canonicalizing.  Previously we would "constant fold" them and rematerialize
    them, wastefully recreating a bunch fo constants, which lead to pointless
    memory traffic.

Both changes together provide a 33% speedup for canonicalize on some mid-size
CIRCT examples.

One artifact of this change is that the constants generated in normal pattern
application get inserted at the top of the function as the patterns are applied.
Because of this, we get "inverted" constants more often, which is an aethetic
change to the IR but does permute some testcases.

Differential Revision: https://reviews.llvm.org/D99006

3 years agoRevert "[IRSim] Adding basic implementation of llvm-sim."
Andrew Litteken [Sat, 20 Mar 2021 23:03:02 +0000 (18:03 -0500)]
Revert "[IRSim] Adding basic implementation of llvm-sim."

Causing build errors on the Windows Buildbots.

This reverts commit 5155dff2784a47583d432d796b7cf47a0bed9f20.

3 years ago[RISCV] Update comment in RISCVInstrInfoM.td
Jessica Clarke [Sat, 20 Mar 2021 22:35:40 +0000 (22:35 +0000)]
[RISCV] Update comment in RISCVInstrInfoM.td

Missed in 07ed62b7d551.

3 years ago[RISCV] Disable (mul (and X, 0xffffffff), (and Y, 0xffffffff)) optimization when...
Craig Topper [Sat, 20 Mar 2021 22:14:46 +0000 (15:14 -0700)]
[RISCV] Disable (mul (and X, 0xffffffff), (and Y, 0xffffffff)) optimization when Zba is enabled.

This optimization is trying to save SRLI instructions needed to
implement the ANDs. If we have zext.w we won't save anything.
Because we don't check that the multiply is the only user of the
AND we might even increase instruction count.

3 years ago[RISCV] Add Zba command lines to xaluo.ll. NFC
Craig Topper [Sat, 20 Mar 2021 22:09:15 +0000 (15:09 -0700)]
[RISCV] Add Zba command lines to xaluo.ll. NFC

Some of the patterns end up with 32 to 64 bit zero extends on RV64
which can be handled by zext.w.

3 years ago[test] Delete "-internal-isystem" "/usr/local/include"
Fangrui Song [Sat, 20 Mar 2021 22:24:02 +0000 (15:24 -0700)]
[test] Delete "-internal-isystem" "/usr/local/include"

3 years ago[RISCV] Add isel pattern to optimize (mul (and X, 0xffffffff), (and Y, 0xffffffff...
Craig Topper [Sat, 20 Mar 2021 19:34:06 +0000 (12:34 -0700)]
[RISCV] Add isel pattern to optimize (mul (and X, 0xffffffff), (and Y, 0xffffffff)) on RV64

This patterns computes the full 64 bit product of a 32x32 unsigned
multiply. This requires a two pairs of SLLI+SRLI to zero the
upper 32 bits of the inputs.

We can do better than this by using two SLLI to move the lower
bits to the upper bits then use MULHU to compute the product. This
is the high half of a full 64x64 product. Since we put 32 0s in the lower
bits of the inputs we know the 128-bit product will have zeros in the
lower 64 bits. So the upper 64 bits, which MULHU computes, will contain
the original 64 bit product we were after.

The same trick would work for (mul (sext_inreg X, i32), (sext_inreg Y, i32))
using MULHS, but sext_inreg is sext.w which is already one instruction so we
wouldn't save anything.

Differential Revision: https://reviews.llvm.org/D99026

3 years ago[IRSim] Adding basic implementation of llvm-sim.
Andrew Litteken [Thu, 17 Sep 2020 20:43:40 +0000 (15:43 -0500)]
[IRSim] Adding basic implementation of llvm-sim.

This is a similarity visualization tool that accepts a Module and
passes it to the IRSimilarityIdentifier.  The resulting SimilarityGroups
are output in a JSON file.

Tests are found in test/tools/llvm-sim and check for the file not found,
a bad module, and that the JSON is created correctly.

Reviewers: paquette, jroelofs, MaskRay

Recommit of: 15645d044bcfe2a0f63156048b302f997a717688 to fix linking
errors.

Differential Revision: https://reviews.llvm.org/D86974

3 years ago[AIX] Update rpath for BUILD_SHARED_LIBS
Jinsong Ji [Sat, 20 Mar 2021 03:48:48 +0000 (03:48 +0000)]
[AIX] Update rpath for BUILD_SHARED_LIBS

BUILD_SHARED_LIBS build llvm component as shared library,
which can reduce the size a lot.

Normally, the binary use ORIGIN../lib to load component libraries,
unfortunatly, ORIGIN is not supported by AIX ld.

We hardcoded the build lib and install lib path in rpath for now
to enable BUILD_SHARED_LIBS build.

Understand that this is not perfect solution,
we can update this when we find better solution.

Reviewed By: hubert.reinterpretcast

Differential Revision: https://reviews.llvm.org/D98901

3 years ago[test] Fix Driver/gcc-toolchain.cpp if CLANG_DEFAULT_RTLIB is compiler-rt
Fangrui Song [Sat, 20 Mar 2021 20:24:49 +0000 (13:24 -0700)]
[test] Fix Driver/gcc-toolchain.cpp if CLANG_DEFAULT_RTLIB is compiler-rt

3 years ago[BranchProbability] move options for 'likely' and 'unlikely'
Sanjay Patel [Sat, 20 Mar 2021 18:45:56 +0000 (14:45 -0400)]
[BranchProbability] move options for 'likely' and 'unlikely'

This makes the settings available for use in other passes by housing
them within the Support lib, but NFC otherwise.

See D98898 for the proposed usage in SimplifyCFG
(where this change was originally included).

Differential Revision: https://reviews.llvm.org/D98945

3 years ago[lld-macho] Minor touch-up to objc.s
Jez Ng [Sat, 20 Mar 2021 05:03:50 +0000 (01:03 -0400)]
[lld-macho] Minor touch-up to objc.s

3 years ago[AST] Ensure that an empty json file is generated if compile errors
Stephen Kelly [Wed, 17 Mar 2021 23:22:31 +0000 (23:22 +0000)]
[AST] Ensure that an empty json file is generated if compile errors

Differential Revision: https://reviews.llvm.org/D98827

3 years ago[test] Fix Driver/gcc-toolchain.cpp if CLANG_DEFAULT_CXX_STDLIB is libc++
Fangrui Song [Sat, 20 Mar 2021 18:06:44 +0000 (11:06 -0700)]
[test] Fix Driver/gcc-toolchain.cpp if CLANG_DEFAULT_CXX_STDLIB is libc++

3 years ago[VE] Fix types of multiclass template arguments in TableGen files
Fangrui Song [Sat, 20 Mar 2021 17:36:51 +0000 (10:36 -0700)]
[VE] Fix types of multiclass template arguments in TableGen files

There were not properly checked before `[TableGen] Improve handling of template arguments`.

3 years agoRevert "Revert "[Driver] Drop obsoleted Ubuntu 11.04 gcc detection""
Fangrui Song [Sat, 20 Mar 2021 16:57:05 +0000 (09:57 -0700)]
Revert "Revert "[Driver] Drop obsoleted Ubuntu 11.04 gcc detection""

This reverts commit 243333ef3ec6c1e3910eb442177c2e2e927e6a87.

3 years ago[OCaml] Add (get/set)_module_identifer functions
Vaivaswatha Nagaraj [Fri, 19 Mar 2021 14:05:13 +0000 (19:35 +0530)]
[OCaml] Add (get/set)_module_identifer functions

Also:

- Fix a bug that crept in when fixing a buildbot failure in
https://github.com/llvm/llvm-project/commit/f7be9db6220cb39f0eaa12d2af3abedf0d86c303
- Use mlsize_t for cstr_to_string as that is what
caml_alloc_string specifies.

Differential Revision: https://reviews.llvm.org/D98851

3 years ago[lit] Sort testing summary output
David Zarzycki [Sat, 20 Mar 2021 11:52:08 +0000 (07:52 -0400)]
[lit] Sort testing summary output

As fallout from from the record-and-reorder work, people asked that the
summary output be sorted to aid diffing.

3 years agoRevert "[Driver] Drop obsoleted Ubuntu 11.04 gcc detection"
David Zarzycki [Sat, 20 Mar 2021 11:29:01 +0000 (07:29 -0400)]
Revert "[Driver] Drop obsoleted Ubuntu 11.04 gcc detection"

This reverts commit bdf39e6b0ed4b41a1842ac0193f30a726f8d9f63.

The change is failing on Fedora 33 (x86-64).

3 years ago[clang-tidy] Fix bugprone-terminating-continue when continue appears inside a switch
Nathan James [Sat, 20 Mar 2021 10:59:36 +0000 (10:59 +0000)]
[clang-tidy] Fix bugprone-terminating-continue when continue appears inside a switch

Don't emit a warning if the `continue` appears in a switch context as changing it to `break` will break out of the switch rather than a do loop containing the switch.
Fixes https://llvm.org/PR49492.

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D98338

3 years ago[mlir] Additional folding for SelectOp
Butygin [Fri, 12 Mar 2021 14:39:43 +0000 (17:39 +0300)]
[mlir] Additional folding for SelectOp

* Fold SelectOp when both true and false args are same SSA value
* Fold some cmp + select patterns

Differential Revision: https://reviews.llvm.org/D98576

3 years agoRevert of D49126 [PredicateInfo] Use custom mangling to support ssa_copy with unnamed...
Jeroen Dobbelaere [Sat, 20 Mar 2021 10:37:09 +0000 (11:37 +0100)]
Revert of D49126 [PredicateInfo] Use custom mangling to support ssa_copy with unnamed types.

Now that intrinsic name mangling can cope with unnamed types, the custom name mangling in PredicateInfo (introduced by D49126) can be removed.
(See D91250, D48541)

Reviewed By: fhahn

Differential Revision: https://reviews.llvm.org/D91661

3 years ago[X86] Fix a bug when calculating the ldtilecfg insertion points.
Wang, Pengfei [Sat, 20 Mar 2021 04:55:46 +0000 (12:55 +0800)]
[X86] Fix a bug when calculating the ldtilecfg insertion points.

The BB we initialized the ldtilecfg is special. We don't need to check
if its predecessor BBs need to insert ldtilecfg for calls.

We reused the flag HasCallBeforeAMX, so that the predecessors won't be
added to CfgNeedInsert.

This case happens only when the entry BB is in a loop. We need to hoist
the first tile config point out of the loop in future.

Reviewed By: LuoYuanke

Differential Revision: https://reviews.llvm.org/D98845

3 years ago[mlir] Canonicalize IfOp with trivial `then` and `else` bodies to list of SelectOp's
Butygin [Fri, 12 Mar 2021 14:39:43 +0000 (17:39 +0300)]
[mlir] Canonicalize IfOp with trivial `then` and `else` bodies to list of SelectOp's

* Do we need a threshold on maximum number of Yeild arguments processed (maximum number of SelectOp's to be generated)?
* Had to modify some old IfOp tests to not get optimized by this pattern

Differential Revision: https://reviews.llvm.org/D98592

3 years ago[CFLGraph] Fix a crash due to missing handling of freeze
Juneyoung Lee [Sat, 20 Mar 2021 17:14:06 +0000 (02:14 +0900)]
[CFLGraph] Fix a crash due to missing handling of freeze

https://reviews.llvm.org/D85534#2636321

3 years ago[Driver][test] Fix gcc-toolchain.cpp on non-x86_64
Fangrui Song [Sat, 20 Mar 2021 06:50:22 +0000 (23:50 -0700)]
[Driver][test] Fix gcc-toolchain.cpp on non-x86_64

3 years agoTitle: Remove a redundant parameter in clang/unittests/AST/CMakeLists.txt Reviewed...
joker881 [Sat, 20 Mar 2021 04:37:30 +0000 (12:37 +0800)]
Title: Remove a redundant parameter in clang/unittests/AST/CMakeLists.txt Reviewed by: MaskRay Differential Revision: https://reviews.llvm.org/D98922

3 years ago[Driver] Drop obsoleted Ubuntu 11.04 gcc detection
Fangrui Song [Sat, 20 Mar 2021 06:23:28 +0000 (23:23 -0700)]
[Driver] Drop obsoleted Ubuntu 11.04 gcc detection

It has a very broken gcc installation path (usr/lib/i386-linux-gnu/gcc/i686-linux-gnu).

3 years ago[Driver] Delete toplevel i386-gnu/gcc detection in favor of i386-gnu alias triple...
Fangrui Song [Sat, 20 Mar 2021 05:50:35 +0000 (22:50 -0700)]
[Driver] Delete toplevel i386-gnu/gcc detection in favor of i386-gnu alias triple detection

This is used by hurd.c (usr/lib/gcc/i386-gnu/4.6.0) but we can leverage
the existing alias triple detection.

3 years ago[Driver] Drop unneeded $triple/gcc/$triple detection
Fangrui Song [Sat, 20 Mar 2021 05:45:50 +0000 (22:45 -0700)]
[Driver] Drop unneeded $triple/gcc/$triple detection

3 years ago[NFC][ValueTypes] Align code by column
Shao-Ce Sun [Sat, 20 Mar 2021 05:43:07 +0000 (13:43 +0800)]
[NFC][ValueTypes] Align code by column

Adjusted some whitespaces.

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D98975

3 years ago[mlir][tosa] Add tosa.reverse lowering to linalg.generic
Rob Suderman [Sat, 20 Mar 2021 00:47:39 +0000 (17:47 -0700)]
[mlir][tosa] Add tosa.reverse lowering to linalg.generic

Reverse lowers to a linalg.generic op by reversing the read order
in the index map.

Differential Revision: https://reviews.llvm.org/D98997

3 years ago[AMDGPU] Add MDT update missing from D98915
Carl Ritson [Sat, 20 Mar 2021 04:38:26 +0000 (13:38 +0900)]
[AMDGPU] Add MDT update missing from D98915

3 years ago[libc] Use add_library in add_entrypoint_library instead of invoking ar.
Siva Chandra [Sat, 20 Mar 2021 04:12:33 +0000 (04:12 +0000)]
[libc] Use add_library in add_entrypoint_library instead of invoking ar.

3 years agoUpdate syntax for amx.tile_muli to use two Unit attr to mark the zext case
Mehdi Amini [Sat, 20 Mar 2021 01:23:12 +0000 (01:23 +0000)]
Update syntax for amx.tile_muli to use two Unit attr to mark the zext case

This makes the annotation tied to the operand and the use of a keyword
more explicit/readable on what it means.

Differential Revision: https://reviews.llvm.org/D99001

3 years ago[PowerPC][NFC] Do not produce i64 constants in 32-bit mode
Nemanja Ivanovic [Sat, 20 Mar 2021 03:52:40 +0000 (22:52 -0500)]
[PowerPC][NFC] Do not produce i64 constants in 32-bit mode

There are some instances where we produce constants of type MVT::i64
unconditionally in the target DAG combines. This is not actually
valid in 32-bit mode.

3 years ago[RISCV] Rename WriteShift/ReadShift scheduler classes to WriteShiftImm/ReadShiftImm...
Craig Topper [Sat, 20 Mar 2021 03:39:48 +0000 (20:39 -0700)]
[RISCV] Rename WriteShift/ReadShift scheduler classes to WriteShiftImm/ReadShiftImm. Move variable shifts from WriteIALU/ReadIALU to new WriteShiftReg/ReadShiftReg.

Previously only immediate shifts were in WriteShift. Register
shifts were grouped with IALU. Seems likely that immediate shifts
would be as fast or faster than register shifts. And that immediate
shifts wouldn't be any faster than IALU. So if any deserved to be in
their own group it should be register shifts not immediate shifts.

Rather than try to flip them let's just add more granularity
and give each kind their own class. I've used new names for both to
make them unambiguous and to force any downstream implementations to
be forced to put correct information in their scheduler models.

Reviewed By: evandro

Differential Revision: https://reviews.llvm.org/D98911

3 years ago[Driver] Stop searching other prefixes once a GCC installation is found in one prefix
Fangrui Song [Sat, 20 Mar 2021 03:35:59 +0000 (20:35 -0700)]
[Driver] Stop searching other prefixes once a GCC installation is found in one prefix

so that when --sysroot is specified, the detected GCC installation will not be
overridden by another from /usr which happens to have a larger version.

This behavior is particularly inconvenient when the system has a larger version
GCC while the user wants to try out an older sysroot.

Delete some tests from linux-ld.c which overlap with cross-linux.c

3 years ago[AMDGPU] Rename SIInsertSkips Pass
Carl Ritson [Sat, 20 Mar 2021 02:27:52 +0000 (11:27 +0900)]
[AMDGPU] Rename SIInsertSkips Pass

Pass no longer handles skips.  Pass now removes unnecessary
unconditional branches and lowers early termination branches.
Hence rename to SILateBranchLowering.

Move code to handle returns to epilog from SIPreEmitPeephole
into SILateBranchLowering. This means SIPreEmitPeephole only
contains optional optimisations, and all required transforms
are in SILateBranchLowering.

Reviewed By: arsenm

Differential Revision: https://reviews.llvm.org/D98915

3 years ago[AMDGPU] Merge SIRemoveShortExecBranches into SIPreEmitPeephole
Carl Ritson [Sat, 20 Mar 2021 01:29:08 +0000 (10:29 +0900)]
[AMDGPU] Merge SIRemoveShortExecBranches into SIPreEmitPeephole

SIRemoveShortExecBranches is an optimisation so fits well in the
context of SIPreEmitPeephole.

Test changes relate to early termination from kills which have now
been lowered prior to considering branches for removal.
As these use s_cbranch the execz skips are now retained instead.
Currently either behaviour is valid as kill with EXEC=0 is a nop;
however, if early termination is used differently in future then
the new behaviour is the correct one.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D98917

3 years ago[llvm-jitlink] Scan input files for first object to determine triple.
Lang Hames [Sat, 20 Mar 2021 02:13:50 +0000 (19:13 -0700)]
[llvm-jitlink] Scan input files for first object to determine triple.

The previous logic would crash if the first input file was an archive rather
than an object.

3 years ago[Utils][vim] Highlight `poison` keyword
Senran Zhang [Sat, 20 Mar 2021 02:09:11 +0000 (19:09 -0700)]
[Utils][vim] Highlight `poison` keyword

Reviewed By: awarzynski, MaskRay

Differential Revision: https://reviews.llvm.org/D98927

3 years ago[mlir][python] Adapt to `segment_sizes` attribute type change.
Stella Laurenzo [Sat, 20 Mar 2021 01:44:51 +0000 (18:44 -0700)]
[mlir][python] Adapt to `segment_sizes` attribute type change.

* Broken by https://reviews.llvm.org/rG1a75be0023cd80fd8560d689999a63d4368c90e6

3 years ago[JITLink] Remove redundant local variable definitions from a unit test.
Lang Hames [Sat, 20 Mar 2021 00:31:29 +0000 (17:31 -0700)]
[JITLink] Remove redundant local variable definitions from a unit test.

3 years ago[mlir][python] Function decorator for capturing a FuncOp from a python function.
Stella Laurenzo [Fri, 19 Mar 2021 22:43:42 +0000 (15:43 -0700)]
[mlir][python] Function decorator for capturing a FuncOp from a python function.

* Moves this out of a test case where it was being developed to good effect and generalizes it.
* Having tried a number of things like this, I think this balances concerns reasonably well.

Differential Revision: https://reviews.llvm.org/D98989

3 years ago[AMDGPU] Allow index optimisation in SIPreEmitPeephole for bundles
Carl Ritson [Sat, 20 Mar 2021 01:03:26 +0000 (10:03 +0900)]
[AMDGPU] Allow index optimisation in SIPreEmitPeephole for bundles

Add code so duplication index register changes can be removed from
inside bundles.

Reviewed By: rampitec, foad

Differential Revision: https://reviews.llvm.org/D98940

3 years ago[NFC] [PowerPC] Determine Endianness in PPCTargetMachine
Anshil Gandhi [Sat, 20 Mar 2021 00:59:45 +0000 (19:59 -0500)]
[NFC] [PowerPC] Determine Endianness in PPCTargetMachine

The TargetMachine uses the triple to determine endianness. Just
use that logic rather than replicating it in PPCSubtarget.

Differential revision: https://reviews.llvm.org/D98674

3 years ago[mlir][docs] Remove the BuiltinDialect documentation from langref and generate it...
River Riddle [Sat, 20 Mar 2021 01:19:16 +0000 (18:19 -0700)]
[mlir][docs] Remove the BuiltinDialect documentation from langref and generate it from ODS

Now that all of the builtin dialect is generated from ODS, its documentation in LangRef can be split out and replaced with references to Dialects/Builtin.md. LangRef is quite crusty right now and should really have a full cleanup done in a followup.

Differential Revision: https://reviews.llvm.org/D98562

3 years ago[testsuite] Make testsuite more stable vs canonicalization change. NFC.
Chris Lattner [Sat, 20 Mar 2021 00:57:47 +0000 (17:57 -0700)]
[testsuite] Make testsuite more stable vs canonicalization change.  NFC.

Differential Revision: https://reviews.llvm.org/D98998

3 years agoRevert "[lldb] Make the API, Shell and Unit tests independent lit test suites"
Jonas Devlieghere [Sat, 20 Mar 2021 00:57:17 +0000 (17:57 -0700)]
Revert "[lldb] Make the API, Shell and Unit tests independent lit test suites"

This reverts commit 6c52d4fd4c24a0cf738e44516ca8378d65dcf019.

3 years ago[Driver] Delete compatibility aliases -mpie-copy-relocations and -mno-pie-copy-reloca...
Fangrui Song [Sat, 20 Mar 2021 00:47:29 +0000 (17:47 -0700)]
[Driver] Delete compatibility aliases -mpie-copy-relocations and -mno-pie-copy-relocations

They should be unused everywhere.

3 years agoEmpty test commit, verifying commit access
Dhruva Chakrabarti [Sat, 20 Mar 2021 00:40:37 +0000 (17:40 -0700)]
Empty test commit, verifying commit access

3 years ago[mlir][NFC] Use the native range instead of APInt when computing operand ranges
River Riddle [Sat, 20 Mar 2021 00:11:23 +0000 (17:11 -0700)]
[mlir][NFC] Use the native range instead of APInt when computing operand ranges

This removes the need to construct an APInt for each value, given that it is guaranteed to contain 32 bit elements.

BEGIN_PUBLIC
    ...text exposed to open source public git repo...
END_PUBLIC

3 years ago[mlir] Update `simplifyRegions` to use RewriterBase for erasure notifications
River Riddle [Fri, 19 Mar 2021 23:19:23 +0000 (16:19 -0700)]
[mlir] Update `simplifyRegions` to use RewriterBase for erasure notifications

This allows for notifying callers when operations/blocks get erased, which is especially useful for the greedy pattern driver. The current greedy pattern driver "throws away" all information on constants in the operation folder because it doesn't know if they get erased or not. By passing in RewriterBase, we can directly track this and prevent the need for the pattern driver to rediscover all of the existing constants. In some situations this cuts the compile time of the canonicalizer in half.

Differential Revision: https://reviews.llvm.org/D98755

3 years agogn build: Unbreak Android cross-compilation.
Peter Collingbourne [Fri, 19 Mar 2021 23:23:30 +0000 (16:23 -0700)]
gn build: Unbreak Android cross-compilation.

- D96404 defaulted to libunwind which isn't provided by NDK r21
  (or r22), so specify -rtlib=libgcc on non-arm32.
- D97993 means that we need to use --gcc-toolchain instead of -B
  to let the driver find libgcc.

3 years agoPort D97640 to llvm/include/llvm/ProfileData/InstrProfData.inc
Ellis Hoag [Fri, 19 Mar 2021 23:24:16 +0000 (16:24 -0700)]
Port D97640 to llvm/include/llvm/ProfileData/InstrProfData.inc

Differential Revision: https://reviews.llvm.org/D98982

3 years ago[JITLink] Don't issue lookups for empty symbol sets.
Lang Hames [Fri, 19 Mar 2021 21:54:07 +0000 (14:54 -0700)]
[JITLink] Don't issue lookups for empty symbol sets.

Issuing a lookup for an empty symbol set is legal, but can actually result in
unrelated work being done if there was a work queue left over from the previous
lookup. We can avoid doing this unrelated work (reducing stack depth and
interleaving of debugging output) by not issuing these no-op lookups in the
first place.

3 years agoAdd type attributes to LLVM C API
Christoffer Lernö [Fri, 19 Mar 2021 22:55:52 +0000 (18:55 -0400)]
Add type attributes to LLVM C API

The LLVM C API is missing type attributes as is needed by attributes
such as sret and byval. This patch adds three missing wrapper
functions.

Bugzilla: https://bugs.llvm.org/show_bug.cgi?id=48249

https://reviews.llvm.org/D97763