/* * Copyright (c) 2023 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ DEFINE_MOP(Mem8S, {Operand::kOpdMem, operand::kIsUse, 8}) DEFINE_MOP(Mem8D, {Operand::kOpdMem, operand::kIsDef, 8}) DEFINE_MOP(Mem16S, {Operand::kOpdMem, operand::kIsUse, 16}) DEFINE_MOP(Mem16D, {Operand::kOpdMem, operand::kIsDef, 16}) DEFINE_MOP(Mem32D, {Operand::kOpdMem, operand::kIsDef, 32}) DEFINE_MOP(Mem32S, {Operand::kOpdMem, operand::kIsUse, 32}) DEFINE_MOP(Mem64D, {Operand::kOpdMem, operand::kIsDef, 64}) DEFINE_MOP(Mem64S, {Operand::kOpdMem, operand::kIsUse, 64}) DEFINE_MOP(Mem128D, {Operand::kOpdMem, operand::kIsDef, 128}) DEFINE_MOP(Mem128S, {Operand::kOpdMem, operand::kIsUse, 128}) DEFINE_MOP(Reg8IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 8}) DEFINE_MOP(Reg8ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 8}) DEFINE_MOP(Reg8IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 8}) DEFINE_MOP(Reg16ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 16}) DEFINE_MOP(Reg16IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 16}) DEFINE_MOP(Reg16IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 16}) DEFINE_MOP(Reg32ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 32}) DEFINE_MOP(Reg32IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 32}) DEFINE_MOP(Reg32IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 32}) DEFINE_MOP(Reg64ID, {Operand::kOpdRegister, operand::kIsDef | operand::kInt, 64}) DEFINE_MOP(Reg64IS, {Operand::kOpdRegister, operand::kIsUse | operand::kInt, 64}) DEFINE_MOP(Reg64IDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kInt, 64}) DEFINE_MOP(Reg8FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 8}) DEFINE_MOP(Reg8FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 8}) DEFINE_MOP(Reg16FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 16}) DEFINE_MOP(Reg16FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 16}) DEFINE_MOP(Reg16FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 16}) DEFINE_MOP(Reg32FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 32}) DEFINE_MOP(Reg32FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 32}) DEFINE_MOP(Reg32FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 32}) DEFINE_MOP(Reg64FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 64}) DEFINE_MOP(Reg64FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 64}) DEFINE_MOP(Reg64FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 64}) DEFINE_MOP(Reg128FD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 128}) DEFINE_MOP(Reg128FS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 128}) DEFINE_MOP(Reg128FDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 128}) DEFINE_MOP(Reg64VD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 64}) DEFINE_MOP(Reg64VS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 64}) DEFINE_MOP(Reg64VDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 64}) DEFINE_MOP(Reg128VD, {Operand::kOpdRegister, operand::kIsDef | operand::kFloat, 128}) DEFINE_MOP(Reg128VS, {Operand::kOpdRegister, operand::kIsUse | operand::kFloat, 128}) DEFINE_MOP(Reg128VDS, {Operand::kOpdRegister, operand::kIsDef | operand::kIsUse | operand::kFloat, 128}) DEFINE_MOP(CCD, {Operand::kOpdRegister, operand::kRegTyCc | operand::kIsDef, 1}) DEFINE_MOP(CCS, {Operand::kOpdRegister, operand::kRegTyCc | operand::kIsUse, 1}) DEFINE_MOP(Cond, {Operand::kOpdCond, operand::kRegTyCc | operand::kIsUse, 4}) DEFINE_MOP(Imm4, {Operand::kOpdImmediate, operand::kIsUse, 4}) DEFINE_MOP(Imm5, {Operand::kOpdImmediate, operand::kIsUse, 5}) DEFINE_MOP(Imm6, {Operand::kOpdImmediate, operand::kIsUse, 6}) DEFINE_MOP(Imm8, {Operand::kOpdImmediate, operand::kIsUse, 8}) DEFINE_MOP(Imm12, {Operand::kOpdImmediate, operand::kIsUse, 12}) DEFINE_MOP(Imm13, {Operand::kOpdImmediate, operand::kIsUse, 13}) DEFINE_MOP(Imm16, {Operand::kOpdImmediate, operand::kIsUse, 16}) DEFINE_MOP(Imm32, {Operand::kOpdImmediate, operand::kIsUse, 32}) DEFINE_MOP(Imm64, {Operand::kOpdImmediate, operand::kIsUse, 64}) DEFINE_MOP(StImm32, {Operand::kOpdStImmediate, operand::kIsUse, 32}) DEFINE_MOP(StImm64, {Operand::kOpdStImmediate, operand::kIsUse, 64}) DEFINE_MOP(FpImm8, {Operand::kOpdFPImmediate, operand::kIsUse, 8}) DEFINE_MOP(LiteralSrc, {Operand::kOpdStImmediate, operand::kIsUse, 64}) DEFINE_MOP(Literal12Src, {Operand::kOpdStImmediate, operand::kLiteralLow12, 12}) /* for movk */ DEFINE_MOP(Lsl4, {Operand::kOpdShift, operand::kIsUse, 4}) DEFINE_MOP(Lsl6, {Operand::kOpdShift, operand::kIsUse, 6}) DEFINE_MOP(Lsl12, {Operand::kOpdShift, operand::kIsUse, 12}) /* for shift */ DEFINE_MOP(Bitshift32, {Operand::kOpdShift, operand::kIsUse, 5}) DEFINE_MOP(Bitshift64, {Operand::kOpdShift, operand::kIsUse, 6}) DEFINE_MOP(Extendshift64, {Operand::kOpdExtend, operand::kIsUse, 3}) DEFINE_MOP(ListSrc, {Operand::kOpdList, operand::kIsUse, 1}) DEFINE_MOP(ListDest, {Operand::kOpdList, operand::kIsDef, 1}) DEFINE_MOP(String0S, {Operand::kOpdString, operand::kIsUse, 0}) DEFINE_MOP(AddressName, {Operand::kOpdBBAddress, operand::kIsUse, 64}) DEFINE_MOP(Lbl64, {Operand::kOpdBBAddress, operand::kIsUse, 64})