1 /* 2 * Copyright (c) 2023-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 ECMASCRIPT_COMPILER_LCR_GATE_META_DATA_H 17 #define ECMASCRIPT_COMPILER_LCR_GATE_META_DATA_H 18 19 #include <string> 20 21 #include "ecmascript/compiler/type.h" 22 #include "libpandabase/macros.h" 23 24 namespace panda::ecmascript::kungfu { 25 26 enum MachineType : uint8_t { // Bit width 27 NOVALUE = 0, 28 ANYVALUE, 29 ARCH, 30 FLEX, 31 I1, 32 I8, 33 I16, 34 I32, 35 I64, 36 F32, 37 F64, 38 }; 39 40 enum class ICmpCondition : uint8_t { 41 EQ = 1, 42 UGT, 43 UGE, 44 ULT, 45 ULE, 46 NE, 47 SGT, 48 SGE, 49 SLT, 50 SLE, 51 }; 52 53 enum class FCmpCondition : uint8_t { 54 ALW_FALSE = 0, 55 OEQ, 56 OGT, 57 OGE, 58 OLT, 59 OLE, 60 ONE, 61 ORD, 62 UNO, 63 UEQ, 64 UGT, 65 UGE, 66 ULT, 67 ULE, 68 UNE, 69 ALW_TRUE, 70 }; 71 72 std::string MachineTypeToStr(MachineType machineType); 73 74 class BranchWeight { 75 public: 76 static constexpr uint32_t ZERO_WEIGHT = 0; 77 static constexpr uint32_t ONE_WEIGHT = 1; 78 static constexpr uint32_t WEAK_WEIGHT = 10; 79 static constexpr uint32_t STRONG_WEIGHT = 1000; 80 static constexpr uint32_t DEOPT_WEIGHT = 2000; 81 }; 82 83 } 84 85 #endif // ECMASCRIPT_COMPILER_LCR_GATE_META_DATA_H