Commit
41492d77ba65338b9eb2b7f401e47acf22e4ea19
by llvm-dev[LoopVectorize][X86] Add operands to make it more obvious what line the CHECK concerns
As we're checking the cost debug analysis these should match the original IR line - so we shouldn't have any variable naming issues.
I'm investigating v4i32 mul -> PMADDDW costs handling (for PR47437) and these CHECK lines were proving tricky to keep track of
|
 | llvm/test/Transforms/LoopVectorize/X86/mul_slm_16bit.ll |
Commit
4ca1fbe361860976646ad09da26757bf32563145
by sander.desmalen[SelectionDAG] Make WidenVecRes_Convert work for scalable vectors.
Most of the code wasn't yet scalable safe, although most of the code conceptually just works for scalable vectors. This change makes the algorithm work on ElementCount, where appropriate, and leaves the fixed-width only code to use `getFixedNumElements`.
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D110058
|
 | llvm/test/CodeGen/AArch64/sve-fcvt.ll |
 | llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp |
Commit
36daf074d997a79f25a1de2a1b869170ea6c20cc
by fmayer[hwasan] also omit safe mem[cpy|mov|set].
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D109816
|
 | llvm/include/llvm/Analysis/StackSafetyAnalysis.h |
 | llvm/test/Analysis/StackSafetyAnalysis/ipa-alias.ll |
 | llvm/test/Analysis/StackSafetyAnalysis/local.ll |
 | llvm/test/Instrumentation/HWAddressSanitizer/stack-safety-analysis.ll |
 | llvm/test/Instrumentation/HWAddressSanitizer/mem-intrinsics.ll |
 | llvm/lib/Analysis/StackSafetyAnalysis.cpp |
 | llvm/test/Analysis/StackSafetyAnalysis/ipa.ll |
 | llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp |
Commit
d0746f2e9bbf08f52196ae12f25d0ef7edcbbe4c
by yikongDon't fold (select C, (gep Ptr, Idx), Ptr) if C is vector but Idx is scalar
The folding rule (select C, (gep Ptr, Idx), Ptr) -> (gep Ptr, (select C, Idx, 0)) creates a malformed SELECT IR if C is a vector while Idx is scalar.
SELECT VecC, ScalarIdx, 0
We could splat Idx to a vector but it defeats the purpose of optimisation. Don't apply the folding rule in this case.
This fixes a regression from commit d561b6fbdbe6d1da05fd92003a4ac1e37bf4b8bc.
|
 | llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp |
 | llvm/test/Transforms/InstCombine/select-gep.ll |
Commit
a5e1c746b870d79142419a07a8aecc471eacfed1
by Raphael IsemannUnbreak module builds by making InstructionWorklist.h non-modular
This regressed in D110181 and apparently the header intentionally requires DEBUG_TYPE to be defined by the including file. Just exclude the header from the module to unbreak the build.
|
 | llvm/include/llvm/module.modulemap |
Commit
02cd8a6b915a9dab32fdd91167f875ce5f67ebd4
by david.green[ARM] Allow smaller VMOVL in tail predicated loops
This allows VMOVL in tail predicated loops so long as the the vector size the VMOVL is extending into is less than or equal to the size of the VCTP in the tail predicated loop. These cases represent a sign-extend-inreg (or zero-extend-inreg), which needn't block tail predication as in https://godbolt.org/z/hdTsEbx8Y.
For this a vecsize has been added to the TSFlag bits of MVE instructions, which stores the size of the elements that the MVE instruction operates on. In the case of multiple size (such as a MVE_VMOVLs8bh that extends from i8 to i16, the largest size was be chosen). The sizes are encoded as 00 = i8, 01 = i16, 10 = i32 and 11 = i64, which often (but not always) comes from the instruction encoding directly. A unit test was added, and although only a subset of the vecsizes are currently used, the rest should be useful for other cases.
Differential Revision: https://reviews.llvm.org/D109706
|
 | llvm/lib/Target/ARM/ARMInstrFormats.td |
 | llvm/lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h |
 | llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp |
 | llvm/test/CodeGen/Thumb2/mve-vmovlloop.ll |
 | llvm/lib/Target/ARM/ARMInstrMVE.td |
 | llvm/unittests/Target/ARM/MachineInstrTest.cpp |
Commit
9f34f75ff8f49b0efca6e20d916527a2c432d8b4
by martin[lldb] [Windows] Fix continuing from breakpoints and singlestepping on ARM/AArch64
Based on suggestions by Eric Youngdale.
This fixes https://llvm.org/PR51673.
Differential Revision: https://reviews.llvm.org/D109777
|
 | lldb/source/Plugins/Platform/Windows/PlatformWindows.cpp |
 | lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp |
 | lldb/source/Plugins/Process/Windows/Common/NativeProcessWindows.h |
 | lldb/source/Plugins/Process/Windows/Common/NativeThreadWindows.cpp |
 | lldb/source/Plugins/Platform/Windows/PlatformWindows.h |
 | lldb/source/Plugins/Process/Windows/Common/TargetThreadWindows.cpp |
 | lldb/source/Plugins/Process/Windows/Common/NativeProcessWindows.cpp |
Commit
ea21d688dc0a420b9fc385562a46017fb39b13e5
by flo[Matrix] Emit assumption that matrix indices are valid.
The matrix extension requires the indices for matrix subscript expression to be valid and it is UB otherwise.
extract/insertelement produce poison if the index is invalid, which limits the optimizer to not be bale to scalarize load/extract pairs for example, which causes very suboptimal code to be generated when using matrix subscript expressions with variable indices for large matrixes.
This patch updates IRGen to emit assumes to for index expression to convey the information that the index must be valid.
This also adjusts the order in which operations are emitted slightly, so indices & assumes are added before the load of the matrix value.
Reviewed By: erichkeane
Differential Revision: https://reviews.llvm.org/D102478
|
 | llvm/include/llvm/IR/MatrixBuilder.h |
 | clang/test/CodeGen/matrix-type-operators.c |
 | clang/lib/CodeGen/CGExpr.cpp |
 | clang/test/CodeGenObjC/matrix-type-operators.m |
 | clang/test/CodeGenCXX/matrix-type-operators.cpp |
 | clang/lib/CodeGen/CGExprScalar.cpp |
Commit
1ee851c5859fdb36eca57a46347a1e7b8e1ff236
by spatelRevert "[CodeGen] regenerate test checks; NFC"
This reverts commit 52832cd917af00e2b9c6a9d1476ba79754dcabff. The motivating commit 2f6b07316f5 caused several bots to hit an infinite loop at stage 2, so that needs to be reverted too while figuring out how to fix that.
|
 | clang/test/CodeGen/aapcs-bitfield.c |
Commit
c6013f71a4555f6d9ef9c60e6bc4376ad63f1c47
by spatelRevert "[InstCombine] fold cast of right-shift if high bits are not demanded"
This reverts commit 2f6b07316f560a1f6d225919019dff2e5d6346e5.
This caused several bots to hit an infinite loop at stage 2, so it needs to be reverted while figuring out how to fix that.
|
 | llvm/test/Transforms/InstCombine/trunc-demand.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp |
Commit
a7c6471a85380f5af644e50daf2951b41c82f1b2
by flo[Passes] Run vector-combine early with -fenable-matrix.
IR with matrix intrinsics is likely to also contain large vector operations, which can benefit from early simplifications.
This is the last step in a series of changes to improve code-gen for code using matrix subscript operators with the C/C++ matrix extension in CLang, like
using matrix_t = double __attribute__((matrix_type(15, 15)));
void foo(unsigned i, matrix_t &A, matrix_t &B) { for (unsigned j = 0; j < 4; ++j) for (unsigned k = 0; k < i; k++) B[k][j] -= A[k][j] * B[i][j]; }
https://clang.godbolt.org/z/6dKxK1Ed7
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D102496
|
 | llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll |
 | llvm/lib/Passes/PassBuilderPipelines.cpp |
 | llvm/test/Other/new-pm-defaults.ll |
 | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp |
Commit
c828b93fb367b67d5e6342fee179a93970ba71ec
by thakis[gn build] (manually) port f8b1cc365786
|
 | llvm/utils/gn/secondary/libcxxabi/src/BUILD.gn |
Commit
f099ac838e6bce8b743a71c2fc46c1699eae8dc3
by llvmgnsyncbot[gn build] Port 7a320b279d07
|
 | llvm/utils/gn/secondary/libcxx/include/BUILD.gn |
Commit
d5681f1d688a45c000dd1e2c4f4d3678e0440b94
by sander.desmalen[SelectionDAG] Add PromoteIntOp_INSERT_SUBVECTOR.
This is required to codegen something like: <vscale x 8 x i16> @llvm.experimental.vector.insert(<vscale x 8 x i16> %vec, <vscale x 2 x i16> %subvec, i64 %idx) where the output vector is legal, but the input vector needs promoting.
It implements this by performing the whole operation on the promoted type, and then truncating the result.
Reviewed By: david-arm, craig.topper
Differential Revision: https://reviews.llvm.org/D110059
|
 | llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h |
 | llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp |
 | llvm/test/CodeGen/AArch64/sve-insert-vector.ll |
Commit
9689c1b7bb77d65e8acc9a13e5e416803d38b02f
by Stefan Gränitz[lldb] JITLoaderGDB tests can use lli in ORC greedy mode
At first, lli only supported lazy mode for ORC. Greedy mode was added with e1579894d205 and is the default settings now. JITLoaderGDB tests don't rely on laziness, so we can switch them to greedy and remove some complexity.
|
 | lldb/test/Shell/Breakpoint/jit-loader_jitlink_elf.test |
 | lldb/test/Shell/Breakpoint/jit-loader_rtdyld_elf.test |
Commit
b6d10beb505cbf17c21668cca0486f89ce35857c
by a.bataev[SLP][NFC]Rename function in the test for better matching of the transformation.
|
 | llvm/test/Transforms/SLPVectorizer/X86/tiny-tree.ll |
Commit
05b130342143a0c93407cfbecf6d7cf30c6d1890
by andrew.ng[ELF][test] Restore important part of ICF alignment test
Restore the checking of addresses in ICF test which was testing the behaviour of ICF with regards to different alignments of otherwise identical sections. Also make the test more robust to layout changes.
Differential Revision: https://reviews.llvm.org/D110090
|
 | lld/test/ELF/icf7.s |
Commit
3a00e58c2fca0c20d3792c897ef1ea54b6a168a0
by Tim NorthoverAArch64: use indivisible cmpxchg for 128-bit atomic loads at O0
Like normal atomicrmw operations, at -O0 the simple register-allocator can insert spills into the LL/SC loop if it's expanded and visible when regalloc runs. This can cause the operation to never succeed by repeatedly clearing the monitor. Instead expand to a cmpxchg, which has a pseudo-instruction for -O0.
|
 | llvm/test/CodeGen/AArch64/GlobalISel/arm64-atomic-128.ll |
 | llvm/lib/Target/AArch64/AArch64ISelLowering.cpp |
Commit
3e8d2008f74245e9e1ca60bc97e4e619b0d42c6c
by sander.desmalen[SelectionDAG] Remove PromoteIntOp_EXTRACT_SUBVECTOR.
This code seems untested and is likely obsolete, because this case should already be handled by the code that legalizes the result type of EXTRACT_SUBVECTOR.
Reviewed By: craig.topper
Differential Revision: https://reviews.llvm.org/D110061
|
 | llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp |
 | llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h |
Commit
6375ca40590b9fea49a9d7d20f80d3da6af381f1
by sander.desmalen[AArch64][SVE] Add extract_subvector patterns for unpacked fp16 and bfloat types.
Reviewed By: david-arm
Differential Revision: https://reviews.llvm.org/D110163
|
 | llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td |
 | llvm/test/CodeGen/AArch64/sve-extract-vector.ll |
Commit
f7d1a60cac6b7bb3199e3aba083346bf0eb4a24f
by JCTremoulet[mailmap] Add entry for myself
|
 | .mailmap |
Commit
1cf86df8839ae2c8ebb7c68e1c355ec960a153cf
by jhuber6[OpenMP] Make sure the Thread ID function is not removed
Summary: The thread ID function was reintroduced in D110195, but could potentially be removed by the optimizer. Make the function noinline to preserve the call sites and add it to the externalization RAII so its definition is not removed by the attributor.
|
 | llvm/lib/Transforms/IPO/OpenMPOpt.cpp |
 | openmp/libomptarget/DeviceRTL/src/Mapping.cpp |
 | openmp/libomptarget/DeviceRTL/include/Utils.h |
Commit
c97820c50d73d05d3ec5679253206d1ac39d10ee
by sander.desmalen[AArch64][SVE] NFC: Move extract_subvector tests around.
This patch splits up sve-extract-vector.ll into * sve-extract-fixed-vector.ll * sve-extract-scalable-vector.ll
For testing extracts of a fixed-width or scalable sub-vector from a scalable source vector, respectively.
|
 | llvm/test/CodeGen/AArch64/sve-extract-vector.ll |
 | llvm/test/CodeGen/AArch64/sve-extract-fixed-vector.ll |
 | llvm/test/CodeGen/AArch64/sve-extract-scalable-vector.ll |
Commit
e5aaf0332670577cc19ac67b07b10261da6fc1e1
by gusrb406[InstCombine] Update InstCombine to use poison instead of undef for shufflevector's placeholder (1/3)
This patch is for fixing potential shufflevector-related bugs like D93818. As D93818, this patch change shufflevector's default placeholder to poison. To reduce risk, it was divided into several patches, and this patch is for InstCombineCasts.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D110226
|
 | llvm/test/Transforms/InstCombine/shufflevec-bitcast.ll |
 | llvm/test/Transforms/InstCombine/X86/x86-f16c.ll |
 | llvm/test/Transforms/InstCombine/trunc.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp |
 | llvm/test/Transforms/InstCombine/X86/x86-f16c-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/shufflevec-bitcast-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/shuffle-cast-dist.ll |
 | clang/test/Headers/wasm.c |
 | llvm/test/Transforms/InstCombine/trunc-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/cast.ll |
 | llvm/test/Transforms/InstCombine/vector-casts.ll |
Commit
b1f38a27f0c95fdf5f81eac4812b781a9d612425
by llvm-dev[Target][CodeGen] Remove default CostKind arguments on inner/impl TTI overrides
Based off a discussion on D110100, we should be avoiding default CostKinds whenever possible.
This initial patch removes them from the 'inner' target implementation callbacks - these should only be used by the main TTI calls, so this should guarantee that we don't cause changes in CostKind by missing it in an inner call. This exposed a few missing arguments in getGEPCost and reduction cost calls that I've cleaned up.
Differential Revision: https://reviews.llvm.org/D110242
|
 | llvm/lib/Target/WebAssembly/WebAssemblyTargetTransformInfo.h |
 | llvm/lib/Target/NVPTX/NVPTXTargetTransformInfo.h |
 | llvm/lib/Target/AArch64/AArch64TargetTransformInfo.h |
 | llvm/include/llvm/Analysis/TargetTransformInfo.h |
 | llvm/lib/Target/PowerPC/PPCTargetTransformInfo.h |
 | llvm/lib/Target/X86/X86TargetTransformInfo.h |
 | llvm/lib/Target/ARM/ARMTargetTransformInfo.h |
 | llvm/lib/Target/Lanai/LanaiTargetTransformInfo.h |
 | llvm/lib/Target/BPF/BPFTargetTransformInfo.h |
 | llvm/lib/Target/SystemZ/SystemZTargetTransformInfo.h |
 | llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h |
 | llvm/include/llvm/Analysis/TargetTransformInfoImpl.h |
 | llvm/lib/Target/Hexagon/HexagonTargetTransformInfo.h |
 | llvm/include/llvm/CodeGen/BasicTTIImpl.h |
Commit
1864976c967de36146eb5a5b86e6312d466e1031
by tejohnson[Sanitizer] Add Windows header for _mkdir
This will hopefully fix the sanitizer_windows bot failure after D109794: https://lab.llvm.org/buildbot/#/builders/127/builds/17222
|
 | compiler-rt/lib/sanitizer_common/sanitizer_win.cpp |
Commit
b034593c8719e42a56cf4e6cb2ffb762783b0d7f
by Louis Dionne[libc++][NFC] Add link to Discord channel from documentation
|
 | libcxx/docs/Contributing.rst |
Commit
ec8311444abec8ad68a9fd08e509ae2178b43ca3
by gusrb406[InstCombine] Update InstCombine to use poison instead of undef for shufflevector's placeholder (2/3)
This patch is for fixing potential shufflevector-related bugs like D93818. As D93818, this patch change shufflevector's default placeholder to poison. To reduce risk, it was divided into several patches, and this patch is for InstCombineCompares and InstructionCombining.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D110227
|
 | llvm/test/Transforms/InstCombine/shufflevector-div-rem.ll |
 | llvm/test/Transforms/InstCombine/vscale_cmp.ll |
 | llvm/test/Transforms/PhaseOrdering/X86/shuffle.ll |
 | llvm/test/Transforms/InstCombine/vec-binop-select.ll |
 | llvm/test/Transforms/InstCombine/vec_shuffle.ll |
 | llvm/test/Transforms/SLPVectorizer/AArch64/transpose-inseltpoison.ll |
 | llvm/lib/Transforms/InstCombine/InstructionCombining.cpp |
 | llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp |
 | llvm/test/Transforms/PhaseOrdering/X86/shuffle-inseltpoison.ll |
 | llvm/test/Transforms/SLPVectorizer/AArch64/transpose.ll |
 | llvm/test/Transforms/InstCombine/shufflevector-div-rem-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/vec-binop-select-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/icmp-vec-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/icmp-vec.ll |
 | llvm/test/Transforms/InstCombine/vec_shuffle-inseltpoison.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/alternate-int-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/broadcast.ll |
 | llvm/test/Transforms/InstCombine/broadcast-inseltpoison.ll |
 | llvm/test/Transforms/SLPVectorizer/X86/alternate-int.ll |
 | llvm/test/Transforms/InstCombine/getelementptr.ll |
 | llvm/test/Transforms/InstCombine/gep-inbounds-null.ll |
Commit
ca999f719117f916b333a794cc8c59984ae40dd2
by tianshilei1992[OpenMP][Offloading] Use bitset to indicate execution mode instead of value
The execution mode of a kernel is stored in a global variable, whose value means: - 0 - SPMD mode - 1 - indicates generic mode - 2 - SPMD mode execution with generic mode semantics
We are going to add support for SIMD execution mode. It will be come with another execution mode, such as SIMD-generic mode. As a result, this value-based indicator is not flexible.
This patch changes to bitset based solution to encode execution mode. Each position is: [0] - generic mode [1] - SPMD mode [2] - SIMD mode (will be added later)
In this way, `0x1` is generic mode, `0x2` is SPMD mode, and `0x3` is SPMD mode execution with generic mode semantics. In the future after we add the support for SIMD mode, `0b1xx` will be in SIMD mode.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D110029
|
 | llvm/lib/Transforms/IPO/OpenMPOpt.cpp |
 | llvm/test/Transforms/OpenMP/spmdization_guarding.ll |
 | llvm/test/Transforms/OpenMP/spmdization.ll |
 | llvm/test/Transforms/OpenMP/get_hardware_num_threads_in_block_fold.ll |
 | clang/test/OpenMP/nvptx_target_parallel_reduction_codegen.cpp |
 | clang/test/OpenMP/nvptx_target_teams_distribute_simd_codegen.cpp |
 | openmp/libomptarget/plugins/cuda/CMakeLists.txt |
 | clang/test/OpenMP/nvptx_target_parallel_proc_bind_codegen.cpp |
 | clang/test/OpenMP/nvptx_target_simd_codegen.cpp |
 | clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp |
 | llvm/test/Transforms/OpenMP/spmdization_assumes.ll |
 | openmp/libomptarget/plugins/cuda/src/rtl.cpp |
 | llvm/include/llvm/Frontend/OpenMP/OMPConstants.h |
 | llvm/test/Transforms/OpenMP/is_spmd_exec_mode_fold.ll |
Commit
400b33e18d27d801ec5ad1cc52b34c6d8bed64aa
by joeloser93[libc++] Disallow volatile types in std::allocator
LWG 2447 is marked as `Complete`, but there is no `static_assert` to reject volatile types in `std::allocator`. See the discussion at https://reviews.llvm.org/D108856.
Add `static_assert` in `std::allocator` to disallow volatile types. Since this is an implementation choice, mark the binding test as `libc++` only.
Remove tests that use containers backed by `std::allocator` that test the container when used with a volatile type.
Reviewed By: ldionne, #libc
Differential Revision: https://reviews.llvm.org/D109056
|
 | libcxx/TODO.TXT |
 | libcxx/include/__memory/allocator.h |
 | libcxx/test/libcxx/memory/allocator_volatile.verify.cpp |
 | libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.volatile.pass.cpp |
 | libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp |
 | libcxx/test/std/concepts/concepts.lang/concept.default.init/default_initializable.compile.pass.cpp |
Commit
98e96663f6a77ee06c5db3f25cdcf19b56ac8f04
by gusrb406[InstCombine] Update InstCombine to use poison instead of undef for shufflevector's placeholder (3/3)
This patch is for fixing potential shufflevector-related bugs like D93818. As D93818, this patch change shufflevector's default placeholder to poison. To reduce risk, it was divided into several patches, and this patch is for InstCombineVectorOps.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D110230
|
 | clang/test/CodeGen/arm-neon-dot-product.c |
 | llvm/test/Transforms/InstCombine/insert-extract-shuffle-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/X86/x86-f16c.ll |
 | llvm/test/Transforms/InstCombine/vec_demanded_elts.ll |
 | llvm/test/Transforms/InstCombine/vec_demanded_elts-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/reduction-shufflevector.ll |
 | clang/test/CodeGen/aarch64-neon-dot-product.c |
 | llvm/test/Transforms/InstCombine/insert-extract-shuffle.ll |
 | llvm/test/Transforms/InstCombine/obfuscated_splat-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/shuffle-cast-dist.ll |
 | llvm/test/Transforms/InstCombine/trunc-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/X86/x86-avx512-inseltpoison.ll |
 | llvm/lib/Transforms/InstCombine/InstCombineVectorOps.cpp |
 | llvm/test/Transforms/InstCombine/vec_shuffle-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/vec_shuffle.ll |
 | clang/test/CodeGen/aarch64-bf16-ldst-intrinsics.c |
 | llvm/test/Transforms/InstCombine/X86/x86-f16c-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/X86/x86-avx512.ll |
 | llvm/test/Transforms/InstCombine/obfuscated_splat.ll |
 | llvm/test/Transforms/InstCombine/broadcast-inseltpoison.ll |
 | llvm/test/Transforms/InstCombine/broadcast.ll |
 | llvm/test/Transforms/InstCombine/trunc.ll |
Commit
8a44281f478fb0b62ea2d09f10b13643f774cdab
by llvm-dev[SLP] getReductionCost - use explicit TTI::TCK_RecipThroughput CostKind. NFCI.
Avoid relying on the default cost kinds in TTI calls (we already do this in other places in SLP) - noticed while trying to see how much work it'd be to extend D110242 and remove all remaining uses of default CostKind arguments.
|
 | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp |
Commit
506dbd88fe8f1d3ac43457a9bb960c4745368886
by Stefan Gränitz[ORC] Re-enable ELF DebugObjectManagerPlugin tests
These tests were disabled by accident after D107640. Actually, REQUIRES lines don't support `x86_64` and so these tests stopped running on all targets. `native && target-x86_64` should be the correct term to express "x86_64 host targeting native arch".
|
 | llvm/test/ExecutionEngine/OrcLazy/debug-descriptor-elf-minimal.ll |
 | llvm/test/ExecutionEngine/OrcLazy/debug-objects-elf-minimal.ll |
Commit
3c557cd7f9a5d71a763a12027f18de66f6360562
by kazu[CodeGen] Remove redundant declaration MIRCanonicalizerID (NFC)
Note that MIRCanonicalizerID is declared in llvm/include/llvm/CodeGen/Passes.h, which MIRCanonicalizerPass.cpp includes.
Identified with readability-redundant-declaration.
|
 | llvm/lib/CodeGen/MIRCanonicalizerPass.cpp |
Commit
173dd896db976d1e975a2a5d844fc09238884277
by a.bataev[SLP][NFC]Add a test to show an issue with incorrectly extracted pointers.
|
 | llvm/test/Transforms/SLPVectorizer/X86/extract_in_tree_user.ll |
Commit
d9b511d8e8c43f79e0e277be287656693dd6563f
by hoy[CSSPGO] Set PseudoProbeInserter as a default pass.
Currenlty PseudoProbeInserter is a pass conditioned on a target switch. It works well with a single clang invocation. It doesn't work so well when the backend is called separately (i.e, through the linker or llc), where user has always to pass -pseudo-probe-for-profiling explictly. I'm making the pass a default pass that requires no command line arg to trigger, but will be actually run depending on whether the CU comes with `llvm.pseudo_probe_desc` metadata.
Reviewed By: wenlei
Differential Revision: https://reviews.llvm.org/D110209
|
 | lld/ELF/Config.h |
 | llvm/lib/Target/X86/X86TargetMachine.cpp |
 | llvm/include/llvm/CodeGen/CommandFlags.h |
 | lld/ELF/Options.td |
 | llvm/test/CodeGen/X86/O0-pipeline.ll |
 | llvm/test/Transforms/SampleProfile/pseudo-probe-emit.ll |
 | lld/test/ELF/lto/pseudo-probe-lto.ll |
 | llvm/test/Transforms/SampleProfile/pseudo-probe-emit-inline.ll |
 | llvm/include/llvm/Target/TargetOptions.h |
 | llvm/lib/CodeGen/TargetPassConfig.cpp |
 | llvm/test/Transforms/SampleProfile/pseudo-probe-instsched.ll |
 | llvm/test/Transforms/SampleProfile/pseudo-probe-dangle.ll |
 | lld/ELF/LTO.cpp |
 | llvm/lib/CodeGen/CommandFlags.cpp |
 | lld/ELF/Driver.cpp |
 | llvm/test/CodeGen/X86/opt-pipeline.ll |
 | llvm/test/tools/llvm-profgen/truncated-pseudoprobe.test |
 | clang/lib/CodeGen/BackendUtil.cpp |
 | llvm/lib/CodeGen/PseudoProbeInserter.cpp |
Commit
b205b3300b2f3b18bf82771f761eb8e6794f3e32
by tianshilei1992[NFC] clang-format -i llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
|
 | llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp |
Commit
b33a1cc05b4800ae9e8c7df097c4a76c9da28c94
by craig.topper[RISCV] Optimize vp.store with an all ones mask to avoid a vmset.
We can use riscv_vse intrinsic instead of riscv_vse_mask. The code here is based on similar code for handling masked.scatter and vp.scatter.
Reviewed By: frasercrmck
Differential Revision: https://reviews.llvm.org/D110206
|
 | llvm/test/CodeGen/RISCV/rvv/fixed-vectors-vpstore.ll |
 | llvm/test/CodeGen/RISCV/rvv/vpstore.ll |
 | llvm/lib/Target/RISCV/RISCVISelLowering.cpp |
Commit
56bddf3b1c035043c2568efaa8aa37f6fa87f9f1
by ajcbik[mlir][sparse] replace ad-hoc MemRef struct with CRunnerUtils definition
This revision removes the ad-hoc MemRefs that were needed using the old ABI (when we still passed by value) and replaces them with the shared StridedMemRef definitions of CRunnerUtils (possible now that we pass by pointer). This avoids code duplication and makes sure we have a consistent view of strided memory references in all our support libraries.
Reviewed By: jsetoain
Differential Revision: https://reviews.llvm.org/D110221
|
 | mlir/lib/ExecutionEngine/SparseUtils.cpp |
Commit
277b681edec2ee4394c7e62a118ad21b2cbbb227
by jhuber6[OpenMP] Add function tracing debugging to device RTL
This patch adds support for an RAII struct that will print function traces when placed inside of a function declaration. Each successive call will increase the indentation to make it easier to visually inspect.
Reviewed By: jdoerfert
Differential Revision: https://reviews.llvm.org/D110202
|
 | openmp/libomptarget/DeviceRTL/include/Debug.h |
 | openmp/libomptarget/DeviceRTL/include/Configuration.h |
 | openmp/libomptarget/DeviceRTL/src/Configuration.cpp |
 | openmp/libomptarget/DeviceRTL/src/Debug.cpp |
Commit
2131eb696386241e77f257ccc57e1a7955869971
by Stefan Gränitz[ORC] DebugObjectManagerPlugin tests can use lli in ORC greedy mode
Initially, lli only supported lazy mode for ORC. Greedy mode was added with e1579894d205 and it's the default setting now. DebugObjectManagerPlugin tests don't rely on laziness, so we can switch them to greedy in order to avoid some unnecessary complexity.
|
 | llvm/test/ExecutionEngine/OrcLazy/debug-objects-elf-minimal.ll |
 | llvm/test/ExecutionEngine/OrcLazy/debug-descriptor-elf-minimal.ll |
Commit
1aedf77ece6bc9a1fc70453d4603280bde6ebf1f
by mascasa[HWASan] Use a single .weak binding in asm.
Specifying .global and .weak causes a compiler warning:
warning: __sigsetjmp changed binding to STB_WEAK
Specifying only .weak should have the same effect without causing a warning.
Reviewed By: eugenis
Differential Revision: https://reviews.llvm.org/D110178
|
 | compiler-rt/lib/hwasan/hwasan_setjmp_aarch64.S |
 | compiler-rt/lib/hwasan/hwasan_setjmp_x86_64.S |
Commit
32a50078657dd8beead327a3478ede4e9d730432
by sivachandra[libc] Add an implementation of bsearch.
Reviewed By: michaelrj
Differential Revision: https://reviews.llvm.org/D110222
|
 | libc/src/stdlib/bsearch.h |
 | libc/config/linux/api.td |
 | libc/test/src/stdlib/CMakeLists.txt |
 | libc/spec/spec.td |
 | libc/src/stdlib/CMakeLists.txt |
 | libc/test/src/stdlib/bsearch_test.cpp |
 | libc/config/linux/x86_64/entrypoints.txt |
 | libc/config/linux/aarch64/entrypoints.txt |
 | libc/spec/stdc.td |
 | libc/src/stdlib/bsearch.cpp |
Commit
e7249e4acf3cf9438d6d9e02edecebd5b622a4dc
by aeubanks[SimplifyCFG] Ignore free instructions when computing cost for folding branch to common dest
When determining whether to fold branches to a common destination by merging two blocks, SimplifyCFG will count the number of instructions to be moved into the first basic block. However, there's no reason to count free instructions like bitcasts and other similar instructions.
This resolves missed branch foldings with -fstrict-vtable-pointers in llvm-test-suite's lambda benchmark.
Reviewed By: spatel
Differential Revision: https://reviews.llvm.org/D108837
|
 | llvm/lib/Transforms/Utils/SimplifyCFG.cpp |
 | llvm/test/CodeGen/AArch64/csr-split.ll |
 | llvm/test/Transforms/SimplifyCFG/fold-branch-to-common-dest-free-cost.ll |
Commit
fe16d331d345acfb06a01da15100d5899efb0c51
by aaronAdd document numbers for the C99 status page.
This doesn't add all of the document numbers, but it adds a bunch of them. Not all of the documents are available on the committee page (they're old enough that they come from a time when the mailing was comprised of physical pieces of paper), so some of the documents listed are assumed to be correct based on my reading of editor's reports.
|
 | clang/www/c_status.html |
Commit
1a7b7d7ba23232fe27c996e1731da7099859569c
by daniil.fukalov[NFCI][CodeGen, AArch64] Fix inconsistent TargetCostKind types.
The pass uses different cost kinds to estimate "old" and "interleaved" costs: default cost kind for all targets override `getInterleavedMemoryOpCost()` is `TCK_SizeAndLatency`. Although at the moment estimated `TCK_Latency` costs are equal to `TCK_SizeAndLatency`, (so the change is NFC) it may change in future.
Reviewed By: RKSimon
Differential Revision: https://reviews.llvm.org/D110100
|
 | llvm/lib/CodeGen/InterleavedLoadCombinePass.cpp |
Commit
734f4d832cd2d3a9520d2384c98e1429b53e0238
by hoy[llvm-profgen] An option to dump disasm of specified symbols
For large app, dumping disasm of the whole program can be slow and result in gianant output. Adding a switch to dump specific symbols only.
Reviewed By: wlei
Differential Revision: https://reviews.llvm.org/D110079
|
 | llvm/tools/llvm-profgen/ProfiledBinary.cpp |
 | llvm/test/tools/llvm-profgen/pseudoprobe-decoding.test |
 | llvm/tools/llvm-profgen/ProfiledBinary.h |
Commit
e828655313db901c733bf4bab6ac78c18833d765
by gysit[mlir][linalg] Fix interchange initialization in fusion on tensors.
If no interchange vector is given initialize it with the identity permutation from 0 to number of loops.
Reviewed By: mravishankar
Differential Revision: https://reviews.llvm.org/D110249
|
 | mlir/lib/Dialect/Linalg/Transforms/FusionOnTensors.cpp |
Commit
af99236747872af7e77092cbf6ddd18fa8623a2f
by mbenfieldDon't diagnose unused but set when the Cleanup attribute is used.
This applies to -Wunused-but-set-variable and -Wunused-but-set-parameter.
This addresses bug 51865.
Differential Revision: https://reviews.llvm.org/D109862
|
 | clang/test/Sema/warn-unused-but-set-variables.c |
 | clang/lib/Sema/SemaDecl.cpp |
Commit
c240169ff2e416f2652a5d3a80a83ef68ab7fa23
by spatel[Analysis] improve function matching for strlen libcall
The return type of strlen is size_t, not just any integer.
This is a partial fix for an example based on: https://llvm.org/PR50836
There's another bug here because we can still crash processing a real strlen or something that looks like it.
|
 | llvm/test/Transforms/InstCombine/simplify-libcalls.ll |
 | llvm/test/Transforms/InstCombine/call-callconv.ll |
 | llvm/lib/Analysis/TargetLibraryInfo.cpp |
Commit
97b2f20a446e54f4354d8f950dfab62c37e6ddf4
by erich.keaneChange error for storage-class to mean linkage, fix lang-linkage diag
Allow multiversioning declarations to match when the actual formal linkage matches, not just when the storage class is identical. Additionally, change the ambiguous 'linkage' mismatch to be more specific and say 'language linkage'.
|
 | clang/lib/Sema/SemaDecl.cpp |
 | clang/test/SemaCXX/attr-cpuspecific.cpp |
 | clang/test/SemaCXX/attr-target-mv.cpp |
 | clang/include/clang/Basic/DiagnosticSemaKinds.td |
Commit
c49611f9097899e51a91ddc71eb295486f5271ea
by david.greenMark CFG as preserved in TypePromotion and InterleaveAccess passes
Neither of these passes modify the CFG, allowing us to preserve DomTree and LoopInfo across them by using setPreservesCFG.
Differential Revision: https://reviews.llvm.org/D110161
|
 | llvm/test/CodeGen/ARM/O3-pipeline.ll |
 | llvm/lib/CodeGen/TypePromotion.cpp |
 | llvm/lib/CodeGen/InterleavedAccessPass.cpp |
Commit
43552651319e1c39c09ce0f61b588813414cebda
by apl[lldb] Remove IRExecutionUnit::CollectFallbackNames
The work that IRExecutionUnit::CollectFallbackNames is basically the work that `CPlusPlusLanguage::GetDemangledFunctionNameWithoutArguments` does already. It's also (at time or writing) specific to C++, so it can be folded into `IRExecutionUnit::CollectCandidateCPlusPlusNames`.
Differential Revision: https://reviews.llvm.org/D109928
|
 | lldb/include/lldb/Expression/IRExecutionUnit.h |
 | lldb/source/Expression/IRExecutionUnit.cpp |
Commit
38c09ea2d279eddddabe3602e2002f8cdfcc5380
by dblaikieDebugInfo: Add (initially no-op) -gsimple-template-names={simple,mangled}
This is to build the foundation of a new debug info feature to use only the base name of template as its debug info name (eg: "t1" instead of the full "t1<int>"). The intent being that a consumer can still retrieve all that information from the DW_TAG_template_*_parameters.
So gno-simple-template-names is business as usual/previously ("t1<int>") =simple is the simplified name ("t1") =mangled is a special mode to communicate the full information, but also indicate that the name should be able to be simplified. The data is encoded as "_STNt1|<int>" which will be matched with an llvm-dwarfdump --verify feature to deconstruct this name, rebuild the original name, and then try to rebuild the simple name via the DWARF tags - then compare the latter and the former to ensure that all the data necessary to fully rebuild the name is present.
|
 | clang/include/clang/Basic/DebugInfoOptions.h |
 | clang/include/clang/Basic/CodeGenOptions.def |
 | clang/include/clang/Driver/Options.td |
 | clang/lib/Frontend/CompilerInvocation.cpp |
 | clang/test/Driver/debug-options.c |
 | clang/lib/Driver/ToolChains/Clang.cpp |
Commit
60a40cf37904f6496ad038be5f494e3c37a7d1bb
by jhuber6[OpenMP] Fix KeepAlive usage
Summary: Functions were called the wrong way around, this didn't keep the symbol alive.
|
 | openmp/libomptarget/DeviceRTL/src/Utils.cpp |
 | openmp/libomptarget/DeviceRTL/include/Utils.h |
 | openmp/libomptarget/DeviceRTL/src/Mapping.cpp |
Commit
19d53d45f2709d37b07bcd73dc5300304ce2ffee
by i[ELF][AArch64] Refine and fix the condition when BTI/PAC PLT needs bti c
(As I mentioned in https://reviews.llvm.org/D62609#1534158 , the condition for using bti c for executable can be loosened.)
In two cases the address of a PLT may escape:
* canonical PLT entry for a STT_FUNC * non-preemptible STT_GNU_IFUNC which is converted to STT_FUNC
The first case can be detected with `needsPltAddr`.
The second case is not straightforward to detect because for the Relocations.cpp created `directSym`, it's difficult to know whether the associated `sym` has exercised the `!needsPlt(expr)` code path. Just use the conservative `isInIplt` condition. A non-preemptible ifunc not referenced by non-GOT-generating non-PLT-generating relocations will have an unneeded `bti c`, but the cost is acceptable.
The second case fixes a bug as well: a -shared link may have non-preemptible ifunc. Before the patch we did not emit `bti c` and could be wrong if the PLT address escaped. GNU ld doesn't handle the case: `relocation R_AARCH64_ADR_PREL_PG_HI21 against STT_GNU_IFUNC symbol 'ifunc2' isn't handled by elf64_aarch64_final_link_relocate` (https://sourceware.org/bugzilla/show_bug.cgi?id=28370)
For -shared, if BTI is enabled but PAC is disabled, the PLT entry size increases from 16 to 24 because we have to select the PLT scheme early, but the cost is acceptable.
Reviewed By: peter.smith
Differential Revision: https://reviews.llvm.org/D110217
|
 | lld/test/ELF/Inputs/aarch64-addrifunc.s |
 | lld/test/ELF/aarch64-feature-bti.s |
 | lld/test/ELF/aarch64-ifunc-bti.s |
 | lld/test/ELF/aarch64-feature-btipac.s |
 | lld/ELF/Arch/AArch64.cpp |
Commit
b05804ab4c8c62a9d24aff9a0da0eb8ba5d0296f
by spatel[Analysis] reduce code for isOnlyUsedInZeroEqualityComparison; NFC
There's a bug here noted by the FIXME and visible in variations of PR50836.
|
 | llvm/lib/Analysis/ValueTracking.cpp |
Commit
a85d7a56c7bbd9b3c8409c00f48de47bec5fc8af
by spatel[ValueTracking] fix isOnlyUsedInZeroEqualityComparison with no users
This is another problem exposed by: https://bugs.llvm.org/PR50836
|
 | llvm/test/Transforms/InstCombine/strlen-3.ll |
 | llvm/lib/Analysis/ValueTracking.cpp |
Commit
5da21338bcd0fe377fc788b1b24cf055ab1977af
by ajcbik[mlir][sparse] generalize reduction support in sparse compiler
Now not just SUM, but also PRODUCT, AND, OR, XOR. The reductions MIN and MAX are still to be done (also depends on recognizing these operations in cmp-select constructs).
Reviewed By: bixia
Differential Revision: https://reviews.llvm.org/D110203
|
 | mlir/test/Dialect/SparseTensor/sparse_vector.mlir |
 | mlir/test/Integration/Dialect/SparseTensor/CPU/sparse_reductions.mlir |
 | mlir/lib/Dialect/SparseTensor/Transforms/Sparsification.cpp |
Commit
9fb3669429a8bc59622c26ab6f5cf6926ee97e7d
by joeloser93[libc++][test] Remove disable_missing_braces_warning.h from tests
Several tests include `disable_missing_braces_warning.h` but do not need to. Remove the include.
Inspired from discussion at https://reviews.llvm.org/D109668
Reviewed By: ldionne, #libc, Mordante
Differential Revision: https://reviews.llvm.org/D109711
|
 | libcxx/test/std/containers/sequences/array/array.fill/fill.fail.cpp |
 | libcxx/test/std/containers/sequences/array/compare.pass.cpp |
 | libcxx/test/std/containers/views/span.cons/stdarray.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.cons/implicit_copy.pass.cpp |
 | libcxx/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply_extended_types.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.cons/deduct.fail.cpp |
 | libcxx/test/std/containers/sequences/array/array.tuple/tuple_element.fail.cpp |
 | libcxx/test/std/containers/sequences/array/front_back.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.tuple/get.fail.cpp |
 | libcxx/test/std/containers/sequences/array/indexing.pass.cpp |
 | libcxx/test/std/iterators/iterator.range/begin-end.pass.cpp |
 | libcxx/test/std/containers/sequences/array/indexing_const.pass.cpp |
 | libcxx/test/support/disable_missing_braces_warning.h |
 | libcxx/test/std/utilities/tuple/tuple.tuple/tuple.apply/apply.pass.cpp |
 | libcxx/test/std/containers/sequences/array/front_back_const.pass.cpp |
 | libcxx/test/std/containers/sequences/array/iterators.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.tuple/get_const_rv.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.data/data.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.fill/fill.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.size/size.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.tuple/get_const.pass.cpp |
 | libcxx/test/std/utilities/tuple/tuple.tuple/tuple.apply/make_from_tuple.pass.cpp |
 | libcxx/test/std/containers/sequences/array/at_const.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.data/data_const.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.tuple/get_rv.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.special/swap.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.cons/deduct.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.tuple/get.pass.cpp |
 | libcxx/test/std/containers/sequences/array/array.swap/swap.fail.cpp |
 | libcxx/test/std/containers/sequences/array/array.swap/swap.pass.cpp |
 | libcxx/test/std/containers/sequences/array/at.pass.cpp |
 | libcxx/test/std/containers/sequences/array/compare.fail.cpp |
Commit
cb793e1a3655b8a571cb621db9d221c46f32ba9f
by Louis Dionne[libc++][NFCI] Remove uses of _LIBCPP_INLINE_VAR
All supported compilers provide support for inline variables in C++17 now. Also, as a fly-by fix, replace some uses of _LIBCPP_CONSTEXPR by just constexpr.
The only exception in this patch is `std::ignore`, which is provided prior to C++17. Since it is defined in an anonymous namespace, it always has internal linkage anyway, so using an inline variable there doesn't provide any benefit. Instead, `inline` was removed entirely on `std::ignore`.
Differential Revision: https://reviews.llvm.org/D110243
|
 | libcxx/include/optional |
 | libcxx/include/variant |
 | libcxx/include/__memory/uses_allocator.h |
 | libcxx/include/new |
 | libcxx/include/experimental/simd |
 | libcxx/include/__memory/allocator_arg_t.h |
 | libcxx/include/system_error |
 | libcxx/include/__config |
 | libcxx/include/__utility/piecewise_construct.h |
 | libcxx/include/chrono |
 | libcxx/include/ratio |
 | libcxx/include/tuple |
 | libcxx/include/__functional/bind.h |
 | libcxx/include/__mutex_base |
 | libcxx/include/__utility/in_place.h |
 | libcxx/include/type_traits |
Commit
b2b63d1b9122befaf44bf91a3ed1e8a71c6ffe06
by cathyzhyiReset operation when canceling root update transaction
Should reset the operation to original state when canceling the updates.
Reviewed By: rriddle, ftynse
Differential Revision: https://reviews.llvm.org/D110176
|
 | mlir/lib/Transforms/Utils/DialectConversion.cpp |
Commit
6e60bb6883178cf14e6fd47a6789495636e4322f
by riddleriver[mlir:DataFlowAnalysis] Reprocess the arguments of already executable edges
This fixes a bug where we discover new information about the arguments of an already executable edge, but don't visit the arguments. We only visit the arguments, and not the block itself, so this commit shouldn't really affect performance at all.
Fixes PR#51871
Differential Revision: https://reviews.llvm.org/D110197
|
 | mlir/test/Transforms/sccp.mlir |
 | mlir/lib/Analysis/DataFlowAnalysis.cpp |