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