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 Andricvoid 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 Andricvoid LLVMInitializeVectorization(LLVMPassRegistryRef R) { 34dff0c46cSDimitry Andric initializeVectorization(*unwrap(R)); 35dff0c46cSDimitry Andric } 36dff0c46cSDimitry Andric LLVMAddLoopVectorizePass(LLVMPassManagerRef PM)373861d79fSDimitry Andricvoid LLVMAddLoopVectorizePass(LLVMPassManagerRef PM) { 383861d79fSDimitry Andric unwrap(PM)->add(createLoopVectorizePass()); 393861d79fSDimitry Andric } 40284c1978SDimitry Andric LLVMAddSLPVectorizePass(LLVMPassManagerRef PM)41284c1978SDimitry Andricvoid LLVMAddSLPVectorizePass(LLVMPassManagerRef PM) { 42284c1978SDimitry Andric unwrap(PM)->add(createSLPVectorizerPass()); 43284c1978SDimitry Andric } 44