LLVM/project 53dabaeclang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation TransformationRegistry.h Transformation.h, clang/lib/ScalableStaticAnalysisFramework/SourceTransformation TransformationRegistry.cpp

[clang][ssaf] Add source-transformation library scaffolding (#204214)

Introduces the abstract base classes, registries, and force-linker
anchor for the SSAF source-transformation library.

A `Transformation` is an `ASTConsumer` that consumes a previously
computed `WPASuite` and emits source edits and findings through two
sinks: `SourceEditEmitter` (accumulates `clang::tooling::Replacement`s)
and `TransformationReportEmitter` (accumulates `(ruleId, level, range,
message)` tuples). The accumulated state is then handed to a
`SourceEditFormat` and a `TransformationReportFormat` for serialization.

Three `llvm::Registry`-backed registries — keyed by transformation name
and by file extension respectively — let transformations and formats be
linked in statically (with a force-linker anchor) or loaded dynamically
as a clang plugin. Each registry exposes the standard `is*Registered` /
`make*` / `printAvailable*` helpers used elsewhere in SSAF.

No transformation or format ships yet; this commit only adds the

    [4 lines not shown]
DeltaFile
+81-0clang/unittests/ScalableStaticAnalysisFramework/SourceTransformation/EmitterTest.cpp
+78-0clang/unittests/ScalableStaticAnalysisFramework/SourceTransformation/RegistryTest.cpp
+66-0clang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation/TransformationRegistry.h
+44-0clang/lib/ScalableStaticAnalysisFramework/SourceTransformation/TransformationRegistry.cpp
+38-0clang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation/Transformation.h
+33-0clang/include/clang/ScalableStaticAnalysisFramework/SourceTransformation/TransformationReportEmitter.h
+340-010 files not shown
+393-016 files

LLVM/project d9d5446lldb/packages/Python/lldbsuite/test dotest.py

[lldb] Only run libc++ tests when the architecture matches (#204267)

It does not make sense to run the libc++ tests when the libc++ dylib has
an architecture that does not match the test binary.

I ran into this when running the test suite with arm64e test binaries
and the locally-built libc++ is built arm64.

---------

Co-authored-by: Dave Lee <davelee.com at gmail.com>
DeltaFile
+16-0lldb/packages/Python/lldbsuite/test/dotest.py
+16-01 files

LLVM/project bf5f523mlir/lib/Target/Cpp TranslateToCpp.cpp, mlir/test/Target/Cpp class.mlir

[mlir][emitc] Set operator precedence for `GetFieldOp` (#203416)

This sets the precedence for the `GetFieldOp`, preventing an unsupported
operation error. The precedence is set to 18, the same as `GetGlobalOp`,
because `GetFieldOp` behaves the same way.
DeltaFile
+23-0mlir/test/Target/Cpp/class.mlir
+1-0mlir/lib/Target/Cpp/TranslateToCpp.cpp
+24-02 files

LLVM/project ec6b043llvm/lib/Target/AArch64/AsmParser AArch64AsmParser.cpp, llvm/lib/Target/AArch64/MCTargetDesc AArch64InstPrinter.cpp AArch64InstPrinter.h

[AArch64][llvm] Deduplicate hint alias parsing code (NFC)

The code which handles instructions that are aliased in the `HINT`
encoding space is very similar and repetitive.

Move common code into templated functions, so that it's consistent and
simpler, whilst still remaining readable.

This also means any future instructions added in the `HINT` space will
be simpler to implement. Net removal of ~53 lines of code.
DeltaFile
+86-142llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+27-31llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
+7-0llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.h
+120-1733 files

LLVM/project 7e3a85ellvm/lib/Target/NVPTX NVPTXISelLowering.h, llvm/test/CodeGen/NVPTX insert-vector-elt-bitcast-legalize.ll

Revert "[NVPTX] Fix illegal combineInsertEltToShuffle pattern (#198259)"

This reverts commit d226dcc019d6a83cba79951ec2a8a08c53a57858.
DeltaFile
+0-24llvm/test/CodeGen/NVPTX/insert-vector-elt-bitcast-legalize.ll
+0-4llvm/lib/Target/NVPTX/NVPTXISelLowering.h
+0-282 files

LLVM/project 13ee12dclang/lib/Analysis/LifetimeSafety FactsGenerator.cpp, clang/lib/Sema SemaLifetimeSafety.h AnalysisBasedWarnings.cpp

Revert "[LifetimeSafety] Support C Language in LifetimeSafety" (#204481)

Reverts llvm/llvm-project#203270 because of changes to .gitignore
DeltaFile
+0-181clang/test/Sema/LifetimeSafety/safety-c.c
+0-28clang/test/Sema/attr-lifetime-capture-by.c
+1-23clang/lib/Analysis/LifetimeSafety/FactsGenerator.cpp
+0-21clang/test/Sema/attr-lifetimebound.c
+0-19clang/lib/Sema/SemaLifetimeSafety.h
+6-3clang/lib/Sema/AnalysisBasedWarnings.cpp
+7-2755 files not shown
+11-29711 files

LLVM/project 7119110clang/unittests/ScalableStaticAnalysisFramework/Analyses/PointerFlow PointerFlowTest.cpp

Apply suggestion from @ziqingluo-90 to fix clang-format
DeltaFile
+1-1clang/unittests/ScalableStaticAnalysisFramework/Analyses/PointerFlow/PointerFlowTest.cpp
+1-11 files

LLVM/project a866da5clang/lib/ScalableStaticAnalysisFramework/Analyses SSAFAnalysesCommon.h SSAFAnalysesCommon.cpp, clang/lib/ScalableStaticAnalysisFramework/Analyses/PointerFlow PointerFlowExtractor.cpp

[SSAF] Properly handle contributors with multiple declarations

A contributor entity can have multiple declarations all contributing
interesting facts. For example, a function declaration (not
definition) may have default arguments, which may provide pointer flow
or unsafe buffer usage facts. This commit groups declarations by their
canonical decls. The entity summary of a contributor will be
collected from all its decls.

In addition, this commit includes the following minor changes:
- Factor the common procedure of summary extraction and insertion
  into a template function in SSAFAnalysesCommon.h.
- Convert the no-duplicate contributor assertion into a debug
  warning. In corner cases, there might be an EntityName conflict on
  distinct entities. Sometimes, just keeping one of those entities is
  fine (see benign-entity-name-conflict.cpp). More importantly, we
  need the release build to not crash.

rdar://179150798
DeltaFile
+56-3clang/lib/ScalableStaticAnalysisFramework/Analyses/SSAFAnalysesCommon.h
+15-35clang/lib/ScalableStaticAnalysisFramework/Analyses/PointerFlow/PointerFlowExtractor.cpp
+14-32clang/lib/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageExtractor.cpp
+40-0clang/test/Analysis/Scalable/PointerFlow/multi-decl-contributor.cpp
+24-0clang/test/Analysis/Scalable/PointerFlow/benign-entity-name-conflict.cpp
+6-4clang/lib/ScalableStaticAnalysisFramework/Analyses/SSAFAnalysesCommon.cpp
+155-746 files

LLVM/project 26d9962flang/test/Driver fakeflang.F, flang/tools/fakeflang fakeflang.cpp ensure_flang_exists.cmake

[Flang] Match additional CMake Fortran detection probes (#204438)

Support the following additional patterns that CMake may use to
introspect the Fortran compiler:
1. `__GNUC__` may be tested before `__flang__` which results in the
compiler to be identified as "GNU" instead of "LLVMFlang"
2. Invoke with `-E -cpp` to explicitly use the preprocessor

Fakeflang was added in #203481 to not have to build all of flang just to
pass CMake's compiler detection.

Tested with CMake 3.20, 3.28, and 4.4-rc.

Should fix the
[flang-aarch64-rel-assert](https://lab.llvm.org/buildbot/#/builders/29)
and [flang-aarch64-dylib](https://lab.llvm.org/buildbot/#/builders/50)
buildbots.
DeltaFile
+15-3flang/tools/fakeflang/fakeflang.cpp
+10-2flang/test/Driver/fakeflang.F
+3-1flang/tools/fakeflang/ensure_flang_exists.cmake
+28-63 files

LLVM/project 668800d.github/workflows release-binaries.yml, llvm CMakeLists.txt

workflows/release-binaries: Use Wix to create Windows installer (#200734)

The NSIS based installer had a limit of 2GB, and we started going over
that, so we needed to move to Wix which supports much larger installer
sizes.
DeltaFile
+15-8llvm/CMakeLists.txt
+9-1.github/workflows/release-binaries.yml
+1-1llvm/utils/release/build_llvm_release.bat
+25-103 files

LLVM/project ecd4af4llvm/lib/Target/AArch64 AArch64PerfectShuffle.cpp AArch64PerfectShuffle.h, llvm/test/CodeGen/AMDGPU llvm.amdgcn.mfma.scale.f32.32x32x64.f8f6f4.ll

Merge branch 'main' into users/ziqingluo/ssaf-extractor-improve
DeltaFile
+7,323-0llvm/test/CodeGen/X86/fptosi-sat-vector-512.ll
+3,450-3,788llvm/test/CodeGen/X86/vector-interleaved-store-i16-stride-7.ll
+6,583-0llvm/lib/Target/AArch64/AArch64PerfectShuffle.cpp
+3-6,571llvm/lib/Target/AArch64/AArch64PerfectShuffle.h
+6,132-0llvm/test/CodeGen/X86/fptoui-sat-vector-512.ll
+5,788-1llvm/test/CodeGen/AMDGPU/llvm.amdgcn.mfma.scale.f32.32x32x64.f8f6f4.ll
+29,279-10,3602,922 files not shown
+187,260-66,5792,928 files

LLVM/project aa8f784clang/lib/ScalableStaticAnalysisFramework/Analyses SSAFAnalysesCommon.h SSAFAnalysesCommon.cpp, clang/lib/ScalableStaticAnalysisFramework/Analyses/PointerFlow PointerFlowExtractor.cpp

[SSAF] Properly handle contributors with multiple declarations

A contributor entity can have multiple declarations all contributing
interesting facts. For example, a function declaration (not
definition) may have default arguments, which may provide pointer flow
or unsafe buffer usage facts. This commit groups declarations by their
canonical decls. The entity summary of a contributor will be
collected from all its decls.

In addition, this commit includes the following minor changes:
- Factor the common procedure of summary extraction and insertion
  into a template function in SSAFAnalysesCommon.h.
- Convert the no-duplicate contributor assertion into a debug
  warning. In corner cases, there might be an EntityName conflict on
  distinct entities. Sometimes, just keeping one of those entities is
  fine (see benign-entity-name-conflict.cpp). More importantly, we
  need the release build to not crash.

rdar://179150798
DeltaFile
+56-3clang/lib/ScalableStaticAnalysisFramework/Analyses/SSAFAnalysesCommon.h
+15-35clang/lib/ScalableStaticAnalysisFramework/Analyses/PointerFlow/PointerFlowExtractor.cpp
+14-32clang/lib/ScalableStaticAnalysisFramework/Analyses/UnsafeBufferUsage/UnsafeBufferUsageExtractor.cpp
+40-0clang/test/Analysis/Scalable/PointerFlow/multi-decl-contributor.cpp
+24-0clang/test/Analysis/Scalable/PointerFlow/benign-entity-name-conflict.cpp
+6-4clang/lib/ScalableStaticAnalysisFramework/Analyses/SSAFAnalysesCommon.cpp
+155-746 files

LLVM/project 3663599llvm/lib/Transforms/Instrumentation AddressSanitizer.cpp, llvm/test/Instrumentation/AddressSanitizer wasm.ll

[WebAssembly] Default to 0 shadow offset for wasm64 ASan (#204437)

For Wasm64, ASan instrumentation was defaulting to a 16TB shadow offset,
while the runtime configures it to 0. Align them by defaulting to 0 for
all WebAssembly targets.
DeltaFile
+23-0llvm/test/Instrumentation/AddressSanitizer/wasm.ll
+2-0llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+25-02 files

LLVM/project eb3c37flld/test/wasm reloc-relative.s, lld/wasm InputFiles.cpp

[WebAssembly] Add support for R_WASM_MEMORY_ADDR_LOCREL_I64 relocation (#204055)

This relocation is needed for WASM64 to support location-relative memory
addresses, which are used e.g. in profile instrumentation (for
CounterPtr in __llvm_profile_data).
Without this, the compiler falls back to absolute relocations and drops
the subtraction, resulting in malformed profile data.

Fixes: https://github.com/emscripten-core/emscripten/issues/26865
DeltaFile
+26-21lld/test/wasm/reloc-relative.s
+35-3llvm/test/MC/WebAssembly/reloc-relative.ll
+5-2lld/wasm/InputFiles.cpp
+3-1llvm/lib/MC/WasmObjectWriter.cpp
+3-1llvm/lib/Object/WasmObjectFile.cpp
+2-1llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyWasmObjectWriter.cpp
+74-294 files not shown
+81-2910 files

LLVM/project 9237b26llvm/lib/Target/DirectX DXContainerPDB.cpp

[DirectX] Fix IO sandbox violation in DXContainerPDB pass (#204461)

`DXContainerPDB::runOnModule` writes a PDB file to disk via
`PDBFileBuilder::commit`, which calls through `MSFBuilder::commit`  ->
`FileOutputBuffer::create` -> `llvm::sys::fs::status()`. These are raw
filesystem APIs that trigger a fatal "IO sandbox violation" when the IO
sandbox is enabled.

The sandbox is enabled in `CC1Command::Execute` (Job.cpp) to enforce
that all filesystem access goes through the VFS. Since `PDBFileBuilder`
doesn't support VFS-based output, bypass the sandbox for the commit call
using `scopedDisable()`, matching the established pattern used in
`raw_ostream.cpp`, `VirtualFileSystem.cpp`, `BackendUtil.cpp`, and
others.

This crash occurs on any clang invocation targeting the DirectX backend
with PDB emission enabled, e.g.:

`Target: dxilv1.7-unknown-shadermodel6.7-library`

    [17 lines not shown]
DeltaFile
+3-0llvm/lib/Target/DirectX/DXContainerPDB.cpp
+3-01 files

LLVM/project cebc501llvm/lib/Target/RISCV RISCVISelLowering.cpp, llvm/test/CodeGen/RISCV rvp-simd-32.ll

[RISCV][P-ext] Fold (PSRL/PSRA (trunc (PSRL X, C1)), C2) -> (trunc (PSRL/PSRA X, C1+C2)) (#204385)

when C1 equals the number of bits discarded by the truncate. This
matches an existing DAGCombine for ISD::SRA/SRL which doesn't get
a chance to fire before the inner PSRL is formed.

Assisted-by: Claude Sonnet 4.6
DeltaFile
+25-6llvm/test/CodeGen/RISCV/rvp-simd-32.ll
+29-0llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+54-62 files

LLVM/project 6e4a7eeclang/lib/Driver/ToolChains HIPAMD.cpp, clang/test/Driver hip-toolchain-no-rdc.hip spirv-amd-toolchain.c

[HIP][SPIR-V] Enable SPIR-V backend by default (#198338)

Use -no-use-spirv-backend to get SPIR-V by llvm-spirv tool.
DeltaFile
+3-3clang/lib/Driver/ToolChains/HIPAMD.cpp
+2-2clang/test/Driver/hip-toolchain-no-rdc.hip
+3-1clang/test/Driver/spirv-amd-toolchain.c
+2-1clang/test/Driver/hip-phases.hip
+10-74 files

LLVM/project 789ac07llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlan.h, llvm/test/Transforms/LoopVectorize vplan-based-stride-mv.ll

[VPlan] Implement VPlan-based stride speculation
DeltaFile
+685-849llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
+269-140llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
+252-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+42-0llvm/lib/Transforms/Vectorize/VPlan.h
+7-5llvm/lib/Transforms/Vectorize/VPRecipeBuilder.h
+11-1llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+1,266-9995 files not shown
+1,293-1,00311 files

LLVM/project 6e21a04clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization SerializationFormat.h JSONFormat.h, clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat Artifact.cpp JSONFormatImpl.h

[clang][ssaf] Make TUSummary, LUSummary, and WPASuite JSON representations self-describing (#204409)

This commit introduces the following changes:

- Add a self-describing `"type"` field (`"TUSummary"`, `"LUSummary"`, or
`"WPASuite"`) to the root of every artifact JSON file written by
`JSONFormat`. Kind-specific readers (`readTUSummary`, `readLUSummary`,
`readWPASuite`, plus the encoding flavors) validate that the field is
present and matches the expected value.
- Introduce two variant aliases on `SerializationFormat`: `Artifact =
std::variant<TUSummary, LUSummary, WPASuite>` and `ArtifactEncoding =
std::variant<TUSummaryEncoding, LUSummaryEncoding>`. Each gets a generic
`read*/write*` pair that peeks the `type` field once and dispatches to
the matching reader/writer; the file is read and parsed only once per
call.
- Refactor every kind-specific reader into `read{Kind}` (loads file +
validates type) plus a private `read{Kind}FromObject(const Object&)`
helper. `readArtifact`/`readArtifactEncoding` reuse those helpers
directly, avoiding the file-and-parse-twice pattern.

    [5 lines not shown]
DeltaFile
+173-0clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/Artifact.cpp
+43-0clang/test/Analysis/Scalable/ssaf-format/Artifact/top-level.test
+40-0clang/test/Analysis/Scalable/ssaf-format/Artifact/round-trip.test
+36-0clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/SerializationFormat.h
+34-0clang/lib/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat/JSONFormatImpl.h
+33-0clang/include/clang/ScalableStaticAnalysisFramework/Core/Serialization/JSONFormat.h
+359-0208 files not shown
+1,065-242214 files

LLVM/project 1bca656llvm/lib/Transforms/IPO ThinLTOBitcodeWriter.cpp WholeProgramDevirt.cpp, llvm/test/ThinLTO/X86 devirt_function_alias2.ll

[CFI] Create an external linkage alias instead of promoting internals
DeltaFile
+20-33llvm/lib/Transforms/IPO/ThinLTOBitcodeWriter.cpp
+20-5llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp
+10-7llvm/test/Transforms/ThinLTOBitcodeWriter/comdat.ll
+16-0llvm/lib/Transforms/IPO/LowerTypeTests.cpp
+6-4llvm/test/ThinLTO/X86/devirt_function_alias2.ll
+4-2llvm/test/Transforms/ThinLTOBitcodeWriter/split-vfunc-internal.ll
+76-513 files not shown
+83-569 files

LLVM/project fa7961allvm/include/llvm/IR GlobalValue.h, llvm/include/llvm/Transforms/Utils AssignGUID.h

Reland #184065
DeltaFile
+61-17llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+45-30llvm/lib/LTO/LTO.cpp
+64-2llvm/lib/IR/Globals.cpp
+49-3llvm/lib/Bitcode/Writer/BitcodeWriter.cpp
+45-5llvm/include/llvm/IR/GlobalValue.h
+49-0llvm/include/llvm/Transforms/Utils/AssignGUID.h
+313-57116 files not shown
+846-400122 files

LLVM/project 8cce117llvm/include/llvm/Transforms/Coroutines CoroInstr.h, llvm/lib/IR Verifier.cpp

[Coro] Handle aliases
DeltaFile
+13-0llvm/test/Transforms/Coroutines/coro-id-alias.ll
+8-4llvm/include/llvm/Transforms/Coroutines/CoroInstr.h
+5-4llvm/lib/Transforms/Coroutines/Coroutines.cpp
+4-2llvm/lib/Transforms/Coroutines/CoroCleanup.cpp
+1-1llvm/lib/IR/Verifier.cpp
+31-115 files

LLVM/project a5127a6llvm/lib/Target/AMDGPU AMDGPUISelDAGToDAG.cpp SIISelLowering.cpp, llvm/test/CodeGen/AMDGPU packed-fp64.ll packed-u64.ll

[AMDGPU] Make v2x64 BUILD_VECTOR legal on gfx1251
DeltaFile
+120-174llvm/test/CodeGen/AMDGPU/packed-fp64.ll
+70-106llvm/test/CodeGen/AMDGPU/packed-u64.ll
+14-36llvm/test/CodeGen/AMDGPU/shl.v2i64.ll
+15-16llvm/test/CodeGen/AMDGPU/pk-lshl-add-u64.ll
+11-6llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+3-2llvm/lib/Target/AMDGPU/SIISelLowering.cpp
+233-3406 files

LLVM/project 046f0b8llvm/lib/Transforms/Vectorize VPlanTransforms.cpp VPlan.h, llvm/test/Transforms/LoopVectorize vplan-based-stride-mv.ll

[VPlan] Implement VPlan-based stride speculation
DeltaFile
+685-849llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
+269-140llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
+252-4llvm/lib/Transforms/Vectorize/VPlanTransforms.cpp
+41-0llvm/lib/Transforms/Vectorize/VPlan.h
+8-5llvm/lib/Transforms/Vectorize/VPRecipeBuilder.h
+11-1llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+1,266-9995 files not shown
+1,293-1,00311 files

LLVM/project 1f102f2llvm/test/Transforms/LoopVectorize vplan-based-stride-mv.ll, llvm/test/Transforms/LoopVectorize/VPlan vplan-based-stride-mv.ll

[NFC][VPlan] Add initial tests for future VPlan-based stride MV

I tried to include both the features that current
LoopAccessAnalysis-based transformation supports (e.g., trunc/sext of
stride) but also cases where the current implementation behaves poorly,
e.g., https://godbolt.org/z/h31c3zKxK; as well as some other potentially
interesting scenarios I could imagine.

The are two test files with the same content. One is for VPlan dump change of
the future transformation alone (I'll update `-vplan-print-after` in the next
PR), another is for the full vectorizer pipeline. The latter have two `RUN:`
lines:
 * No multiversioning, so the next PR diff can show the transformation itself
 * Stride multiversionin performed in LAA, so that we can compare future
   VPlan-based transformation vs old behavior.
DeltaFile
+4,728-0llvm/test/Transforms/LoopVectorize/vplan-based-stride-mv.ll
+3,417-0llvm/test/Transforms/LoopVectorize/VPlan/vplan-based-stride-mv.ll
+8,145-02 files

LLVM/project ee890ebllvm/lib/Transforms/Scalar ConstraintElimination.cpp, llvm/test/Transforms/ConstraintElimination geps-unsigned-predicates.ll

[ConstraintElim] Do not model negative nuw-only GEP offset as signed. (#203620)

decomposeGEP added the GEP's constant offset to the unsigned
decomposition using its signed value (getSExtValue()). For a GEP that
only carries nuw (without nusw/inbounds), the indices must be
interpreted as unsigned.

Alive2 Proof of mis-compile https://alive2.llvm.org/ce/z/7G8uE3

PR: https://github.com/llvm/llvm-project/pull/203620
DeltaFile
+5-0llvm/lib/Transforms/Scalar/ConstraintElimination.cpp
+2-2llvm/test/Transforms/ConstraintElimination/geps-unsigned-predicates.ll
+7-22 files

LLVM/project 095ba59llvm/test/Transforms/LoopVectorize/VPlan widen_mem_idioms.ll

Add tests for `lowerMemoryIdioms`

Functions were copied from pre-existing tests.
DeltaFile
+178-0llvm/test/Transforms/LoopVectorize/VPlan/widen_mem_idioms.ll
+178-01 files

LLVM/project cbbea4fllvm/test/Transforms/LoopVectorize/VPlan scalarize-irregular-type-memops.ll

Add tests for `-force-target-supports-gather-scatter-ops` behavior
DeltaFile
+68-0llvm/test/Transforms/LoopVectorize/VPlan/scalarize-irregular-type-memops.ll
+68-01 files

LLVM/project d49ffeellvm/lib/Transforms/Vectorize LoopVectorizationPlanner.h VPlanTransforms.h

Move helper to `LoopVectorizationPlanner.h` per code review
DeltaFile
+10-0llvm/lib/Transforms/Vectorize/LoopVectorizationPlanner.h
+0-10llvm/lib/Transforms/Vectorize/VPlanTransforms.h
+10-102 files

LLVM/project 0d548a8llvm/test/Transforms/LoopVectorize/VPlan scalarize-irregular-type-memops.ll

Add a test for irregular memop type scalarization
DeltaFile
+70-0llvm/test/Transforms/LoopVectorize/VPlan/scalarize-irregular-type-memops.ll
+70-01 files