17e004d177fe76145f75a9417ed2e281f1b9abaf7Hal Finkel/*===---------------------------Vectorize.h --------------------- -*- C -*-===*\
2de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*===----------- Vectorization Transformation Library C Interface ---------===*|
3de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                                                                            *|
4de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                     The LLVM Compiler Infrastructure                       *|
5de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                                                                            *|
6de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* This file is distributed under the University of Illinois Open Source      *|
7de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* License. See LICENSE.TXT for details.                                      *|
8de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                                                                            *|
9de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*===----------------------------------------------------------------------===*|
10de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                                                                            *|
11de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* This header declares the C interface to libLLVMVectorize.a, which          *|
12de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* implements various vectorization transformations of the LLVM IR.           *|
13de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                                                                            *|
14de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* Many exotic languages can interoperate with C code but have a harder time  *|
15de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* with C++ due to name mangling. So in addition to C, this interface enables *|
16de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|* tools written in such languages.                                           *|
17de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel|*                                                                            *|
18de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel\*===----------------------------------------------------------------------===*/
19de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
20de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#ifndef LLVM_C_TRANSFORMS_VECTORIZE_H
21de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#define LLVM_C_TRANSFORMS_VECTORIZE_H
22de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
23de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#include "llvm-c/Core.h"
24de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
25de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#ifdef __cplusplus
26de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkelextern "C" {
27de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#endif
28de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
296244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCTransformsVectorize Vectorization transformations
316244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMCTransforms
326244b518880842f2c15200ee041e06799e4cc779Gregory Szorc *
336244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{
346244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
356244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
36de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel/** See llvm::createBBVectorizePass function. */
37de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkelvoid LLVMAddBBVectorizePass(LLVMPassManagerRef PM);
38de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
3963a4c24616fafa2b86d6391308ffd93e012115e4Benjamin Kramer/** See llvm::createLoopVectorizePass function. */
4063a4c24616fafa2b86d6391308ffd93e012115e4Benjamin Kramervoid LLVMAddLoopVectorizePass(LLVMPassManagerRef PM);
4163a4c24616fafa2b86d6391308ffd93e012115e4Benjamin Kramer
42acc897a5e1bd7320da5aab728b9e0c39552f3816Benjamin Kramer/** See llvm::createSLPVectorizerPass function. */
43acc897a5e1bd7320da5aab728b9e0c39552f3816Benjamin Kramervoid LLVMAddSLPVectorizePass(LLVMPassManagerRef PM);
44acc897a5e1bd7320da5aab728b9e0c39552f3816Benjamin Kramer
456244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/**
466244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @}
476244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */
486244b518880842f2c15200ee041e06799e4cc779Gregory Szorc
49de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#ifdef __cplusplus
50de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel}
51de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#endif /* defined(__cplusplus) */
52de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
53de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel#endif
54de5e5ec3045a73a06b1054417f9ac6c02929e9ceHal Finkel
55