SuccessChanges

Summary

  1. Relands "[HIP] Change default --gpu-max-threads-per-block value to 1024" (details)
  2. [mlir][Linalg] NFC - Add an OpFoldResult-based builder for InitTensorOp (details)
  3. AMDGPU/GlobalISel: Precommit globalisel tests for isKnownNeverNaN (details)
  4. AMDGPU/GlobalISel: Check values of constants in isKnownNeverNaN (details)
  5. AMDGPU/GlobalISel: Calculate isKnownNeverNaN for fminnum and fmaxnum (details)
  6. [AArch64] Add test case where machine outliner breaks up a bundle. (details)
  7. [AArch64] Increase outlined sequence in test added in a3f6233fa4b4. (details)
  8. [clang-tidy] Fix `TransformerClangTidyCheck`'s handling of include insertions. (details)
  9. [mlir] Introduce dialect interfaces for translation to LLVM IR (details)
  10. [clang] Update mustprogress tests. (details)
  11. [clangd] Fix clang tidy provider when multiple config files exist in directory tree (details)
  12. [gn build] Port ba3ea9c60f0f (details)
  13. [clangd] Work around presumed MSVC stdlib bug (details)
  14. Revert "[lld][WebAssembly] Fix for weak undefined functions in -pie mode" (details)
  15. [dfsan] Turn off THP at dfsan_flush (details)
  16. [RISCV] Add support for matching .vx and .vi forms of binary instructions for fixed vectors. (details)
  17. [RISCV] Add support for integer fixed vector setcc (details)
  18. [clangd] Introduce Modules (details)
  19. [mlir] Use dialect interfaces to translate OpenMP dialect to LLVM IR (details)
  20. [ThinLTO][gold] Fix filenaming scheme for tasks. (details)
  21. [sanitizers][Windows] Implement __sanitizer_purge_allocator for Win64 (details)
  22. [ObjC][ARC] Use operand bundle 'clang.arc.attachedcall' instead of (details)
  23. [CodeGen] New pass: Replace vector intrinsics with call to vector library (details)
Commit 053e61d54e63810b005adacf5e73a6465ca24bd2 by Yaxun.Liu
Relands "[HIP] Change default --gpu-max-threads-per-block value to 1024"

This reverts commit e384e94fbe7c1d5c89fcdde33ffda04e9802c2ce.
The file was modifiedclang/lib/CodeGen/TargetInfo.cpp
The file was modifiedclang/test/CodeGenCUDA/kernel-amdgcn.cu
The file was modifiedclang/include/clang/Driver/Options.td
The file was modifiedclang/include/clang/Basic/LangOptions.def
The file was modifiedclang/test/CodeGenCUDA/amdgpu-kernel-attrs.cu
Commit f3fb2dd14738513cb79420fc26409bd014aea8ab by nicolas.vasilache
[mlir][Linalg] NFC - Add an OpFoldResult-based builder for InitTensorOp
The file was modifiedmlir/lib/Dialect/Linalg/IR/LinalgOps.cpp
The file was modifiedmlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td
Commit 841ee7423d1cc2e6195b461f3bb066b81b6546d6 by petar.avramovic
AMDGPU/GlobalISel: Precommit globalisel tests for isKnownNeverNaN
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fmaxnum.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fminnum.mir
Commit 122c649c982f1f4f1dc60dca2c5e1c9df86327ed by petar.avramovic
AMDGPU/GlobalISel: Check values of constants in isKnownNeverNaN

Differential Revision: https://reviews.llvm.org/D91714
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fminnum.mir
The file was modifiedllvm/lib/CodeGen/GlobalISel/Utils.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fmaxnum.mir
Commit f0d65f40968d37587f54392d9ab4c73cc65101d2 by petar.avramovic
AMDGPU/GlobalISel: Calculate isKnownNeverNaN for fminnum and fmaxnum

Implements same logis as in SelectionDAG.
G_FMINNUM_IEEE and G_FMAXNUM_IEEE are never SNaN by definition and
never NaN when one operand is known non-NaN and other known non-SNaN.
G_FMINNUM and G_FMAXNUM are never NaN/SNaN when one of the operands
is known non-NaN/SNaN.

Differential Revision: https://reviews.llvm.org/D91716
The file was modifiedllvm/lib/CodeGen/GlobalISel/Utils.cpp
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fmaxnum.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/legalize-fminnum.mir
The file was modifiedllvm/test/CodeGen/AMDGPU/GlobalISel/fmed3.ll
Commit a3f6233fa4b403e3f51c97c0bc0ecbcb93901aad by flo
[AArch64] Add test case where machine outliner breaks up a bundle.

This is a backend test for PR49082.
The file was addedllvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir
Commit 142c09fefb2ae2b71f8d2c41e13b1ba23f655fa2 by flo
[AArch64] Increase outlined sequence in test added in a3f6233fa4b4.
The file was modifiedllvm/test/CodeGen/AArch64/rvmarker-pseudo-expansion-and-outlining.mir
Commit 33f35a4b793bb53b830f8893110af57672e1dc79 by yitzhakm
[clang-tidy] Fix `TransformerClangTidyCheck`'s handling of include insertions.

Currently, all include insertions are directed to the main file. However,
Transformer rules can specify alternative destinations for include
insertions. This patch fixes the code to associate the include with the correct
file.

This patch was tested manually. The clang tidy unit test framework does not
support testing changes to header files. Given that this is a bug fix for a live
bug, the patch relies on manual testing rather than blocking on upgrading the
unit test framework.

Differential Revision: https://reviews.llvm.org/D96542
The file was modifiedclang-tools-extra/clang-tidy/utils/TransformerClangTidyCheck.cpp
Commit b77bac0572340d4e5b6095a82e0fcbcc01870645 by zinenko
[mlir] Introduce dialect interfaces for translation to LLVM IR

The existing approach to translation to the LLVM IR relies on a single
translation supporting the base LLVM dialect, extensible through inheritance to
support intrinsic-based dialects also derived from LLVM IR such as NVVM and
AVX512. This approach does not scale well as it requires additional
translations to be created for each new intrinsic-based dialect and does not
allow them to mix in the same module, contrary to the rest of the MLIR
infrastructure. Furthermore, OpenMP translation ingrained itself into the main
translation mechanism.

Start refactoring the translation to LLVM IR to operate using dialect
interfaces. Each dialect that contains ops translatable to LLVM IR can
implement the interface for translating them, and the top-level translation
driver can operate on interfaces without knowing about specific dialects.
Furthermore, the delayed dialect registration mechanism allows one to avoid a
dependency on LLVM IR in the dialect that is translated to it by implementing
the translation as a separate library and only registering it at the client
level.

This change introduces the new mechanism and factors out the translation of the
"main" LLVM dialect. The remaining dialects will follow suit.

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D96503
The file was addedmlir/include/mlir/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.h
The file was modifiedmlir/tools/mlir-spirv-cpu-runner/mlir-spirv-cpu-runner.cpp
The file was modifiedmlir/tools/mlir-vulkan-runner/mlir-vulkan-runner.cpp
The file was modifiedmlir/examples/toy/Ch6/toyc.cpp
The file was addedmlir/include/mlir/Target/LLVMIR/LLVMTranslationInterface.h
The file was modifiedmlir/lib/Target/LLVMIR/ModuleTranslation.cpp
The file was modifiedmlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
The file was modifiedmlir/examples/toy/Ch7/toyc.cpp
The file was modifiedmlir/lib/Target/CMakeLists.txt
The file was addedmlir/lib/Target/LLVMIR/Dialect/CMakeLists.txt
The file was modifiedmlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp
The file was modifiedmlir/unittests/ExecutionEngine/Invoke.cpp
The file was addedmlir/lib/Target/LLVMIR/CMakeLists.txt
The file was modifiedmlir/lib/Target/LLVMIR/ConvertToROCDLIR.cpp
The file was modifiedmlir/tools/mlir-rocm-runner/mlir-rocm-runner.cpp
The file was modifiedmlir/tools/mlir-cuda-runner/mlir-cuda-runner.cpp
The file was modifiedmlir/lib/Target/LLVMIR/LLVMArmSVEIntr.cpp
The file was modifiedmlir/include/mlir/Target/LLVMIR/ModuleTranslation.h
The file was addedmlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
The file was modifiedmlir/include/mlir/Target/LLVMIR.h
The file was modifiedmlir/lib/Target/LLVMIR/LLVMArmNeonIntr.cpp
The file was modifiedmlir/lib/Target/LLVMIR/ConvertToNVVMIR.cpp
The file was addedmlir/lib/Target/LLVMIR/Dialect/LLVMIR/CMakeLists.txt
The file was modifiedmlir/lib/Target/LLVMIR/LLVMAVX512Intr.cpp
Commit fb4d8fe807016fed221263d9a406e3856c8dfa4c by flo
[clang] Update mustprogress tests.

This unifies the positive and negative tests in a single file and
manually adjusts the check lines to check for differences surgically.
The file was removedclang/test/CodeGen/attr-mustprogress-0.cpp
The file was removedclang/test/CodeGen/attr-mustprogress-1.cpp
The file was addedclang/test/CodeGenCXX/attr-mustprogress.cpp
The file was removedclang/test/CodeGen/attr-mustprogress-0.c
The file was addedclang/test/CodeGen/attr-mustprogress.c
The file was removedclang/test/CodeGen/attr-mustprogress-1.c
Commit ba3ea9c60f0f259f0ccc47e47daf8253a5885531 by n.james93
[clangd] Fix clang tidy provider when multiple config files exist in directory tree

Currently Clang tidy provider searches from the root directory up to the target directory, this is the opposite of how clang-tidy searches for config files.
The result of this is .clang-tidy files are ignored in any subdirectory of a directory containing a .clang-tidy file.

Reviewed By: sammccall

Differential Revision: https://reviews.llvm.org/D96204
The file was modifiedclang-tools-extra/clangd/unittests/CMakeLists.txt
The file was modifiedclang-tools-extra/clangd/TidyProvider.cpp
The file was addedclang-tools-extra/clangd/unittests/TidyProviderTests.cpp
Commit ac2627fd9aecd2577b93520b8659294aa3d8e5c5 by llvmgnsyncbot
[gn build] Port ba3ea9c60f0f
The file was modifiedllvm/utils/gn/secondary/clang-tools-extra/clangd/unittests/BUILD.gn
Commit 8dd6dd947c148515bbd5fc06c0b5786148038750 by sam.mccall
[clangd] Work around presumed MSVC stdlib bug

http://45.33.8.238/win/33161/step_4.txt
The file was modifiedclang-tools-extra/clangd/ClangdLSPServer.cpp
Commit e1617d23ff06c550e79ca288d9a38c0bdbb335e8 by sbc
Revert "[lld][WebAssembly] Fix for weak undefined functions in -pie mode"

This reverts commit ac2be2b6a366c05c01b8228fd804ba6ed52d320b.

This causes a whole much of emscripten tests to fail due to newly
undefined symbols appearing.  Will investigate and look into re-landing
later.
The file was modifiedlld/test/wasm/weak-undefined-pic.s
The file was modifiedlld/wasm/Driver.cpp
The file was modifiedlld/wasm/Writer.cpp
Commit 7590c0078dd53d9ad508725fc27d96705ac3a206 by jianzhouzh
[dfsan] Turn off THP at dfsan_flush

https://reviews.llvm.org/D89662 turned this off at dfsan_init.
dfsan_flush also needs to turn it off.
W/o this a program may get more and more memory usage after hours.

Reviewed-by: morehouse

Differential Revision: https://reviews.llvm.org/D96569
The file was modifiedcompiler-rt/lib/dfsan/dfsan.cpp
Commit 875c76de2b6ad67b10c027ed74422642cf4d1aed by craig.topper
[RISCV] Add support for matching .vx and .vi forms of binary instructions for fixed vectors.

Unlike scalable vectors, I'm only using a ComplexPattern for
the immediate itself. The vmv_v_x is matched explicitly. We igore
the VL argument when matching a binary operator, but we do check
it when matching splat directly.

I left out tests for vXi64 as they fail on rv32 right now.

Reviewed By: frasercrmck

Differential Revision: https://reviews.llvm.org/D96365
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVSDPatterns.td
The file was modifiedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-int.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVISelDAGToDAG.h
The file was modifiedllvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td
Commit 1697cc78b140fca5bb55f9d16b40aaf435a8a891 by craig.topper
[RISCV] Add support for integer fixed vector setcc

I believe I've covered all orderings of splat operands here. Better
canonicalization in lowering might help reduce this. I did not handle
the immediate adjustments needed for set(u)gt/set(u)lt.

Testing here is limited to byte types because the scalable vector
type used for masks for the store is calculated assuming 8 byte
elements. But for the setcc its based on the element count of the
container type for the setcc input. So they don't agree. We'll need
to enhanced D96352 to handle this I think.

Differential Revision: https://reviews.llvm.org/D96443
The file was addedllvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-setcc.ll
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.cpp
The file was modifiedllvm/lib/Target/RISCV/RISCVInstrInfoVVLPatterns.td
The file was modifiedllvm/lib/Target/RISCV/RISCVISelLowering.h
Commit 2423a3863e0743635f76d30062413f21b2c59349 by kadircet
[clangd] Introduce Modules

Modules can be used to augment clangd's behaviours in various features.

Differential Revision: https://reviews.llvm.org/D96244
The file was modifiedclang-tools-extra/clangd/ClangdServer.cpp
The file was addedclang-tools-extra/clangd/Module.h
The file was modifiedclang-tools-extra/clangd/ClangdServer.h
The file was modifiedclang-tools-extra/clangd/unittests/ParsedASTTests.cpp
The file was modifiedclang-tools-extra/clangd/Headers.cpp
Commit 66900b3eae96b295cc7eb9468680085028f35daa by zinenko
[mlir] Use dialect interfaces to translate OpenMP dialect to LLVM IR

Migrate the translation of the OpenMP dialect operations to LLVM IR to the new
dialect-based mechanism.

Depends On D96503

Reviewed By: nicolasvasilache

Differential Revision: https://reviews.llvm.org/D96504
The file was addedmlir/lib/Target/LLVMIR/Dialect/OpenMP/CMakeLists.txt
The file was addedmlir/include/mlir/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.h
The file was addedmlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
The file was modifiedmlir/lib/Target/LLVMIR/ConvertToLLVMIR.cpp
The file was modifiedmlir/include/mlir/Target/LLVMIR/ModuleTranslation.h
The file was modifiedmlir/lib/Target/LLVMIR/Dialect/CMakeLists.txt
The file was modifiedmlir/tools/mlir-cpu-runner/mlir-cpu-runner.cpp
The file was modifiedmlir/lib/Target/CMakeLists.txt
The file was modifiedmlir/lib/Target/LLVMIR/ModuleTranslation.cpp
Commit 0b1914e83a03be926569892c17ca743c5ea46d1f by hoy
[ThinLTO][gold] Fix filenaming scheme for tasks.

The gold LTO plugin uses a set of hooks to implements emit-llvm and capture intermediate file generated during LTO. The hooks are called by each lto backend thread with a taskID as argument to differentiate between threads and tasks. Currently, all threads are overwriting the same file which results into only the intermediate output of the last backend thread to be preserved. This diff encodes the taskID into the filename.

Reviewed By: tejohnson, wenlei

Differential Revision: https://reviews.llvm.org/D96173
The file was addedllvm/test/tools/gold/X86/Inputs/emit-llvm.bar.ll
The file was addedllvm/test/tools/gold/X86/thinlto-emit-llvm.ll
The file was modifiedllvm/tools/gold/gold-plugin.cpp
The file was addedllvm/test/tools/gold/X86/Inputs/emit-llvm.foo.ll
Commit 81b1d3da094c54ffd75e05c8d4683792edf17f4c by mamcgove
[sanitizers][Windows] Implement __sanitizer_purge_allocator for Win64

    Windows' memory unmapping has to be explicit, there is no madvise.
Similarly, re-mapping memory has to be explicit as well. This patch
implements a basic method for remapping memory which was previously
returned to the OS on Windows.

Patch by Matthew G. McGovern and Jordyn Puryear
The file was addedcompiler-rt/test/asan/TestCases/Windows/sanitizer_purge.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_win.cpp
The file was modifiedcompiler-rt/lib/sanitizer_common/sanitizer_allocator_primary64.h
Commit ed4718eccb12bd42214ca4fb17d196d49561c0c7 by Akira
[ObjC][ARC] Use operand bundle 'clang.arc.attachedcall' instead of
explicitly emitting retainRV or claimRV calls in the IR

Background:

This fixes a longstanding problem where llvm breaks ARC's autorelease
optimization (see the link below) by separating calls from the marker
instructions or retainRV/claimRV calls. The backend changes are in
https://reviews.llvm.org/D92569.

https://clang.llvm.org/docs/AutomaticReferenceCounting.html#arc-runtime-objc-autoreleasereturnvalue

What this patch does to fix the problem:

- The front-end adds operand bundle "clang.arc.attachedcall" to calls,
  which indicates the call is implicitly followed by a marker
  instruction and an implicit retainRV/claimRV call that consumes the
  call result. In addition, it emits a call to
  @llvm.objc.clang.arc.noop.use, which consumes the call result, to
  prevent the middle-end passes from changing the return type of the
  called function. This is currently done only when the target is arm64
  and the optimization level is higher than -O0.

- ARC optimizer temporarily emits retainRV/claimRV calls after the calls
  with the operand bundle in the IR and removes the inserted calls after
  processing the function.

- ARC contract pass emits retainRV/claimRV calls after the call with the
  operand bundle. It doesn't remove the operand bundle on the call since
  the backend needs it to emit the marker instruction. The retainRV and
  claimRV calls are emitted late in the pipeline to prevent optimization
  passes from transforming the IR in a way that makes it harder for the
  ARC middle-end passes to figure out the def-use relationship between
  the call and the retainRV/claimRV calls (which is the cause of
  PR31925).

- The function inliner removes an autoreleaseRV call in the callee if
  nothing in the callee prevents it from being paired up with the
  retainRV/claimRV call in the caller. It then inserts a release call if
  claimRV is attached to the call since autoreleaseRV+claimRV is
  equivalent to a release. If it cannot find an autoreleaseRV call, it
  tries to transfer the operand bundle to a function call in the callee.
  This is important since the ARC optimizer can remove the autoreleaseRV
  returning the callee result, which makes it impossible to pair it up
  with the retainRV/claimRV call in the caller. If that fails, it simply
  emits a retain call in the IR if retainRV is attached to the call and
  does nothing if claimRV is attached to it.

- SCCP refrains from replacing the return value of a call with a
  constant value if the call has the operand bundle. This ensures the
  call always has at least one user (the call to
  @llvm.objc.clang.arc.noop.use).

- This patch also fixes a bug in replaceUsesOfNonProtoConstant where
  multiple operand bundles of the same kind were being added to a call.

Future work:

- Use the operand bundle on x86-64.

- Fix the auto upgrader to convert call+retainRV/claimRV pairs into
  calls with the operand bundles.

rdar://71443534

Differential Revision: https://reviews.llvm.org/D92808
The file was modifiedllvm/lib/IR/AutoUpgrade.cpp
The file was modifiedllvm/test/Transforms/ObjCARC/rv.ll
The file was modifiedllvm/lib/Transforms/ObjCARC/ARCRuntimeEntryPoints.h
The file was addedllvm/test/Transforms/ObjCARC/contract-rv-attr.ll
The file was modifiedllvm/test/Transforms/ObjCARC/intrinsic-use.ll
The file was modifiedllvm/lib/Transforms/ObjCARC/PtrState.h
The file was modifiedllvm/lib/Transforms/Scalar/SCCP.cpp
The file was modifiedclang/test/CodeGenObjC/arc-unsafeclaim.m
The file was modifiedllvm/docs/LangRef.rst
The file was addedclang/test/CodeGenObjC/arc-rv-attr.m
The file was addedllvm/test/Transforms/SCCP/clang-arc-rv.ll
The file was modifiedclang/lib/CodeGen/CodeGenFunction.h
The file was modifiedllvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
The file was modifiedllvm/test/Transforms/TailCallElim/deopt-bundle.ll
The file was modifiedllvm/lib/IR/LLVMContext.cpp
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARC.cpp
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARCOpts.cpp
The file was modifiedllvm/test/Bitcode/operand-bundles-bc-analyzer.ll
The file was modifiedllvm/test/Transforms/ObjCARC/contract.ll
The file was modifiedclang/lib/CodeGen/CodeGenModule.h
The file was modifiedllvm/lib/IR/Verifier.cpp
The file was modifiedllvm/lib/Target/AArch64/AArch64ISelLowering.cpp
The file was modifiedllvm/include/llvm/IR/LLVMContext.h
The file was modifiedllvm/lib/Transforms/ObjCARC/PtrState.cpp
The file was modifiedllvm/include/llvm/IR/Intrinsics.td
The file was modifiedllvm/lib/IR/Instructions.cpp
The file was modifiedllvm/lib/Transforms/Scalar/TailRecursionElimination.cpp
The file was modifiedllvm/lib/Analysis/ObjCARCInstKind.cpp
The file was modifiedllvm/test/Verifier/operand-bundles.ll
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARCContract.cpp
The file was modifiedllvm/lib/Transforms/ObjCARC/ObjCARC.h
The file was modifiedllvm/test/CodeGen/AArch64/call-rv-marker.ll
The file was modifiedllvm/include/llvm/IR/InstrTypes.h
The file was modifiedllvm/lib/Transforms/Utils/InlineFunction.cpp
The file was modifiedclang/lib/CodeGen/CodeGenModule.cpp
The file was modifiedllvm/test/Transforms/DeadArgElim/deadretval.ll
The file was addedllvm/test/Transforms/Inline/inline-retainRV-call.ll
The file was modifiedllvm/test/Transforms/ObjCARC/contract-marker-funclet.ll
The file was addedllvm/include/llvm/Analysis/ObjCARCUtil.h
The file was modifiedclang/lib/CodeGen/CGObjC.cpp
Commit 6577cef9b03fb4d151bd997a720ceaf78447f6a2 by spatel
[CodeGen] New pass: Replace vector intrinsics with call to vector library

This patch adds a pass to replace calls to vector intrinsics (i.e., LLVM
intrinsics operating on vector operands) with calls to a vector library.

Currently, calls to LLVM intrinsics are only replaced with calls to vector
libraries when scalar calls to intrinsics are vectorized by the Loop- or
SLP-Vectorizer.

With this pass, it is now possible to replace calls to LLVM intrinsics
already operating on vector operands, e.g., if such code was generated
by MLIR. For the replacement, information from the TargetLibraryInfo,
e.g., as specified via -vector-library is used.

This is a re-try of the original commit 2303e93e66 that was reverted
due to pass manager problems. Other minor changes have also been made.

Differential Revision: https://reviews.llvm.org/D95373
The file was modifiedllvm/include/llvm/CodeGen/MachinePassRegistry.def
The file was modifiedllvm/tools/opt/opt.cpp
The file was modifiedllvm/test/CodeGen/ARM/O3-pipeline.ll
The file was addedllvm/test/CodeGen/Generic/replace-intrinsics-with-veclib.ll
The file was modifiedllvm/tools/llc/llc.cpp
The file was modifiedllvm/lib/CodeGen/TargetPassConfig.cpp
The file was addedllvm/lib/CodeGen/ReplaceWithVeclib.cpp
The file was modifiedllvm/include/llvm/InitializePasses.h
The file was modifiedllvm/test/CodeGen/AArch64/O3-pipeline.ll
The file was modifiedllvm/test/CodeGen/X86/opt-pipeline.ll
The file was modifiedllvm/lib/CodeGen/CMakeLists.txt
The file was modifiedllvm/utils/gn/secondary/llvm/lib/CodeGen/BUILD.gn
The file was modifiedllvm/include/llvm/CodeGen/Passes.h
The file was modifiedllvm/include/llvm/CodeGen/CodeGenPassBuilder.h
The file was addedllvm/include/llvm/CodeGen/ReplaceWithVeclib.h