summaryrefslogtreecommitdiff
path: root/aarch64_small/gen/regs_out_in.hgen
blob: 724a574b5bd47eead14a124b2d6501de26c55b81 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
(* for each instruction instance, identify the role of the registers
   and possible branching: (outputs, inputs, voidstars, branch) *)

| `AArch64TMStart t -> failwith "TSTART is not implemented"
| `AArch64TMCommit -> failwith "TCOMMIT is not implemented"
| `AArch64TMAbort (retry,reason) -> failwith "TABORT is not implemented"
| `AArch64TMTest -> failwith "TTEST is not implemented"

| `AArch64AddSubCarry (d,n,m,_datasize,_sub_op,_setflags) ->
      ([d], [n; m], [], [Next])

| `AArch64AddSubExtendRegister (d,n,m,_datasize,_sub_op,_setflags,_extend_type,_shift) ->
      ([d], [n; m], [], [Next])

| `AArch64AddSubShiftedRegister (d,n,m,_datasize,_sub_op,_setflags,_shift_type,_shift_amount) ->
      ([d], [n; m], [], [Next])

| `AArch64AddSubImmediate (d,n,_datasize,_sub_op,_setflags,_imm) ->
      ([d], [n], [], [Next])

| `AArch64Address (d,_page,_imm) ->
      ([d], [], [], [Next])

| `AArch64LogicalImmediate (d,n,_datasize,_setflags,_op,_imm) ->
      ([d], [n], [], [Next])

| `AArch64LogicalShiftedRegister (d,n,m,_datasize,_setflags,_op,_shift_type,_shift_amount,_invert) ->
      ([d], [n; m], [], [Next])

| `AArch64Shift (d,n,m,_datasize,_shift_type) ->
      ([d], [n; m], [], [Next])

| `AArch64BranchConditional (__offset,_condition) ->
      ([], [], [], [Next])

| `AArch64BranchImmediate (branch_type,__offset) ->
      ([], [], [], [Next])

| `AArch64BitfieldMove (d,n,_datasize,_inzero,_extend,_R,_S,_wmask,_tmask) ->
      ([d], [n], [], [Next])

| `AArch64BranchRegister (n,branch_type) ->
      ([], [n], [], [Next])

| `AArch64CompareAndBranch (t,_datasize,_iszero,__offset) ->
      ([], [t], [], [Next])

| `AArch64ConditionalCompareImmediate (n,_datasize,_sub_op,_condition,_flags,_imm) ->
      ([], [n], [], [Next])

| `AArch64ConditionalCompareRegister (n,m,_datasize,_sub_op,_condition,_flags) ->
      ([], [n; m], [], [Next])

| `AArch64ClearExclusiveMonitor (_imm) ->
      ([], [], [], [Next])

| `AArch64CountLeading (d,n,_datasize,__opcode) ->
      ([d], [n], [], [Next])

| `AArch64CRC (d,n,m,_size,_crc32c) ->
      ([d], [n; m], [], [Next])

| `AArch64ConditionalSelect (d,n,m,_datasize,_condition,_else_inv,_else_inc) ->
      ([d], [n; m], [], [Next])

| `AArch64Barrier (_op,_domain,_types) ->
      ([], [], [], [Next])

| `AArch64ExtractRegister (d,n,m,_datasize,_lsb) ->
      ([d], [n; m], [], [Next])

| `AArch64Hint (_op) ->
      ([], [], [], [Next])

| `AArch64LoadStoreAcqExc (n,t,t2,s,_acctype,false,false,MemOp_STORE,_elsize,_regsize,_datasize) ->
      ([], [t; n], [n], [Next])
| `AArch64LoadStoreAcqExc (n,t,t2,s,_acctype,true,false,MemOp_STORE,_elsize,_regsize,_datasize) ->
      ([s], [t; n], [n], [Next])
| `AArch64LoadStoreAcqExc (n,t,t2,s,_acctype,true,true,MemOp_STORE,_elsize,_regsize,_datasize) ->
      ([s], [t; t2; n], [n], [Next])

| `AArch64LoadStoreAcqExc (n,t,t2,s,_acctype,false,false,MemOp_LOAD,_elsize,_regsize,_datasize) ->
      ([t], [n], [n], [Next])
| `AArch64LoadStoreAcqExc (n,t,t2,s,_acctype,true,false,MemOp_LOAD,_elsize,_regsize,_datasize) ->
      ([t], [n], [n], [Next])
| `AArch64LoadStoreAcqExc (n,t,t2,s,_acctype,true,true,MemOp_LOAD,_elsize,_regsize,_datasize) ->
      ([t; t2], [n], [n], [Next])

| `AArch64LoadStorePair (false,_postindex,n,t,t2,_acctype,MemOp_STORE,_signed,_datasize,_offset) ->
      ([], [n; t; t2], [n], [Next])
| `AArch64LoadStorePair (true,_postindex,n,t,t2,_acctype,MemOp_STORE,_signed,_datasize,_offset) ->
      ([n], [n; t; t2], [n], [Next])

| `AArch64LoadStorePair (false,_postindex,n,t,t2,_acctype,MemOp_LOAD,_signed,_datasize,_offset) ->
      ([t; t2], [n], [n], [Next])
| `AArch64LoadStorePair (true,_postindex,n,t,t2,_acctype,MemOp_LOAD,_signed,_datasize,_offset) ->
      ([t; t2; n], [n], [n], [Next])

| `AArch64LoadImmediate (n,t,_acctype,MemOp_STORE,_signed,false,_postindex,_offset,_regsize,_datasize) ->
      ([], [n; t], [n], [Next])
| `AArch64LoadImmediate (n,t,_acctype,MemOp_STORE,_signed,true,_postindex,_offset,_regsize,_datasize) ->
      ([n], [n; t], [n], [Next])

| `AArch64LoadImmediate (n,t,_acctype,MemOp_LOAD,_signed,false,_postindex,_offset,_regsize,_datasize) ->
      ([t], [n], [n], [Next])
| `AArch64LoadImmediate (n,t,_acctype,MemOp_LOAD,_signed,true,_postindex,_offset,_regsize,_datasize) ->
      ([t; n], [n], [n], [Next])

| `AArch64LoadLiteral (t,MemOp_STORE,_signed,_size,_offset,_datasize) ->
      ([], [t], [], [Next])

| `AArch64LoadLiteral (t,MemOp_LOAD,_signed,_size,_offset,_datasize) ->
      ([t], [], [], [Next])

| `AArch64LoadRegister (n,t,m,_acctype,MemOp_STORE,_signed,false,_postindex,_extend_type,_shift,_regsize,_datasize) ->
    ([], [n; t; m], [n], [Next])
| `AArch64LoadRegister (n,t,m,_acctype,MemOp_STORE,_signed,true,_postindex,_extend_type,_shift,_regsize,_datasize) ->
    ([n], [n; t; m], [n], [Next])

| `AArch64LoadRegister (n,t,m,_acctype,MemOp_LOAD,_signed,false,_postindex,_extend_type,_shift,_regsize,_datasize) ->
    ([t], [n; m], [n], [Next])
| `AArch64LoadRegister (n,t,m,_acctype,MemOp_LOAD,_signed,true,_postindex,_extend_type,_shift,_regsize,_datasize) ->
    ([t; n], [n; m], [n], [Next])

| `AArch64LoadRegister (n,t,m,_acctype,MemOp_PREFETCH,_signed,_wback,_postindex,_extend_type,_shift,_regsize,_datasize) ->
    ([], [n; m], [n], [Next])

| `AArch64MultiplyAddSub (d,n,m,a,_destsize,_datasize,_sub_op) ->
      ([d], [n; m; a], [], [Next])

| `AArch64MoveWide (d,_datasize,_imm,_pos,_opcode) ->
      ([d], [], [], [Next])

| `AArch64Reverse (d,n,_datasize,_op) ->
      ([d], [n], [], [Next])

| `AArch64Division (d,n,m,_datasize,_unsigned) ->
      ([d], [n; m], [], [Next])

| `AArch64MultiplyAddSubLong (d,n,m,a,_destsize,_datasize,_sub_op,_unsigned) ->
      ([d], [n; m; a], [], [Next])

| `AArch64MultiplyHigh (d,n,m,a,_destsize,_datasize,_unsigned) ->
      ([d], [n; m; a], [], [Next])

| `AArch64TestBitAndBranch (t,_datasize,_bit_pos,_bit_val,_offset) ->
      ([], [t], [], [Next])

| `AArch64MoveSystemRegister (t,_sys_op0,_sys_op1,_sys_op2,_sys_crn,_sys_crm,true) ->
      ([t], [], [], [Next])
| `AArch64MoveSystemRegister (t,_sys_op0,_sys_op1,_sys_op2,_sys_crn,_sys_crm,false) ->
      ([], [t], [], [Next])

| `AArch64MoveSystemImmediate (_operand,_field) ->
      ([], [], [], [Next])