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)2509467b48Spatrickvoid llvm::initializeVectorization(PassRegistry &Registry) { 2609467b48Spatrick initializeLoopVectorizePass(Registry); 2709467b48Spatrick initializeSLPVectorizerPass(Registry); 2809467b48Spatrick initializeLoadStoreVectorizerLegacyPassPass(Registry); 29097a140dSpatrick initializeVectorCombineLegacyPassPass(Registry); 3009467b48Spatrick } 3109467b48Spatrick LLVMInitializeVectorization(LLVMPassRegistryRef R)3209467b48Spatrickvoid LLVMInitializeVectorization(LLVMPassRegistryRef R) { 3309467b48Spatrick initializeVectorization(*unwrap(R)); 3409467b48Spatrick } 3509467b48Spatrick LLVMAddLoopVectorizePass(LLVMPassManagerRef PM)3609467b48Spatrickvoid LLVMAddLoopVectorizePass(LLVMPassManagerRef PM) { 3709467b48Spatrick unwrap(PM)->add(createLoopVectorizePass()); 3809467b48Spatrick } 3909467b48Spatrick LLVMAddSLPVectorizePass(LLVMPassManagerRef PM)4009467b48Spatrickvoid LLVMAddSLPVectorizePass(LLVMPassManagerRef PM) { 4109467b48Spatrick unwrap(PM)->add(createSLPVectorizerPass()); 4209467b48Spatrick } 43