14514f5e3Sopenharmony_ci/* 24514f5e3Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License. 54514f5e3Sopenharmony_ci * You may obtain a copy of the License at 64514f5e3Sopenharmony_ci * 74514f5e3Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 84514f5e3Sopenharmony_ci * 94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and 134514f5e3Sopenharmony_ci * limitations under the License. 144514f5e3Sopenharmony_ci */ 154514f5e3Sopenharmony_ci 164514f5e3Sopenharmony_ci#ifndef ECMASCRIPT_COMPILER_LCR_OPCODE_H 174514f5e3Sopenharmony_ci#define ECMASCRIPT_COMPILER_LCR_OPCODE_H 184514f5e3Sopenharmony_ci 194514f5e3Sopenharmony_cinamespace panda::ecmascript::kungfu { 204514f5e3Sopenharmony_ci 214514f5e3Sopenharmony_ci#define LCR_BINARY_GATE_META_DATA_CACHE_LIST(V) \ 224514f5e3Sopenharmony_ci V(Add, ADD, GateFlags::NONE_FLAG, 0, 0, 2) \ 234514f5e3Sopenharmony_ci V(Sub, SUB, GateFlags::NONE_FLAG, 0, 0, 2) \ 244514f5e3Sopenharmony_ci V(Mul, MUL, GateFlags::NONE_FLAG, 0, 0, 2) \ 254514f5e3Sopenharmony_ci V(Exp, EXP, GateFlags::NONE_FLAG, 0, 0, 2) \ 264514f5e3Sopenharmony_ci V(Sdiv, SDIV, GateFlags::NONE_FLAG, 0, 0, 2) \ 274514f5e3Sopenharmony_ci V(Smod, SMOD, GateFlags::NONE_FLAG, 0, 0, 2) \ 284514f5e3Sopenharmony_ci V(Udiv, UDIV, GateFlags::NONE_FLAG, 0, 0, 2) \ 294514f5e3Sopenharmony_ci V(Umod, UMOD, GateFlags::NONE_FLAG, 0, 0, 2) \ 304514f5e3Sopenharmony_ci V(Fdiv, FDIV, GateFlags::NONE_FLAG, 0, 0, 2) \ 314514f5e3Sopenharmony_ci V(Fmod, FMOD, GateFlags::NONE_FLAG, 0, 0, 2) \ 324514f5e3Sopenharmony_ci V(And, AND, GateFlags::NONE_FLAG, 0, 0, 2) \ 334514f5e3Sopenharmony_ci V(Xor, XOR, GateFlags::NONE_FLAG, 0, 0, 2) \ 344514f5e3Sopenharmony_ci V(Or, OR, GateFlags::NONE_FLAG, 0, 0, 2) \ 354514f5e3Sopenharmony_ci V(Lsl, LSL, GateFlags::NONE_FLAG, 0, 0, 2) \ 364514f5e3Sopenharmony_ci V(Lsr, LSR, GateFlags::NONE_FLAG, 0, 0, 2) \ 374514f5e3Sopenharmony_ci V(Asr, ASR, GateFlags::NONE_FLAG, 0, 0, 2) \ 384514f5e3Sopenharmony_ci V(Sqrt, SQRT, GateFlags::NO_WRITE, 0, 0, 1) \ 394514f5e3Sopenharmony_ci V(Min, MIN, GateFlags::NO_WRITE, 0, 0, 2) \ 404514f5e3Sopenharmony_ci V(Max, MAX, GateFlags::NO_WRITE, 0, 0, 2) \ 414514f5e3Sopenharmony_ci V(AddWithOverflow, ADD_WITH_OVERFLOW, GateFlags::NONE_FLAG, 0, 0, 2) \ 424514f5e3Sopenharmony_ci V(SubWithOverflow, SUB_WITH_OVERFLOW, GateFlags::NONE_FLAG, 0, 0, 2) \ 434514f5e3Sopenharmony_ci V(MulWithOverflow, MUL_WITH_OVERFLOW, GateFlags::NONE_FLAG, 0, 0, 2) \ 444514f5e3Sopenharmony_ci V(ExtractValue, EXTRACT_VALUE, GateFlags::NONE_FLAG, 0, 0, 2) 454514f5e3Sopenharmony_ci 464514f5e3Sopenharmony_ci#define LCR_UNARY_GATE_META_DATA_CACHE_LIST(V) \ 474514f5e3Sopenharmony_ci V(Zext, ZEXT, GateFlags::NONE_FLAG, 0, 0, 1) \ 484514f5e3Sopenharmony_ci V(Sext, SEXT, GateFlags::NONE_FLAG, 0, 0, 1) \ 494514f5e3Sopenharmony_ci V(DoubleTrunc, DOUBLE_TRUNC, GateFlags::NO_WRITE, 0, 0, 1) \ 504514f5e3Sopenharmony_ci V(Trunc, TRUNC, GateFlags::NONE_FLAG, 0, 0, 1) \ 514514f5e3Sopenharmony_ci V(Fext, FEXT, GateFlags::NONE_FLAG, 0, 0, 1) \ 524514f5e3Sopenharmony_ci V(Ftrunc, FTRUNC, GateFlags::NONE_FLAG, 0, 0, 1) \ 534514f5e3Sopenharmony_ci V(Rev, REV, GateFlags::NONE_FLAG, 0, 0, 1) \ 544514f5e3Sopenharmony_ci V(TaggedToInt64, TAGGED_TO_INT64, GateFlags::NONE_FLAG, 0, 0, 1) \ 554514f5e3Sopenharmony_ci V(Int64ToTagged, INT64_TO_TAGGED, GateFlags::NONE_FLAG, 0, 0, 1) \ 564514f5e3Sopenharmony_ci V(SignedIntToFloat, SIGNED_INT_TO_FLOAT, GateFlags::NONE_FLAG, 0, 0, 1) \ 574514f5e3Sopenharmony_ci V(UnsignedIntToFloat, UNSIGNED_INT_TO_FLOAT, GateFlags::NONE_FLAG, 0, 0, 1) \ 584514f5e3Sopenharmony_ci V(FloatToSignedInt, FLOAT_TO_SIGNED_INT, GateFlags::NONE_FLAG, 0, 0, 1) \ 594514f5e3Sopenharmony_ci V(UnsignedFloatToInt, UNSIGNED_FLOAT_TO_INT, GateFlags::NONE_FLAG, 0, 0, 1) \ 604514f5e3Sopenharmony_ci V(TruncFloatToInt64, TRUNC_FLOAT_TO_INT64, GateFlags::NONE_FLAG, 0, 0, 1) \ 614514f5e3Sopenharmony_ci V(TruncFloatToInt32, TRUNC_FLOAT_TO_INT32, GateFlags::NONE_FLAG, 0, 0, 1) \ 624514f5e3Sopenharmony_ci V(Bitcast, BITCAST, GateFlags::NONE_FLAG, 0, 0, 1) \ 634514f5e3Sopenharmony_ci V(Abs, ABS, GateFlags::NO_WRITE, 0, 0, 1) \ 644514f5e3Sopenharmony_ci V(Clz32, CLZ32, GateFlags::NONE_FLAG, 0, 0, 1) \ 654514f5e3Sopenharmony_ci V(Ceil, CEIL, GateFlags::NO_WRITE, 0, 0, 1) \ 664514f5e3Sopenharmony_ci V(Floor, FLOOR, GateFlags::NO_WRITE, 0, 0, 1) 674514f5e3Sopenharmony_ci 684514f5e3Sopenharmony_ci#define LCR_IMMUTABLE_META_DATA_CACHE_LIST(V) \ 694514f5e3Sopenharmony_ci V(ReadSp, READSP, GateFlags::NONE_FLAG, 0, 0, 0) \ 704514f5e3Sopenharmony_ci LCR_BINARY_GATE_META_DATA_CACHE_LIST(V) \ 714514f5e3Sopenharmony_ci LCR_UNARY_GATE_META_DATA_CACHE_LIST(V) 724514f5e3Sopenharmony_ci 734514f5e3Sopenharmony_ci#define LCR_GATE_META_DATA_LIST_WITH_VALUE(V) \ 744514f5e3Sopenharmony_ci V(Icmp, ICMP, GateFlags::NONE_FLAG, 0, 0, 2) \ 754514f5e3Sopenharmony_ci V(Fcmp, FCMP, GateFlags::NONE_FLAG, 0, 0, 2) \ 764514f5e3Sopenharmony_ci V(Load, LOAD, GateFlags::NO_WRITE, 0, 1, 1) \ 774514f5e3Sopenharmony_ci V(Store, STORE, GateFlags::NONE_FLAG, 0, 1, 4) \ 784514f5e3Sopenharmony_ci V(StoreWithoutBarrier, STORE_WITHOUT_BARRIER, GateFlags::NONE_FLAG, 0, 1, 2) \ 794514f5e3Sopenharmony_ci V(Alloca, ALLOCA, GateFlags::NONE_FLAG, 0, 0, 0) 804514f5e3Sopenharmony_ci 814514f5e3Sopenharmony_ci#define LCR_GATE_META_DATA_LIST_WITH_ONE_PARAMETER(V) \ 824514f5e3Sopenharmony_ci LCR_GATE_META_DATA_LIST_WITH_VALUE(V) 834514f5e3Sopenharmony_ci 844514f5e3Sopenharmony_ci} 854514f5e3Sopenharmony_ci 864514f5e3Sopenharmony_ci#endif // ECMASCRIPT_COMPILER_LCR_OPCODE_H