• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Generated by ARM internal tool
2// DO NOT EDIT
3
4// Copyright 2017 The Go Authors. All rights reserved.
5// Use of this source code is governed by a BSD-style
6// license that can be found in the LICENSE file.
7
8package arm64asm
9
10// Following functions are used as the predicator: canDecode of according instruction
11// Refer to instFormat inside decode.go for more details
12
13func at_sys_cr_system_cond(instr uint32) bool {
14	return sys_op_4((instr>>16)&0x7, 0x7, 0x8, (instr>>5)&0x7) == sys_AT
15}
16
17func bfi_bfm_32m_bitfield_cond(instr uint32) bool {
18	return (instr>>5)&0x1f != 0x1f && uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
19}
20
21func bfi_bfm_64m_bitfield_cond(instr uint32) bool {
22	return (instr>>5)&0x1f != 0x1f && uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
23}
24
25func bfxil_bfm_32m_bitfield_cond(instr uint32) bool {
26	return uint8((instr>>10)&0x3f) >= uint8((instr>>16)&0x3f)
27}
28
29func bfxil_bfm_64m_bitfield_cond(instr uint32) bool {
30	return uint8((instr>>10)&0x3f) >= uint8((instr>>16)&0x3f)
31}
32
33func cinc_csinc_32_condsel_cond(instr uint32) bool {
34	return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
35}
36
37func cinc_csinc_64_condsel_cond(instr uint32) bool {
38	return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
39}
40
41func cinv_csinv_32_condsel_cond(instr uint32) bool {
42	return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
43}
44
45func cinv_csinv_64_condsel_cond(instr uint32) bool {
46	return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
47}
48
49func cneg_csneg_32_condsel_cond(instr uint32) bool {
50	return instr&0xe000 != 0xe000 && (instr>>5)&0x1f == (instr>>16)&0x1f
51}
52
53func cneg_csneg_64_condsel_cond(instr uint32) bool {
54	return instr&0xe000 != 0xe000 && (instr>>5)&0x1f == (instr>>16)&0x1f
55}
56
57func csinc_general_cond(instr uint32) bool {
58	return instr&0xe000 != 0xe000
59}
60func csinv_general_cond(instr uint32) bool {
61	return instr&0xe000 != 0xe000
62}
63func dc_sys_cr_system_cond(instr uint32) bool {
64	return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == sys_DC
65}
66
67func ic_sys_cr_system_cond(instr uint32) bool {
68	return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == sys_IC
69}
70
71func lsl_ubfm_32m_bitfield_cond(instr uint32) bool {
72	return instr&0xfc00 != 0x7c00 && (instr>>10)&0x3f+1 == (instr>>16)&0x3f
73}
74
75func lsl_ubfm_64m_bitfield_cond(instr uint32) bool {
76	return instr&0xfc00 != 0xfc00 && (instr>>10)&0x3f+1 == (instr>>16)&0x3f
77}
78
79func mov_orr_32_log_imm_cond(instr uint32) bool {
80	return !move_wide_preferred_4((instr>>31)&0x1, (instr>>22)&0x1, (instr>>10)&0x3f, (instr>>16)&0x3f)
81}
82
83func mov_orr_64_log_imm_cond(instr uint32) bool {
84	return !move_wide_preferred_4((instr>>31)&0x1, (instr>>22)&0x1, (instr>>10)&0x3f, (instr>>16)&0x3f)
85}
86
87func mov_movn_32_movewide_cond(instr uint32) bool {
88	return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0) && !is_ones_n16((instr>>5)&0xffff)
89}
90
91func mov_movn_64_movewide_cond(instr uint32) bool {
92	return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0)
93}
94
95func mov_add_32_addsub_imm_cond(instr uint32) bool {
96	return instr&0x1f == 0x1f || (instr>>5)&0x1f == 0x1f
97}
98
99func mov_add_64_addsub_imm_cond(instr uint32) bool {
100	return instr&0x1f == 0x1f || (instr>>5)&0x1f == 0x1f
101}
102
103func mov_movz_32_movewide_cond(instr uint32) bool {
104	return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0)
105}
106
107func mov_movz_64_movewide_cond(instr uint32) bool {
108	return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0)
109}
110
111func ror_extr_32_extract_cond(instr uint32) bool {
112	return (instr>>5)&0x1f == (instr>>16)&0x1f
113}
114
115func ror_extr_64_extract_cond(instr uint32) bool {
116	return (instr>>5)&0x1f == (instr>>16)&0x1f
117}
118
119func sbfiz_sbfm_32m_bitfield_cond(instr uint32) bool {
120	return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
121}
122
123func sbfiz_sbfm_64m_bitfield_cond(instr uint32) bool {
124	return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
125}
126
127func sbfx_sbfm_32m_bitfield_cond(instr uint32) bool {
128	return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
129}
130
131func sbfx_sbfm_64m_bitfield_cond(instr uint32) bool {
132	return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
133}
134
135func tlbi_sys_cr_system_cond(instr uint32) bool {
136	return sys_op_4((instr>>16)&0x7, 0x8, (instr>>8)&0xf, (instr>>5)&0x7) == sys_TLBI
137}
138
139func ubfiz_ubfm_32m_bitfield_cond(instr uint32) bool {
140	return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
141}
142
143func ubfiz_ubfm_64m_bitfield_cond(instr uint32) bool {
144	return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
145}
146
147func ubfx_ubfm_32m_bitfield_cond(instr uint32) bool {
148	return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
149}
150
151func ubfx_ubfm_64m_bitfield_cond(instr uint32) bool {
152	return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
153}
154
155func fcvtzs_asisdshf_c_cond(instr uint32) bool {
156	return instr&0x780000 != 0x0
157}
158func fcvtzs_asimdshf_c_cond(instr uint32) bool {
159	return instr&0x780000 != 0x0
160}
161func fcvtzu_asisdshf_c_cond(instr uint32) bool {
162	return instr&0x780000 != 0x0
163}
164func fcvtzu_asimdshf_c_cond(instr uint32) bool {
165	return instr&0x780000 != 0x0
166}
167func mov_umov_asimdins_w_w_cond(instr uint32) bool {
168	return ((instr>>16)&0x1f)&0x7 == 0x4
169}
170
171func mov_umov_asimdins_x_x_cond(instr uint32) bool {
172	return ((instr>>16)&0x1f)&0xf == 0x8
173}
174
175func mov_orr_asimdsame_only_cond(instr uint32) bool {
176	return (instr>>16)&0x1f == (instr>>5)&0x1f
177}
178
179func rshrn_asimdshf_n_cond(instr uint32) bool {
180	return instr&0x780000 != 0x0
181}
182func scvtf_asisdshf_c_cond(instr uint32) bool {
183	return instr&0x780000 != 0x0
184}
185func scvtf_asimdshf_c_cond(instr uint32) bool {
186	return instr&0x780000 != 0x0
187}
188func shl_asisdshf_r_cond(instr uint32) bool {
189	return instr&0x780000 != 0x0
190}
191func shl_asimdshf_r_cond(instr uint32) bool {
192	return instr&0x780000 != 0x0
193}
194func shrn_asimdshf_n_cond(instr uint32) bool {
195	return instr&0x780000 != 0x0
196}
197func sli_asisdshf_r_cond(instr uint32) bool {
198	return instr&0x780000 != 0x0
199}
200func sli_asimdshf_r_cond(instr uint32) bool {
201	return instr&0x780000 != 0x0
202}
203func sqrshrn_asisdshf_n_cond(instr uint32) bool {
204	return instr&0x780000 != 0x0
205}
206func sqrshrn_asimdshf_n_cond(instr uint32) bool {
207	return instr&0x780000 != 0x0
208}
209func sqrshrun_asisdshf_n_cond(instr uint32) bool {
210	return instr&0x780000 != 0x0
211}
212func sqrshrun_asimdshf_n_cond(instr uint32) bool {
213	return instr&0x780000 != 0x0
214}
215func sqshl_asisdshf_r_cond(instr uint32) bool {
216	return instr&0x780000 != 0x0
217}
218func sqshl_asimdshf_r_cond(instr uint32) bool {
219	return instr&0x780000 != 0x0
220}
221func sqshlu_asisdshf_r_cond(instr uint32) bool {
222	return instr&0x780000 != 0x0
223}
224func sqshlu_asimdshf_r_cond(instr uint32) bool {
225	return instr&0x780000 != 0x0
226}
227func sqshrn_asisdshf_n_cond(instr uint32) bool {
228	return instr&0x780000 != 0x0
229}
230func sqshrn_asimdshf_n_cond(instr uint32) bool {
231	return instr&0x780000 != 0x0
232}
233func sqshrun_asisdshf_n_cond(instr uint32) bool {
234	return instr&0x780000 != 0x0
235}
236func sqshrun_asimdshf_n_cond(instr uint32) bool {
237	return instr&0x780000 != 0x0
238}
239func sri_asisdshf_r_cond(instr uint32) bool {
240	return instr&0x780000 != 0x0
241}
242func sri_asimdshf_r_cond(instr uint32) bool {
243	return instr&0x780000 != 0x0
244}
245func srshr_asisdshf_r_cond(instr uint32) bool {
246	return instr&0x780000 != 0x0
247}
248func srshr_asimdshf_r_cond(instr uint32) bool {
249	return instr&0x780000 != 0x0
250}
251func srsra_asisdshf_r_cond(instr uint32) bool {
252	return instr&0x780000 != 0x0
253}
254func srsra_asimdshf_r_cond(instr uint32) bool {
255	return instr&0x780000 != 0x0
256}
257func sshll_asimdshf_l_cond(instr uint32) bool {
258	return instr&0x780000 != 0x0
259}
260func sshr_asisdshf_r_cond(instr uint32) bool {
261	return instr&0x780000 != 0x0
262}
263func sshr_asimdshf_r_cond(instr uint32) bool {
264	return instr&0x780000 != 0x0
265}
266func ssra_asisdshf_r_cond(instr uint32) bool {
267	return instr&0x780000 != 0x0
268}
269func ssra_asimdshf_r_cond(instr uint32) bool {
270	return instr&0x780000 != 0x0
271}
272func sxtl_sshll_asimdshf_l_cond(instr uint32) bool {
273	return instr&0x780000 != 0x0 && bit_count((instr>>19)&0xf) == 1
274}
275
276func ucvtf_asisdshf_c_cond(instr uint32) bool {
277	return instr&0x780000 != 0x0
278}
279func ucvtf_asimdshf_c_cond(instr uint32) bool {
280	return instr&0x780000 != 0x0
281}
282func uqrshrn_asisdshf_n_cond(instr uint32) bool {
283	return instr&0x780000 != 0x0
284}
285func uqrshrn_asimdshf_n_cond(instr uint32) bool {
286	return instr&0x780000 != 0x0
287}
288func uqshl_asisdshf_r_cond(instr uint32) bool {
289	return instr&0x780000 != 0x0
290}
291func uqshl_asimdshf_r_cond(instr uint32) bool {
292	return instr&0x780000 != 0x0
293}
294func uqshrn_asisdshf_n_cond(instr uint32) bool {
295	return instr&0x780000 != 0x0
296}
297func uqshrn_asimdshf_n_cond(instr uint32) bool {
298	return instr&0x780000 != 0x0
299}
300func urshr_asisdshf_r_cond(instr uint32) bool {
301	return instr&0x780000 != 0x0
302}
303func urshr_asimdshf_r_cond(instr uint32) bool {
304	return instr&0x780000 != 0x0
305}
306func ursra_asisdshf_r_cond(instr uint32) bool {
307	return instr&0x780000 != 0x0
308}
309func ursra_asimdshf_r_cond(instr uint32) bool {
310	return instr&0x780000 != 0x0
311}
312func ushll_asimdshf_l_cond(instr uint32) bool {
313	return instr&0x780000 != 0x0
314}
315func ushr_asisdshf_r_cond(instr uint32) bool {
316	return instr&0x780000 != 0x0
317}
318func ushr_asimdshf_r_cond(instr uint32) bool {
319	return instr&0x780000 != 0x0
320}
321func usra_asisdshf_r_cond(instr uint32) bool {
322	return instr&0x780000 != 0x0
323}
324func usra_asimdshf_r_cond(instr uint32) bool {
325	return instr&0x780000 != 0x0
326}
327func uxtl_ushll_asimdshf_l_cond(instr uint32) bool {
328	return instr&0x780000 != 0x0 && bit_count((instr>>19)&0xf) == 1
329}
330