Commit
f8c5a4c67075877e1b6976bb7372aa96f02c11bc
by tlively[WebAssembly] Optimize out shift masks
WebAssembly's shift instructions implicitly masks the shift count, so optimize out redundant explicit masks of the shift count. For vector shifts, this currently only works if the mask is applied before splatting the shift count, but this should be addressed in a future commit. Resolves PR49655.
Differential Revision: https://reviews.llvm.org/D105600
|
 | llvm/lib/Target/WebAssembly/WebAssemblyInstrSIMD.td |
 | llvm/lib/Target/WebAssembly/WebAssemblyInstrInteger.td |
 | llvm/test/CodeGen/WebAssembly/masked-shifts.ll |
Commit
0fd5e7b2d8ca4ed46d76187feb4b903ed0a3ea75
by tlively[WebAssembly][lld] Fix segfault on .bss sections in mapfile
When memory is declared in the Wasm module, we rely on the implicit zero initialization behavior and do not explicitly output .bss sections. The means that they do not have associated `outputSec` entries, which was causing segfaults in the mapfile support. Fix the issue by guarding against null `outputSec` and falling back to using a zero offset.
Differential Revision: https://reviews.llvm.org/D102951
|
 | lld/test/wasm/map-file.s |
 | lld/wasm/MapFile.cpp |
Commit
963378bd8278220eb382bec76846ef39e4ea597e
by Lang Hames[ORC] Improve computeLocalDeps / computeNamedSymbolDependencies performance.
The computeNamedSymbolDependencies and computeLocalDeps methods on ObjectLinkingLayerJITLinkContext are responsible for computing, for each symbol in the current MaterializationResponsibility, the set of non-locally-scoped symbols that are depended on. To calculate this we have to consider the effect of chains of dependence through locally scoped symbols in the LinkGraph. E.g.
.text .globl foo foo: callq bar ## foo depneds on external 'bar' movq Ltmp1(%rip), %rcx ## foo depends on locally scoped 'Ltmp1' addl (%rcx), %eax retq
.data Ltmp1: .quad x ## Ltmp1 depends on external 'x'
In this example symbol 'foo' depends directly on 'bar', and indirectly on 'x' via 'Ltmp1', which is locally scoped.
Performance of the existing implementations appears to have been mediocre: Based on flame graphs posted by @drmeister (in #jit on the LLVM discord server) the computeLocalDeps function was taking up a substantial amount of time when starting up Clasp (https://github.com/clasp-developers/clasp).
This commit attempts to address the performance problems in three ways:
1. Using jitlink::Blocks instead of jitlink::Symbols as the nodes of the dependencies-introduced-by-locally-scoped-symbols graph.
Using either Blocks or Symbols as nodes provides the same information, but since there may be more than one locally scoped symbol per block the block-based version of the dependence graph should always be a subgraph of the Symbol-based version, and so faster to operate on.
2. Improved worklist management.
The older version of computeLocalDeps used a fixed worklist containing all nodes, and iterated over this list propagating dependencies until no further changes were required. The worklist was not sorted into a useful order before the loop started.
The new version uses a variable work-stack, visiting nodes in DFS order and only adding nodes when there is meaningful work to do on them.
Compared to the old version the new version avoids revisiting nodes which haven't changed, and I suspect it converges more quickly (due to the DFS ordering).
3. Laziness and caching.
Mappings of...
jitlink::Symbol* -> Interned Name (as SymbolStringPtr) jitlink::Block* -> Immediate dependencies (as SymbolNameSet) jitlink::Block* -> Transitive dependencies (as SymbolNameSet)
are all built lazily and cached while running computeNamedSymbolDependencies.
According to @drmeister these changes reduced Clasp startup time in his test setup (averaged over a handful of starts) from 4.8 to 2.8 seconds (with ORC/JITLink linking ~11,000 object files in that time), which seems like enough to justify switching to the new algorithm in the absence of any other perf numbers.
|
 | llvm/include/llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h |
 | llvm/lib/ExecutionEngine/Orc/ObjectLinkingLayer.cpp |
 | llvm/include/llvm/ExecutionEngine/Orc/MachOPlatform.h |
 | llvm/lib/ExecutionEngine/Orc/MachOPlatform.cpp |
Commit
d7afd11e3dc14d50156618cb27689f1425239c86
by Lang Hames[ORC] Introduce ExecutorAddress type, fix broken LLDB bot.
ExecutorAddressRange depended on JITTargetAddress, but JITTargetAddress is defined in ExecutionEngine, which OrcShared should not depend on.
This seems like as good a time as any to introduce a new ExecutorAddress type to eventually replace JITTargetAddress. For now it's just another uint64_t alias, but it will soon be changed to a class type to provide greater type safety.
|
 | llvm/include/llvm/ExecutionEngine/Orc/Shared/CommonOrcRuntimeTypes.h |
Commit
511af1b1ad005af61ce792286a76633cd56ef7f9
by gysit[mlir][linalg] Tighter StructuredOp Verification.
Verify the number of results matches exactly the number of output tensors. Simplify the FillOp verification since part of it got redundant.
Differential Revision: https://reviews.llvm.org/D105427
|
 | mlir/lib/Dialect/Linalg/IR/LinalgInterfaces.cpp |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
 | mlir/test/Dialect/Linalg/invalid.mlir |
Commit
21fd8759529707b0f4430ebe8f27a01edc7f655e
by mikael.holmen[lld/mac] Fix warning about unused variable [NFC]
Change "dyn_cast" to "isa" to get rid of the unused variable "bitcodeFile".
gcc warned with
lld/MachO/Driver.cpp:531:17: warning: unused variable 'bitcodeFile' [-Wunused-variable] 531 | if (auto *bitcodeFile = dyn_cast<BitcodeFile>(file)) { | ^~~~~~~~~~~
|
 | lld/MachO/Driver.cpp |
|
 | llvm/lib/Target/AMDGPU/SIOptimizeVGPRLiveRange.cpp |
Commit
684dfe8adb7eb6037b20e12364cae97c01ff2190
by zinenko[mlir] factor out ConvertToLLVMPattern
This class and classes that extend it are general utilities for any dialect that is being converted into the LLVM dialect. They are in no way specific to Standard-to-LLVM conversion and should not make their users depend on it.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D105542
|
 | mlir/lib/Conversion/LLVMCommon/Pattern.cpp |
 | mlir/lib/Conversion/OpenMPToLLVM/OpenMPToLLVM.cpp |
 | mlir/include/mlir/Conversion/LLVMCommon/Pattern.h |
 | mlir/lib/Conversion/LLVMCommon/CMakeLists.txt |
 | mlir/lib/Conversion/OpenMPToLLVM/CMakeLists.txt |
 | mlir/include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVM.h |
 | mlir/include/mlir/Conversion/LLVMCommon/VectorPattern.h |
 | mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp |
 | mlir/lib/Conversion/LLVMCommon/VectorPattern.cpp |
 | mlir/lib/Conversion/StandardToLLVM/StandardToLLVM.cpp |
 | mlir/include/mlir/Conversion/StandardToLLVM/ConvertStandardToLLVMPass.h |
 | mlir/lib/Conversion/GPUCommon/CMakeLists.txt |
Commit
6c0fd4db79f2def432f761627bb8c7d4171a3237
by nicolas.vasilache[mlir][MemRef] Fix DimOp folding of OffsetSizeAndStrideInterface.
This addresses the issue reported in
https://llvm.discourse.group/t/rank-reducing-memref-subview-offsetsizeandstrideopinterface-interface-issues/3805
Differential Revision: https://reviews.llvm.org/D105558
|
 | mlir/test/Dialect/MemRef/canonicalize.mlir |
 | mlir/test/Dialect/Tensor/canonicalize.mlir |
 | mlir/include/mlir/IR/BuiltinTypes.h |
 | mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp |
 | mlir/lib/Dialect/Tensor/IR/TensorOps.cpp |
 | mlir/lib/IR/BuiltinTypes.cpp |
Commit
84354b2ab20924b3807c0464308852e4568b63a3
by gysit[mlir][linalg] Remove GenericOpBase.
Remove the GenericOpBase class formerly used to factor out common logic shared be GenericOp and IndexedGenericOp. After removing IndexedGenericOp, the base class is not used anymore.
Differential Revision: https://reviews.llvm.org/D105307
|
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td |
Commit
abfa950d86da1737a7dd52ba262fa39dd2e937fa
by gysit[mlir][linalg][python] Add exp and log to the OpDSL.
Introduce the exp and log function in OpDSL. Add the soft plus operator to test the emitted IR in Python and C++.
Reviewed By: nicolasvasilache
Differential Revision: https://reviews.llvm.org/D105420
|
 | mlir/python/mlir/dialects/linalg/opdsl/lang/emitter.py |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgTypes.h |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgBase.td |
 | mlir/include/mlir/Dialect/Linalg/IR/LinalgNamedStructuredOps.yaml |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
 | mlir/python/mlir/dialects/linalg/opdsl/ops/core_named_ops.py |
 | mlir/lib/Dialect/Linalg/IR/CMakeLists.txt |
 | mlir/test/Dialect/Linalg/generalize-named-polymorphic-ops.mlir |
 | mlir/test/python/dialects/linalg/opdsl/emit_structured_generic.py |
Commit
715ca752ac4f8ba69fe68110823e0eabf5614bc7
by martin[libcxx] [test] Fix spurious failures in the thread detach test on Windows
Make sure that the detached thread has started up before exiting the process.
If the detached thread hasn't started up at all, and the main thread exits, global data structures in the process are torn down, which then can cause crashes when the thread starts up late after required mutexes have been destroyed. (In particular, the mutex used internally in _Init_thread_header, which is used in the initialization of __thread_local_data()::__p, can cause crashes if the main thread already has finished and progressed far with destruction.)
Differential Revision: https://reviews.llvm.org/D105592
|
 | libcxx/test/std/thread/thread.threads/thread.thread.class/thread.thread.member/detach.pass.cpp |
Commit
d58c7a92380e030af6e6f82ce55bc14a919f39ea
by sichert[IR] Added operator delete to subclasses of User to avoid UB
Several subclasses of User override operator new without also overriding operator delete. This means that delete expressions fall back to using operator delete of the base class, which would be User. However, this is only allowed if the base class has a virtual destructor which is not the case for User, so this is UB.
See also [expr.delete] (3) for the exact wording.
This is actually detected in some cases by GCC 11's -Wmismatched-new-delete now which is how I found this error.
Differential Revision: https://reviews.llvm.org/D103143
|
 | llvm/include/llvm/IR/InstrTypes.h |
 | llvm/include/llvm/IR/Instructions.h |
 | llvm/lib/IR/ConstantsContext.h |
 | llvm/include/llvm/IR/GlobalIndirectSymbol.h |
 | llvm/include/llvm/Analysis/MemorySSA.h |
 | llvm/include/llvm/IR/Constants.h |
Commit
31f80393bc06f8eeab35218e1d4476bf120e452e
by nicolas.vasilacheRevert "[mlir][MemRef] Fix DimOp folding of OffsetSizeAndStrideInterface."
This reverts commit 6c0fd4db79f2def432f761627bb8c7d4171a3237.
This simple implementation is unfortunately not extensible and needs to be reverted. The extensible way should be to extend https://reviews.llvm.org/D104321.
|
 | mlir/include/mlir/IR/BuiltinTypes.h |
 | mlir/lib/Dialect/Tensor/IR/TensorOps.cpp |
 | mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp |
 | mlir/test/Dialect/MemRef/canonicalize.mlir |
 | mlir/lib/IR/BuiltinTypes.cpp |
 | mlir/test/Dialect/Tensor/canonicalize.mlir |
Commit
767eb9f9d5082b295cb7fe01d5e7d22fce72396a
by mkazantsev[Test] Add loop deletion switch tests
Patch by Dmitry Makogon!
Differential Revision: https://reviews.llvm.org/D105543
|
 | llvm/test/Transforms/LoopDeletion/eval_first_iteration.ll |
Commit
026bb84bcd42b875d77b769eb5ee4c19fc2a9719
by bradley.smith[AArch64][SVE] Add ISel patterns for floating point compare with zero instructions
Additionally, lower the floating point compare SVE intrinsics to SETCC_MERGE_ZERO ISD nodes to avoid duplicating ISel patterns.
Differential Revision: https://reviews.llvm.org/D105486
|
 | llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
 | llvm/lib/Target/AArch64/SVEInstrFormats.td |
 | llvm/test/CodeGen/AArch64/sve-fcmp.ll |
 | llvm/test/CodeGen/AArch64/sve-fixed-length-masked-scatter.ll |
 | llvm/test/CodeGen/AArch64/sve-intrinsics-fp-compares.ll |
 | llvm/test/CodeGen/AArch64/sve-fixed-length-masked-gather.ll |
Commit
ba913b8da57dcdcda0572ec3a6b8d4e367f22803
by chiahungduan[mlir-reduce] Fix the memory leak and recycle unused modules.
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D105416
|
 | mlir/lib/Tools/mlir-reduce/MlirReduceMain.cpp |
 | mlir/lib/Reducer/ReductionNode.cpp |
 | mlir/include/mlir/Reducer/ReductionNode.h |
Commit
7445f1e4dcd4525ab1f04f3cebfda341ec2eb716
by xndchn[NFC] Mark Expected<T>::assertIsChecked() as const
Some const methods of Expected<T> invoke assertIsChecked(), so we should mark it as const too.
Differential Revision: https://reviews.llvm.org/D105292
|
 | llvm/unittests/Support/ErrorTest.cpp |
 | llvm/include/llvm/Support/Error.h |
Commit
727e1c9be3a5b20c6b502f056d74a681689049d7
by Tim NorthoverSupport: add llvm::thread class that supports specifying stack size.
This adds a new llvm::thread class with the same interface as std::thread except there is an extra constructor that allows us to set the new thread's stack size. On Darwin even the default size is boosted to 8MB to match the main thread.
It also switches all users of the older C-style `llvm_execute_on_thread` API family over to `llvm::thread` followed by either a `detach` or `join` call and removes the old API.
|
 | llvm/lib/Support/Threading.cpp |
 | llvm/include/llvm/Support/CrashRecoveryContext.h |
 | llvm/lib/Support/Windows/Threading.inc |
 | llvm/lib/Support/CrashRecoveryContext.cpp |
 | clang-tools-extra/clangd/support/Threading.cpp |
 | clang/tools/libclang/CIndex.cpp |
 | llvm/lib/Support/ThreadPool.cpp |
 | llvm/include/llvm/Support/thread.h |
 | llvm/unittests/Support/Threading.cpp |
 | llvm/include/llvm/Support/Threading.h |
 | llvm/lib/Support/Unix/Threading.inc |
Commit
2bf5e8d953ededbc208bd4c116c9d6331d73f0f0
by Tim NorthoverRevert "Support: add llvm::thread class that supports specifying stack size."
It's causing build failures because DefaultStackSize isn't defined everywhere it should be and I need time to investigate.
|
 | llvm/include/llvm/Support/Threading.h |
 | llvm/lib/Support/Threading.cpp |
 | clang/tools/libclang/CIndex.cpp |
 | llvm/lib/Support/Windows/Threading.inc |
 | clang-tools-extra/clangd/support/Threading.cpp |
 | llvm/include/llvm/Support/CrashRecoveryContext.h |
 | llvm/lib/Support/ThreadPool.cpp |
 | llvm/lib/Support/CrashRecoveryContext.cpp |
 | llvm/unittests/Support/Threading.cpp |
 | llvm/include/llvm/Support/thread.h |
 | llvm/lib/Support/Unix/Threading.inc |
Commit
cc92833f8a3de7f6d4e301a1cb22adf2ffe94df4
by michael.hliao[amdgpu] Remove the GlobalDCE pass prior to the internalization pass.
- In [D98783](https://reviews.llvm.org/D98783), an extra GlobalDCE pass is inserted before the internalization pass to ensure a global variable without users could be internalized even if there are dead users. Instead of inserting a dedicated optimization pass, the dead user checking, i.e. 'use_empty()', should be preceeded with constant dead user removal to ensure an accurate result.
Differential Revision: https://reviews.llvm.org/D105590
|
 | llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp |
Commit
9320d4b695ffcf5a4d11bb3452c7502f04cb58ab
by a.bataev[Instcombine][NFC]Add a test for reduce+([sext/zext](<n x i1)) case, NFC.
|
 | llvm/test/Transforms/InstCombine/reduction-add-sext-zext-i1.ll |
Commit
3e6d2cbf268e66e350ebd321345c7d846933da68
by markus.boeck02[mlir] Fully qualify types and expressions in Interfaces
This patch adds full qualification to the types and function calls used inside of (Static)InterfaceMethod in OpInterfaces. Without this patch using many of these interfaces in a downstream project yields compiler errors as the types and default implementations are mostly copied verbatim. Without then putting using namespace mlir; in the header file of the implementations of those interfaces, compilation is impossible.
Using fully qualified lookup fixes this issue.
Differential Revision: https://reviews.llvm.org/D105619
|
 | mlir/include/mlir/Interfaces/CallInterfaces.td |
 | mlir/include/mlir/Interfaces/DerivedAttributeOpInterface.td |
 | mlir/include/mlir/Interfaces/CastInterfaces.td |
 | mlir/include/mlir/Interfaces/InferTypeOpInterface.td |
 | mlir/include/mlir/Interfaces/ViewLikeInterface.td |
 | mlir/include/mlir/Interfaces/ControlFlowInterfaces.td |
 | mlir/include/mlir/Interfaces/VectorInterfaces.td |
 | mlir/include/mlir/Interfaces/SideEffectInterfaceBase.td |
 | mlir/include/mlir/Interfaces/DataLayoutInterfaces.td |
Commit
4e5d9c88033f1fc5d5206a02d8303bc6de43cf2b
by michael.hliao[Internalize] Preserve variables externally initialized.
- ``externally_initialized`` variables would be initialized or modified elsewhere. Particularly, CUDA or HIP may have host code to initialize or modify ``externally_initialized`` device variables, which may not be explicitly referenced on the device side but may still be used through the host side interfaces. Not preserving them triggers the elimination of them in the GlobalDCE and breaks the user code.
Reviewed By: yaxunl
Differential Revision: https://reviews.llvm.org/D105135
|
 | clang/test/CodeGenCUDA/host-used-device-var.cu |
 | llvm/test/Transforms/Internalize/externally-initialized.ll |
 | clang/test/CodeGenCUDA/unused-global-var.cu |
 | llvm/lib/Transforms/IPO/Internalize.cpp |
Commit
b5113bff461b87fa214fa8fafdffd8eaaf8cf0e7
by a.bataev[Instcombine]Transform reduction+(sext/zext(<n x i1>) to <n x im>) to [-]zext/trunc(ctpop(bitcast <n x i1> to in)) to im.
Some of the SPEC tests end up with reduction+(sext/zext(<n x i1>) to <n x im>) pattern, which can be transformed to [-]zext/trunc(ctpop(bitcast <n x i1> to in)) to im. Also, reduction+(<n x i1>) can be transformed to ctpop(bitcast <n x i1> to in) & 1 != 0.
Differential Revision: https://reviews.llvm.org/D105587
|
 | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp |
 | llvm/test/Transforms/InstCombine/reduction-add-sext-zext-i1.ll |
Commit
48c68a630e06666101c16aa371f9202a4a53438b
by Tim NorthoverRecommit: Support: add llvm::thread class that supports specifying stack size.
This adds a new llvm::thread class with the same interface as std::thread except there is an extra constructor that allows us to set the new thread's stack size. On Darwin even the default size is boosted to 8MB to match the main thread.
It also switches all users of the older C-style `llvm_execute_on_thread` API family over to `llvm::thread` followed by either a `detach` or `join` call and removes the old API.
Moved definition of DefaultStackSize into the .cpp file to hopefully fix the build on some (GCC-6?) machines.
|
 | llvm/include/llvm/Support/CrashRecoveryContext.h |
 | llvm/lib/Support/CrashRecoveryContext.cpp |
 | llvm/unittests/Support/Threading.cpp |
 | llvm/include/llvm/Support/thread.h |
 | llvm/lib/Support/Unix/Threading.inc |
 | llvm/lib/Support/Threading.cpp |
 | llvm/lib/Support/Windows/Threading.inc |
 | clang-tools-extra/clangd/support/Threading.cpp |
 | clang/tools/libclang/CIndex.cpp |
 | llvm/include/llvm/Support/Threading.h |
 | llvm/lib/Support/ThreadPool.cpp |
Commit
4947ecf4e994fb72e90b8bf8d6ba110f7a862e1a
by koraq[libc++] Guard testing implementation details.
The unit tests test some implementation details. As @Quuxplusone pointed out in D96664 this should only be tested when the tests use libc++. This addresses the issue for code already in main.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D105568
|
 | libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/next_arg_id.pass.cpp |
 | libcxx/test/std/utilities/format/format.formatter/format.parse.ctx/check_arg_id.pass.cpp |
Commit
321c2ea91cb1aed5dfbbdbb868d525ff64972398
by koraq[libc++][NFC] Move monostate to its own header.
The format library uses `std::monostate`, but not a `std::variant`. Moving `std::monostate` to its own header allows the format library to reduce the amount of included code.
Reviewed By: #libc, ldionne
Differential Revision: https://reviews.llvm.org/D105582
|
 | libcxx/include/CMakeLists.txt |
 | libcxx/include/module.modulemap |
 | libcxx/include/__variant/monostate.h |
 | libcxx/include/variant |
Commit
87e41cc4b6c6bf22311f78e30c24ea92836bb021
by llvmgnsyncbot[gn build] Port 321c2ea91cb1
|
 | llvm/utils/gn/secondary/libcxx/include/BUILD.gn |
Commit
63cc251eb949b7879919d505dbe375b1cd038781
by jeremy.morse[DebugInfo][InstrRef][4/4] Support DBG_INSTR_REF through all backend passes
This is a cleanup patch -- we're now able to support all flavours of variable location in instruction referencing mode. This patch updates various tests for debug instructions to be broader: numerous code paths try to ignore debug isntructions, and they now have to ignore the additional DBG_PHI and DBG_INSTR_REFs that we can generate.
A small amount of rework happens for LiveDebugVariables: as we don't need to track live intervals through regalloc any more, we can get away with unlinking debug instructions before regalloc, then re-inserting them after. Note that this isn't (yet) true of DBG_VALUE_LISTs, they still have to go through live interval tracking.
In SelectionDAG, add a helper lambda that emits half-formed DBG_INSTR_REFs for arguments in instr-ref mode, DBG_VALUE otherwise. This is one of the final locations where DBG_VALUEs are emitted for vreg arguments.
X86InstrInfo now un-sets the debug instr number on SUB instructions that get mutated into CMP instructions. As the instruction no longer computes a subtraction, we can't use it for variable locations.
Differential Revision: https://reviews.llvm.org/D88898
|
 | llvm/test/DebugInfo/MIR/InstrRef/x86-drop-compare-inst.mir |
 | llvm/lib/CodeGen/MachineSink.cpp |
 | llvm/lib/CodeGen/RegisterPressure.cpp |
 | llvm/lib/CodeGen/ScheduleDAGInstrs.cpp |
 | llvm/lib/CodeGen/LiveDebugVariables.cpp |
 | llvm/test/DebugInfo/MIR/InstrRef/phi-regallocd-to-stack.mir |
 | llvm/test/DebugInfo/MIR/InstrRef/phi-through-regalloc.mir |
 | llvm/lib/CodeGen/RegisterCoalescer.cpp |
 | llvm/test/DebugInfo/MIR/InstrRef/phi-coalesce-subreg.mir |
 | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp |
 | llvm/lib/Target/X86/X86InstrInfo.cpp |
 | llvm/test/DebugInfo/MIR/InstrRef/phi-coalescing.mir |
 | llvm/lib/CodeGen/LiveIntervals.cpp |
Commit
6afd6e96ce203ca6b2840df48e939434237bf82e
by Louis Dionne[libc++] Workaround failures with modules on Clang ToT
|
 | libcxx/include/__iterator/next.h |
 | libcxx/include/__iterator/advance.h |
 | libcxx/include/__iterator/prev.h |
 | libcxx/test/support/test_standard_function.h |
Commit
a276f451804463fd663eaeac86aea1e24a356247
by Louis Dionne[libc++][docs] Update documentation to reflect libc++'s compiler support policy
In https://lists.llvm.org/pipermail/llvm-dev/2021-March/148881.html, we discussed updating the compiler support policy for libc++ to match more closely what we do actually support.
This commit enshrines that policy decision in libc++'s documentation.
Differential Revision: https://reviews.llvm.org/D105563
|
 | libcxx/docs/index.rst |
Commit
83a87b831a11d99d3c986c0c285f4688119e8831
by nikita.ppv[IR] Restore vector support for deprecated CreateGEP methods
As pointed out in post-commit review on rG8e22539067d9, it's necessary to call getScalarType() to support GEPs with a vector base. Dropping that call was an oversight on my side.
|
 | llvm/include/llvm/IR/IRBuilder.h |
 | llvm/include/llvm/IR/Instructions.h |
Commit
d2a8d362c592b2f1918a0f8dca7442f9dd44fe82
by Louis Dionne[libc++][ci] Stop testing on GCC previous, since we don't support it anymore
This is the first of a few commits that update the CI to match the recently officialized compiler support policy. I'm staging those changes to try and keep the CI green at all times, accounting how builders refresh their Docker image.
|
 | libcxx/utils/ci/run-buildbot |
 | libcxx/utils/ci/buildkite-pipeline.yml |
Commit
74a5760d35e2e75a295793e09260120ef0c5f4ea
by Stanislav.Mekhanoshin[AMDGPU] Set LoopInfo as preserved by SIAnnotateControlFlow
The pass does not change loops, it just adds calls.
Differential Revision: https://reviews.llvm.org/D105583
|
 | llvm/lib/Target/AMDGPU/SIAnnotateControlFlow.cpp |
 | llvm/test/CodeGen/AMDGPU/llc-pipeline.ll |
Commit
8cf60e61e7b0e3213b5b81039878dcf1ef18c00f
by ajcbik[mlir][sparse] updated setter/getter comments
For the getters, it is bad practice to keep the reference around for too long, as explained in the new comment
Reviewed By: gussmith23
Differential Revision: https://reviews.llvm.org/D105599
|
 | mlir/include/mlir/Dialect/SparseTensor/Utils/Merger.h |
Commit
c34b0ab589e5760b1eb82bf1f289590d351ea3c6
by i[LangRef] Clarify !associated
Notably, a global variable with the metadata should generally not be referenced by a function function. E.g. -fstack-size-section usage is fine, but -fsanitize-coverage= used to have a linker GC problem (fixed by D97430).
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D104933
|
 | llvm/docs/LangRef.rst |
Commit
8ef67fa9d22952dba578fed318a7cb520c50a09b
by llvm-dev[CostModel][X86] Account for older SSE targets with slow fp->int conversions
Both the conversion cost and the xmm->gpr transfer cost tend to be a lot higher on early SSE targets
|
 | llvm/test/Analysis/CostModel/X86/fptoui.ll |
 | llvm/test/Analysis/CostModel/X86/fptosi.ll |
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp |
Commit
769e782793391a1ee0d257c8b0c6f43a02321e22
by llvm-devFix MSVC "truncation from 'int' to 'bool'" warning. NFCI.
|
 | clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp |
Commit
5b350183cdabd83573bc760ddf513f3e1d991bcb
by efriedma[ScalarEvolution] Fix overflow in computeBECount.
There are two issues with the current implementation of computeBECount:
1. It doesn't account for the possibility that adding "Stride - 1" to Delta might overflow. For almost all loops, it doesn't, but it's not actually proven anywhere. 2. It doesn't account for the possibility that Stride is zero. If Delta is zero, the backedge is never taken; the value of Stride isn't relevant. To handle this, we have to make sure that the expression returned by computeBECount evaluates to zero.
To deal with this, add two new checks:
1. Use a variety of tricks to try to prove that the addition doesn't overflow. If the proof is impossible, use an alternate sequence which never overflows. 2. Use umax(Stride, 1) to handle the possibility that Stride is zero.
Differential Revision: https://reviews.llvm.org/D105216
|
 | llvm/include/llvm/Analysis/ScalarEvolution.h |
 | llvm/lib/Analysis/ScalarEvolution.cpp |
 | llvm/test/Analysis/ScalarEvolution/2008-11-18-Stride2.ll |
 | llvm/test/Analysis/ScalarEvolution/2008-11-18-Stride1.ll |
 | llvm/test/Analysis/ScalarEvolution/trip-count-unknown-stride.ll |
Commit
a11aea68a4b31e72bc0b84bde5f3210048287d28
by leonardchan[compiler-rt][hwasan] Define fuchsia implementations of required hwasan functions
This contains all the definitions required by hwasan for the fuchsia implementation and can be landed independently from the remaining parts of D91466.
Differential Revision: https://reviews.llvm.org/D103936
|
 | compiler-rt/lib/hwasan/hwasan_fuchsia.cpp |
 | compiler-rt/lib/sanitizer_common/sanitizer_fuchsia.cpp |
Commit
d833543dd52cfb126f4c6d765166e42da217b72a
by i[LangRef] Fix typo about SHF_LINK_ORDER
|
 | llvm/docs/LangRef.rst |
Commit
2f9504aa419b27d45e87db77476b9cf17feee4fb
by Matthew.ArsenaultMips/GlobalISel: Use correct callee calling convention
This was using the convention from the calling function.
|
 | llvm/lib/Target/Mips/MipsCallLowering.cpp |
Commit
9b057f647d70fc958d4a1a7a00e2debaf72127c1
by Matthew.ArsenaultGlobalISel: Track original argument index in ArgInfo
SelectionDAG's equivalents in ISD::InputArg/OutputArg track the original argument index. Mips relies on this, and its currently reinventing its own parallel CallLowering infrastructure which tracks these indexes on the side. Add this to help move towards deleting the custom mips handling.
|
 | llvm/unittests/CodeGen/GlobalISel/LegalizerHelperTest.cpp |
 | llvm/lib/Target/X86/X86CallLowering.cpp |
 | llvm/lib/Target/Mips/MipsCallLowering.cpp |
 | llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp |
 | llvm/lib/Target/ARM/ARMCallLowering.cpp |
 | llvm/lib/Target/ARM/ARMLegalizerInfo.cpp |
 | llvm/lib/Target/PowerPC/GISel/PPCCallLowering.cpp |
 | llvm/include/llvm/CodeGen/GlobalISel/CallLowering.h |
 | llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp |
 | llvm/lib/Target/AMDGPU/AMDGPUCallLowering.cpp |
 | llvm/lib/CodeGen/GlobalISel/CallLowering.cpp |
Commit
43f25e61cec0ac2aaf38b550e3c98f503dd3a8d3
by Matthew.ArsenaultMips/GlobalISel: Remove custom splitToValueTypes
|
 | llvm/lib/Target/Mips/MipsCallLowering.cpp |
 | llvm/lib/Target/Mips/MipsCallLowering.h |
Commit
9dae86ce56f16d76afa6feb98123cd130b01a6c3
by Stanislav.Mekhanoshin[AMDGPU] Fix indention in llc-pipeline test. NFC.
|
 | llvm/test/CodeGen/AMDGPU/llc-pipeline.ll |
Commit
8c7ff9da9039089a89f5b076c267a3efb5da161c
by michael.hliao[Metadata] Decorate methods with 'const'. NFC.
- Minor coding style fix.
|
 | llvm/include/llvm/IR/Metadata.h |
 | llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp |
Commit
4747e1b83ba0117a88551a358f8960060ffa7558
by nicolas.vasilache[mlir][Linalg] Fix tensor.extract_slice(linalg.init_tensor) canonicalization for rank-reducing extract
Differential Revision: https://reviews.llvm.org/D105636
|
 | mlir/test/Dialect/Linalg/canonicalize.mlir |
 | mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp |
Commit
8ea2b951c65645ea803d4797dacbb8077b3aa629
by Louis Dionne[libc++][ci] Install Clang 11, Clang 12 and Clang ToT in the Docker image
The compiler support policy mentions that we support Clang 11 and 12, so we should test those. We already test on Clang 12, but I'll add testers for Clang 11 once the new Docker image is in use on all the builders.
|
 | libcxx/utils/ci/Dockerfile |
Commit
de5582be26b771c31e4333520c12ea65cec03ee5
by Stanislav.Mekhanoshin[AMDGPU] Fix more indention in llc-pipeline test. NFC.
|
 | llvm/test/CodeGen/AMDGPU/llc-pipeline.ll |
Commit
5a1c50410ccc1973a1a0a4acca0c01677c28e9b6
by mizvekov[clang] fix constexpr code generation for user conversions.
When building the member call to a user conversion function during an implicit cast, the expression was not being checked for immediate invocation, so we were never adding the ConstantExpr node to AST.
This would cause the call to the user conversion operator to be emitted even if it was constantexpr evaluated, and this would even trip an assert when said user conversion was declared consteval: `Assertion failed: !cast<FunctionDecl>(GD.getDecl())->isConsteval() && "consteval function should never be emitted", file clang\lib\CodeGen\CodeGenModule.cpp, line 3530`
Fixes PR48855.
Signed-off-by: Matheus Izvekov <mizvekov@gmail.com>
Reviewed By: rsmith
Differential Revision: https://reviews.llvm.org/D105446
|
 | clang/lib/Sema/SemaExprCXX.cpp |
 | clang/lib/AST/Expr.cpp |
 | clang/test/CodeGenCXX/cxx2a-consteval.cpp |
Commit
9d826fdb284e9010450d4c4c577e4690124d35cc
by a.bataev[X86][NFC]Add run lines for AVX512VL for masked gather test, NFC.
|
 | llvm/test/CodeGen/X86/masked_gather.ll |
Commit
693251fb2f001ac06591ae7d1254be265d36c9c7
by nikita.ppv[CodeGen] Avoid CreateGEP with nullptr type (NFC)
In preparation for dropping support for it. I've replaced it with a proper type where the correct type was obvious and left an explicit getPointerElementType() where it wasn't.
|
 | clang/lib/CodeGen/CGCall.cpp |
 | clang/lib/CodeGen/CodeGenFunction.cpp |
 | clang/lib/CodeGen/CGObjCGNU.cpp |
 | clang/lib/CodeGen/ItaniumCXXABI.cpp |
Commit
74fb868942c8c126a69a09c0503041b7573f68e0
by Louis Dionne[libc++] Add XFAIL for Clang ToT with modules
This is what I should have done instead of 6afd6e96ce20.
|
 | libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.prev/special_function.compile.pass.cpp |
 | libcxx/include/__iterator/prev.h |
 | libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.advance/special_function.compile.pass.cpp |
 | libcxx/include/__iterator/advance.h |
 | libcxx/include/__iterator/next.h |
 | libcxx/test/std/iterators/iterator.primitives/range.iter.ops/range.iter.ops.next/special_function.compile.pass.cpp |
Commit
6dd94cbff55afeb1b9692d0f21d08b79eae16a29
by craig.topper[ARM] Use matchSimpleRecurrence to simplify some code in MVEGatherScatterLowering. NFCI
Reviewed By: dmgreen
Differential Revision: https://reviews.llvm.org/D105262
|
 | llvm/lib/Target/ARM/MVEGatherScatterLowering.cpp |
Commit
0d74fd3fdf5013e72c9c1682a284b8de7973a805
by a.bataev[SLP][COST][X86]Improve cost model for masked gather.
Revived D101297 in its original form + added some changes in X86 legalization cehcking for masked gathers.
This solution is the most stable and the most correct one. We have to check the legality before trying to build the masked gather in SLP. Without this check we have incorrect cost (for SLP) in case if the masked gather is not legal/slower than the gather. And we're missing some vectorization opportunities.
This can be fixed in the cost model, but in this case we need to add special checks for the cost of GEPs for ScatterVectorize node, add special check for small trees, etc., i.e. there are a lot of corner cases here and there, which insrease code base and make it harder to maintain the code.
> Can't we rely on cost model to deal with this? This can be profitable for futher vectorization, when we can start from such gather loads as seed.
The question from D101297. Actually, no, it can't. Actually, simple gather may give us better result, especially after we started vectorization of insertelements. Plus, like I said before, the cost for non-legal masked gathers leads to missed vectorization opportunities.
Differential Revision: https://reviews.llvm.org/D105042
|
 | llvm/lib/Target/X86/X86TargetTransformInfo.cpp |
 | llvm/test/Transforms/SLPVectorizer/X86/pr47623.ll |
 | llvm/test/Transforms/LoopVectorize/X86/gather_scatter.ll |
 | llvm/test/CodeGen/X86/masked_gather_scatter_widen.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/lookahead.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/pr47629-inseltpoison.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/memory-runtime-checks.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/stores-non-ordered.ll |
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
 | llvm/test/CodeGen/X86/masked_gather_scatter.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/pr47629.ll |
 | llvm/test/CodeGen/X86/masked_gather.ll |
Commit
f57d396dcab2a280faa72aff68623a8ccfdc5421
by a.bataev[OPENMP]Do no privatize const firstprivates in target regions.
No need to emit private copyfor firstprivate constants in target regions, we can use the original copy instead.
Differential Revision: https://reviews.llvm.org/D105647
|
 | clang/lib/CodeGen/CGStmtOpenMP.cpp |
 | clang/test/OpenMP/target_firstprivate_codegen.cpp |
 | clang/test/OpenMP/nvptx_target_firstprivate_codegen.cpp |
Commit
b5a7da43916ca61d7449892a2bb8ffa784953693
by nikita.ppv[NVPTX] Pass explicit GEP type (NFC)
Use source element type of original GEP, as we're just changing the address space.
|
 | llvm/lib/Target/NVPTX/NVPTXLowerArgs.cpp |
Commit
cfb94212d49a1a28208b09bb7d80b86956854b4b
by nikita.ppv[AMDGPU] Pass explicit GEP type in printf transform (NFC)
This code is working on an i8*. Avoid nullptr element type in preparation for removing support.
|
 | llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp |
Commit
9e225a2a71ce43cb74283d3bcf8c9d1eb7c30bd4
by nikita.ppv[AMDGPU] Simplify GEP construction (NFC)
Noticed while making a related change. This code was doing something really peculiar: Creating an APInt by parsing a string. And then creating a SmallVector with one element to create the GEP.
Instead create the APInt from integers and directly pass the single index to GetElementPtrInst::Create().
|
 | llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp |
Commit
a0ea3675629a1aecc60326e5439d811956b0f92a
by nikita.ppv[CodeGen] Avoid nullptr arg to CreateStructGEP (NFC)
For now just make the getPointerElementType() explicit.
|
 | clang/lib/CodeGen/CGCall.cpp |
Commit
c574d2fbaca4412c2b758f9049acdb794b2c8764
by a.bataev[SLP]Improve vectorization of stores.
Patch tries to improve the vectorization of stores. Originally, we just check the type and the base pointer of the store. Patch adds some extra checks to avoid non-profitable vectorization cases. It includes analysis of the scalar values to be stored and triggers the vectorization attempt only if the scalar values have same/alt opcode and are from same basic block, i.e. we don't end up immediately with the gather node, which is not profitable. This also improves compile time by filtering out non-profitable cases.
Part of D57059.
Differential Revision: https://reviews.llvm.org/D104122
|
 | llvm/test/Transforms/SLPVectorizer/X86/stores-non-ordered.ll |
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
Commit
ccc6f487d8df42a4bf1e5a1b411881a15f7dac82
by Vitaly Buka[msan] Add funel shift tests
For https://bugs.llvm.org/show_bug.cgi?id=50840
|
 | llvm/test/Instrumentation/MemorySanitizer/funnel_shift.ll |
Commit
915e07605cd5db58db2ea9dd0d2a0a921206d01e
by Vitaly Buka[msan] Handle funnel shifts
Fixes https://bugs.llvm.org/show_bug.cgi?id=50840
Differential Revision: https://reviews.llvm.org/D105387
|
 | llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp |
 | llvm/test/Instrumentation/MemorySanitizer/funnel_shift.ll |
Commit
d458f379324967c3c408be06e21aad9bc92c54cb
by 31459023+hctim[GWP-ASan] Change unreachable -> trap to work around DCE bug.
trapOnAddress is designed to SEGV on a specific address. Unfortunately, with an IR change, __builtin_unreachable() ends up doing DCE on things that have side effects, like the load that causes the trap.
Change to __builtin_trap() to avoid the optimisation.
Root cause is still an LLVM bug, and tracked in https://bugs.llvm.org/show_bug.cgi?id=47480.
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D105654
|
 | compiler-rt/lib/gwp_asan/guarded_pool_allocator.cpp |
Commit
a7992b43a54f89dca7b76cb79d1045acce6dbe1f
by leonardchan[NFC][compiler-rt][fuchsia] Add InitShadowBounds declaration to header
Forgot to include this as a part of a11aea68a4b31e72bc0b84bde5f3210048287d28.
|
 | compiler-rt/lib/sanitizer_common/sanitizer_fuchsia.h |
Commit
1def2579e10dd84405465f403e8c31acebff0c97
by dblaikiePR51018: Remove explicit conversions from SmallString to StringRef to future-proof against C++23
C++23 will make these conversions ambiguous - so fix them to make the codebase forward-compatible with C++23 (& a follow-up change I've made will make this ambiguous/invalid even in <C++23 so we don't regress this & it generally improves the code anyway)
|
 | clang-tools-extra/clangd/QueryDriverDatabase.cpp |
 | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp |
 | llvm/lib/Transforms/Scalar/MergeICmps.cpp |
 | clang-tools-extra/clangd/JSONTransport.cpp |
 | llvm/lib/Support/Signals.cpp |
 | clang/lib/Basic/FileManager.cpp |
 | llvm/unittests/Bitstream/BitstreamWriterTest.cpp |
 | mlir/lib/IR/AsmPrinter.cpp |
 | clang-tools-extra/clangd/Selection.cpp |
 | clang/include/clang/Tooling/DependencyScanning/DependencyScanningFilesystem.h |
 | clang/tools/clang-offload-bundler/ClangOffloadBundler.cpp |
 | clang/lib/CrossTU/CrossTranslationUnit.cpp |
 | llvm/lib/IR/ValueSymbolTable.cpp |
 | clang/lib/Lex/PPDirectives.cpp |
 | clang/unittests/Frontend/FrontendActionTest.cpp |
 | llvm/lib/ProfileData/Coverage/CoverageMappingWriter.cpp |
 | llvm/tools/llvm-readobj/COFFDumper.cpp |
 | llvm/lib/Transforms/Utils/MemoryOpRemark.cpp |
 | clang/lib/CodeGen/MicrosoftCXXABI.cpp |
 | llvm/unittests/DebugInfo/DWARF/DWARFDieManualExtractTest.cpp |
 | lldb/source/Commands/CommandCompletions.cpp |
 | lld/COFF/PDB.cpp |
 | llvm/lib/Support/CommandLine.cpp |
 | clang/lib/StaticAnalyzer/Checkers/DereferenceChecker.cpp |
 | clang/lib/AST/MicrosoftMangle.cpp |
 | clang/lib/Sema/SemaStmt.cpp |
 | llvm/lib/Object/IRSymtab.cpp |
 | llvm/tools/llvm-exegesis/lib/Analysis.cpp |
 | llvm/unittests/Support/CommandLineTest.cpp |
 | llvm/lib/LTO/LTOModule.cpp |
 | clang/lib/Driver/ToolChains/AMDGPU.cpp |
 | clang/tools/clang-scan-deps/ClangScanDeps.cpp |
 | llvm/unittests/Support/LockFileManagerTest.cpp |
 | llvm/lib/Support/VirtualFileSystem.cpp |
 | llvm/lib/MC/MCContext.cpp |
 | clang-tools-extra/clang-doc/HTMLGenerator.cpp |
 | clang/lib/Lex/HeaderSearch.cpp |
 | clang/lib/Analysis/MacroExpansionContext.cpp |
 | mlir/lib/Tools/mlir-lsp-server/lsp/Transport.cpp |
Commit
e2d30846327c7ec5cc9d2a46aa9bcd9c2c4eff93
by dblaikiePR51018: Disallow explicit construction of StringRef from SmallString due to ambiguity in C++23
See bug for full details, but basically there's an upcoming ambiguity in the conversion in `StringRef(SomeSmallString)` - either the implicit conversion operator (SmallString::operator StringRef) could be used, or the std::string_view range-based ctor (& then `StringRef(std::string_view)` would be used)
To address this, make such a conversion invalid up-front - most uses are more tersely written as `SomeSmallString.str()` anyway, or more clearly written as `StringRef x = y;` rather than `StringRef x(y);` - so if you hit this in out-of-tree code, please update in one of those ways. Hopefully I've fixed everything in tree prior to this patch landing.
|
 | llvm/include/llvm/ADT/SmallString.h |
Commit
c9a0e74697778a7f2d5da2a22fe56a3eec2ec9a8
by dblaikieRevert "PR51018: Disallow explicit construction of StringRef from SmallString due to ambiguity in C++23"
This reverts commit e2d30846327c7ec5cc9d2a46aa9bcd9c2c4eff93.
MSVC doesn't seem to resolve the intended ambiguity in implicit conversion contexts correctly: https://godbolt.org/z/ee16aqv4v
|
 | llvm/include/llvm/ADT/SmallString.h |
Commit
82563d8d14b6177351c26a6750c79a9d21a9cd73
by rob.suderman[mlir][bazel] Added missing MathDialect dep to LinalgOps target
LinalgOps needs MathDialect as a dependency for it to build correctly.
Differential Revision: https://reviews.llvm.org/D105656
|
 | utils/bazel/llvm-project-overlay/mlir/BUILD.bazel |
Commit
8af69975af39867187dabc5a9e68ad68b53c46f9
by a.bataev[InstCombine][NFC]Use only `replaceInstUsesWith`, NFC.
|
 | llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp |
Commit
e2bc88f175400e06dffd217a86841d069870fb30
by david.green[ARM] Extra v8i16 -> i64 reduction tests with loads. NFC
|
 | llvm/test/CodeGen/Thumb2/mve-vecreduce-mla.ll |
Commit
3dd75f53710683fe3616eb64a2c1865ade43b3f7
by tlively[WebAssembly] Scalarize extract_vector_elt of binops
Override the `shouldScalarizeBinop` target lowering hook using the same implementation used in the x86 backend. This causes `extract_vector_elt`s of vector binary ops to be scalarized if the scalarized version would be supported.
Differential Revision: https://reviews.llvm.org/D105646
|
 | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.cpp |
 | llvm/lib/Target/WebAssembly/WebAssemblyISelLowering.h |
 | llvm/test/CodeGen/WebAssembly/masked-shifts.ll |
Commit
7c35aae35b2c386b59af58c56ed36908f3d68371
by silvaseanMark TensorDialect legal and PadTensor op illegal
`GeneralizePadTensorOpPattern` might generate `tensor.dim` op so the TensorDialect should be marked legal. This pattern should also transform all `linalg.pad_tensor` ops so mark those as illegal. Those changes are missed from a previous change in https://reviews.llvm.org/D105293
Reviewed By: silvas
Differential Revision: https://reviews.llvm.org/D105642
|
 | mlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp |
 | mlir/test/Dialect/Linalg/bufferize.mlir |
Commit
631516301ea34f5e16dc13134037f2d748248606
by craig.topper[ARM] Pass 2 instead of 0 to PHINode::Create in MVEGatherScatterLowering. NFC
This parameter controls how much space is reserved for incoming values. There are always going to be 2 incoming values in this case.
While there remove the unused std::vector right below.
Found while looking at porting this code to RISCV.
|
 | llvm/lib/Target/ARM/MVEGatherScatterLowering.cpp |
Commit
e5b0fe1b834779e7ecb81755b2f4019f689fea58
by Stanislav.Mekhanoshin[AMDGPU] Mark more SOP instructions as rematerializable
The rest of the SOP instructions implicitly set SCC and not suitable for the rematerialization.
Differential Revision: https://reviews.llvm.org/D105670
|
 | llvm/lib/Target/AMDGPU/SOPInstructions.td |
 | llvm/test/CodeGen/AMDGPU/remat-sop.mir |
Commit
0d0cff3ace39378acfc66d6564dc99e19b8a561f
by gusss[mlir][sparse] Add Merger unit tests
We opt to use unit tests rather than check tests as the lattice/merger code is a small C++ component with a well-defined API. Testing this API via check tests would be far less direct and readable. In addition, as the check tests will only be able to test the API indirectly, the tests may break based on unrelated changes; e.g. changes in linalg.
Reviewed By: aartbik
Differential Revision: https://reviews.llvm.org/D104956
|
 | mlir/unittests/Dialect/SparseTensor/MergerTest.cpp |
 | mlir/unittests/Dialect/CMakeLists.txt |
 | mlir/unittests/Dialect/SparseTensor/CMakeLists.txt |
Commit
0eb2b13d609c3225d1146bf7a9ef03340061c95d
by Yuanfang ChenAdd AddDiscriminatorsPass to NPM default O0 pipeline
AddDiscriminatorsPass is in Legacy PM's O0 pipeline. This patch did the same for NPM O0 pipeline.
Reviewed By: aeubanks, MaskRay
Differential Revision: https://reviews.llvm.org/D105650
|
 | llvm/test/Other/new-pm-O0-defaults.ll |
 | llvm/lib/Passes/PassBuilder.cpp |
Commit
1dc005aa7dc51131515894cbd34f27d6b361f23e
by kdaAdd documentation for -fsanitize-address-use-after-return.
for issue: https://github.com/google/sanitizers/issues/1394
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D104155
|
 | clang/include/clang/Driver/Options.td |
 | clang/docs/AddressSanitizer.rst |
 | clang/docs/UsersManual.rst |
Commit
70eb3bfff0ac8c882d793cc171e1230cf313b49d
by chiahungduan[mlir-reduce] Fix the grammer in the doc
Reviewed By: jpienaar
Differential Revision: https://reviews.llvm.org/D105623
|
 | mlir/docs/Tools/mlir-reduce.md |
Commit
009436e9c1fee1290d62bc0faafe0c0295542f56
by efriedma[NFC][ScalarEvolution] Cleanup howManyLessThans.
In preparation for D104075. Some NFC cleanup, and some test coverage for planned changes.
|
 | llvm/test/Analysis/ScalarEvolution/max-trip-count.ll |
 | llvm/test/Analysis/ScalarEvolution/trip-count13.ll |
 | llvm/test/Analysis/ScalarEvolution/lt-overflow.ll |
 | llvm/include/llvm/Analysis/ScalarEvolution.h |
 | llvm/lib/Analysis/ScalarEvolution.cpp |
Commit
38451fa1789cd42fe4c1ed8ac519620892e4634d
by joker.ephRevert "[mlir][sparse] Add Merger unit tests"
This reverts commit 0d0cff3ace39378acfc66d6564dc99e19b8a561f.
The build is broken with GCC 5.4
|
 | mlir/unittests/Dialect/SparseTensor/MergerTest.cpp |
 | mlir/unittests/Dialect/SparseTensor/CMakeLists.txt |
 | mlir/unittests/Dialect/CMakeLists.txt |
Commit
ed102ce20a5f5ddf388bc71217228b756e2f5fe3
by powerman1st[RISCV][test] Add new tests for mul optimization in the zba extension with SH*ADD
This patch will show the following optimization by future patches.
(mul x imm) -> (SH1ADD x, (SLLI x, bits)) when imm = 2^n + 2. (mul x imm) -> (SH2ADD x, (SLLI x, bits)) when imm = 2^n + 4. (mul x imm) -> (SH3ADD x, (SLLI x, bits)) when imm = 2^n + 8.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D105614
|
 | llvm/test/CodeGen/RISCV/rv64zba.ll |
 | llvm/test/CodeGen/RISCV/rv32zba.ll |
Commit
2e194dec6076d06ccb40f50a1718e2250255a3dc
by Reshabhkumar.Sharma[ASan][AMDGPU] Make shadow offset match X86 on Linux
This patch explicitly sets the shadow offset for AMDGPU to match that of X86 on Linux.
Reviewed By: vitalybuka
https://reviews.llvm.org/D105282
|
 | llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_generic_address_space.ll |
 | llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp |
 | llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_global_address_space.ll |
 | llvm/test/Instrumentation/AddressSanitizer/AMDGPU/asan_instrument_constant_address_space.ll |
Commit
932e3d9960c115d0f6a92b6b4c9529892ade8d32
by omair.javaidRevert "GlobalISel/AArch64: don't optimize away redundant branches at -O0"
This reverts commit 458c230b5ef893238d2471fcff27cd275e8026d5.
This broke LLDB buildbot testcase where breakpoint set at start of loop failed to hit. https://lab.llvm.org/buildbot/#/builders/96/builds/9404
https://github.com/llvm/llvm-project/blob/main/lldb/test/API/commands/process/attach/main.cpp#L15
Differential Revision: https://reviews.llvm.org/D105238
|
 | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp |
 | llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/phi.ll |
 | llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll |
 | llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic.ll |
 | llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/long_ambiguous_chain_s32.ll |
 | llvm/lib/Target/AArch64/GISel/AArch64InstructionSelector.cpp |
 | llvm/test/DebugInfo/AArch64/fallthrough-branch.ll |
 | llvm/test/CodeGen/AArch64/unwind-preserved.ll |
 | llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/long_ambiguous_chain_s64.ll |
 | llvm/test/CodeGen/Mips/GlobalISel/llvm-ir/jump_table_and_brjt.ll |
Commit
5553d83adac68c80226bc626feb14f9c24d9f886
by echristoUpdate Bazel overlay in GPUToGPURuntimeTransforms.
|
 | utils/bazel/llvm-project-overlay/mlir/BUILD.bazel |
Commit
55bd12d4b7eeed5d2909de4babaead12396c521c
by lkail[PowerPC] Remove implicit use register after transformToImmFormFedByLI()
When the instruction has imm form and fed by LI, we can remove the redundat LI instruction. Below is an example: ``` renamable $x5 = LI8 2 renamable $x4 = exact SRD killed renamable $x4, killed renamable $r5, implicit $x5 ```
will be converted to: ``` renamable $x5 = LI8 2 renamable $x4 = exact RLDICL killed renamable $x4, 62, 2, implicit killed $x5 ```
But when we do this optimization, we forget to remove implicit killed $x5 This bug has caused a lnt case error. This patch is to fix above bug.
Reviewed By: #powerpc, shchenz
Differential Revision: https://reviews.llvm.org/D85288
|
 | llvm/test/CodeGen/PowerPC/remove-redundant-li-implicit-reg.mir |
 | llvm/lib/Target/PowerPC/PPCInstrInfo.cpp |
Commit
62cc3cdda64aaaca5bfeba4b131ab6b5f50b4e0c
by i[CMake] Disable -fno-semantic-interposition for GCC<10.3 on SystemZ
`-fno-semantic-interposition` was added for GCC in D102453, but some MLIR tests on SystemZ failed with GCC<10.3 due to a bug.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D105453
|
 | llvm/cmake/modules/HandleLLVMOptions.cmake |
Commit
88326bbce38c53f4782ba3b593b6720438a9569c
by powerman1st[RISCV][clang] Add macro __riscv_zvlsseg for RVV Zvlsseg builtins
Add extension macro __riscv_zvlsseg to enable Zvlsseg builtins only with target feature Zvlsseg.
Reviewed By: HsiangKai
Differential Revision: https://reviews.llvm.org/D105626
|
 | clang/test/CodeGen/RISCV/rvv-intrinsics-overloaded/vlseg.c |
 | clang/test/CodeGen/RISCV/rvv-intrinsics/vlsegff.c |
 | clang/test/CodeGen/RISCV/rvv-intrinsics-overloaded/vlsegff.c |
 | clang/utils/TableGen/RISCVVEmitter.cpp |
 | clang/test/CodeGen/RISCV/rvv-intrinsics/vlseg.c |