LLVM/project 53e16d7clang/include/clang/CIR CIRDataLayoutSpec.h, clang/include/clang/CIR/Dialect/IR CIRAttrs.td

[CIR] Pointer and vptr width from a CIR-native data-layout entry (#204185)

PointerType and VPtrType have hard-coded sizes and alignments of 64/8
bits. On targets with 32-bit pointers (e.g., nvptx, spirv32), this trips
the record layout builder. Any record containing a pointer hit the
insertPadding assertion (offset >= size)
because the pointer was sized at 8 bytes while the following field was
placed at the AST-mandated 4-byte offset.

 ### Changes:
- CIRGenerator: attaches a CIR-native cir.ptr data-layout entry at
module setup, storing {size-in-bits, abi-align-in-bits} read
  from the target DataLayout (only for the default address space).
- CIRTypes: PointerType reads its size/alignment from that entry
(falling back to 64/8 when absent); VPtrType routes through a cir.ptr so
it picks up the same width.
- LowerToLLVM: strips the cir.ptr entry during CIR→LLVM lowering, since
cir.ptr has no meaning in LLVM IR.
- Unit test: checking 4-byte pointer/vptr layout on nvptx, verified
across CIR, CIR→LLVM.
DeltaFile
+111-14clang/lib/CIR/Dialect/IR/CIRTypes.cpp
+58-0clang/test/CIR/IR/pointer-data-layout.cir
+54-0clang/test/CIR/CodeGen/pointer-width-32bit.cpp
+49-0clang/lib/CIR/CodeGen/CIRDataLayoutSpec.cpp
+46-0clang/include/clang/CIR/Dialect/IR/CIRAttrs.td
+34-0clang/include/clang/CIR/CIRDataLayoutSpec.h
+352-147 files not shown
+421-2813 files

LLVM/project bb6b144llvm/lib/Target/AMDGPU SIInstructions.td SIISelLowering.cpp

[AMDGPU] Rename packed 64-bit features to include SingleSGPR. NFCI.
DeltaFile
+9-9llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+12-6llvm/lib/Target/AMDGPU/AMDGPU.td
+8-8llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+4-4llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+2-2llvm/lib/Target/AMDGPU/SIInstructions.td
+2-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+37-313 files not shown
+43-339 files

LLVM/project 6d9de52llvm/lib/Target/AMDGPU VOP3PInstructions.td AMDGPUTargetTransformInfo.cpp, llvm/lib/Target/AMDGPU/Utils AMDGPUBaseInfo.cpp

[AMDGPU] Duplicate packed fp32 instructions (#212857)

These have different semantics on gfx9 and gfx12 with respect to
scalar operands.
DeltaFile
+21-9llvm/lib/Target/AMDGPU/SIInstructions.td
+9-9llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+7-7llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+9-4llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+6-6llvm/test/CodeGen/AMDGPU/bug-pk-f32-imm-fold.mir
+5-5llvm/test/CodeGen/AMDGPU/coexec-sched-effective-stall.mir
+57-409 files not shown
+89-5415 files

LLVM/project 8fbdc8clldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime AppleObjCRuntimeV2.cpp

If the address of the isa_pointer is returned as an error don't ask if it is a tagged pointer (#213163)

The answer isn't right and the wrong type might stick and cause
downstream failures.

Note, the correct solution to this is to distinguish between "couldn't
get the address" and "got a real value of LLDB_INVALID_ADDRESS" but
piping an optional all the way down and then through all the uses is an
intrusive change which I don't have time for right now. That only risk
is that this really IS a tagged pointer with the value
LLDB_INVALID_ADDRESS, so this seems an acceptable workaround.

I ran across this when debugging the ObjC test failures in the ObjC
testuite after 8b9cce358bef26ae4cb9275dd6a43f903bafbaa0. This patch
clears up all those testsuite failures, which should stand as a test for
this patch when I resubmit that change.
DeltaFile
+2-0lldb/source/Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.cpp
+2-01 files

LLVM/project 06361fbclang/lib/CIR/CodeGen CIRGenClass.cpp CIRGenFunction.h, clang/test/CIR/CodeGen attr-musttail.cpp

[CIR] Implement most of 'musttail' statement attr (#213154)

This implements the basics, and leaves NYI in a few places (particularly
those that require cleanup calculations). There IS some additional work
that needs to be done when the ABI work is put in place as well, and the
thunk 'tail' hint isn't implemented either, and is left as a
missing-feature.

This is necessary for compiling the bytecode interpreter in Clang in a
few places during self-build.
DeltaFile
+238-0clang/test/CIR/CodeGen/attr-musttail.cpp
+36-2clang/lib/CIR/CodeGen/CIRGenCall.cpp
+8-9clang/lib/CIR/CodeGen/CIRGenExprCXX.cpp
+12-1clang/lib/CIR/CodeGen/CIRGenStmt.cpp
+7-3clang/lib/CIR/CodeGen/CIRGenFunction.h
+4-2clang/lib/CIR/CodeGen/CIRGenClass.cpp
+305-175 files not shown
+312-2411 files

LLVM/project a1d93f1offload/libomptarget omptarget.cpp, offload/test/offloading firstprivate_packed_buffer_lifetime.c

[OpenMP][Offload] Fix use-after-free of the packed firstprivate transfer buffer (#212905)

`packAndTransfer()` called `submitData()`, which captured the address of
the data of
the `SmallVector` member of `PrivateArgumentManagerTy`, as the host
source of an
async transfer. The manager was later moved into an `AsyncInfo`
post-processing
lambda, changing the underlying address of the data:
`addPostProcessingFunction()`
copies the closure rather than moving it, but even if it "moved", the
address of the data owned by `SmallVector`'s inline capacity would have
changed.

The AMDGPU plugin read from the stale host source address when doing the
actual transfer.

Fix: allocate the packed buffer via
`getOrCreateSourceBufferForSubmitData()`, so

    [2 lines not shown]
DeltaFile
+53-0offload/test/offloading/firstprivate_packed_buffer_lifetime.c
+24-8offload/libomptarget/omptarget.cpp
+77-82 files

LLVM/project 71af911lldb/docs CMakeLists.txt python_extensions.md

[lldb/docs] Document the remaining scripted-extension plugin categories (#213140)

`python_extensions.md` only covered the first five plugin categories.

This commit adds the missing sections for every plugin category added
since: `ScriptedBreakpointResolver`, `ScriptedHook`,
`ScriptedStackFrameRecognizer`, `ScriptedCommand`, `ParsedCommand`,
`ScriptedStringSummary`, and `ScriptedSyntheticChildren`.

Signed-off-by: Med Ismail Bennani <ismail at bennani.ma>
DeltaFile
+79-3lldb/docs/python_extensions.md
+1-0lldb/docs/CMakeLists.txt
+80-32 files

LLVM/project 4912831lldb/include/lldb/Target Target.h, lldb/source/Target TargetProperties.td Target.cpp

[lldb] Add target.jit-engine setting (#212998)

Add a target.jit-engine setting that lets users choose which LLVM
execution engine (MCJIT or ORC) is used to JIT expressions. Defaults to
MCJIT to preserve current behavior. This is groundwork for migrating
expression evaluation from MCJIT to ORC; IRExecutionUnit does not yet
consult this setting.
DeltaFile
+22-0lldb/test/API/commands/settings/TestSettings.py
+19-0lldb/source/Target/Target.cpp
+4-0lldb/source/Target/TargetProperties.td
+4-0lldb/include/lldb/Target/Target.h
+49-04 files

LLVM/project 6489200llvm/lib/Transforms/Instrumentation MemorySanitizer.cpp, llvm/test/Instrumentation/MemorySanitizer/AArch64 arm64-vcvt_f32_su32.ll arm64-vcvt.ll

Revert "Revert "[msan] Apply handleGenericVectorConvertIntrinsic() to fptrunc…"

This reverts commit eb63d313c659ded3bd3106eac71a38c4c50bd3fc.
DeltaFile
+14-13llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll
+14-13llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll
+15-6llvm/test/Instrumentation/MemorySanitizer/X86/f16c-intrinsics-upgrade.ll
+10-8llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt.ll
+8-4llvm/test/Instrumentation/MemorySanitizer/AArch64/arm64-vcvt_f32_su32.ll
+9-3llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp
+70-471 files not shown
+72-487 files

LLVM/project 17088c9llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes BottomUpVec.h

[SandboxVectorizer] Implement topdown/bottomup vectorizers in unison (#205249)

Extend the Sandbox Vectorizer's `bottom-up-vec` pass so a single
implementation can vectorize in either direction, and add the top-down
strategy that walks def-use chains forward from a seed.

Direction selection
--------------------
The pass direction is chosen from the Region's auxiliary pass argument:
"bottom-up" (or empty, the default) and "top-down" map onto a
SchedDirection, and any other value is rejected with a fatal usage
error.
The vectorizer always runs in the same direction as the scheduler.

Top-down traversal
------------------
Bottom-up starts from a seed slice (e.g. stores to consecutive
addresses)
and recurses into operands. Top-down instead starts from a seed of

    [40 lines not shown]
DeltaFile
+598-0llvm/test/Transforms/SandboxVectorizer/topdown_vec.ll
+267-0llvm/unittests/Transforms/Vectorize/SandboxVectorizer/VecUtilsTest.cpp
+83-27llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
+83-0llvm/lib/Transforms/Vectorize/SandboxVectorizer/VecUtils.cpp
+34-12llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h
+12-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+1,077-396 files

LLVM/project f68fba7llvm/lib/Transforms/Vectorize/SandboxVectorizer DependencyGraph.cpp, llvm/unittests/Transforms/Vectorize/SandboxVectorizer DependencyGraphTest.cpp

[SandboxVec][DAG] Fix notifyEraseInstr to skip scheduled neighbors (#212868)

Guard both loops with !PredN->scheduled() so scheduled neighbors are
left untouched, and add a unit test that erases a node with one
scheduled and one unscheduled predecessor to cover the fix.
DeltaFile
+43-0llvm/unittests/Transforms/Vectorize/SandboxVectorizer/DependencyGraphTest.cpp
+3-1llvm/lib/Transforms/Vectorize/SandboxVectorizer/DependencyGraph.cpp
+46-12 files

LLVM/project 5525229llvm/lib/Target/AMDGPU SIInstructions.td SIISelLowering.cpp

[AMDGPU] Rename packed 64-bit features to include SingleSGPR. NFCI.
DeltaFile
+9-9llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+12-6llvm/lib/Target/AMDGPU/AMDGPU.td
+8-8llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+4-4llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+2-2llvm/lib/Target/AMDGPU/SIInstructions.td
+2-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+37-313 files not shown
+43-339 files

LLVM/project 2955117llvm/lib/Target/AMDGPU VOP3PInstructions.td AMDGPUTargetTransformInfo.cpp, llvm/lib/Target/AMDGPU/Utils AMDGPUBaseInfo.cpp

[AMDGPU] Duplicate packed fp32 instructions

These have different semantics on gfx9 and gfx12 with respect to
scalar operands.
DeltaFile
+21-9llvm/lib/Target/AMDGPU/SIInstructions.td
+9-9llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp
+7-7llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp
+9-4llvm/lib/Target/AMDGPU/VOP3PInstructions.td
+6-6llvm/test/CodeGen/AMDGPU/bug-pk-f32-imm-fold.mir
+5-5llvm/test/CodeGen/AMDGPU/coexec-sched-effective-stall.mir
+57-409 files not shown
+89-5415 files

LLVM/project 30611cabolt/lib/Rewrite RewriteInstance.cpp, bolt/test/AArch64 constant_island_pie_update.s

[BOLT] Fix RELR addend updates for non-zero image bases (#213000)

This patch fixes an AArch64 BOLT failure exposed by LLVM commit
`fbba327208d7f6994f9a28a51dca3e913e3b444a`, which enabled packed
relative relocations (RELR) globally. BOLT incorrectly used a virtual
relocation address as a file offset when updating RELR addends,
corrupting instrumented executables when their image base was non-zero.
The observed CMake compiler-check failure was only a consequence of the
corrupted BOLT-instrumented Clang executable crashing; the defect itself
is in BOLT, not CMake.

The regression test links an AArch64 PIE with a non-zero image base and
verifies that BOLT updates the RELR addend at the correct file offset.

Assisted-by: Codex
DeltaFile
+15-0bolt/test/AArch64/constant_island_pie_update.s
+1-1bolt/lib/Rewrite/RewriteInstance.cpp
+16-12 files

LLVM/project c46d2eamlir/include/mlir-c Rewrite.h, mlir/test/CAPI rewrite.c

Address review: fix stale InsertPoint header comment, test all restore branches
DeltaFile
+16-2mlir/test/CAPI/rewrite.c
+2-2mlir/include/mlir-c/Rewrite.h
+18-42 files

LLVM/project b08d58fmlir/include/mlir-c Rewrite.h, mlir/lib/CAPI/Transforms Rewrite.cpp

[mlir-c] Add RewriterBase insertion point save/restore
DeltaFile
+63-0mlir/test/CAPI/rewrite.c
+26-0mlir/lib/CAPI/Transforms/Rewrite.cpp
+19-0mlir/include/mlir-c/Rewrite.h
+108-03 files

LLVM/project 56a48d7compiler-rt/test/msan vararg_shadow.cpp

[msan][test] Disable UB cases in vararg_shadow.cpp (#204246)

This patch comments out the tests for char and float, which have
undefined behavior: `warning: second argument to 'va_arg' is of
promotable type 'char'/'float'; this va_arg has undefined behavior
because arguments will be promoted to 'int'/'double' [-Wvarargs]`.

The non-UB way to rewrite the tests is to use `va_arg()` with int and
double types (when the original variables are char and float), but there
are already test cases for int and double.

Note also that the float test makes an assumption that
`cast<float>(cast<double>(float))` will maintain the original shadow,
which MSan need not guarantee. In particular,
https://github.com/llvm/llvm-project/pull/204197 breaks that assumption
(which led to a buildbot breakage and revert).
DeltaFile
+16-4compiler-rt/test/msan/vararg_shadow.cpp
+16-41 files

LLVM/project b4a77f5libc/src/__support freestore.h, libc/test/src/__support freestore_test.cpp

[libc][__support] Implement exact linear binning for TLSFFreeStoreImpl

Previously, size_to_bit_index used size >> UNIT_SIZE_LOG2 for linear bins,
which mapped size 24 to bin 1 and size 17 to bin 1, causing a mismatch
between allocation request sizes and physical block bucket sizes.

This change introduces exact mapping for linear bins:
- Sizes <= MIN_INNER_SIZE map to bin 0.
- Larger linear sizes use ((size - MIN_INNER_SIZE - 1) >> UNIT_SIZE_LOG2) + 1.
- Exponential bins remain unchanged (verified by z3).

TAG=agy
CONV=811f354e-5729-4a5f-af17-de4b5ca9e647
DeltaFile
+24-11libc/src/__support/freestore.h
+1-1libc/test/src/__support/freestore_test.cpp
+25-122 files

LLVM/project 7e35cbbllvm/lib/Target/NVPTX NVPTXRegisterInfo.h NVPTXAsmPrinter.h, llvm/lib/Target/NVPTX/MCTargetDesc NVPTXInstPrinter.cpp NVPTXBaseInfo.h

[NVPTX] Cleanup PTX virtual register encoding (NFC) (#212395)

Unify the scheme used to carry PTX virtual registers through
`MCOperand`s. The register class was encoded and decoded 
by two hand-written switchtables, one in
`NVPTXAsmPrinter::encodeVirtualRegister` and one in
`NVPTXInstPrinter::printRegName`, kept in sync only by
comment. Both now share a `VirtualRegisterKind` enum and
`getVirtualRegisterPrefix` in `NVPTXBaseInfo.h`, which also
subsumes `getNVPTXRegClassStr` and drops the stale
`%f`/`%fd` cases left over from the typed float register
classes.

Co-Authored by Opus-5.
DeltaFile
+55-59llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp
+49-0llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXBaseInfo.h
+11-30llvm/lib/Target/NVPTX/NVPTXRegisterInfo.cpp
+8-29llvm/lib/Target/NVPTX/MCTargetDesc/NVPTXInstPrinter.cpp
+11-8llvm/lib/Target/NVPTX/NVPTXAsmPrinter.h
+3-6llvm/lib/Target/NVPTX/NVPTXRegisterInfo.h
+137-1326 files

LLVM/project 197e68d.github CODEOWNERS

Revert "[github] Move BOLT reviewers to team (#211422)" (#213141)

We haven't really being tagged in new PRs anymore, so it looks like this
is not working.

Revert for now until we can fix this, so we don't miss PRs.

This reverts commit 04f124f6151e8c8410e28aba28dc38e590e34c58.
DeltaFile
+3-1.github/CODEOWNERS
+3-11 files

LLVM/project 20c764aclang/test/SemaOpenCL builtins-amdgcn-cvt-sr-pk-bf16-f32-err.cl, llvm/lib/Target/AMDGPU VOP3Instructions.td AMDGPU.td

AMDGPU: Give v_cvt_sr_pk_bf16_f32 its own subtarget feature

v_cvt_sr_pk_bf16_f32 was gated on bf16-cvt-insts, but that feature is
also present on gfx950 where the (non-sr) v_cvt_pk_bf16_f32 was first
added. The stochastic-rounding v_cvt_sr_pk_bf16_f32 was only added
for gfx1250 and has no gfx950 encoding, so it would mis-select and
later hit the "Invalid opcode" assert. Introduce cvt-sr-pk-bf16-f32-inst,
currently added to gfx13 and 125*

Co-authored-by: Claude (Claude-Opus-4.8)
DeltaFile
+12-0clang/test/SemaOpenCL/builtins-amdgcn-cvt-sr-pk-bf16-f32-err.cl
+8-0llvm/test/MC/AMDGPU/gfx950-unsupported.s
+6-0llvm/lib/Target/AMDGPU/AMDGPU.td
+4-1llvm/lib/Target/AMDGPU/VOP3Instructions.td
+3-0llvm/test/CodeGen/AMDGPU/llvm.amdgcn.cvt.sr.pk.bf16.ll
+2-0llvm/lib/TargetParser/AMDGPUTargetParser.cpp
+35-11 files not shown
+36-27 files

LLVM/project 3b67949mlir/include/mlir-c IR.h, mlir/test/CAPI ir.c

Address review: exercise operand number/value filtering, userData, and no-use case
DeltaFile
+41-0mlir/test/CAPI/ir.c
+2-1mlir/include/mlir-c/IR.h
+43-12 files

LLVM/project 6131543utils/bazel/llvm-project-overlay/flang/lib/Optimizer/OpenACC/Transforms BUILD.bazel

[Bazel] Fixes 21d9869 (#213147)

This fixes 21d9869c206e12f1932aecff50d03f06f5a96339 (#212299).

Buildkite error link:
https://buildkite.com/llvm-project/upstream-bazel/builds?commit=21d9869c206e12f1932aecff50d03f06f5a96339

Co-authored-by: Google Bazel Bot <google-bazel-bot at google.com>
DeltaFile
+2-0utils/bazel/llvm-project-overlay/flang/lib/Optimizer/OpenACC/Transforms/BUILD.bazel
+2-01 files

LLVM/project 2d0b45bclang/lib/Format TokenAnnotator.cpp, clang/unittests/Format FormatTest.cpp

[clang-format] Prevent re-assigning type on finalized tokens (#210763)

Prevents a finalized token inside modifyContext from being reassigned
through the setType member function by checking if the token is
finalized.

This ensures ill-defined code like does not trigger an assertion failure
during reformatting.
Fixes #210509
DeltaFile
+2-1clang/lib/Format/TokenAnnotator.cpp
+1-0clang/unittests/Format/FormatTest.cpp
+3-12 files

LLVM/project f279abcoffload/test/unit lit.site.cfg.in lit.cfg.py

[Offload][Test] Add llvm bin in the PATH for offload-unit suite (#213149)

This PR makes the offload-unit suite put llvm bin directory on PATH so
that tests need lld can find. It fixes the issue exposed in:
https://github.com/llvm/llvm-project/pull/212860
DeltaFile
+11-0offload/test/unit/lit.cfg.py
+1-0offload/test/unit/lit.site.cfg.in
+12-02 files

LLVM/project 308bbdaclang/include/clang/DependencyScanning DependencyScanningWorker.h DependencyScannerImpl.h, clang/lib/DependencyScanning CMakeLists.txt DependencyScanningWorker.cpp

Move implementation details to DependencyScanningWorker.cpp and dissolve DependencyScannerImpl.h/cpp.
DeltaFile
+0-525clang/lib/DependencyScanning/DependencyScannerImpl.cpp
+493-1clang/lib/DependencyScanning/DependencyScanningWorker.cpp
+0-89clang/include/clang/DependencyScanning/DependencyScannerImpl.h
+12-2clang/include/clang/DependencyScanning/DependencyScanningWorker.h
+0-1clang/lib/Tooling/DependencyScanningTool.cpp
+0-1clang/lib/DependencyScanning/CMakeLists.txt
+505-6193 files not shown
+506-6219 files

LLVM/project 658945dclang/include/clang/DependencyScanning DependencyScannerImpl.h, clang/lib/DependencyScanning DependencyScannerImpl.cpp DependencyScanningWorker.cpp

Use CompilerInstanceWithContext for TU scanning.
DeltaFile
+315-38clang/lib/DependencyScanning/DependencyScanningWorker.cpp
+0-293clang/lib/DependencyScanning/DependencyScannerImpl.cpp
+35-0clang/unittests/Tooling/DependencyScannerTest.cpp
+0-27clang/include/clang/DependencyScanning/DependencyScannerImpl.h
+1-0clang/test/ClangScanDeps/logging-simple.c
+351-3585 files

LLVM/project 5a76c89clang/include/clang/DependencyScanning DependencyScanningWorker.h, clang/include/clang/Tooling DependencyScanningTool.h

Relocate CompilerInstanceWithContext to DependencyScanningWorker.cpp and hide it as an implementation detail.
DeltaFile
+250-0clang/lib/DependencyScanning/DependencyScanningWorker.cpp
+4-207clang/lib/Tooling/DependencyScanningTool.cpp
+0-75clang/include/clang/Tooling/DependencyScanningTool.h
+22-5clang/include/clang/DependencyScanning/DependencyScanningWorker.h
+276-2874 files

LLVM/project c2ff95dclang/include/clang/DependencyScanning DependencyScannerImpl.h, clang/include/clang/Tooling DependencyScanningTool.h

Implement the streaming style by-name scanning API.
DeltaFile
+43-89clang/lib/Tooling/DependencyScanningTool.cpp
+39-56clang/tools/clang-scan-deps/ClangScanDeps.cpp
+15-59clang/include/clang/Tooling/DependencyScanningTool.h
+0-14clang/include/clang/DependencyScanning/DependencyScannerImpl.h
+1-3clang/test/ClangScanDeps/modules-full-by-mult-mod-names-diagnostics.c
+1-1clang/test/ClangScanDeps/modules-invalid-target.c
+99-2221 files not shown
+101-2227 files

LLVM/project 4d2633dllvm/include/llvm/Transforms/Vectorize/SandboxVectorizer VecUtils.h, llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes BottomUpVec.h

[SBVec] Add top-down vectorization to the unified Sandbox Vectorizer

Extend the Sandbox Vectorizer's `bottom-up-vec` pass so a single
implementation can vectorize in either direction, and add the top-down
strategy that walks def-use chains forward from a seed.

Direction selection
--------------------
The pass direction is chosen from the Region's auxiliary pass argument:
"bottom-up" (or empty, the default) and "top-down" map onto a
SchedDirection, and any other value is rejected with a fatal usage error.
The vectorizer always runs in the same direction as the scheduler.

Top-down traversal
------------------
Bottom-up starts from a seed slice (e.g. stores to consecutive addresses)
and recurses into operands. Top-down instead starts from a seed of
consecutive loads and recurses into *users*:


    [32 lines not shown]
DeltaFile
+598-0llvm/test/Transforms/SandboxVectorizer/topdown_vec.ll
+267-0llvm/unittests/Transforms/Vectorize/SandboxVectorizer/VecUtilsTest.cpp
+83-27llvm/lib/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.cpp
+83-0llvm/lib/Transforms/Vectorize/SandboxVectorizer/VecUtils.cpp
+34-12llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/Passes/BottomUpVec.h
+12-0llvm/include/llvm/Transforms/Vectorize/SandboxVectorizer/VecUtils.h
+1,077-396 files