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