• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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