1/* 2 * Copyright (c) 2023 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 16DEFINE_MOP(Mem8S, {Operand::kOpdMem, operand::kIsUse, 8}) 17DEFINE_MOP(Mem8D, {Operand::kOpdMem, operand::kIsDef, 8}) 18DEFINE_MOP(Mem16S, {Operand::kOpdMem, operand::kIsUse, 16}) 19DEFINE_MOP(Mem16D, {Operand::kOpdMem, operand::kIsDef, 16}) 20DEFINE_MOP(Mem32D, {Operand::kOpdMem, operand::kIsDef, 32}) 21DEFINE_MOP(Mem32S, {Operand::kOpdMem, operand::kIsUse, 32}) 22DEFINE_MOP(Mem64D, {Operand::kOpdMem, operand::kIsDef, 64}) 23DEFINE_MOP(Mem64S, {Operand::kOpdMem, operand::kIsUse, 64}) 24DEFINE_MOP(Mem128D, {Operand::kOpdMem, operand::kIsDef, 128}) 25DEFINE_MOP(Mem128S, {Operand::kOpdMem, operand::kIsUse, 128}) 26 27DEFINE_MOP(Reg8IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 8}) 28DEFINE_MOP(Reg8ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 8}) 29DEFINE_MOP(Reg8IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 8}) 30DEFINE_MOP(Reg16ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 16}) 31DEFINE_MOP(Reg16IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 16}) 32DEFINE_MOP(Reg16IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 16}) 33DEFINE_MOP(Reg32ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 32}) 34DEFINE_MOP(Reg32IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 32}) 35DEFINE_MOP(Reg32IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 32}) 36DEFINE_MOP(Reg64ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 64}) 37DEFINE_MOP(Reg64IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 64}) 38DEFINE_MOP(Reg64IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 64}) 39 40DEFINE_MOP(Reg8FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 8}) 41DEFINE_MOP(Reg8FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 8}) 42DEFINE_MOP(Reg16FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 16}) 43DEFINE_MOP(Reg16FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 16}) 44DEFINE_MOP(Reg16FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 16}) 45DEFINE_MOP(Reg32FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 32}) 46DEFINE_MOP(Reg32FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 32}) 47DEFINE_MOP(Reg32FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 32}) 48DEFINE_MOP(Reg64FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 64}) 49DEFINE_MOP(Reg64FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 64}) 50DEFINE_MOP(Reg64FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 64}) 51DEFINE_MOP(Reg128FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 128}) 52DEFINE_MOP(Reg128FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 128}) 53DEFINE_MOP(Reg128FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 128}) 54 55DEFINE_MOP(Reg64VD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 64}) 56DEFINE_MOP(Reg64VS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 64}) 57DEFINE_MOP(Reg64VDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 64}) 58DEFINE_MOP(Reg128VD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 128}) 59DEFINE_MOP(Reg128VS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 128}) 60DEFINE_MOP(Reg128VDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 128}) 61 62DEFINE_MOP(CCD, {Operand::kOpdRegister, operand::kRegTyCc | operand::kIsDef, 1}) 63DEFINE_MOP(CCS, {Operand::kOpdRegister, operand::kRegTyCc | operand::kIsUse, 1}) 64DEFINE_MOP(Cond, {Operand::kOpdCond, operand::kRegTyCc | operand::kIsUse, 4}) 65 66DEFINE_MOP(Imm4, {Operand::kOpdImmediate, operand::kIsUse, 4}) 67DEFINE_MOP(Imm5, {Operand::kOpdImmediate, operand::kIsUse, 5}) 68DEFINE_MOP(Imm6, {Operand::kOpdImmediate, operand::kIsUse, 6}) 69DEFINE_MOP(Imm8, {Operand::kOpdImmediate, operand::kIsUse, 8}) 70DEFINE_MOP(Imm12, {Operand::kOpdImmediate, operand::kIsUse, 12}) 71DEFINE_MOP(Imm13, {Operand::kOpdImmediate, operand::kIsUse, 13}) 72DEFINE_MOP(Imm16, {Operand::kOpdImmediate, operand::kIsUse, 16}) 73DEFINE_MOP(Imm32, {Operand::kOpdImmediate, operand::kIsUse, 32}) 74DEFINE_MOP(Imm64, {Operand::kOpdImmediate, operand::kIsUse, 64}) 75DEFINE_MOP(StImm32, {Operand::kOpdStImmediate, operand::kIsUse, 32}) 76DEFINE_MOP(StImm64, {Operand::kOpdStImmediate, operand::kIsUse, 64}) 77DEFINE_MOP(FpImm8, {Operand::kOpdFPImmediate, operand::kIsUse, 8}) 78DEFINE_MOP(LiteralSrc, {Operand::kOpdStImmediate, operand::kIsUse, 64}) 79DEFINE_MOP(Literal12Src, {Operand::kOpdStImmediate, operand::kLiteralLow12, 12}) 80 81/* for movk */ 82DEFINE_MOP(Lsl4, {Operand::kOpdShift, operand::kIsUse, 4}) 83DEFINE_MOP(Lsl6, {Operand::kOpdShift, operand::kIsUse, 6}) 84DEFINE_MOP(Lsl12, {Operand::kOpdShift, operand::kIsUse, 12}) 85/* for shift */ 86DEFINE_MOP(Bitshift32, {Operand::kOpdShift, operand::kIsUse, 5}) 87DEFINE_MOP(Bitshift64, {Operand::kOpdShift, operand::kIsUse, 6}) 88DEFINE_MOP(Extendshift64, {Operand::kOpdExtend, operand::kIsUse, 3}) 89 90DEFINE_MOP(ListSrc, {Operand::kOpdList, operand::kIsUse, 1}) 91DEFINE_MOP(ListDest, {Operand::kOpdList, operand::kIsDef, 1}) 92DEFINE_MOP(String0S, {Operand::kOpdString, operand::kIsUse, 0}) 93DEFINE_MOP(AddressName, {Operand::kOpdBBAddress, operand::kIsUse, 64}) 94 95DEFINE_MOP(Lbl64, {Operand::kOpdBBAddress, operand::kIsUse, 64}) 96