1dff0c46cSDimitry Andric //===-- Vectorize.cpp -----------------------------------------------------===//
2dff0c46cSDimitry Andric //
3dff0c46cSDimitry Andric //                     The LLVM Compiler Infrastructure
4dff0c46cSDimitry Andric //
5dff0c46cSDimitry Andric // This file is distributed under the University of Illinois Open Source
6dff0c46cSDimitry Andric // License. See LICENSE.TXT for details.
7dff0c46cSDimitry Andric //
8dff0c46cSDimitry Andric //===----------------------------------------------------------------------===//
9dff0c46cSDimitry Andric //
10dff0c46cSDimitry Andric // This file implements common infrastructure for libLLVMVectorizeOpts.a, which
11dff0c46cSDimitry Andric // implements several vectorization transformations over the LLVM intermediate
12dff0c46cSDimitry Andric // representation, including the C bindings for that library.
13dff0c46cSDimitry Andric //
14dff0c46cSDimitry Andric //===----------------------------------------------------------------------===//
15dff0c46cSDimitry Andric 
16139f7f9bSDimitry Andric #include "llvm/Transforms/Vectorize.h"
17dff0c46cSDimitry Andric #include "llvm-c/Initialization.h"
18139f7f9bSDimitry Andric #include "llvm-c/Transforms/Vectorize.h"
19dff0c46cSDimitry Andric #include "llvm/Analysis/Passes.h"
20db17bf38SDimitry Andric #include "llvm/IR/LegacyPassManager.h"
21139f7f9bSDimitry Andric #include "llvm/InitializePasses.h"
22dff0c46cSDimitry Andric 
23dff0c46cSDimitry Andric using namespace llvm;
24dff0c46cSDimitry Andric 
25dff0c46cSDimitry Andric /// initializeVectorizationPasses - Initialize all passes linked into the
26dff0c46cSDimitry Andric /// Vectorization library.
initializeVectorization(PassRegistry & Registry)27dff0c46cSDimitry Andric void llvm::initializeVectorization(PassRegistry &Registry) {
283861d79fSDimitry Andric   initializeLoopVectorizePass(Registry);
29284c1978SDimitry Andric   initializeSLPVectorizerPass(Registry);
30*b5893f02SDimitry Andric   initializeLoadStoreVectorizerLegacyPassPass(Registry);
31dff0c46cSDimitry Andric }
32dff0c46cSDimitry Andric 
LLVMInitializeVectorization(LLVMPassRegistryRef R)33dff0c46cSDimitry Andric void LLVMInitializeVectorization(LLVMPassRegistryRef R) {
34dff0c46cSDimitry Andric   initializeVectorization(*unwrap(R));
35dff0c46cSDimitry Andric }
36dff0c46cSDimitry Andric 
LLVMAddLoopVectorizePass(LLVMPassManagerRef PM)373861d79fSDimitry Andric void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM) {
383861d79fSDimitry Andric   unwrap(PM)->add(createLoopVectorizePass());
393861d79fSDimitry Andric }
40284c1978SDimitry Andric 
LLVMAddSLPVectorizePass(LLVMPassManagerRef PM)41284c1978SDimitry Andric void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM) {
42284c1978SDimitry Andric   unwrap(PM)->add(createSLPVectorizerPass());
43284c1978SDimitry Andric }
44