xref: /openbsd-src/gnu/llvm/llvm/lib/Transforms/Vectorize/Vectorize.cpp (revision d415bd752c734aee168c4ee86ff32e8cc249eb16)
109467b48Spatrick //===-- Vectorize.cpp -----------------------------------------------------===//
209467b48Spatrick //
309467b48Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
409467b48Spatrick // See https://llvm.org/LICENSE.txt for license information.
509467b48Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
609467b48Spatrick //
709467b48Spatrick //===----------------------------------------------------------------------===//
809467b48Spatrick //
909467b48Spatrick // This file implements common infrastructure for libLLVMVectorizeOpts.a, which
1009467b48Spatrick // implements several vectorization transformations over the LLVM intermediate
1109467b48Spatrick // representation, including the C bindings for that library.
1209467b48Spatrick //
1309467b48Spatrick //===----------------------------------------------------------------------===//
1409467b48Spatrick 
1509467b48Spatrick #include "llvm/Transforms/Vectorize.h"
1609467b48Spatrick #include "llvm-c/Initialization.h"
1709467b48Spatrick #include "llvm-c/Transforms/Vectorize.h"
1809467b48Spatrick #include "llvm/IR/LegacyPassManager.h"
1909467b48Spatrick #include "llvm/InitializePasses.h"
20*d415bd75Srobert #include "llvm/PassRegistry.h"
2109467b48Spatrick 
2209467b48Spatrick using namespace llvm;
2309467b48Spatrick 
24097a140dSpatrick /// Initialize all passes linked into the Vectorization library.
initializeVectorization(PassRegistry & Registry)2509467b48Spatrick void llvm::initializeVectorization(PassRegistry &Registry) {
2609467b48Spatrick   initializeLoopVectorizePass(Registry);
2709467b48Spatrick   initializeSLPVectorizerPass(Registry);
2809467b48Spatrick   initializeLoadStoreVectorizerLegacyPassPass(Registry);
29097a140dSpatrick   initializeVectorCombineLegacyPassPass(Registry);
3009467b48Spatrick }
3109467b48Spatrick 
LLVMInitializeVectorization(LLVMPassRegistryRef R)3209467b48Spatrick void LLVMInitializeVectorization(LLVMPassRegistryRef R) {
3309467b48Spatrick   initializeVectorization(*unwrap(R));
3409467b48Spatrick }
3509467b48Spatrick 
LLVMAddLoopVectorizePass(LLVMPassManagerRef PM)3609467b48Spatrick void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM) {
3709467b48Spatrick   unwrap(PM)->add(createLoopVectorizePass());
3809467b48Spatrick }
3909467b48Spatrick 
LLVMAddSLPVectorizePass(LLVMPassManagerRef PM)4009467b48Spatrick void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM) {
4109467b48Spatrick   unwrap(PM)->add(createSLPVectorizerPass());
4209467b48Spatrick }
43