1c34e5113SHal Finkel //===-- Vectorize.cpp -----------------------------------------------------===// 2c34e5113SHal Finkel // 3c34e5113SHal Finkel // The LLVM Compiler Infrastructure 4c34e5113SHal Finkel // 5c34e5113SHal Finkel // This file is distributed under the University of Illinois Open Source 6c34e5113SHal Finkel // License. See LICENSE.TXT for details. 7c34e5113SHal Finkel // 8c34e5113SHal Finkel //===----------------------------------------------------------------------===// 9c34e5113SHal Finkel // 10c34e5113SHal Finkel // This file implements common infrastructure for libLLVMVectorizeOpts.a, which 11c34e5113SHal Finkel // implements several vectorization transformations over the LLVM intermediate 12c34e5113SHal Finkel // representation, including the C bindings for that library. 13c34e5113SHal Finkel // 14c34e5113SHal Finkel //===----------------------------------------------------------------------===// 15c34e5113SHal Finkel 16ed0881b2SChandler Carruth #include "llvm/Transforms/Vectorize.h" 17c34e5113SHal Finkel #include "llvm-c/Initialization.h" 18ed0881b2SChandler Carruth #include "llvm-c/Transforms/Vectorize.h" 19c34e5113SHal Finkel #include "llvm/Analysis/Passes.h" 20c34e5113SHal Finkel #include "llvm/Analysis/Verifier.h" 21ed0881b2SChandler Carruth #include "llvm/InitializePasses.h" 22ed0881b2SChandler Carruth #include "llvm/PassManager.h" 23c34e5113SHal Finkel 24c34e5113SHal Finkel using namespace llvm; 25c34e5113SHal Finkel 26c34e5113SHal Finkel /// initializeVectorizationPasses - Initialize all passes linked into the 27c34e5113SHal Finkel /// Vectorization library. 28c34e5113SHal Finkel void llvm::initializeVectorization(PassRegistry &Registry) { 29c34e5113SHal Finkel initializeBBVectorizePass(Registry); 306b94c2a0SNadav Rotem initializeLoopVectorizePass(Registry); 31*2d9dec32SNadav Rotem initializeSLPVectorizerPass(Registry); 32c34e5113SHal Finkel } 33c34e5113SHal Finkel 34c34e5113SHal Finkel void LLVMInitializeVectorization(LLVMPassRegistryRef R) { 35c34e5113SHal Finkel initializeVectorization(*unwrap(R)); 36c34e5113SHal Finkel } 37c34e5113SHal Finkel 38c34e5113SHal Finkel void LLVMAddBBVectorizePass(LLVMPassManagerRef PM) { 39c34e5113SHal Finkel unwrap(PM)->add(createBBVectorizePass()); 40c34e5113SHal Finkel } 41c34e5113SHal Finkel 426b94c2a0SNadav Rotem void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM) { 43d0bb22bbSNadav Rotem unwrap(PM)->add(createLoopVectorizePass()); 446b94c2a0SNadav Rotem } 45*2d9dec32SNadav Rotem 46*2d9dec32SNadav Rotem void LLVMAddLoopRollerPass(LLVMPassManagerRef PM) { 47*2d9dec32SNadav Rotem unwrap(PM)->add(createSLPVectorizerPass()); 48*2d9dec32SNadav Rotem } 49