LLVM/project e11e18dllvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/test/Transforms/SLPVectorizer/AArch64 externally-used-copyables.ll

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+127-71llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+110-19llvm/test/Transforms/SLPVectorizer/AMDGPU/elementwise-fma-operand1.ll
+26-10llvm/test/Transforms/SLPVectorizer/SystemZ/non-power-2-subvector-extract.ll
+7-6llvm/test/Transforms/SLPVectorizer/AArch64/externally-used-copyables.ll
+8-4llvm/test/Transforms/SLPVectorizer/RISCV/strided-loads-with-external-indices.ll
+5-5llvm/test/Transforms/SLPVectorizer/RISCV/non-commutative-second-arg-only-copyable.ll
+283-1153 files not shown
+290-1229 files

LLVM/project 1e469c7llvm/lib/Target/RISCV RISCVInstrInfoXCV.td, llvm/test/MC/RISCV/corev XCVsimd-invalid.s XCVsimd.s

[RISCV] Fix immediate operand ranges for XCVsimd instructions (#224876)

See link:

-
https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html#simd-bit-manipulation-operations
-
https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html#simd-shuffle-and-pack-operations
DeltaFile
+63-64llvm/test/MC/RISCV/corev/XCVsimd.s
+35-36llvm/test/MC/RISCV/corev/XCVsimd-invalid.s
+14-7llvm/lib/Target/RISCV/RISCVInstrInfoXCV.td
+112-1073 files

LLVM/project 35a11e0orc-rt/lib/bedrock/sys/posix SocketHandle.cpp PageSize.cpp

[orc-rt] Drop emacs mode lines from .cpp files. (#224928)

These aren't needed for .cpp files where emacs can infer the mode from
the file extension.
DeltaFile
+1-1orc-rt/lib/bedrock/sys/posix/SocketHandle.cpp
+1-1orc-rt/lib/bedrock/sys/posix/PageSize.cpp
+1-1orc-rt/lib/bedrock/sys/posix/Memory.cpp
+1-1orc-rt/lib/bedrock/sys/posix/DynamicLibrary.cpp
+4-44 files

LLVM/project f28f0ballvm/lib/Target/X86 X86InstrInfo.cpp, llvm/test/CodeGen/X86/apx optimize-compare-multipred.mir

[X86][APX] Fix EFLAGS reuse across cycles (#223613)

optimizeCompareInstr's multi-predecessor NF reuse (added in
ab39c491430e) did not scan the below-CmpInstr region of CmpMBB when
CmpMBB was on a CFG cycle: that region is on the back-edge path but is
scanned by neither the caller nor the helper's predecessor walk. A
non-NF-convertible EFLAGS clobber there (e.g. an unrelated CMP feeding a
JCC, as in the reproducer below with VUCOMISS/CTEST/COPY-\$eflags) still
let the helper delete the redundant compare and mark \$eflags live-in on
CmpMBB. That broke the reused EFLAGS on iteration 2+ and tripped
X86FlagsCopyLowering's SuccMBB == TestMBB self-loop check with a fatal
report_fatal_error when a preexisting COPY \$eflags save/restore sat in
the cycle.

Reproducer: https://godbolt.org/z/s58j5zxqd

Detect CmpMBB on a cycle via a forward-reachability BFS on its
successors and, when so, scan from just after CmpInstr to the block's
end: bail on any non-NF-convertible EFLAGS clobber, stage NF-convertible

    [10 lines not shown]
DeltaFile
+323-0llvm/test/CodeGen/X86/apx/optimize-compare-multipred.mir
+41-8llvm/lib/Target/X86/X86InstrInfo.cpp
+364-82 files

LLVM/project 18397d8llvm/lib/Transforms/Vectorize SLPVectorizer.cpp, llvm/lib/Transforms/Vectorize/SLPVectorizer SLPUtils.h SLPUtils.cpp

[𝘀𝗽𝗿] initial version

Created using spr 1.3.7
DeltaFile
+123-599llvm/test/Transforms/PhaseOrdering/X86/avg.ll
+20-136llvm/test/Transforms/SLPVectorizer/X86/extracted-subfields.ll
+133-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.cpp
+128-2llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+9-0llvm/lib/Transforms/Vectorize/SLPVectorizer/SLPUtils.h
+2-5llvm/test/Transforms/PhaseOrdering/AArch64/scalarize-load-ext-extract.ll
+415-7421 files not shown
+416-7477 files

LLVM/project 99da24bllvm/lib/Target/X86 X86ISelLowering.cpp

[X86] getPSHUFShuffleMask - use PSHUFD/LW/HW decodes directly. NFC. (#224900)

Don't bother going through getTargetShuffleMask and checking for a
repeated lane mask when all we care about is the mask[4] permute mask -
PSHUFLW/HW don't even need the full 128-bit lane mask!
DeltaFile
+4-23llvm/lib/Target/X86/X86ISelLowering.cpp
+4-231 files

LLVM/project 3357938llvm/include/llvm/Analysis ScalarEvolutionExpressions.h

[SCEV] Increase RewriteMap default size (NFC). (#224864)

The old automatic default of 4 inline buckets meant that in practice we
were frequently hitting the grow path to 64 buckets, causing unnecessary
memory traffic.

SCEVRewriteVisitor is used each time loop guards are applied and the new
default improves compile-time slightly for SCEV-heavy workloads. Geomean
improves by -0.03%, but mafft and lencod see bigger wins:

https://llvm-compile-time-tracker.com/compare.php?from=7c55ad084c8b1503cafa42c60d88bff65919c9fa&to=c1f14fba38c4cd7b282709d8bd9481d28642b2c6&stat=instructions:u

It mostly makes applying loop guards cheaper, making it easier to use in
more places in the future.

PR: https://github.com/llvm/llvm-project/pull/224864
DeltaFile
+1-1llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h
+1-11 files

LLVM/project 5363b70llvm/test/Transforms/SLPVectorizer/PowerPC extracted-subfields-be.ll, llvm/test/Transforms/SLPVectorizer/X86 extracted-subfields.ll

[SLP][NFC]Add extra tests for bitcasts-based vectorization, NFC



Reviewers: 

Pull Request: https://github.com/llvm/llvm-project/pull/224916
DeltaFile
+120-0llvm/test/Transforms/SLPVectorizer/PowerPC/extracted-subfields-be.ll
+74-4llvm/test/Transforms/SLPVectorizer/X86/extracted-subfields.ll
+194-42 files

LLVM/project aa6b03eclang/lib/AST/ByteCode InterpState.cpp Compiler.cpp, clang/lib/Serialization ASTReaderDecl.cpp

[clang][bytecode] Notify bytecode interpreter after deserializing constant global declarations (#198062)

The problem looks something like this:

```c++
extern const int m;
constexpr int getm() { return m; }

const int m = 12;
static_assert(getm() == 12);
```

The generated bytecode for `getm()` references a global variable stored
in `interp::Program`. This variable is uninitialized when the bytecode
is generated, but since it's extern, that's not diagnosed (because it
might be initialized later).

When we parse the redeclaration of `m` on line 4, we evaluate its
initializer via `Expr::EvaluateAsInitializer`, which makes the bytecode

    [15 lines not shown]
DeltaFile
+25-0clang/test/AST/ByteCode/module-redecl1.cpp
+20-1clang/lib/AST/ByteCode/Program.cpp
+19-0clang/lib/AST/ByteCode/Compiler.cpp
+15-3clang/lib/AST/ByteCode/InterpState.cpp
+11-1clang/lib/Serialization/ASTReaderDecl.cpp
+8-0clang/test/Modules/pr102360.cppm
+98-59 files not shown
+131-615 files

LLVM/project 67cb38cllvm/lib/Transforms/HipStdPar HipStdPar.cpp, llvm/test/Transforms/HipStdPar math-fixup.ll

[HIPSTDPAR] Add `sincos` support (#224620)

The math fixup pass for `hipstdpar` only supported standard library math
functions. Due to #194616, combining `sin` + `cos` into `sincos` becomes
possible, so whilst `sincos` itself is not (yet) a standard library
interface, it has to be handled as well. This extends the set of covered
intrinsics to include it.
DeltaFile
+15-0llvm/test/Transforms/HipStdPar/math-fixup.ll
+1-0llvm/lib/Transforms/HipStdPar/HipStdPar.cpp
+16-02 files

LLVM/project 6e505dbclang/test/Parser decltype-crash.cpp

[clang][test] Add regression test for invalid 'int decltype {}' (#224855)

The parser crash on `int decltype {}` was fixed by #211221, but the test
it added only covers the `= 0` forms. Add the brace-init form reported
in the issue.

Fixes #165246
DeltaFile
+5-0clang/test/Parser/decltype-crash.cpp
+5-01 files

LLVM/project 2ef9033clang/lib/AST/ByteCode DynamicAllocator.h InterpState.h

[clang][bytecode] Use InterpState's allocator in DynamicAllocator (#224893)

This saves us yet another BumpPtrAllocator.
DeltaFile
+5-3clang/lib/AST/ByteCode/InterpState.h
+3-3clang/lib/AST/ByteCode/DynamicAllocator.h
+8-62 files

LLVM/project bfd1ec2llvm/lib/Target/PowerPC PPCMIPeephole.cpp, llvm/test/CodeGen/PowerPC peephole-elim-extsw-subreg-input.mir

PPC: Fold 64-bit zero-extending word load feeding extsw subregister

A gprc LWZ/LWZX feeding EXTSW_32_64 is rewritten into a sign-extending
LWA/LWAX load. Extend the same fold to the 64-bit zero-extending word
loads LWZ8/LWZX8 when the EXTSW_32_64 reads their sub_32 subregister,
producing a single LWA/LWAX instead of a redundant lwz+extsw pair.

Co-authored-by: Claude (Claude Opus 4.8, claude-opus-4-8) <noreply at anthropic.com>
DeltaFile
+17-18llvm/test/CodeGen/PowerPC/peephole-elim-extsw-subreg-input.mir
+11-3llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
+28-212 files

LLVM/project d91119ellvm/test/CodeGen/PowerPC peephole-elim-extsw-subreg-input.mir

PPC: Add MIR examples for missed extsw+word-load fold on subregister input

A gprc LWZ/LWZX feeding EXTSW_32_64 folds into a sign-extending LWA/LWAX
load. The equivalent 64-bit zero-extending word loads (LWZ8/LWZX8) whose
sub_32 feeds EXTSW_32_64 are not folded, leaving a redundant lwz+extsw
(or lwzx+extsw) pair. Add MIR examples documenting the missed fold.

Co-authored-by: Claude (Claude Opus 4.8, claude-opus-4-8) <noreply at anthropic.com>
DeltaFile
+152-6llvm/test/CodeGen/PowerPC/peephole-elim-extsw-subreg-input.mir
+152-61 files

LLVM/project 3ec282dllvm/lib/Target/PowerPC PPCMIPeephole.cpp

review comments
DeltaFile
+3-4llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
+3-41 files

LLVM/project 01992e6llvm/lib/Target/PowerPC PPCMIPeephole.cpp

Remove NarrowSubReg check
DeltaFile
+1-2llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
+1-21 files

LLVM/project 32e2720llvm/lib/Target/PowerPC PPCMIPeephole.cpp, llvm/test/CodeGen/PowerPC peephole-elim-extsw-subreg-input.mir

PPC: Fix extsw elimination when the input reads a subregister

The EXTSW_32_64 sign-extend elimination previously assumed its input
was a full register value. It would then try using that value as the
source of the new (unnecessary) INSERT_SUBREG.

The new test would then hit this verifier error:

```
bb.0:
  liveins: $x3
  %0:g8rc = COPY killed $x3
  %1:g8rc = RLDICL killed %0:g8rc, 0, 33
  %3:g8rc = IMPLICIT_DEF
  %2:g8rc = INSERT_SUBREG %3:g8rc(tied-def 0), %1:g8rc, %subreg.sub_32
  $x3 = COPY killed %2:g8rc
  BLR8 implicit $lr8, implicit $rm, implicit killed $x3

*** Bad machine code: INSERT_SUBREG expected inserted value to have equal or lesser size than the subreg it was inserted into ***

    [8 lines not shown]
DeltaFile
+27-12llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
+30-0llvm/test/CodeGen/PowerPC/peephole-elim-extsw-subreg-input.mir
+57-122 files

LLVM/project 58e5966llvm/lib/Target/PowerPC PPCInstrInfo.cpp, llvm/test/CodeGen/PowerPC sext_elimination.mir

PPC: Fix EXTSW elimination promoting a subregister operand

promoteInstr32To64ForElimEXTSW copies operands from the 32-bit
instruction verbatim into its promoted 64-bit form. When an operand
reads the sub_32 subregister of a 64-bit register, the promoted
instruction (which takes a full register) ended up with an illegal
subregister use and failed the machine verifier.

Drop the sub_32 subregister and use the original full register, which
provides the low 32 bits the promoted instruction operates on. This
avoids  verifier error regressions in a future change.

Co-Authored-By: Claude <noreply at anthropic.com> (Claude Opus 4.8, claude-opus-4-8)
DeltaFile
+41-1llvm/test/CodeGen/PowerPC/sext_elimination.mir
+7-0llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+48-12 files

LLVM/project c10fce5llvm/lib/Target/PowerPC PPCInstrInfo.cpp

Add assert
DeltaFile
+9-4llvm/lib/Target/PowerPC/PPCInstrInfo.cpp
+9-41 files

LLVM/project d9d4b55llvm/lib/CodeGen/SelectionDAG SelectionDAG.cpp TargetLowering.cpp, llvm/test/CodeGen/AMDGPU shufflevector.v3i16.v2i16.ll shufflevector.v3f16.v2f16.ll

  [DAG] canCreateUndefOrPoison/isGuaranteedNotToBeUndefOrPoison - SCALAR_TO_VECTOR upper elements are poison (#217185)

ISD::SCALAR_TO_VECTOR documents its upper elements (1..N-1) as poison,
  not undef. Update both helpers to use includesPoison(Kind) instead of
  includesUndef(Kind) when those elements are demanded, so PoisonOnly
  queries correctly report that the upper elements can create poison and
  are not guaranteed to be poison-free.

AI assistance was used for code review analysis and local build
verification.

  Fixes #217028
DeltaFile
+20-11llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+4-4llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+6-0llvm/test/CodeGen/AMDGPU/shufflevector.v3i16.v2i16.ll
+6-0llvm/test/CodeGen/AMDGPU/shufflevector.v3f16.v2f16.ll
+6-0llvm/test/CodeGen/AMDGPU/shufflevector.v3bf16.v2bf16.ll
+2-0llvm/test/CodeGen/X86/bfloat.ll
+44-151 files not shown
+45-167 files

LLVM/project 8b94ad3llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mul.i24.ll rotl.ll

[SelectionDAG] Handle constants in SimplifyMultipleUseDemandedBits

Replace a non-zero constant with zero when none of its set bits are
demanded.

This allows users of `SimplifyMultipleUseDemandedBits` to eliminate
irrelevant constant bits while preserving the convention that a null
SDValue indicates no simplification.
DeltaFile
+38-45llvm/test/CodeGen/AMDGPU/rotl.ll
+3-6llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mul.i24.ll
+3-4llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll
+2-4llvm/test/CodeGen/SystemZ/shift-08.ll
+2-4llvm/test/CodeGen/SystemZ/shift-04.ll
+6-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+54-634 files not shown
+58-7110 files

LLVM/project 3822ee5llvm/include/llvm/CodeGen CodeGenTargetMachineImpl.h, llvm/lib/CodeGen CodeGenTargetMachineImpl.cpp

CodeGen: Move DataLayout computation to CodeGenTargetMachineImpl's ctor

Every target's TargetMachine constructor passed TT.computeDataLayout() as
the DL string argument to the base constructor, duplicating the same call
across all backends. Some backends just didn't bother passing in the ABI
name.

Co-Authored-By: Claude <noreply at anthropic.com> (Claude Opus 4.8)
DeltaFile
+5-4llvm/lib/CodeGen/CodeGenTargetMachineImpl.cpp
+4-4llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+4-4llvm/include/llvm/CodeGen/CodeGenTargetMachineImpl.h
+3-4llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
+3-4llvm/lib/Target/Mips/MipsTargetMachine.cpp
+3-4llvm/lib/Target/ARM/ARMTargetMachine.cpp
+22-2421 files not shown
+46-5727 files

LLVM/project b7b9ba8llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.h, llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes LoadStoreVec.cpp

[SandboxVec][LoadStoreVec] Support constant vectors of mixed types

createConstantVector() previously packed the constant store operands
as-is, which only worked when every store had the same element type.
Take the lane type from VecUtils::getCombinedVectorTypeFor() instead and
reinterpret each constant's bits as that type, going through an integer
of matching width via ptrtoint/inttoptr/bitcast. Constants wider than a
lane (e.g. an i64 in an <N x i32>) are split across several lanes in
memory order. Bail out when a constant cannot be reinterpreted, such as
a non-integral pointer or a relocatable address that needs splitting.

Also flatten vector-typed ConstantPointerNull into per-lane nulls, and
bail out on the remaining vector constants such as poison rather than
packing them into the result.

Co-Authored-By: Claude Opus 5 <noreply at anthropic.com>
DeltaFile
+487-0llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec_mixed_types.ll
+99-3llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.cpp
+8-3llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/LoadStoreVec.h
+1-1llvm/test/Transforms/SandboxVectorizer/Passes/LoadStoreVec/load_store_vec.ll
+595-74 files

LLVM/project 383f4cfllvm/include/llvm/ExecutionEngine/Orc DlfcnSPS.h Dlfcn.h, llvm/include/llvm/ExecutionEngine/Orc/Shared/SPSCI DlfcnSPSCI.h

[ORC] Drive LLJIT dlopen/dlupdate/dlclose via proxies (#224881)

Add Dlfcn proxies (Dlfcn.h), their SPS specs (DlfcnSPS.h) and CI
descriptors (DlfcnSPSCI.h), and route ORCPlatformSupport's three
callSPSWrapper sites through them via recordProxy.
DeltaFile
+38-45llvm/lib/ExecutionEngine/Orc/LLJIT.cpp
+51-0llvm/include/llvm/ExecutionEngine/Orc/Shared/SPSCI/DlfcnSPSCI.h
+38-0llvm/include/llvm/ExecutionEngine/Orc/Dlfcn.h
+36-0llvm/include/llvm/ExecutionEngine/Orc/DlfcnSPS.h
+163-454 files

LLVM/project 08daaa8libcxx/test/std/containers/container.adaptors/flat.map types.verify.cpp, libcxx/test/std/containers/container.adaptors/flat.multimap types.verify.cpp

[libc++] Update container adaptors' type verification tests (#224810)

1. Improves the error message for LWG2566.
2. Converts related compile.fail.cpp tests to verify.cpp tests.
3. Updates all related tests.
4. Removes some redundant tests (e.g. `[[nodiscard]]` is tested
elsewhere).

References:
- https://wg21.link/lwg2566
- https://wg21.link/container.adaptors
- https://wg21.link/flat.map.overview#7
- https://wg21.link/flat.map.overview#8
- https://wg21.link/flat.multimap.overview#7
- https://wg21.link/flat.multimap.overview#8
- https://wg21.link/flat.multiset.overview#7
- https://wg21.link/flat.multiset.overview#8
- https://wg21.link/flat.set.overview#7
- https://wg21.link/flat.set.overview#8

    [4 lines not shown]
DeltaFile
+0-35libcxx/test/std/containers/container.adaptors/stack/stack.defn/types.compile.fail.cpp
+33-0libcxx/test/std/containers/container.adaptors/flat.multimap/types.verify.cpp
+33-0libcxx/test/std/containers/container.adaptors/flat.map/types.verify.cpp
+26-0libcxx/test/std/containers/container.adaptors/flat.set/types.verify.cpp
+26-0libcxx/test/std/containers/container.adaptors/flat.multiset/types.verify.cpp
+0-22libcxx/test/std/containers/container.adaptors/stack/stack.defn/empty.verify.cpp
+118-5713 files not shown
+194-15219 files

LLVM/project c4f702aclang/lib/AST/ByteCode Pointer.h Interp.cpp

[clang][bytecode] Remove unnecessary pointer type checks in CheckLoad/CheckStore (#224884)

Only check the pointer type once.
DeltaFile
+24-18clang/lib/AST/ByteCode/Interp.cpp
+4-1clang/lib/AST/ByteCode/Pointer.h
+28-192 files

LLVM/project 780937fclang/lib/AST/ByteCode Interp.h Opcodes.td, clang/test/AST/ByteCode module-default-ctor.cpp

[clang][bytecode] Add a special opcode for trivial default initializers (#224839)

Trivial default initializers from modules are not implicitly defined in
the AST, so we would diagnose the attached test case as an undefined
constructor. Do what the current interpreter does and special-case this.

Fixes https://github.com/llvm/llvm-project/issues/221400
DeltaFile
+63-0clang/lib/AST/ByteCode/Interp.cpp
+12-0clang/test/AST/ByteCode/Inputs/default-ctor.cppm
+11-0clang/test/AST/ByteCode/module-default-ctor.cpp
+10-0clang/lib/AST/ByteCode/Compiler.cpp
+5-0clang/lib/AST/ByteCode/Opcodes.td
+1-0clang/lib/AST/ByteCode/Interp.h
+102-06 files

LLVM/project ccf2bd8clang/test/CodeGenCXX builtin-clear-padding-codegen.cpp, llvm/lib/Target/Xtensa XtensaS3DSPInstrInfo.td

minor cleanups, should be ready now

Created using spr 1.3.8-beta.1
DeltaFile
+11,213-152llvm/test/CodeGen/RISCV/rvv/vector-interleave-fixed.ll
+4,377-4,141llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,753-0llvm/lib/Target/Xtensa/XtensaS3DSPInstrInfo.td
+2,822-2,774llvm/test/CodeGen/AMDGPU/bf16.ll
+4,402-1,088clang/test/CodeGenCXX/builtin-clear-padding-codegen.cpp
+2,633-2,496llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+31,200-10,6514,046 files not shown
+205,345-93,1734,052 files

LLVM/project 2d2c16eclang/test/CodeGenCXX builtin-clear-padding-codegen.cpp, llvm/lib/Target/Xtensa XtensaS3DSPInstrInfo.td

[𝘀𝗽𝗿] changes introduced through rebase

Created using spr 1.3.8-beta.1

[skip ci]
DeltaFile
+11,213-152llvm/test/CodeGen/RISCV/rvv/vector-interleave-fixed.ll
+4,377-4,141llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.1024bit.ll
+5,753-0llvm/lib/Target/Xtensa/XtensaS3DSPInstrInfo.td
+2,822-2,774llvm/test/CodeGen/AMDGPU/bf16.ll
+4,402-1,088clang/test/CodeGenCXX/builtin-clear-padding-codegen.cpp
+2,633-2,496llvm/test/CodeGen/AMDGPU/amdgcn.bitcast.512bit.ll
+31,200-10,6514,042 files not shown
+205,283-93,0944,048 files

LLVM/project 892d3e9llvm/lib/CodeGen/SelectionDAG TargetLowering.cpp, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mul.i24.ll rotl.ll

[SelectionDAG] Handle constants in SimplifyMultipleUseDemandedBits

Replace a non-zero constant with zero when none of its set bits are
demanded.

This allows users of `SimplifyMultipleUseDemandedBits` to eliminate
irrelevant constant bits while preserving the convention that a null
SDValue indicates no simplification.
DeltaFile
+38-45llvm/test/CodeGen/AMDGPU/rotl.ll
+3-6llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mul.i24.ll
+3-4llvm/test/CodeGen/PowerPC/ppc-rotate-clear.ll
+2-4llvm/test/CodeGen/SystemZ/shift-08.ll
+2-4llvm/test/CodeGen/SystemZ/shift-04.ll
+6-0llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+54-632 files not shown
+57-668 files