- Jun 01, 2020
-
-
Li Rong Yi authored
Summary: Exploit vabsd* for for absolute difference of vectors on P9, for example: void foo (char *restrict p, char *restrict q, char *restrict t) { for (int i = 0; i < 16; i++) t[i] = abs (p[i] - q[i]); } this case should be matched to the HW instruction vabsdub. Reviewed By: steven.zhang Differential Revision: https://reviews.llvm.org/D80271 -
Nico Weber authored
-
Matt Arsenault authored
-
Fangrui Song authored
-
Kirstóf Umann authored
-
Hubert Tong authored
This patch replaces a `std::string` local used for a concatentation with a `Twine` where the string was being passed into call.
-
Hubert Tong authored
Summary: This patch moves the setting of `LD_PRELOAD` "inwards" to avoid issues where the built library needs to be loaded with the dynamic linker that was configured with the build (and cannot, for example, be loaded by the dynamic linker associated with the `env` utility). Reviewed By: vitalybuka, nemanjai, jsji Differential Revision: https://reviews.llvm.org/D79695
-
Craig Topper authored
Previously we walked the users of any vector binop looking for more binops with the same opcode or phis that eventually ended up in a reduction. While this is simple it also means visiting the same nodes many times since we'll do a forward walk for each BinaryOperator in the chain. It was also far more general than what we have tests for or expect to see. This patch replaces the algorithm with a new method that starts at extract elements looking for a horizontal reduction. Once we find a reduction we walk through backwards through phis and adds to collect leaves that we can consider for rewriting. We only consider single use adds and phis. Except for a special case if the Add is used by a phi that forms a loop back to the Add. Including other single use Adds to support unrolled loops. Ultimately, I want to narrow the Adds, Phis, and final reduction based on the partial reduction we're doing. I still haven't figured out exactly what that looks like yet. But restricting the types of graphs we expect to handle seemed like a good first step. As does having all the leaves and the reduction at once. Differential Revision: https://reviews.llvm.org/D79971
-
Simon Pilgrim authored
-
Simon Pilgrim authored
This matches what we do for the full sized vector ops at the start of combineX86ShufflesRecursively, and helps getFauxShuffleMask extract more INSERT_SUBVECTOR patterns.
-
Chris Lattner authored
-
Nathan James authored
Motivated by [[ https://bugs.llvm.org/show_bug.cgi?id=46141 | clang-tidy crashed for unknown command line argument. ]] Reviewed By: aaron.ballman, thakis Differential Revision: https://reviews.llvm.org/D80879
-
- May 31, 2020
-
-
Nathan James authored
This reverts commit f23ddbe3.
-
Sanjay Patel authored
The script was changes with: https://github.com/llvm/llvm-project/commit/bfdc2552664d6f0bb332a9c6a115877020f3c1df
-
Nathan James authored
Summary: Motivated by [[ https://bugs.llvm.org/show_bug.cgi?id=46141 | clang-tidy crashed for unknown command line argument. ]] Reviewers: aaron.ballman, alexfh Reviewed By: aaron.ballman Subscribers: cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D80879
-
Matt Arsenault authored
I inverted the mask when I ported to the new form of G_PTRMASK in 8bc03d21. I don't think this really broke anything, since G_VASTART isn't handled for types with an alignment higher than the stack alignment.
-
Sanjay Patel authored
As discussed in PR45951: https://bugs.llvm.org/show_bug.cgi?id=45951 There's a potential name collision between update_test_checks.py and -instnamer and/or manually-generated IR test files because all of them try to use the variable name that should never be used: "tmp". This patch proposes to reduce the odds of collision and adds a warning if we detect the problem. This will cause regression test churn when regenerating CHECK lines on existing files. Differential Revision: https://reviews.llvm.org/D80584
-
Sanjay Patel authored
-
Simon Pilgrim authored
As suggested on D79987.
-
Sanjay Patel authored
Goes with proposal in D80885. This is adapted from the InstCombine tests that were added for D50992 But these should be adjusted further to provide more interesting scenarios for x86-specific codegen. Eg, vector types/sizes will have different costs depending on ISA attributes. We also need to add tests that include a load of the scalar variable and add tests that include extra uses of the insert to further exercise the cost model.
-
Simon Pilgrim authored
Try to prevent future node creation issues (as detailed in PR45974) by making the SelectionDAG reference const, so it can still be used for analysis, but not node creation.
-
Simon Pilgrim authored
-
Sanjay Patel authored
Motivating test for vector-combine enhancement in D80885. Make sure that vectorization and canonicalization are working together as expected.
-
Simon Pilgrim authored
Don't create nodes on the fly when decoding INSERT_SUBVECTOR as faux shuffles.
-
Simon Pilgrim authored
As detailed on PR45974 and D79987, getFauxShuffleMask is creating nodes on the fly to create shuffles with inputs the same size as the result, causing problems for hasOneUse() checks in later simplification stages. Currently only combineX86ShufflesRecursively benefits from these widened inputs so I've begun moving the functionality there, and out of getFauxShuffleMask. This allows us to remove the widening from VBROADCAST and *EXTEND* faux shuffle cases. This just leaves the INSERT_SUBVECTOR case in getFauxShuffleMask still creating nodes, which will require more extensive refactoring.
-
Florian Hahn authored
In some cases ScheduleDAGRRList has to add new nodes to resolve problems with interfering physical registers. When new nodes are added, it completely re-computes the topological order, which can take a long time, but is unnecessary. We only add nodes one by one, and initially they do not have any predecessors. So we can just insert them at the end of the vector. Later we add predecessors, but the helper function properly updates the topological order much more efficiently. With this change, the compile time for the program below drops from 300s to 30s on my machine. define i11129 @test1() { %L1 = load i11129, i11129* undef %B30 = ashr i11129 %L1, %L1 store i11129 %B30, i11129* undef ret i11129 %L1 } This should be generally beneficial, as we can skip a large amount of work. Theoretically there are some scenarios where we might not safe much, e.g. when we add a dependency between the first and last node. Then we would have to shift all nodes. But we still do not have to spend the time re-computing the initial order. Reviewers: MatzeB, atrick, efriedma, niravd, paquette Reviewed By: paquette Differential Revision: https://reviews.llvm.org/D59722 -
Kang Zhang authored
This case wll be failed on some machines which enable expensive-checks. This reverts commit af3abbf7.
-
Kang Zhang authored
-
Jay Foad authored
Differential Revision: https://reviews.llvm.org/D80813
-
Jay Foad authored
-
Changpeng Fang authored
Reviewers: rampitec, arsenm Differential Revision: https://reviews.llvm.org/D80853
-
Craig Topper authored
The types already match so TableGen is removing the bitconvert.
-
Craig Topper authored
[X86] Add DAG combine to turn (v2i64 (scalar_to_vector (i64 (bitconvert (mmx))))) to MOVQ2DQ. Remove unneeded isel patterns. We already had a DAG combine for (mmx (bitconvert (i64 (extractelement v2i64)))) to MOVDQ2Q. Remove patterns for MMX_MOVQ2DQrr/MMX_MOVDQ2Qrr that use scalar_to_vector/extractelement involving i64 scalar type with v2i64 and x86mmx.
-
Craig Topper authored
This code was repeated in two callers of CommitTargetLoweringOpt. But CommitTargetLoweringOpt is also called from TargetLowering. We should print a message for those calls to. So sink the repeated code into CommitTargetLoweringOpt to catch those calls.
-
Craig Topper authored
-
Craig Topper authored
The type profile and isel pattern have this type declared as being MVT::v2i64. But isel skips the explicit type check due to the type profile.
-
Craig Topper authored
-
Craig Topper authored
-
Fangrui Song authored
PowerPC, PowerPC64 and x86-32 have production quality. Mention Hexagon, RISC-V and SPARC V9.
-
Fangrui Song authored
-