Commit
ec25a71eb7fc72440149784951d62453301cc960
by flo[ScheduleDAG] Avoid unnecessary recomputation of topological order.
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
|
 | llvm/include/llvm/CodeGen/ScheduleDAG.h |
 | llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp |
 | llvm/lib/CodeGen/ScheduleDAG.cpp |
Commit
45ebe38ffc40bb7221fc587bfb4481cf7f53ebbc
by llvm-dev[X86][AVX] Pad small shuffle inputs in combineX86ShufflesRecursively
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.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
Commit
d33ba1aa0b505e3f4c55b382f171e8cbef6a1843
by llvm-dev[X86][AVX] getFauxShuffleMask - don't widen shuffle inputs from INSERT_SUBVECTOR(X,SHUFFLE(Y,Z))
Don't create nodes on the fly when decoding INSERT_SUBVECTOR as faux shuffles.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
Commit
129c501aa9199c2c5a69c7a6de8ec9873e3d41a4
by spatel[PhaseOrdering] add scalarization test for PR42174; NFC
Motivating test for vector-combine enhancement in D80885. Make sure that vectorization and canonicalization are working together as expected.
|
 | llvm/test/Transforms/PhaseOrdering/X86/scalarization.ll |
Commit
15b281d7805dde85af532b954e27e3fc8bf2611d
by llvm-dev[X86][AVX] Add test case described in D79987
|
 | llvm/test/CodeGen/X86/oddshuffles.ll |
Commit
f046326847076b50017b3d32db62c3511c478888
by llvm-dev[X86] getFauxShuffleMask/getTargetShuffleInputs - make SelectionDAG const (PR45974).
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.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
Commit
e31f2a894a7bec0a64553d615ef40fa36134844e
by spatel[VectorCombine] add tests for scalarizing binop-with-constant; NFC
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.
|
 | llvm/test/Transforms/VectorCombine/X86/insert-binop-with-constant.ll |
Commit
4a2673d79fdbae57a800ec578ee3d58a6890a4f9
by llvm-dev[X86][AVX] Add SimplifyMultipleUseDemandedBits VBROADCAST handling to SimplifyDemandedVectorElts.
As suggested on D79987.
|
 | llvm/lib/Target/X86/X86ISelLowering.cpp |
 | llvm/test/CodeGen/X86/oddshuffles.ll |
Commit
91b45fb527af8f1f83b51e7238642d3af011bad4
by spatel[PhaseOrdering] add test for hoisting/CSE (PR46115); NFC
|
 | llvm/test/Transforms/PhaseOrdering/X86/vdiv.ll |
Commit
bfdc2552664d6f0bb332a9c6a115877020f3c1df
by spatel[utils] change update_test_checks.py use of 'TMP' value names
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
|
 | llvm/utils/UpdateTestChecks/common.py |
Commit
95f65a7c6cebba7dbcd955bc02235f5d3581ff44
by arsenm2AArch64/GlobalISel: Fix incorrect ptrmask usage for alignment
I inverted the mask when I ported to the new form of G_PTRMASK in 8bc03d2168241f7b12265e9cd7e4eb7655709f34.
I don't think this really broke anything, since G_VASTART isn't handled for types with an alignment higher than the stack alignment.
|
 | llvm/test/CodeGen/AArch64/GlobalISel/legalize-vaarg.mir |
 | llvm/lib/CodeGen/GlobalISel/MachineIRBuilder.cpp |
Commit
f23ddbe3c3ae5f40b99ba272afc3d16b800ba8b9
by n.james93clang-tidy and clang-query wont crash with invalid command line options
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
|
 | clang-tools-extra/clang-tidy/tool/ClangTidyMain.cpp |
 | clang-tools-extra/test/clang-query/invalid-command-line.cpp |
 | clang-tools-extra/clang-query/tool/ClangQuery.cpp |
 | clang-tools-extra/test/clang-tidy/infrastructure/invalid-command-line.cpp |
Commit
dfbfdc96f9e15be40c938cde9b159afd028bf4a2
by spatel[utils] update expected strings in tests; NFC
The script was changes with: https://github.com/llvm/llvm-project/commit/bfdc2552664d6f0bb332a9c6a115877020f3c1df
|
 | clang/test/utils/update_cc_test_checks/Inputs/mangled_names.c.expected |
 | clang/test/utils/update_cc_test_checks/Inputs/mangled_names.c.funcsig.expected |