blob: ba142508bbe4457a2605963e938fc4b1b6eceb9e [file] [log] [blame]
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01001/*===-- Scalar.h - Scalar Transformation Library C Interface ----*- C++ -*-===*\
2|* *|
Andrew Walbran16937d02019-10-22 13:54:20 +01003|* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
4|* Exceptions. *|
5|* See https://llvm.org/LICENSE.txt for license information. *|
6|* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
Andrew Scull5e1ddfa2018-08-14 10:06:54 +01007|* *|
8|*===----------------------------------------------------------------------===*|
9|* *|
10|* This header declares the C interface to libLLVMScalarOpts.a, which *|
11|* implements various scalar transformations of the LLVM IR. *|
12|* *|
13|* Many exotic languages can interoperate with C code but have a harder time *|
14|* with C++ due to name mangling. So in addition to C, this interface enables *|
15|* tools written in such languages. *|
16|* *|
17\*===----------------------------------------------------------------------===*/
18
19#ifndef LLVM_C_TRANSFORMS_SCALAR_H
20#define LLVM_C_TRANSFORMS_SCALAR_H
21
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020022#include "llvm-c/ExternC.h"
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010023#include "llvm-c/Types.h"
24
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020025LLVM_C_EXTERN_C_BEGIN
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010026
27/**
28 * @defgroup LLVMCTransformsScalar Scalar transformations
29 * @ingroup LLVMCTransforms
30 *
31 * @{
32 */
33
34/** See llvm::createAggressiveDCEPass function. */
35void LLVMAddAggressiveDCEPass(LLVMPassManagerRef PM);
36
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020037/** See llvm::createDeadCodeEliminationPass function. */
38void LLVMAddDCEPass(LLVMPassManagerRef PM);
39
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010040/** See llvm::createBitTrackingDCEPass function. */
41void LLVMAddBitTrackingDCEPass(LLVMPassManagerRef PM);
42
43/** See llvm::createAlignmentFromAssumptionsPass function. */
44void LLVMAddAlignmentFromAssumptionsPass(LLVMPassManagerRef PM);
45
46/** See llvm::createCFGSimplificationPass function. */
47void LLVMAddCFGSimplificationPass(LLVMPassManagerRef PM);
48
49/** See llvm::createDeadStoreEliminationPass function. */
50void LLVMAddDeadStoreEliminationPass(LLVMPassManagerRef PM);
51
52/** See llvm::createScalarizerPass function. */
53void LLVMAddScalarizerPass(LLVMPassManagerRef PM);
54
55/** See llvm::createMergedLoadStoreMotionPass function. */
56void LLVMAddMergedLoadStoreMotionPass(LLVMPassManagerRef PM);
57
58/** See llvm::createGVNPass function. */
59void LLVMAddGVNPass(LLVMPassManagerRef PM);
60
61/** See llvm::createGVNPass function. */
62void LLVMAddNewGVNPass(LLVMPassManagerRef PM);
63
64/** See llvm::createIndVarSimplifyPass function. */
65void LLVMAddIndVarSimplifyPass(LLVMPassManagerRef PM);
66
67/** See llvm::createInstructionCombiningPass function. */
68void LLVMAddInstructionCombiningPass(LLVMPassManagerRef PM);
69
Olivier Deprezf4ef2d02021-04-20 13:36:24 +020070/** See llvm::createInstSimplifyLegacyPass function. */
71void LLVMAddInstructionSimplifyPass(LLVMPassManagerRef PM);
72
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010073/** See llvm::createJumpThreadingPass function. */
74void LLVMAddJumpThreadingPass(LLVMPassManagerRef PM);
75
76/** See llvm::createLICMPass function. */
77void LLVMAddLICMPass(LLVMPassManagerRef PM);
78
79/** See llvm::createLoopDeletionPass function. */
80void LLVMAddLoopDeletionPass(LLVMPassManagerRef PM);
81
82/** See llvm::createLoopIdiomPass function */
83void LLVMAddLoopIdiomPass(LLVMPassManagerRef PM);
84
85/** See llvm::createLoopRotatePass function. */
86void LLVMAddLoopRotatePass(LLVMPassManagerRef PM);
87
88/** See llvm::createLoopRerollPass function. */
89void LLVMAddLoopRerollPass(LLVMPassManagerRef PM);
90
91/** See llvm::createLoopUnrollPass function. */
92void LLVMAddLoopUnrollPass(LLVMPassManagerRef PM);
93
Andrew Scullcdfcccc2018-10-05 20:58:37 +010094/** See llvm::createLoopUnrollAndJamPass function. */
95void LLVMAddLoopUnrollAndJamPass(LLVMPassManagerRef PM);
96
Andrew Scull5e1ddfa2018-08-14 10:06:54 +010097/** See llvm::createLoopUnswitchPass function. */
98void LLVMAddLoopUnswitchPass(LLVMPassManagerRef PM);
99
Andrew Scull0372a572018-11-16 15:47:06 +0000100/** See llvm::createLowerAtomicPass function. */
101void LLVMAddLowerAtomicPass(LLVMPassManagerRef PM);
102
Andrew Scull5e1ddfa2018-08-14 10:06:54 +0100103/** See llvm::createMemCpyOptPass function. */
104void LLVMAddMemCpyOptPass(LLVMPassManagerRef PM);
105
106/** See llvm::createPartiallyInlineLibCallsPass function. */
107void LLVMAddPartiallyInlineLibCallsPass(LLVMPassManagerRef PM);
108
109/** See llvm::createReassociatePass function. */
110void LLVMAddReassociatePass(LLVMPassManagerRef PM);
111
112/** See llvm::createSCCPPass function. */
113void LLVMAddSCCPPass(LLVMPassManagerRef PM);
114
115/** See llvm::createSROAPass function. */
116void LLVMAddScalarReplAggregatesPass(LLVMPassManagerRef PM);
117
118/** See llvm::createSROAPass function. */
119void LLVMAddScalarReplAggregatesPassSSA(LLVMPassManagerRef PM);
120
121/** See llvm::createSROAPass function. */
122void LLVMAddScalarReplAggregatesPassWithThreshold(LLVMPassManagerRef PM,
123 int Threshold);
124
125/** See llvm::createSimplifyLibCallsPass function. */
126void LLVMAddSimplifyLibCallsPass(LLVMPassManagerRef PM);
127
128/** See llvm::createTailCallEliminationPass function. */
129void LLVMAddTailCallEliminationPass(LLVMPassManagerRef PM);
130
Andrew Scull5e1ddfa2018-08-14 10:06:54 +0100131/** See llvm::demotePromoteMemoryToRegisterPass function. */
132void LLVMAddDemoteMemoryToRegisterPass(LLVMPassManagerRef PM);
133
134/** See llvm::createVerifierPass function. */
135void LLVMAddVerifierPass(LLVMPassManagerRef PM);
136
137/** See llvm::createCorrelatedValuePropagationPass function */
138void LLVMAddCorrelatedValuePropagationPass(LLVMPassManagerRef PM);
139
140/** See llvm::createEarlyCSEPass function */
141void LLVMAddEarlyCSEPass(LLVMPassManagerRef PM);
142
143/** See llvm::createEarlyCSEPass function */
144void LLVMAddEarlyCSEMemSSAPass(LLVMPassManagerRef PM);
145
146/** See llvm::createLowerExpectIntrinsicPass function */
147void LLVMAddLowerExpectIntrinsicPass(LLVMPassManagerRef PM);
148
Olivier Deprezf4ef2d02021-04-20 13:36:24 +0200149/** See llvm::createLowerConstantIntrinsicsPass function */
150void LLVMAddLowerConstantIntrinsicsPass(LLVMPassManagerRef PM);
151
Andrew Scull5e1ddfa2018-08-14 10:06:54 +0100152/** See llvm::createTypeBasedAliasAnalysisPass function */
153void LLVMAddTypeBasedAliasAnalysisPass(LLVMPassManagerRef PM);
154
155/** See llvm::createScopedNoAliasAAPass function */
156void LLVMAddScopedNoAliasAAPass(LLVMPassManagerRef PM);
157
158/** See llvm::createBasicAliasAnalysisPass function */
159void LLVMAddBasicAliasAnalysisPass(LLVMPassManagerRef PM);
160
Andrew Scull0372a572018-11-16 15:47:06 +0000161/** See llvm::createUnifyFunctionExitNodesPass function */
162void LLVMAddUnifyFunctionExitNodesPass(LLVMPassManagerRef PM);
163
Andrew Scull5e1ddfa2018-08-14 10:06:54 +0100164/**
165 * @}
166 */
167
Olivier Deprezf4ef2d02021-04-20 13:36:24 +0200168LLVM_C_EXTERN_C_END
Andrew Scull5e1ddfa2018-08-14 10:06:54 +0100169
170#endif