330 строки
9.6 KiB
Go
330 строки
9.6 KiB
Go
// Generated by ARM internal tool
|
|
// DO NOT EDIT
|
|
|
|
// Copyright 2017 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package arm64asm
|
|
|
|
// Following functions are used as the predicator: canDecode of according instruction
|
|
// Refer to instFormat inside decode.go for more details
|
|
|
|
func at_sys_cr_system_cond(instr uint32) bool {
|
|
return sys_op_4((instr>>16)&0x7, 0x7, 0x8, (instr>>5)&0x7) == sys_AT
|
|
}
|
|
|
|
func bfi_bfm_32m_bitfield_cond(instr uint32) bool {
|
|
return (instr>>5)&0x1f != 0x1f && uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func bfi_bfm_64m_bitfield_cond(instr uint32) bool {
|
|
return (instr>>5)&0x1f != 0x1f && uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func bfxil_bfm_32m_bitfield_cond(instr uint32) bool {
|
|
return uint8((instr>>10)&0x3f) >= uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func bfxil_bfm_64m_bitfield_cond(instr uint32) bool {
|
|
return uint8((instr>>10)&0x3f) >= uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func cinc_csinc_32_condsel_cond(instr uint32) bool {
|
|
return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func cinc_csinc_64_condsel_cond(instr uint32) bool {
|
|
return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func cinv_csinv_32_condsel_cond(instr uint32) bool {
|
|
return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func cinv_csinv_64_condsel_cond(instr uint32) bool {
|
|
return instr&0x1f0000 != 0x1f0000 && instr&0xe000 != 0xe000 && instr&0x3e0 != 0x3e0 && (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func cneg_csneg_32_condsel_cond(instr uint32) bool {
|
|
return instr&0xe000 != 0xe000 && (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func cneg_csneg_64_condsel_cond(instr uint32) bool {
|
|
return instr&0xe000 != 0xe000 && (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func csinc_general_cond(instr uint32) bool {
|
|
return instr&0xe000 != 0xe000
|
|
}
|
|
func csinv_general_cond(instr uint32) bool {
|
|
return instr&0xe000 != 0xe000
|
|
}
|
|
func dc_sys_cr_system_cond(instr uint32) bool {
|
|
return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == sys_DC
|
|
}
|
|
|
|
func ic_sys_cr_system_cond(instr uint32) bool {
|
|
return sys_op_4((instr>>16)&0x7, 0x7, (instr>>8)&0xf, (instr>>5)&0x7) == sys_IC
|
|
}
|
|
|
|
func lsl_ubfm_32m_bitfield_cond(instr uint32) bool {
|
|
return instr&0xfc00 != 0x7c00 && (instr>>10)&0x3f+1 == (instr>>16)&0x3f
|
|
}
|
|
|
|
func lsl_ubfm_64m_bitfield_cond(instr uint32) bool {
|
|
return instr&0xfc00 != 0xfc00 && (instr>>10)&0x3f+1 == (instr>>16)&0x3f
|
|
}
|
|
|
|
func mov_orr_32_log_imm_cond(instr uint32) bool {
|
|
return !move_wide_preferred_4((instr>>31)&0x1, (instr>>22)&0x1, (instr>>10)&0x3f, (instr>>16)&0x3f)
|
|
}
|
|
|
|
func mov_orr_64_log_imm_cond(instr uint32) bool {
|
|
return !move_wide_preferred_4((instr>>31)&0x1, (instr>>22)&0x1, (instr>>10)&0x3f, (instr>>16)&0x3f)
|
|
}
|
|
|
|
func mov_movn_32_movewide_cond(instr uint32) bool {
|
|
return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0) && !is_ones_n16((instr>>5)&0xffff)
|
|
}
|
|
|
|
func mov_movn_64_movewide_cond(instr uint32) bool {
|
|
return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0)
|
|
}
|
|
|
|
func mov_add_32_addsub_imm_cond(instr uint32) bool {
|
|
return instr&0x1f == 0x1f || (instr>>5)&0x1f == 0x1f
|
|
}
|
|
|
|
func mov_add_64_addsub_imm_cond(instr uint32) bool {
|
|
return instr&0x1f == 0x1f || (instr>>5)&0x1f == 0x1f
|
|
}
|
|
|
|
func mov_movz_32_movewide_cond(instr uint32) bool {
|
|
return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0)
|
|
}
|
|
|
|
func mov_movz_64_movewide_cond(instr uint32) bool {
|
|
return !(is_zero((instr>>5)&0xffff) && (instr>>21)&0x3 != 0x0)
|
|
}
|
|
|
|
func ror_extr_32_extract_cond(instr uint32) bool {
|
|
return (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func ror_extr_64_extract_cond(instr uint32) bool {
|
|
return (instr>>5)&0x1f == (instr>>16)&0x1f
|
|
}
|
|
|
|
func sbfiz_sbfm_32m_bitfield_cond(instr uint32) bool {
|
|
return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func sbfiz_sbfm_64m_bitfield_cond(instr uint32) bool {
|
|
return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func sbfx_sbfm_32m_bitfield_cond(instr uint32) bool {
|
|
return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
|
|
}
|
|
|
|
func sbfx_sbfm_64m_bitfield_cond(instr uint32) bool {
|
|
return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
|
|
}
|
|
|
|
func tlbi_sys_cr_system_cond(instr uint32) bool {
|
|
return sys_op_4((instr>>16)&0x7, 0x8, (instr>>8)&0xf, (instr>>5)&0x7) == sys_TLBI
|
|
}
|
|
|
|
func ubfiz_ubfm_32m_bitfield_cond(instr uint32) bool {
|
|
return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func ubfiz_ubfm_64m_bitfield_cond(instr uint32) bool {
|
|
return uint8((instr>>10)&0x3f) < uint8((instr>>16)&0x3f)
|
|
}
|
|
|
|
func ubfx_ubfm_32m_bitfield_cond(instr uint32) bool {
|
|
return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
|
|
}
|
|
|
|
func ubfx_ubfm_64m_bitfield_cond(instr uint32) bool {
|
|
return bfxpreferred_4((instr>>31)&0x1, extract_bit((instr>>29)&0x3, 1), (instr>>10)&0x3f, (instr>>16)&0x3f)
|
|
}
|
|
|
|
func fcvtzs_asisdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func fcvtzs_asimdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func fcvtzu_asisdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func fcvtzu_asimdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func mov_umov_asimdins_w_w_cond(instr uint32) bool {
|
|
return ((instr>>16)&0x1f)&0x7 == 0x4
|
|
}
|
|
|
|
func mov_umov_asimdins_x_x_cond(instr uint32) bool {
|
|
return ((instr>>16)&0x1f)&0xf == 0x8
|
|
}
|
|
|
|
func mov_orr_asimdsame_only_cond(instr uint32) bool {
|
|
return (instr>>16)&0x1f == (instr>>5)&0x1f
|
|
}
|
|
|
|
func rshrn_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func scvtf_asisdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func scvtf_asimdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func shl_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func shl_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func shrn_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sli_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sli_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqrshrn_asisdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqrshrn_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqrshrun_asisdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqrshrun_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshl_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshl_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshlu_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshlu_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshrn_asisdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshrn_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshrun_asisdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sqshrun_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sri_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sri_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func srshr_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func srshr_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func srsra_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func srsra_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sshll_asimdshf_l_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sshr_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sshr_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ssra_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ssra_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func sxtl_sshll_asimdshf_l_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0 && bit_count((instr>>19)&0xf) == 1
|
|
}
|
|
|
|
func ucvtf_asisdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ucvtf_asimdshf_c_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uqrshrn_asisdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uqrshrn_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uqshl_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uqshl_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uqshrn_asisdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uqshrn_asimdshf_n_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func urshr_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func urshr_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ursra_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ursra_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ushll_asimdshf_l_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ushr_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func ushr_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func usra_asisdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func usra_asimdshf_r_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0
|
|
}
|
|
func uxtl_ushll_asimdshf_l_cond(instr uint32) bool {
|
|
return instr&0x780000 != 0x0 && bit_count((instr>>19)&0xf) == 1
|
|
}
|