// 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 }