1 //===-- Vectorize.cpp -----------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 // 9 // This file implements common infrastructure for libLLVMVectorizeOpts.a, which 10 // implements several vectorization transformations over the LLVM intermediate 11 // representation, including the C bindings for that library. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #include "llvm/Transforms/Vectorize.h" 16 #include "llvm-c/Initialization.h" 17 #include "llvm-c/Transforms/Vectorize.h" 18 #include "llvm/Analysis/Passes.h" 19 #include "llvm/IR/LegacyPassManager.h" 20 #include "llvm/InitializePasses.h" 21 22 using namespace llvm; 23 24 /// Initialize all passes linked into the Vectorization library. initializeVectorization(PassRegistry & Registry)25void llvm::initializeVectorization(PassRegistry &Registry) { 26 initializeLoopVectorizePass(Registry); 27 initializeSLPVectorizerPass(Registry); 28 initializeLoadStoreVectorizerLegacyPassPass(Registry); 29 initializeVectorCombineLegacyPassPass(Registry); 30 } 31 LLVMInitializeVectorization(LLVMPassRegistryRef R)32void LLVMInitializeVectorization(LLVMPassRegistryRef R) { 33 initializeVectorization(*unwrap(R)); 34 } 35 LLVMAddLoopVectorizePass(LLVMPassManagerRef PM)36void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM) { 37 unwrap(PM)->add(createLoopVectorizePass()); 38 } 39 LLVMAddSLPVectorizePass(LLVMPassManagerRef PM)40void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM) { 41 unwrap(PM)->add(createSLPVectorizerPass()); 42 } 43