Commit
e5795a1b364d6d19cd557a3a6d38759eb9d8631f
by Stefan Gränitz[ORC][examples] Remove ThinLtoJIT example after LLJITWithThinLTOSummaries landed in OrcV2Examples
The ThinLtoJIT example was aiming to utilize ThinLTO summaries and concurrency in ORC for speculative compilation. The latter is heavily dependent on asynchronous task scheduling which is probably done better out-of-tree with a mature library like Boost-ASIO. The pure utilization of ThinLTO summaries in ORC is demonstrated in OrcV2Examples/LLJITWithThinLTOSummaries.
|
 | llvm/examples/ThinLtoJIT/ThinLtoJIT.h |
 | llvm/examples/ThinLtoJIT/ThinLtoJIT.cpp |
 | llvm/examples/ThinLtoJIT/bench |
 | llvm/examples/CMakeLists.txt |
 | llvm/examples/ThinLtoJIT/ThinLtoDiscoveryThread.h |
 | llvm/examples/ThinLtoJIT/CMakeLists.txt |
 | llvm/examples/ThinLtoJIT/ThinLtoModuleIndex.cpp |
 | llvm/examples/ThinLtoJIT/ThinLtoInstrumentationLayer.h |
 | llvm/examples/ThinLtoJIT/ThinLtoInstrumentationLayer.cpp |
 | llvm/examples/ThinLtoJIT/main.cpp |
 | llvm/examples/ThinLtoJIT/ThinLtoDiscoveryThread.cpp |
 | llvm/examples/ThinLtoJIT/ThinLtoModuleIndex.h |
Commit
306571cc4642c4e443c8cb0593a2b595ef96580e
by Stefan Gränitz[ORC][examples] Temporarily remove LLJITWithChildProcess until ORC TPC lands
This solves a phase ordering problem: OrcV2 remote process support depends on OrcV2 removable code, OrcV2 removable code depends on OrcV1 removal, OrcV1 removal depends on LLJITWithChildProcess migration, and LLJITWithChildProcess migration depends on OrcV2 TargetProcessControl support.
|
 | llvm/examples/OrcV2Examples/LLJITWithChildProcess/LLJITWithChildProcess.cpp |
 | llvm/examples/OrcV2Examples/LLJITWithChildProcess/RemoteJITUtils.h |
 | llvm/examples/OrcV2Examples/CMakeLists.txt |
 | llvm/examples/OrcV2Examples/LLJITWithChildProcess/CMakeLists.txt |
Commit
7b90516d479ca6aadf4e261747d62c854d6f5463
by sam.parker[ARM][LowOverheadLoops] Start insertion point
If possible, try not to move the start position earlier than it already is.
Differential Revision: https://reviews.llvm.org/D88542
|
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-mov.mir |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir |
 | llvm/test/CodeGen/Thumb2/mve-float32regloops.ll |
 | llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/loop-dec-copy-prev-iteration.mir |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-operand.ll |
Commit
6ec5f324973dfbe7b4a489593dde5073ff63ff64
by sam.parker[ARM][LowOverheadLoops] Iteration count liveness
Before deciding to insert a [W|D]LSTP, check that defining LR with the element count won't affect any other instructions that should be taking the iteration count.
Differential Revision: https://reviews.llvm.org/D88549
|
 | llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/it-block-chain-store.mir |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-operand.ll |
Commit
8931c3d682763e6129f8d05ebe4e3b8dcc3e08e2
by paul.walker[NFC] Iterate across an explicit list of scalable MVTs when driving setOperationAction.
Iterating across all of integer_scalable_vector_valuetypes seems wasteful when there's only a handful we care about.
Also removes some rouge whitespace.
Differential Revision: https://reviews.llvm.org/D88552
|
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
Commit
75db7cf78ad5138e767b8d04c9a758009191ee0c
by kerry.mclaughlin[SVE][CodeGen] Legalisation of integer -> floating point conversions
Splitting the operand of a scalable [S|U]INT_TO_FP results in a concat_vectors operation where the operands are unpacked FP scalable vectors (e.g. nxv2f32). This patch adds custom lowering of concat_vectors which checks that the number of operands is 2, and isel patterns to match concat_vectors of scalable FP types with uzp1.
Reviewed By: efriedma, paulwalker-arm
Differential Revision: https://reviews.llvm.org/D88033
|
 | llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
 | llvm/test/CodeGen/AArch64/sve-split-fcvt.ll |
Commit
38f625d0d1360b035271422bab922d22ed04d79a
by sam.parker[ARM][LowOverheadLoops] Adjust Start insertion.
Try to move the insertion point to become the terminator of the block, usually the preheader.
Differential Revision: https://reviews.llvm.org/D88638
|
 | llvm/test/CodeGen/Thumb2/mve-postinc-lsr.ll |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-start-after-def.mir |
 | llvm/test/CodeGen/Thumb2/mve-float32regloops.ll |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/lstp-insertion-position.mir |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-operand.ll |
 | llvm/test/CodeGen/Thumb2/mve-satmul-loops.ll |
 | llvm/test/CodeGen/Thumb2/mve-gather-scatter-tailpred.ll |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/move-def-before-start.mir |
 | llvm/test/CodeGen/Thumb2/mve-gather-scatter-ptr-address.ll |
 | llvm/test/CodeGen/Thumb2/mve-pred-threshold.ll |
 | llvm/test/CodeGen/Thumb2/mve-fma-loops.ll |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/mov-after-dlstp.mir |
 | llvm/test/CodeGen/Thumb2/mve-gather-scatter-optimisation.ll |
 | llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp |
 | llvm/test/CodeGen/Thumb2/mve-float16regloops.ll |
 | llvm/test/CodeGen/Thumb2/LowOverheadLoops/reductions.ll |
Commit
69acdfe075fa8eb18781f88f4d0cd1ea40fa6e48
by mkazantsev[SCEV] Prove implicaitons via AddRec start
If we know that some predicate is true for AddRec and an invariant (w.r.t. this AddRec's loop), this fact is, in particular, true on the first iteration. We can try to prove the facts we need using the start value.
The motivating example is proving things like ``` isImpliedCondOperands(>=, X, 0, {X,+,-1}, 0} ```
Differential Revision: https://reviews.llvm.org/D88208 Reviewed By: reames
|
 | llvm/lib/Analysis/ScalarEvolution.cpp |
 | llvm/unittests/Analysis/ScalarEvolutionTest.cpp |
 | llvm/include/llvm/Analysis/ScalarEvolution.h |
Commit
a81b938b6dee0e1ed4dd44e7d59325d0aa4774cc
by ntv[mlir][Linalg] Fix ASAN bug
``` LinalgTilingOptions &setTileSizes(ValueRange ts) ``` makes it all too easy to create stack-use-after-return errors.
In particular, c694588fc52a8845174fee06ad0bcfa338e87816 introduced one such issue.
Instead just take a copy in the lambda and be done with it.
|
 | mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h |
Commit
fcf70e1e3b1d57d5fde6b99d0188d1b1774429af
by kerry.mclaughlin[SVE][CodeGen] Lower scalable fp_extend & fp_round operations
This patch adds FP_EXTEND_MERGE_PASSTHRU & FP_ROUND_MERGE_PASSTHRU ISD nodes, used to lower scalable vector fp_extend/fp_round operations. fp_round has an additional argument, the 'trunc' flag, which is an integer of zero or one.
This also fixes a warning introduced by the new tests added to sve-split-fcvt.ll, resulting from an implicit TypeSize -> uint64_t cast in SplitVecOp_FP_ROUND.
Reviewed By: sdesmalen, paulwalker-arm
Differential Revision: https://reviews.llvm.org/D88321
|
 | llvm/lib/Target/AArch64/SVEInstrFormats.td |
 | llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td |
 | llvm/test/CodeGen/AArch64/sve-fcvt.ll |
 | llvm/lib/Target/AArch64/AArch64InstrFormats.td |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.h |
 | llvm/test/CodeGen/AArch64/sve-split-fcvt.ll |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
 | llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp |
Commit
ef4e971e5e18ae796466623df8f26265ba6bdfb5
by David.Chisnall[CFGuard] Add address-taken IAT tables and delay-load support
This patch adds support for creating Guard Address-Taken IAT Entry Tables (.giats$y sections) in object files, matching the behavior of MSVC. These contain lists of address-taken imported functions, which are used by the linker to create the final GIATS table. Additionally, if any DLLs are delay-loaded, the linker must look through the .giats tables and add the respective load thunks of address-taken imports to the GFIDS table, as these are also valid call targets.
Reviewed By: rnk
Differential Revision: https://reviews.llvm.org/D87544
|
 | lld/COFF/InputFiles.h |
 | lld/COFF/ICF.cpp |
 | llvm/include/llvm/MC/MCObjectFileInfo.h |
 | lld/COFF/InputFiles.cpp |
 | llvm/lib/CodeGen/AsmPrinter/WinCFGuard.cpp |
 | llvm/lib/MC/MCObjectFileInfo.cpp |
 | llvm/tools/llvm-readobj/COFFDumper.cpp |
 | llvm/test/CodeGen/WinCFGuard/cfguard-giats.ll |
 | lld/COFF/Symbols.h |
 | lld/COFF/Writer.cpp |
 | lld/test/COFF/giats.s |
 | lld/COFF/DLL.cpp |
Commit
bc730b5e43ad4b7efeca977359271fa0eaa7ed45
by llvm-dev[InstCombine] collectBitParts - use APInt directly to check for out of range bit shifts. NFCI.
|
 | llvm/lib/Transforms/Utils/Local.cpp |
Commit
b272250221595b14c32db6721a0ae4e5f17ea4d2
by Raphael Isemann[lldb] Skip the flakey part of TestStopHookScripted on Linux
This test seems to randomly fail on Linux machines. It's only one part of the test failing randomly, so let's just skip it instead of reverting the whole patch (again).
|
 | lldb/test/API/commands/target/stop-hooks/TestStopHookScripted.py |
Commit
4f13b999297140486b2faa1b5d8d7c768fb40dfb
by Louis Dionne[libc++] Simplify how we re-export symbols from libc++abi
Instead of managing two copies of the symbol lists, reuse the same list in libc++abi and libc++.
Differential Revision: https://reviews.llvm.org/D88623
|
 | libcxx/lib/libc++abi-exceptions.exp |
 | libcxx/lib/libc++abi-exceptions.sjlj.exp |
 | libcxx/lib/abi/CHANGELOG.TXT |
 | libcxx/lib/libc++abi-new-delete.exp |
 | libcxx/lib/abi/x86_64-apple-darwin.v1.abilist |
 | libcxxabi/src/CMakeLists.txt |
 | libcxx/src/CMakeLists.txt |
Commit
cccb7cf1a52f38182f56d947bd609027726c778b
by Raphael Isemann[lldb] Add missing import for LLDB test decorators to TestStopHookScripted
This test wasn't using decorators before and was missing the import, so my previous commit broke the test.
|
 | lldb/test/API/commands/target/stop-hooks/TestStopHookScripted.py |
Commit
7e02bc81c6dad90b0f98f74152f4b0991087d78d
by sam.parker[NFC][ARM] LowOverheadLoop DEBUG statements
|
 | llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp |
Commit
d53b4bee0ccd408cfe6e592540858046244e74ce
by sjoerd.meijer[LoopFlatten] Add a loop-flattening pass
This is a simple pass that flattens nested loops. The intention is to optimise loop nests like this, which together access an array linearly:
for (int i = 0; i < N; ++i) for (int j = 0; j < M; ++j) f(A[i*M+j]);
into one loop:
for (int i = 0; i < (N*M); ++i) f(A[i]);
It can also flatten loops where the induction variables are not used in the loop. This can help with codesize and runtime, especially on simple cpus without advanced branch prediction.
This is only worth flattening if the induction variables are only used in an expression like i*M+j. If they had any other uses, we would have to insert a div/mod to reconstruct the original values, so this wouldn't be profitable.
This partially fixes PR40581 as this pass triggers on one of the two cases. I will follow up on this to learn LoopFlatten a few more (small) tricks. Please note that LoopFlatten is not yet enabled by default.
Patch by Oliver Stannard, with minor tweaks from Dave Green and myself.
Differential Revision: https://reviews.llvm.org/D42365
|
 | llvm/include/llvm/Transforms/Scalar/LoopFlatten.h |
 | llvm/test/Transforms/LoopFlatten/loop-flatten.ll |
 | llvm/include/llvm/InitializePasses.h |
 | llvm/lib/Passes/PassBuilder.cpp |
 | llvm/lib/Transforms/Scalar/LoopFlatten.cpp |
 | llvm/include/llvm/LinkAllPasses.h |
 | llvm/lib/Transforms/Scalar/Scalar.cpp |
 | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp |
 | llvm/lib/Transforms/Scalar/CMakeLists.txt |
 | llvm/include/llvm/Transforms/Scalar.h |
 | llvm/lib/Passes/PassRegistry.def |
 | llvm/test/Transforms/LoopFlatten/pr40581.ll |
 | llvm/test/Transforms/LoopFlatten/loop-flatten-negative.ll |
Commit
5101e7e8dd01719f9161e01e2f053c9797c247a8
by llvmgnsyncbot[gn build] Port d53b4bee0cc
|
 | llvm/utils/gn/secondary/llvm/lib/Transforms/Scalar/BUILD.gn |
Commit
a20168d0307860047ad7c8a2074f98fc25b057c2
by james.henderson[Archive] Don't throw away errors for malformed archive members
When adding an archive member with a problem, e.g. a new bitcode with an old archiver, containing an unsupported attribute, or an ELF file with a malformed symbol table, the archiver would throw away the error and simply add the member to the archive without any symbol entries. This meant that the resultant archive could be silently unusable when not using --whole-archive, and result in unexpected undefined symbols.
This change fixes this issue by addressing two FIXMEs and only throwing away not-an-object errors. However, this meant that some LLD tests which didn't need symbol tables and were using invalid members deliberately to test the linker's malformed input handling no longer worked, so this patch also stops the archiver from looking for symbols in an object if it doesn't require a symbol table, and updates the tests accordingly.
Differential Revision: https://reviews.llvm.org/D88288
Reviewed by: grimar, rupprecht, MaskRay
|
 | llvm/lib/Object/SymbolicFile.cpp |
 | llvm/test/Object/archive-malformed-object.test |
 | lld/test/ELF/invalid/data-encoding.test |
 | llvm/include/llvm/Object/SymbolicFile.h |
 | lld/test/ELF/invalid/invalid-file-class.test |
 | llvm/test/Object/archive-unknown-filetype.test |
 | llvm/lib/Object/ArchiveWriter.cpp |
Commit
15474d769110139f9cc96d42434988d7aaa77634
by david.sherwood[SVE][CodeGen] Replace use of TypeSize operator< in GlobalMerge::doMerge
We don't support global variables with scalable vector types so I've changed the code to compare the fixed sizes instead.
Differential Revision: https://reviews.llvm.org/D88564
|
 | llvm/lib/CodeGen/GlobalMerge.cpp |