aboutsummaryrefslogtreecommitdiff
path: root/src/llvm-c/Transforms/Vectorize.h
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2020-03-26 17:41:38 +0000
committerGitHub <noreply@github.com>2020-03-26 17:41:38 +0000
commit6bbecbe895a7b413dee61da772586be4e3138174 (patch)
treea86e716cb2a519a7bff7a320821fbde7abd8673e /src/llvm-c/Transforms/Vectorize.h
parent7909872877fd5c82c29df711f160838a7a4e59e1 (diff)
parentb21993a1c470a533a83e5b01274d3b026fb34f9b (diff)
Merge pull request #595 from odin-lang/llvm-integration
LLVM C API Integration
Diffstat (limited to 'src/llvm-c/Transforms/Vectorize.h')
-rw-r--r--src/llvm-c/Transforms/Vectorize.h50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/llvm-c/Transforms/Vectorize.h b/src/llvm-c/Transforms/Vectorize.h
new file mode 100644
index 000000000..e383481fe
--- /dev/null
+++ b/src/llvm-c/Transforms/Vectorize.h
@@ -0,0 +1,50 @@
+/*===---------------------------Vectorize.h --------------------- -*- C -*-===*\
+|*===----------- Vectorization Transformation Library C Interface ---------===*|
+|* *|
+|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
+|* Exceptions. *|
+|* See https://llvm.org/LICENSE.txt for license information. *|
+|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
+|* *|
+|*===----------------------------------------------------------------------===*|
+|* *|
+|* This header declares the C interface to libLLVMVectorize.a, which *|
+|* implements various vectorization transformations of the LLVM IR. *|
+|* *|
+|* Many exotic languages can interoperate with C code but have a harder time *|
+|* with C++ due to name mangling. So in addition to C, this interface enables *|
+|* tools written in such languages. *|
+|* *|
+\*===----------------------------------------------------------------------===*/
+
+#ifndef LLVM_C_TRANSFORMS_VECTORIZE_H
+#define LLVM_C_TRANSFORMS_VECTORIZE_H
+
+#include "llvm-c/Types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * @defgroup LLVMCTransformsVectorize Vectorization transformations
+ * @ingroup LLVMCTransforms
+ *
+ * @{
+ */
+
+/** See llvm::createLoopVectorizePass function. */
+void LLVMAddLoopVectorizePass(LLVMPassManagerRef PM);
+
+/** See llvm::createSLPVectorizerPass function. */
+void LLVMAddSLPVectorizePass(LLVMPassManagerRef PM);
+
+/**
+ * @}
+ */
+
+#ifdef __cplusplus
+}
+#endif /* defined(__cplusplus) */
+
+#endif