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