xref: /aosp_15_r20/external/tensorflow/tensorflow/compiler/mlir/tensorflow/transforms/lower_tf.h (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1 /* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
2 
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6 
7     http://www.apache.org/licenses/LICENSE-2.0
8 
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 ==============================================================================*/
15 
16 #ifndef TENSORFLOW_COMPILER_MLIR_TENSORFLOW_TRANSFORMS_LOWER_TF_H_
17 #define TENSORFLOW_COMPILER_MLIR_TENSORFLOW_TRANSFORMS_LOWER_TF_H_
18 
19 #include "mlir/IR/MLIRContext.h"  // from @llvm-project
20 #include "mlir/IR/PatternMatch.h"  // from @llvm-project
21 
22 namespace mlir {
23 namespace TF {
24 
25 // Populates TensorFlow lowering patterns to lower some of the TensorFlow
26 // operations that can be represented using other TensorFlow operations.
27 // TODO(laurenzo): For some reason, TFLite uses this pass and has exact
28 // requirements on what it can do. This is fragile and should be fixed (at a
29 // minimum, names should clearly convey scope). In the mean time, for a real
30 // compiler, use PopulateTFLoweringBeforeHLOPatterns.
31 void PopulateLoweringTFPatterns(MLIRContext *context,
32                                 RewritePatternSet *patterns);
33 
34 // Populates TensorFlow lowering patterns to lower some of the TensorFlow
35 // operations that can be represented by means of other TensorFlow operations.
36 // This pattern collection preserves those TensorFlow operations that will later
37 // be lowered to equivalent operations in CHLO or MHLO. This allows for
38 // HLO-specific lowerings.
39 void PopulateTFLoweringBeforeHLOPatterns(MLIRContext *context,
40                                          RewritePatternSet *patterns);
41 
42 // Populates TensorFlow lowering patterns to lower some of the TensorFlow
43 // operations that can be represented using other TensorFlow operations.
44 // Patterns are from ops with some inputs or outputs that are quantized types
45 // only to ops that allow non-quantized types on all inputs and outputs.
46 void PopulateLoweringQuantizedPatterns(MLIRContext *context,
47                                        RewritePatternSet *patterns);
48 
49 // Populates TensorFlow lowering patterns to lower some of the TensorFlow
50 // operations that can be represented using other TensorFlow operations.
51 // Patterns are from ops with some inputs or outputs that are quantized types
52 // only to ops that allow non-quantized types on all inputs and outputs.
53 void PopulateLoweringQuantizedPatterns(MLIRContext *context,
54                                        OwningRewritePatternList *patterns);
55 
56 }  // namespace TF
57 }  // namespace mlir
58 
59 #endif  // TENSORFLOW_COMPILER_MLIR_TENSORFLOW_TRANSFORMS_LOWER_TF_H_
60