• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright 2023 Huawei Technologies Co., Ltd
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef MINDSPORE_CORE_BASE_SEQUENCE_OPS_H_
18 #define MINDSPORE_CORE_BASE_SEQUENCE_OPS_H_
19 
20 #include <memory>
21 #include <string>
22 #include "ir/anf.h"
23 #include "ir/primitive.h"
24 #include "ir/value.h"
25 #include "ops/sequence_op_name.h"
26 #include "utils/flags.h"
27 
28 namespace mindspore {
29 namespace prim {
30 GVAR_DEF(PrimitivePtr, kPrimSequenceLen, std::make_shared<Primitive>("sequence_len"));
31 
32 // Array
33 GVAR_DEF(PrimitivePtr, kPrimArrayLen, std::make_shared<Primitive>("array_len"));
34 GVAR_DEF(PrimitivePtr, kPrimArrayGetItem, std::make_shared<Primitive>("array_getitem"));
35 GVAR_DEF(PrimitivePtr, kPrimArraySetItem, std::make_shared<Primitive>("array_setitem"));
36 
37 // Real tuple and list ops.
38 GVAR_DEF(PrimitivePtr, kPrimRealMakeTuple, std::make_shared<Primitive>(kRealMakeTupleOpName));
39 
40 // Dict
41 GVAR_DEF(PrimitivePtr, kPrimDictLen, std::make_shared<Primitive>("dict_len"));
42 GVAR_DEF(PrimitivePtr, kPrimDictGetItem, std::make_shared<Primitive>("dict_getitem"));
43 GVAR_DEF(PrimitivePtr, kPrimDictSetItem, std::make_shared<Primitive>("dict_setitem"));
44 GVAR_DEF(PrimitivePtr, kPrimDictGetKeys, std::make_shared<Primitive>("dict_getkeys"));
45 GVAR_DEF(PrimitivePtr, kPrimDictGetValues, std::make_shared<Primitive>("dict_getvalues"));
46 GVAR_DEF(PrimitivePtr, kPrimDictItems, std::make_shared<Primitive>("dict_items"));
47 GVAR_DEF(PrimitivePtr, kPrimDictInplaceSetItem,
48          std::make_shared<Primitive>(kDictInplaceSetItemOpName,
49                                      mindspore::HashMap<std::string, ValuePtr>({{std::string(GRAPH_FLAG_SIDE_EFFECT_IO),
50                                                                                  MakeValue(true)}})));
51 
52 // Tuple
53 GVAR_DEF(PrimitivePtr, kPrimMakeTuple, std::make_shared<Primitive>(kMakeTupleOpName));
54 GVAR_DEF(PrimitivePtr, kPrimTupleGetItem, std::make_shared<Primitive>(kTupleGetItemOpName));
55 GVAR_DEF(PrimitivePtr, kPrimTupleSetItem, std::make_shared<Primitive>(kTupleSetItemOpName));
56 GVAR_DEF(PrimitivePtr, kPrimTupleLessThan, std::make_shared<Primitive>(kTupleLtOpName));
57 GVAR_DEF(PrimitivePtr, kPrimTupleLessEqual, std::make_shared<Primitive>(kTupleLeOpName));
58 GVAR_DEF(PrimitivePtr, kPrimRealTupleGetItem, std::make_shared<Primitive>(kRealTupleGetItemOpName));
59 GVAR_DEF(PrimitivePtr, kPrimTupleDiv, std::make_shared<Primitive>("tuple_div"));
60 GVAR_DEF(PrimitivePtr, kPrimTupleToArray, std::make_shared<Primitive>("tuple_to_array"));
61 GVAR_DEF(PrimitivePtr, kPrimListReduce, std::make_shared<Primitive>("list_reduce"));
62 GVAR_DEF(PrimitivePtr, kPrimTupleReversed, std::make_shared<Primitive>("tuple_reversed"));
63 GVAR_DEF(PrimitivePtr, kPrimTupleGreaterThan, std::make_shared<Primitive>("tuple_greater_than"));
64 GVAR_DEF(PrimitivePtr, kPrimTupleGreaterEqual, std::make_shared<Primitive>("tuple_greater_equal"));
65 GVAR_DEF(PrimitivePtr, kPrimListGreaterThan, std::make_shared<Primitive>("list_greater_than"));
66 GVAR_DEF(PrimitivePtr, kPrimTupleEqual, std::make_shared<Primitive>(kTupleEqualOpName));
67 
68 // List
69 GVAR_DEF(PrimitivePtr, kPrimListGetItem, std::make_shared<Primitive>(kListGetItemOpName));
70 GVAR_DEF(PrimitivePtr, kPrimListSetItem, std::make_shared<Primitive>(kListSetItemOpName));
71 GVAR_DEF(PrimitivePtr, kPrimListGreaterEqual, std::make_shared<Primitive>("list_greater_equal"));
72 GVAR_DEF(PrimitivePtr, kPrimMakeList, std::make_shared<Primitive>(kMakeListNewOpName));
73 GVAR_DEF(PrimitivePtr, kPrimListLessThan, std::make_shared<Primitive>(kListLtOpName));
74 GVAR_DEF(PrimitivePtr, kPrimListLessEqual, std::make_shared<Primitive>(kListLeOpName));
75 GVAR_DEF(PrimitivePtr, kPrimListEqual, std::make_shared<Primitive>(kListEqualOpName));
76 GVAR_DEF(PrimitivePtr, kPrimListDiff, std::make_shared<Primitive>(kListDiffOpName));
77 GVAR_DEF(PrimitivePtr, kPrimListInplaceClear,
78          std::make_shared<Primitive>(kListInplaceClearOpName,
79                                      mindspore::HashMap<std::string, ValuePtr>({{std::string(GRAPH_FLAG_SIDE_EFFECT_IO),
80                                                                                  MakeValue(true)}})));
81 GVAR_DEF(PrimitivePtr, kPrimListInplaceReverse,
82          std::make_shared<Primitive>(kListInplaceReverseOpName,
83                                      mindspore::HashMap<std::string, ValuePtr>({{std::string(GRAPH_FLAG_SIDE_EFFECT_IO),
84                                                                                  MakeValue(true)}})));
85 GVAR_DEF(PrimitivePtr, kPrimListInplaceExtend,
86          std::make_shared<Primitive>(kListInplaceExtendOpName,
87                                      mindspore::HashMap<std::string, ValuePtr>({{std::string(GRAPH_FLAG_SIDE_EFFECT_IO),
88                                                                                  MakeValue(true)}})));
89 GVAR_DEF(PrimitivePtr, kPrimListInplaceInsert,
90          std::make_shared<Primitive>(kListInplaceInsertOpName,
91                                      mindspore::HashMap<std::string, ValuePtr>({{std::string(GRAPH_FLAG_SIDE_EFFECT_IO),
92                                                                                  MakeValue(true)}})));
93 GVAR_DEF(PrimitivePtr, kPrimListInplacePop,
94          std::make_shared<Primitive>(kListInplacePopOpName,
95                                      mindspore::HashMap<std::string, ValuePtr>({{std::string(GRAPH_FLAG_SIDE_EFFECT_IO),
96                                                                                  MakeValue(true)}})));
97 
98 // Sequence and Tensor
99 GVAR_DEF(PrimitivePtr, kPrimListToTensor, std::make_shared<Primitive>(kListToTensorOpName));
100 GVAR_DEF(PrimitivePtr, kPrimTensorToTuple, std::make_shared<Primitive>(kTensorToTupleOpName));
101 GVAR_DEF(PrimitivePtr, kPrimTensorToList, std::make_shared<Primitive>(kTensorToListOpName));
102 
103 // Sequence operations.
104 GVAR_DEF(PrimitivePtr, kPrimListAppend, std::make_shared<Primitive>(kListAppendOpName));
105 GVAR_DEF(PrimitivePtr, kPrimListInplaceAppend, std::make_shared<Primitive>(kListInplaceAppendOpName));
106 GVAR_DEF(PrimitivePtr, kPrimListInsert, std::make_shared<Primitive>(kListInsertOpName));
107 GVAR_DEF(PrimitivePtr, kPrimListAppendAndInsertGrad, std::make_shared<Primitive>(kListAppendAndInsertGradOpName));
108 GVAR_DEF(PrimitivePtr, kPrimSequenceAdd, std::make_shared<Primitive>(kSequenceAddOpName));
109 GVAR_DEF(PrimitivePtr, kPrimSequenceCount, std::make_shared<Primitive>(kSequenceCountOpName));
110 GVAR_DEF(PrimitivePtr, kPrimSequenceIndex, std::make_shared<Primitive>(kSequenceIndexOpName));
111 GVAR_DEF(PrimitivePtr, kPrimSequenceMul, std::make_shared<Primitive>(kSequenceMulOpName));
112 GVAR_DEF(PrimitivePtr, kPrimSequenceSlice, std::make_shared<Primitive>(kSequenceSliceOpName));
113 GVAR_DEF(PrimitivePtr, kPrimSequenceSliceSetItem, std::make_shared<Primitive>(kSequenceSliceSetItemOpName));
114 GVAR_DEF(PrimitivePtr, kPrimSequenceZerosLike, std::make_shared<Primitive>(kSequenceZerosLikeOpName));
115 GVAR_DEF(PrimitivePtr, kPrimSequenceAddOffset, std::make_shared<Primitive>(kSequenceAddOffsetOpName));
116 GVAR_DEF(PrimitivePtr, kPrimSequenceSliceGrad, std::make_shared<Primitive>(kSequenceSliceGradOpName));
117 GVAR_DEF(PrimitivePtr, kPrimSequenceMax, std::make_shared<Primitive>(kSequenceMaxOpName));
118 GVAR_DEF(PrimitivePtr, kPrimSequenceMin, std::make_shared<Primitive>(kSequenceMinOpName));
119 GVAR_DEF(PrimitivePtr, kPrimInSequence, std::make_shared<Primitive>(kInSequenceOpName));
120 GVAR_DEF(PrimitivePtr, kPrimSequenceAddN, std::make_shared<Primitive>(kSequenceAddNOpName));
121 GVAR_DEF(PrimitivePtr, kPrimSequenceStack, std::make_shared<Primitive>(kSequenceStackOpName));
122 GVAR_DEF(PrimitivePtr, kPrimSequenceUnstack, std::make_shared<Primitive>(kSequenceUnstackOpName));
123 }  // namespace prim
124 }  // namespace mindspore
125 
126 #endif  // MINDSPORE_CORE_BASE_SEQUENCE_OPS_H_
127