1 /* 2 * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 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 PANDA_BYTECODE_OPTIMIZER_COMMON_H 17 #define PANDA_BYTECODE_OPTIMIZER_COMMON_H 18 19 #include "compiler/optimizer/ir/constants.h" 20 #include "compiler/optimizer/ir/inst.h" 21 22 namespace ark::compiler { 23 class BinaryImmOperation; 24 } // namespace ark::compiler 25 26 namespace ark::bytecodeopt { 27 constexpr compiler::Register MIN_REGISTER_NUMBER = 0; 28 constexpr compiler::Register MAX_NUM_SHORT_CALL_ARGS = 2; 29 constexpr compiler::Register MAX_NUM_NON_RANGE_ARGS = 4; 30 constexpr compiler::Register MAX_NUM_INPUTS = MAX_NUM_NON_RANGE_ARGS; 31 constexpr ark::compiler::Register NUM_COMPACTLY_ENCODED_REGS = 16; 32 [[maybe_unused]] constexpr compiler::Register MAX_8_BIT_REG = 255 - 1U; // exclude INVALID_REG 33 34 // Get the position where accumulator read happens. 35 uint8_t AccReadIndex(const compiler::Inst *inst); 36 37 bool IsAbcKitIntrinsic(compiler::RuntimeInterface::IntrinsicId intrinsicId); 38 bool IsAbcKitIntrinsicRange(compiler::RuntimeInterface::IntrinsicId intrinsicId); 39 40 bool IsCall(compiler::Inst *inst); 41 42 bool CanConvertToIncI(const compiler::BinaryImmOperation *binop); 43 } // namespace ark::bytecodeopt 44 45 #endif // PANDA_BYTECODE_OPTIMIZER_COMMON_H 46