Last active
December 5, 2022 08:58
-
-
Save SciresM/edee7a2e388480e0df43b7bacf94ca33 to your computer and use it in GitHub Desktop.
quick and dirty pokemon masters patcher
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from struct import unpack as up, pack as pk | |
import arm64, os, sys | |
TEXT_START_OFFSET = 0x507300 | |
TEXT_END_OFFSET = 0x32FEBF0 | |
RWDATA_START = 0x3A9F000 | |
ENCTABLE_START = 0x3F2C238 | |
ENCTABLE_END = 0x3F957B8 | |
INSTRUCTIONS = [] | |
NOP = 0xD503201F | |
def get_instruction(address): | |
return INSTRUCTIONS[(address-TEXT_START_OFFSET)/4] | |
def set_instruction(address, value): | |
global INSTRUCTIONS | |
INSTRUCTIONS[(address - TEXT_START_OFFSET)/4] = value | |
def decode_instruction(address): | |
return arm64.decode_root(get_instruction(address)) | |
def fix_obfuscation_type1(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals): | |
if cur_name != 'ADR_only_pcreladdr' or next_name != 'LDRSW_64_ldst_pos' or thr_name != 'ADD_64_addsub_shift': | |
return | |
assert cur_vals['Rd'] == 8 and cur_vals['immlo'] == 0 and cur_vals['immhi'] == 9 | |
br_name, br_vals = decode_instruction(address + 8 * 4) | |
assert br_name == 'BR_64_branch_reg' and br_vals['Rn'] == 8 | |
assert get_instruction(address + 4 * 9) == 0x4 | |
set_instruction(address + 8 * 4, NOP) | |
set_instruction(address + 9 * 4, NOP) | |
def fix_obfuscation_type2(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals): | |
if cur_name != 'ADR_only_pcreladdr' or next_name != 'AND_64_log_shift' or thr_name != 'MOVZ_64_movewide': | |
return | |
assert cur_vals['Rd'] == 8 and cur_vals['immlo'] == 0 and cur_vals['immhi'] == 7 | |
br_name, br_vals = decode_instruction(address + 6 * 4) | |
assert br_name == 'BR_64_branch_reg' and br_vals['Rn'] == 8 | |
set_instruction(address + 6 * 4, NOP) | |
def fix_obfuscation_type3(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals): | |
if cur_name != 'MOVZ_64_movewide' or next_name != 'ADR_only_pcreladdr' or thr_name != 'MADD_64A_dp_3src': | |
return | |
br_name, br_vals = decode_instruction(address + 0xC) | |
assert br_name == 'BR_64_branch_reg' and br_vals['Rn'] == 8 | |
assert next_vals['immhi'] == 3 | |
assert cur_vals['Rd'] == 8 and cur_vals['hw'] == 0 and cur_vals['imm16'] == 1 | |
set_instruction(address + 3 * 4, NOP) | |
def fix_obfuscation_type4(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals): | |
if cur_name != 'CSINC_32_condsel' or thr_name != 'ADR_only_pcreladdr': | |
return | |
if cur_vals['cond'] != 0 or cur_vals['Rn'] == 31: | |
return | |
assert thr_vals['immlo'] == 0 and thr_vals['immhi'] == 10 | |
br_name, br_vals = decode_instruction(address + 11 * 4) | |
assert br_name == 'BR_64_branch_reg' and br_vals['Rn'] == thr_vals['Rd'] | |
set_instruction(address + 11 * 4, NOP) | |
def fix_obfuscation_type5(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals): | |
if cur_name != 'CSINC_32_condsel' or next_name != 'ADR_only_pcreladdr': | |
return | |
assert thr_name == 'ORN_64_log_shift' | |
assert next_vals['immlo'] == 0 and next_vals['immhi'] == 10 | |
br_name, br_vals = decode_instruction(address + 10 * 4) | |
assert br_name == 'BR_64_branch_reg' and br_vals['Rn'] == next_vals['Rd'] | |
set_instruction(address + 10 * 4, NOP) | |
def fix_obfuscation(address, cur_name, cur_vals): | |
if cur_name != 'ADR_only_pcreladdr' and cur_name != 'MOVZ_64_movewide' and cur_name != 'CSINC_32_condsel': | |
return | |
try: | |
next_name, next_vals = decode_instruction(address + 4) | |
thr_name, thr_vals = decode_instruction(address + 8) | |
except: | |
return | |
fix_obfuscation_type1(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals) | |
fix_obfuscation_type2(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals) | |
fix_obfuscation_type3(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals) | |
fix_obfuscation_type4(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals) | |
fix_obfuscation_type5(address, cur_name, cur_vals, next_name, next_vals, thr_name, thr_vals) | |
RWDATA_KEY = 'ACC5B1411A1E954D994D75D9491CBC5DC8A3230B2ED5BEB36397F664E60AC8B3F28CD06A991AAB6660B1C7B02506B9309326B2E4CC67D8B258ACC9B269039310D63E9B92B1F4A94F902CBF571A03F14F306F51FCD940993C26B2D91C425CCD2904F198AE2E0DBCC11F363B98A6C09FC6010545E462B16794C26BE106152AED92'.decode('hex') | |
def decrypt_rwdata_portion(indata, offset, size): | |
return ''.join(chr(ord(indata[offset + i]) ^ ord(RWDATA_KEY[i & 0x7F])) for i in xrange(size)) | |
def main(argc, argv): | |
global INSTRUCTIONS | |
if argc != 3: | |
print 'Usage: %s in out' % argv[0] | |
return 1 | |
with open(argv[1], 'rb') as f: | |
indata = f.read() | |
text = indata[TEXT_START_OFFSET:TEXT_END_OFFSET] | |
INSTRUCTIONS = list(up('<'+('I'*(len(text)/4)), text)) | |
STEP_DIFF = ((TEXT_END_OFFSET - TEXT_START_OFFSET) / 100) & ~3 | |
for addr in xrange(TEXT_START_OFFSET, TEXT_END_OFFSET - 12, 4): | |
try: | |
cur_name, cur_vals = decode_instruction(addr) | |
except: | |
continue | |
fix_obfuscation(addr, cur_name, cur_vals) | |
if (addr - TEXT_START_OFFSET) % STEP_DIFF == 0: | |
print '%02d%%' % ((addr - TEXT_START_OFFSET) / STEP_DIFF) | |
ENTRIES = [up('<III', indata[i:i+12]) for i in xrange(ENCTABLE_START, ENCTABLE_END, 12)] | |
def get_offset(i): | |
absolute = (ENTRIES[i+1][0] - ENTRIES[i][0] - ENTRIES[i][1] - ENTRIES[i][2]) & 0xFFFFFFFF | |
if absolute & 0x80000000: | |
relative = absolute - 0x100000000 | |
else: | |
relative = absolute | |
return relative | |
get_len = lambda i: (ENTRIES[i+1][0] + ENTRIES[i][1] - ENTRIES[i+1][1]) & 0xFFFFFFFF | |
get_reloc = lambda i: (ENTRIES[i+1][2] - ENTRIES[i+1][1] - ENTRIES[i][2]) & 0xFFFFFFFF | |
with open(argv[2], 'wb') as f: | |
f.write(indata[:TEXT_START_OFFSET]) | |
f.write(pk('<'+('I'*(len(text)/4)), *INSTRUCTIONS)) | |
f.write(indata[TEXT_END_OFFSET:]) | |
for i in xrange(len(ENTRIES) - 1): | |
offset = get_offset(i) | |
length = get_len(i) | |
reloc = get_reloc(i) | |
if length == 0: | |
break | |
assert not reloc | |
start = ENCTABLE_START + offset | |
assert start >= RWDATA_START | |
f.seek(start) | |
f.write(decrypt_rwdata_portion(indata, start, length)) | |
return 0 | |
if __name__ == '__main__': | |
sys.exit(main(len(sys.argv), sys.argv)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def is_dataproc_immediate(d): return (d & 0x1c000000) == 0x10000000 | |
def is_branch_and_sys(d): return (d & 0x1c000000) == 0x14000000 | |
def is_load_and_store(d): return (d & 0x0a000000) == 0x08000000 | |
def is_dataproc_register(d): return (d & 0x0e000000) == 0x0a000000 | |
def is_dataproc_simd(d): return (d & 0x0e000000) == 0x0e000000 | |
def is_pcreladdr(d): return (d & 0x1f000000) == 0x10000000 | |
def is_addsub_imm(d): return (d & 0x1f000000) == 0x11000000 | |
def is_log_imm(d): return (d & 0x1f800000) == 0x12000000 | |
def is_movewide(d): return (d & 0x1f800000) == 0x12800000 | |
def is_bitfield(d): return (d & 0x1f800000) == 0x13000000 | |
def is_extract(d): return (d & 0x1f800000) == 0x13800000 | |
def is_condbranch(d): return (d & 0xfe000000) == 0x54000000 | |
def is_exception(d): return (d & 0xff000000) == 0xd4000000 | |
def is_system(d): return (d & 0xffc00000) == 0xd5000000 | |
def is_branch_reg(d): return (d & 0xfe000000) == 0xd6000000 | |
def is_branch_imm(d): return (d & 0x7c000000) == 0x14000000 | |
def is_compbranch(d): return (d & 0x7e000000) == 0x34000000 | |
def is_testbranch(d): return (d & 0x7e000000) == 0x36000000 | |
def is_asisdlse(d): return (d & 0xbfbf0000) == 0x0c000000 | |
def is_asisdlsep(d): return (d & 0xbfa00000) == 0x0c800000 | |
def is_asisdlso(d): return (d & 0xbf9f0000) == 0x0d000000 | |
def is_asisdlsop(d): return (d & 0xbf800000) == 0x0d800000 | |
def is_ldstexcl(d): return (d & 0x3f000000) == 0x08000000 | |
def is_loadlit(d): return (d & 0x3b000000) == 0x18000000 | |
def is_ldstnapair_offs(d): return (d & 0x3b800000) == 0x28000000 | |
def is_ldstpair_post(d): return (d & 0x3b800000) == 0x28800000 | |
def is_ldstpair_off(d): return (d & 0x3b800000) == 0x29000000 | |
def is_ldstpair_pre(d): return (d & 0x3b800000) == 0x29800000 | |
def is_ldst_unscaled(d): return (d & 0x3b200c00) == 0x38000000 | |
def is_ldst_immpost(d): return (d & 0x3b200c00) == 0x38000400 | |
def is_ldst_unpriv(d): return (d & 0x3b200c00) == 0x38000800 | |
def is_ldst_immpre(d): return (d & 0x3b200c00) == 0x38000c00 | |
def is_memop(d): return (d & 0x3b200c00) == 0x38200000 | |
def is_ldst_regoff(d): return (d & 0x3b200c00) == 0x38200800 | |
def is_ldst_pac(d): return (d & 0x3b200400) == 0x38200400 | |
def is_ldst_pos(d): return (d & 0x3b000000) == 0x39000000 | |
def is_dp_2src(d): return (d & 0x5fe00000) == 0x1ac00000 | |
def is_dp_1src(d): return (d & 0x5fe00000) == 0x5ac00000 | |
def is_log_shift(d): return (d & 0x1f000000) == 0x0a000000 | |
def is_addsub_shift(d): return (d & 0x1f200000) == 0x0b000000 | |
def is_addsub_ext(d): return (d & 0x1f200000) == 0x0b200000 | |
def is_addsub_carry(d): return (d & 0x1fe00000) == 0x1a000000 | |
def is_condcmp_reg(d): return (d & 0x1fe00800) == 0x1a400000 | |
def is_condcmp_imm(d): return (d & 0x1fe00800) == 0x1a400800 | |
def is_condsel(d): return (d & 0x1fe00000) == 0x1a800000 | |
def is_dp_3src(d): return (d & 0x1f000000) == 0x1b000000 | |
def is_cryptoaes(d): return (d & 0xff3e0c00) == 0x4e280800 | |
def is_cryptosha3(d): return (d & 0xff208c00) == 0x5e000000 | |
def is_cryptosha2(d): return (d & 0xff3e0c00) == 0x5e280800 | |
def is_asisdone(d): return (d & 0xdfe08400) == 0x5e000400 | |
def is_asisdsamefp16(d): return (d & 0xdf60c400) == 0x5e400400 | |
def is_asisdmiscfp16(d): return (d & 0xdf7e0c00) == 0x5e780800 | |
def is_asisdsame2(d): return (d & 0xdf208400) == 0x5e008400 | |
def is_asisdmisc(d): return (d & 0xdf3e0c00) == 0x5e200800 | |
def is_asisdpair(d): return (d & 0xdf3e0c00) == 0x5e300800 | |
def is_asisddiff(d): return (d & 0xdf200c00) == 0x5e200000 | |
def is_asisdsame(d): return (d & 0xdf200400) == 0x5e200400 | |
def is_asisdshf(d): return (d & 0xdf800400) == 0x5f000400 | |
def is_asisdelem(d): return (d & 0xdf000400) == 0x5f000000 | |
def is_asimdtbl(d): return (d & 0xbf208c00) == 0x0e000000 | |
def is_asimdperm(d): return (d & 0xbf208c00) == 0x0e000800 | |
def is_asimdext(d): return (d & 0xbf208400) == 0x2e000000 | |
def is_asimdins(d): return (d & 0x9fe08400) == 0x0e000400 | |
def is_asimdsamefp16(d): return (d & 0x9f60c400) == 0x0e400400 | |
def is_asimdmiscfp16(d): return (d & 0x9f7e0c00) == 0x0e780800 | |
def is_asimdsame2(d): return (d & 0x9f208400) == 0x0e008400 | |
def is_asimdmisc(d): return (d & 0x9f3e0c00) == 0x0e200800 | |
def is_asimdall(d): return (d & 0x9f3e0c00) == 0x0e300800 | |
def is_asimddiff(d): return (d & 0x9f200c00) == 0x0e200000 | |
def is_asimdsame(d): return (d & 0x9f200400) == 0x0e200400 | |
def is_asimdimm(d): return (d & 0x9ff80400) == 0x0f000400 | |
def is_asimdshf(d): return (d & 0x9f800400) == 0x0f000400 and (d & 0x780000) != 0x000000 | |
def is_asimdelem(d): return (d & 0x9f000400) == 0x0f000000 | |
def is_crypto3_imm2(d): return (d & 0xffe0c000) == 0xce408000 | |
def is_cryptosha512_3(d): return (d & 0xffe0b000) == 0xce608000 | |
def is_crypto4(d): return (d & 0xff808000) == 0xce000000 | |
def is_crypto3_imm6(d): return (d & 0xffe00000) == 0xce800000 | |
def is_cryptosha512_2(d): return (d & 0xfffff000) == 0xcec08000 | |
def is_float2fix(d): return (d & 0x5f200000) == 0x1e000000 | |
def is_float2int(d): return (d & 0x5f20fc00) == 0x1e200000 | |
def is_floatdp1(d): return (d & 0x5f207c00) == 0x1e204000 | |
def is_floatcmp(d): return (d & 0x5f203c00) == 0x1e202000 | |
def is_floatimm(d): return (d & 0x5f201c00) == 0x1e201000 | |
def is_floatccmp(d): return (d & 0x5f200c00) == 0x1e200400 | |
def is_floatdp2(d): return (d & 0x5f200c00) == 0x1e200800 | |
def is_floatsel(d): return (d & 0x5f200c00) == 0x1e200c00 | |
def is_floatdp3(d): return (d & 0x5f000000) == 0x1f000000 | |
def is_CBZ_32_compbranch(d): return (d & 0xff000000) == 0x34000000 | |
def is_CBNZ_32_compbranch(d): return (d & 0xff000000) == 0x35000000 | |
def is_CBZ_64_compbranch(d): return (d & 0xff000000) == 0xb4000000 | |
def is_CBNZ_64_compbranch(d): return (d & 0xff000000) == 0xb5000000 | |
def is_B_only_condbranch(d): return (d & 0xff000010) == 0x54000000 | |
def is_SVC_EX_exception(d): return (d & 0xffe0001f) == 0xd4000001 | |
def is_HVC_EX_exception(d): return (d & 0xffe0001f) == 0xd4000002 | |
def is_SMC_EX_exception(d): return (d & 0xffe0001f) == 0xd4000003 | |
def is_BRK_EX_exception(d): return (d & 0xffe0001f) == 0xd4200000 | |
def is_HLT_EX_exception(d): return (d & 0xffe0001f) == 0xd4400000 | |
def is_DCPS1_DC_exception(d): return (d & 0xffe0001f) == 0xd4a00001 | |
def is_DCPS2_DC_exception(d): return (d & 0xffe0001f) == 0xd4a00002 | |
def is_DCPS3_DC_exception(d): return (d & 0xffe0001f) == 0xd4a00003 | |
def is_MSR_SI_system(d): return (d & 0xfff8f01f) == 0xd500401f | |
def is_HINT_2(d): return (d & 0xfffff01f) == 0xd503201f and (d & 0x000d00) != 0x000000 | |
def is_NOP_HI_system(d): return (d & 0xffffffff) == 0xd503201f | |
def is_YIELD_HI_system(d): return (d & 0xffffffff) == 0xd503203f | |
def is_WFE_HI_system(d): return (d & 0xffffffff) == 0xd503205f | |
def is_WFI_HI_system(d): return (d & 0xffffffff) == 0xd503207f | |
def is_SEV_HI_system(d): return (d & 0xffffffff) == 0xd503209f | |
def is_SEVL_HI_system(d): return (d & 0xffffffff) == 0xd50320bf | |
def is_HINT_1(d): return (d & 0xffffffdf) == 0xd50320df | |
def is_XPACLRI_HI_system(d): return (d & 0xffffffff) == 0xd50320ff | |
def is_PACIA1716_HI_system(d): return (d & 0xffffffff) == 0xd503211f | |
def is_PACIB1716_HI_system(d): return (d & 0xffffffff) == 0xd503215f | |
def is_AUTIA1716_HI_system(d): return (d & 0xffffffff) == 0xd503219f | |
def is_AUTIB1716_HI_system(d): return (d & 0xffffffff) == 0xd50321df | |
def is_HINT_3(d): return (d & 0xffffff1f) == 0xd503221f and (d & 0x0000c0) != 0x000000 | |
def is_ESB_HI_system(d): return (d & 0xffffffff) == 0xd503221f | |
def is_PSB_HC_system(d): return (d & 0xffffffff) == 0xd503223f | |
def is_PACIAZ_HI_system(d): return (d & 0xffffffff) == 0xd503231f | |
def is_PACIASP_HI_system(d): return (d & 0xffffffff) == 0xd503233f | |
def is_PACIBZ_HI_system(d): return (d & 0xffffffff) == 0xd503235f | |
def is_PACIBSP_HI_system(d): return (d & 0xffffffff) == 0xd503237f | |
def is_AUTIAZ_HI_system(d): return (d & 0xffffffff) == 0xd503239f | |
def is_AUTIASP_HI_system(d): return (d & 0xffffffff) == 0xd50323bf | |
def is_AUTIBZ_HI_system(d): return (d & 0xffffffff) == 0xd50323df | |
def is_AUTIBSP_HI_system(d): return (d & 0xffffffff) == 0xd50323ff | |
def is_CLREX_BN_system(d): return (d & 0xfffff0ff) == 0xd503305f | |
def is_DSB_BO_system(d): return (d & 0xfffff0ff) == 0xd503309f | |
def is_DMB_BO_system(d): return (d & 0xfffff0ff) == 0xd50330bf | |
def is_ISB_BI_system(d): return (d & 0xfffff0ff) == 0xd50330df | |
def is_SYS_CR_system(d): return (d & 0xfff80000) == 0xd5080000 | |
def is_MSR_SR_system(d): return (d & 0xfff00000) == 0xd5100000 | |
def is_SYSL_RC_system(d): return (d & 0xfff80000) == 0xd5280000 | |
def is_MRS_RS_system(d): return (d & 0xfff00000) == 0xd5300000 | |
def is_TBZ_only_testbranch(d): return (d & 0x7f000000) == 0x36000000 | |
def is_TBNZ_only_testbranch(d): return (d & 0x7f000000) == 0x37000000 | |
def is_B_only_branch_imm(d): return (d & 0xfc000000) == 0x14000000 | |
def is_BL_only_branch_imm(d): return (d & 0xfc000000) == 0x94000000 | |
def is_BR_64_branch_reg(d): return (d & 0xfffffc1f) == 0xd61f0000 | |
def is_BRAAZ_64_branch_reg(d): return (d & 0xfffffc1f) == 0xd61f081f | |
def is_BRABZ_64_branch_reg(d): return (d & 0xfffffc1f) == 0xd61f0c1f | |
def is_BLR_64_branch_reg(d): return (d & 0xfffffc1f) == 0xd63f0000 | |
def is_BLRAAZ_64_branch_reg(d): return (d & 0xfffffc1f) == 0xd63f081f | |
def is_BLRABZ_64_branch_reg(d): return (d & 0xfffffc1f) == 0xd63f0c1f | |
def is_RET_64R_branch_reg(d): return (d & 0xfffffc1f) == 0xd65f0000 | |
def is_RETAA_64E_branch_reg(d): return (d & 0xffffffff) == 0xd65f0bff | |
def is_RETAB_64E_branch_reg(d): return (d & 0xffffffff) == 0xd65f0fff | |
def is_ERET_64E_branch_reg(d): return (d & 0xffffffff) == 0xd69f03e0 | |
def is_ERETAA_64E_branch_reg(d): return (d & 0xffffffff) == 0xd69f0bff | |
def is_ERETAB_64E_branch_reg(d): return (d & 0xffffffff) == 0xd69f0fff | |
def is_DRPS_64E_branch_reg(d): return (d & 0xffffffff) == 0xd6bf03e0 | |
def is_BRAA_64P_branch_reg(d): return (d & 0xfffffc00) == 0xd71f0800 | |
def is_BRAB_64P_branch_reg(d): return (d & 0xfffffc00) == 0xd71f0c00 | |
def is_BLRAA_64P_branch_reg(d): return (d & 0xfffffc00) == 0xd73f0800 | |
def is_BLRAB_64P_branch_reg(d): return (d & 0xfffffc00) == 0xd73f0c00 | |
def is_ST4_asisdlse_R4(d): return (d & 0xbffff000) == 0x0c000000 | |
def is_ST1_asisdlse_R4_4v(d): return (d & 0xbffff000) == 0x0c002000 | |
def is_ST3_asisdlse_R3(d): return (d & 0xbffff000) == 0x0c004000 | |
def is_ST1_asisdlse_R3_3v(d): return (d & 0xbffff000) == 0x0c006000 | |
def is_ST1_asisdlse_R1_1v(d): return (d & 0xbffff000) == 0x0c007000 | |
def is_ST2_asisdlse_R2(d): return (d & 0xbffff000) == 0x0c008000 | |
def is_ST1_asisdlse_R2_2v(d): return (d & 0xbffff000) == 0x0c00a000 | |
def is_LD4_asisdlse_R4(d): return (d & 0xbffff000) == 0x0c400000 | |
def is_LD1_asisdlse_R4_4v(d): return (d & 0xbffff000) == 0x0c402000 | |
def is_LD3_asisdlse_R3(d): return (d & 0xbffff000) == 0x0c404000 | |
def is_LD1_asisdlse_R3_3v(d): return (d & 0xbffff000) == 0x0c406000 | |
def is_LD1_asisdlse_R1_1v(d): return (d & 0xbffff000) == 0x0c407000 | |
def is_LD2_asisdlse_R2(d): return (d & 0xbffff000) == 0x0c408000 | |
def is_LD1_asisdlse_R2_2v(d): return (d & 0xbffff000) == 0x0c40a000 | |
def is_ST4_asisdlsep_R4_r(d): return (d & 0xbfe0f000) == 0x0c800000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsep_R4_r4(d): return (d & 0xbfe0f000) == 0x0c802000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST3_asisdlsep_R3_r(d): return (d & 0xbfe0f000) == 0x0c804000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsep_R3_r3(d): return (d & 0xbfe0f000) == 0x0c806000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsep_R1_r1(d): return (d & 0xbfe0f000) == 0x0c807000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST2_asisdlsep_R2_r(d): return (d & 0xbfe0f000) == 0x0c808000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsep_R2_r2(d): return (d & 0xbfe0f000) == 0x0c80a000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST4_asisdlsep_I4_i(d): return (d & 0xbffff000) == 0x0c9f0000 | |
def is_ST1_asisdlsep_I4_i4(d): return (d & 0xbffff000) == 0x0c9f2000 | |
def is_ST3_asisdlsep_I3_i(d): return (d & 0xbffff000) == 0x0c9f4000 | |
def is_ST1_asisdlsep_I3_i3(d): return (d & 0xbffff000) == 0x0c9f6000 | |
def is_ST1_asisdlsep_I1_i1(d): return (d & 0xbffff000) == 0x0c9f7000 | |
def is_ST2_asisdlsep_I2_i(d): return (d & 0xbffff000) == 0x0c9f8000 | |
def is_ST1_asisdlsep_I2_i2(d): return (d & 0xbffff000) == 0x0c9fa000 | |
def is_LD4_asisdlsep_R4_r(d): return (d & 0xbfe0f000) == 0x0cc00000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsep_R4_r4(d): return (d & 0xbfe0f000) == 0x0cc02000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD3_asisdlsep_R3_r(d): return (d & 0xbfe0f000) == 0x0cc04000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsep_R3_r3(d): return (d & 0xbfe0f000) == 0x0cc06000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsep_R1_r1(d): return (d & 0xbfe0f000) == 0x0cc07000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD2_asisdlsep_R2_r(d): return (d & 0xbfe0f000) == 0x0cc08000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsep_R2_r2(d): return (d & 0xbfe0f000) == 0x0cc0a000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD4_asisdlsep_I4_i(d): return (d & 0xbffff000) == 0x0cdf0000 | |
def is_LD1_asisdlsep_I4_i4(d): return (d & 0xbffff000) == 0x0cdf2000 | |
def is_LD3_asisdlsep_I3_i(d): return (d & 0xbffff000) == 0x0cdf4000 | |
def is_LD1_asisdlsep_I3_i3(d): return (d & 0xbffff000) == 0x0cdf6000 | |
def is_LD1_asisdlsep_I1_i1(d): return (d & 0xbffff000) == 0x0cdf7000 | |
def is_LD2_asisdlsep_I2_i(d): return (d & 0xbffff000) == 0x0cdf8000 | |
def is_LD1_asisdlsep_I2_i2(d): return (d & 0xbffff000) == 0x0cdfa000 | |
def is_ST1_asisdlso_B1_1b(d): return (d & 0xbfffe000) == 0x0d000000 | |
def is_ST3_asisdlso_B3_3b(d): return (d & 0xbfffe000) == 0x0d002000 | |
def is_ST1_asisdlso_H1_1h(d): return (d & 0xbfffe400) == 0x0d004000 | |
def is_ST3_asisdlso_H3_3h(d): return (d & 0xbfffe400) == 0x0d006000 | |
def is_ST1_asisdlso_S1_1s(d): return (d & 0xbfffec00) == 0x0d008000 | |
def is_ST1_asisdlso_D1_1d(d): return (d & 0xbffffc00) == 0x0d008400 | |
def is_ST3_asisdlso_S3_3s(d): return (d & 0xbfffec00) == 0x0d00a000 | |
def is_ST3_asisdlso_D3_3d(d): return (d & 0xbffffc00) == 0x0d00a400 | |
def is_ST2_asisdlso_B2_2b(d): return (d & 0xbfffe000) == 0x0d200000 | |
def is_ST4_asisdlso_B4_4b(d): return (d & 0xbfffe000) == 0x0d202000 | |
def is_ST2_asisdlso_H2_2h(d): return (d & 0xbfffe400) == 0x0d204000 | |
def is_ST4_asisdlso_H4_4h(d): return (d & 0xbfffe400) == 0x0d206000 | |
def is_ST2_asisdlso_S2_2s(d): return (d & 0xbfffec00) == 0x0d208000 | |
def is_ST2_asisdlso_D2_2d(d): return (d & 0xbffffc00) == 0x0d208400 | |
def is_ST4_asisdlso_S4_4s(d): return (d & 0xbfffec00) == 0x0d20a000 | |
def is_ST4_asisdlso_D4_4d(d): return (d & 0xbffffc00) == 0x0d20a400 | |
def is_LD1_asisdlso_B1_1b(d): return (d & 0xbfffe000) == 0x0d400000 | |
def is_LD3_asisdlso_B3_3b(d): return (d & 0xbfffe000) == 0x0d402000 | |
def is_LD1_asisdlso_H1_1h(d): return (d & 0xbfffe400) == 0x0d404000 | |
def is_LD3_asisdlso_H3_3h(d): return (d & 0xbfffe400) == 0x0d406000 | |
def is_LD1_asisdlso_S1_1s(d): return (d & 0xbfffec00) == 0x0d408000 | |
def is_LD1_asisdlso_D1_1d(d): return (d & 0xbffffc00) == 0x0d408400 | |
def is_LD3_asisdlso_S3_3s(d): return (d & 0xbfffec00) == 0x0d40a000 | |
def is_LD3_asisdlso_D3_3d(d): return (d & 0xbffffc00) == 0x0d40a400 | |
def is_LD1R_asisdlso_R1(d): return (d & 0xbffff000) == 0x0d40c000 | |
def is_LD3R_asisdlso_R3(d): return (d & 0xbffff000) == 0x0d40e000 | |
def is_LD2_asisdlso_B2_2b(d): return (d & 0xbfffe000) == 0x0d600000 | |
def is_LD4_asisdlso_B4_4b(d): return (d & 0xbfffe000) == 0x0d602000 | |
def is_LD2_asisdlso_H2_2h(d): return (d & 0xbfffe400) == 0x0d604000 | |
def is_LD4_asisdlso_H4_4h(d): return (d & 0xbfffe400) == 0x0d606000 | |
def is_LD2_asisdlso_S2_2s(d): return (d & 0xbfffec00) == 0x0d608000 | |
def is_LD2_asisdlso_D2_2d(d): return (d & 0xbffffc00) == 0x0d608400 | |
def is_LD4_asisdlso_S4_4s(d): return (d & 0xbfffec00) == 0x0d60a000 | |
def is_LD4_asisdlso_D4_4d(d): return (d & 0xbffffc00) == 0x0d60a400 | |
def is_LD2R_asisdlso_R2(d): return (d & 0xbffff000) == 0x0d60c000 | |
def is_LD4R_asisdlso_R4(d): return (d & 0xbffff000) == 0x0d60e000 | |
def is_ST1_asisdlsop_BX1_r1b(d): return (d & 0xbfe0e000) == 0x0d800000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST3_asisdlsop_BX3_r3b(d): return (d & 0xbfe0e000) == 0x0d802000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsop_HX1_r1h(d): return (d & 0xbfe0e400) == 0x0d804000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST3_asisdlsop_HX3_r3h(d): return (d & 0xbfe0e400) == 0x0d806000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsop_SX1_r1s(d): return (d & 0xbfe0ec00) == 0x0d808000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsop_DX1_r1d(d): return (d & 0xbfe0fc00) == 0x0d808400 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST3_asisdlsop_SX3_r3s(d): return (d & 0xbfe0ec00) == 0x0d80a000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST3_asisdlsop_DX3_r3d(d): return (d & 0xbfe0fc00) == 0x0d80a400 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST1_asisdlsop_B1_i1b(d): return (d & 0xbfffe000) == 0x0d9f0000 | |
def is_ST3_asisdlsop_B3_i3b(d): return (d & 0xbfffe000) == 0x0d9f2000 | |
def is_ST1_asisdlsop_H1_i1h(d): return (d & 0xbfffe400) == 0x0d9f4000 | |
def is_ST3_asisdlsop_H3_i3h(d): return (d & 0xbfffe400) == 0x0d9f6000 | |
def is_ST1_asisdlsop_S1_i1s(d): return (d & 0xbfffec00) == 0x0d9f8000 | |
def is_ST1_asisdlsop_D1_i1d(d): return (d & 0xbffffc00) == 0x0d9f8400 | |
def is_ST3_asisdlsop_S3_i3s(d): return (d & 0xbfffec00) == 0x0d9fa000 | |
def is_ST3_asisdlsop_D3_i3d(d): return (d & 0xbffffc00) == 0x0d9fa400 | |
def is_ST2_asisdlsop_BX2_r2b(d): return (d & 0xbfe0e000) == 0x0da00000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST4_asisdlsop_BX4_r4b(d): return (d & 0xbfe0e000) == 0x0da02000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST2_asisdlsop_HX2_r2h(d): return (d & 0xbfe0e400) == 0x0da04000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST4_asisdlsop_HX4_r4h(d): return (d & 0xbfe0e400) == 0x0da06000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST2_asisdlsop_SX2_r2s(d): return (d & 0xbfe0ec00) == 0x0da08000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST2_asisdlsop_DX2_r2d(d): return (d & 0xbfe0fc00) == 0x0da08400 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST4_asisdlsop_SX4_r4s(d): return (d & 0xbfe0ec00) == 0x0da0a000 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST4_asisdlsop_DX4_r4d(d): return (d & 0xbfe0fc00) == 0x0da0a400 and (d & 0x1f0000) != 0x1f0000 | |
def is_ST2_asisdlsop_B2_i2b(d): return (d & 0xbfffe000) == 0x0dbf0000 | |
def is_ST4_asisdlsop_B4_i4b(d): return (d & 0xbfffe000) == 0x0dbf2000 | |
def is_ST2_asisdlsop_H2_i2h(d): return (d & 0xbfffe400) == 0x0dbf4000 | |
def is_ST4_asisdlsop_H4_i4h(d): return (d & 0xbfffe400) == 0x0dbf6000 | |
def is_ST2_asisdlsop_S2_i2s(d): return (d & 0xbfffec00) == 0x0dbf8000 | |
def is_ST2_asisdlsop_D2_i2d(d): return (d & 0xbffffc00) == 0x0dbf8400 | |
def is_ST4_asisdlsop_S4_i4s(d): return (d & 0xbfffec00) == 0x0dbfa000 | |
def is_ST4_asisdlsop_D4_i4d(d): return (d & 0xbffffc00) == 0x0dbfa400 | |
def is_LD1_asisdlsop_BX1_r1b(d): return (d & 0xbfe0e000) == 0x0dc00000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD3_asisdlsop_BX3_r3b(d): return (d & 0xbfe0e000) == 0x0dc02000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsop_HX1_r1h(d): return (d & 0xbfe0e400) == 0x0dc04000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD3_asisdlsop_HX3_r3h(d): return (d & 0xbfe0e400) == 0x0dc06000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsop_SX1_r1s(d): return (d & 0xbfe0ec00) == 0x0dc08000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsop_DX1_r1d(d): return (d & 0xbfe0fc00) == 0x0dc08400 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD3_asisdlsop_SX3_r3s(d): return (d & 0xbfe0ec00) == 0x0dc0a000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD3_asisdlsop_DX3_r3d(d): return (d & 0xbfe0fc00) == 0x0dc0a400 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1R_asisdlsop_RX1_r(d): return (d & 0xbfe0f000) == 0x0dc0c000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD3R_asisdlsop_RX3_r(d): return (d & 0xbfe0f000) == 0x0dc0e000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD1_asisdlsop_B1_i1b(d): return (d & 0xbfffe000) == 0x0ddf0000 | |
def is_LD3_asisdlsop_B3_i3b(d): return (d & 0xbfffe000) == 0x0ddf2000 | |
def is_LD1_asisdlsop_H1_i1h(d): return (d & 0xbfffe400) == 0x0ddf4000 | |
def is_LD3_asisdlsop_H3_i3h(d): return (d & 0xbfffe400) == 0x0ddf6000 | |
def is_LD1_asisdlsop_S1_i1s(d): return (d & 0xbfffec00) == 0x0ddf8000 | |
def is_LD1_asisdlsop_D1_i1d(d): return (d & 0xbffffc00) == 0x0ddf8400 | |
def is_LD3_asisdlsop_S3_i3s(d): return (d & 0xbfffec00) == 0x0ddfa000 | |
def is_LD3_asisdlsop_D3_i3d(d): return (d & 0xbffffc00) == 0x0ddfa400 | |
def is_LD1R_asisdlsop_R1_i(d): return (d & 0xbffff000) == 0x0ddfc000 | |
def is_LD3R_asisdlsop_R3_i(d): return (d & 0xbffff000) == 0x0ddfe000 | |
def is_LD2_asisdlsop_BX2_r2b(d): return (d & 0xbfe0e000) == 0x0de00000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD4_asisdlsop_BX4_r4b(d): return (d & 0xbfe0e000) == 0x0de02000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD2_asisdlsop_HX2_r2h(d): return (d & 0xbfe0e400) == 0x0de04000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD4_asisdlsop_HX4_r4h(d): return (d & 0xbfe0e400) == 0x0de06000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD2_asisdlsop_SX2_r2s(d): return (d & 0xbfe0ec00) == 0x0de08000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD2_asisdlsop_DX2_r2d(d): return (d & 0xbfe0fc00) == 0x0de08400 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD4_asisdlsop_SX4_r4s(d): return (d & 0xbfe0ec00) == 0x0de0a000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD4_asisdlsop_DX4_r4d(d): return (d & 0xbfe0fc00) == 0x0de0a400 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD2R_asisdlsop_RX2_r(d): return (d & 0xbfe0f000) == 0x0de0c000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD4R_asisdlsop_RX4_r(d): return (d & 0xbfe0f000) == 0x0de0e000 and (d & 0x1f0000) != 0x1f0000 | |
def is_LD2_asisdlsop_B2_i2b(d): return (d & 0xbfffe000) == 0x0dff0000 | |
def is_LD4_asisdlsop_B4_i4b(d): return (d & 0xbfffe000) == 0x0dff2000 | |
def is_LD2_asisdlsop_H2_i2h(d): return (d & 0xbfffe400) == 0x0dff4000 | |
def is_LD4_asisdlsop_H4_i4h(d): return (d & 0xbfffe400) == 0x0dff6000 | |
def is_LD2_asisdlsop_S2_i2s(d): return (d & 0xbfffec00) == 0x0dff8000 | |
def is_LD2_asisdlsop_D2_i2d(d): return (d & 0xbffffc00) == 0x0dff8400 | |
def is_LD4_asisdlsop_S4_i4s(d): return (d & 0xbfffec00) == 0x0dffa000 | |
def is_LD4_asisdlsop_D4_i4d(d): return (d & 0xbffffc00) == 0x0dffa400 | |
def is_LD2R_asisdlsop_R2_i(d): return (d & 0xbffff000) == 0x0dffc000 | |
def is_LD4R_asisdlsop_R4_i(d): return (d & 0xbffff000) == 0x0dffe000 | |
def is_LDADDB_32_memop(d): return (d & 0xffe0fc00) == 0x38200000 and (d & 0x00001f) != 0x00001f | |
def is_STADDB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820001f | |
def is_LDCLRB_32_memop(d): return (d & 0xffe0fc00) == 0x38201000 and (d & 0x00001f) != 0x00001f | |
def is_STCLRB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820101f | |
def is_LDEORB_32_memop(d): return (d & 0xffe0fc00) == 0x38202000 and (d & 0x00001f) != 0x00001f | |
def is_STEORB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820201f | |
def is_LDSETB_32_memop(d): return (d & 0xffe0fc00) == 0x38203000 and (d & 0x00001f) != 0x00001f | |
def is_STSETB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820301f | |
def is_LDSMAXB_32_memop(d): return (d & 0xffe0fc00) == 0x38204000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAXB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820401f | |
def is_LDSMINB_32_memop(d): return (d & 0xffe0fc00) == 0x38205000 and (d & 0x00001f) != 0x00001f | |
def is_STSMINB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820501f | |
def is_LDUMAXB_32_memop(d): return (d & 0xffe0fc00) == 0x38206000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAXB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820601f | |
def is_LDUMINB_32_memop(d): return (d & 0xffe0fc00) == 0x38207000 and (d & 0x00001f) != 0x00001f | |
def is_STUMINB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3820701f | |
def is_SWPB_32_memop(d): return (d & 0xffe0fc00) == 0x38208000 | |
def is_LDADDLB_32_memop(d): return (d & 0xffe0fc00) == 0x38600000 and (d & 0x00001f) != 0x00001f | |
def is_STADDLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860001f | |
def is_LDCLRLB_32_memop(d): return (d & 0xffe0fc00) == 0x38601000 and (d & 0x00001f) != 0x00001f | |
def is_STCLRLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860101f | |
def is_LDEORLB_32_memop(d): return (d & 0xffe0fc00) == 0x38602000 and (d & 0x00001f) != 0x00001f | |
def is_STEORLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860201f | |
def is_LDSETLB_32_memop(d): return (d & 0xffe0fc00) == 0x38603000 and (d & 0x00001f) != 0x00001f | |
def is_STSETLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860301f | |
def is_LDSMAXLB_32_memop(d): return (d & 0xffe0fc00) == 0x38604000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAXLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860401f | |
def is_LDSMINLB_32_memop(d): return (d & 0xffe0fc00) == 0x38605000 and (d & 0x00001f) != 0x00001f | |
def is_STSMINLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860501f | |
def is_LDUMAXLB_32_memop(d): return (d & 0xffe0fc00) == 0x38606000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAXLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860601f | |
def is_LDUMINLB_32_memop(d): return (d & 0xffe0fc00) == 0x38607000 and (d & 0x00001f) != 0x00001f | |
def is_STUMINLB_32S_memop(d): return (d & 0xffe0fc1f) == 0x3860701f | |
def is_SWPLB_32_memop(d): return (d & 0xffe0fc00) == 0x38608000 | |
def is_LDADDAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a00000 | |
def is_LDCLRAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a01000 | |
def is_LDEORAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a02000 | |
def is_LDSETAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a03000 | |
def is_LDSMAXAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a04000 | |
def is_LDSMINAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a05000 | |
def is_LDUMAXAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a06000 | |
def is_LDUMINAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a07000 | |
def is_SWPAB_32_memop(d): return (d & 0xffe0fc00) == 0x38a08000 | |
def is_LDAPRB_32L_memop(d): return (d & 0xffe0fc00) == 0x38a0c000 | |
def is_LDADDALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e00000 | |
def is_LDCLRALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e01000 | |
def is_LDEORALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e02000 | |
def is_LDSETALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e03000 | |
def is_LDSMAXALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e04000 | |
def is_LDSMINALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e05000 | |
def is_LDUMAXALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e06000 | |
def is_LDUMINALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e07000 | |
def is_SWPALB_32_memop(d): return (d & 0xffe0fc00) == 0x38e08000 | |
def is_LDADDH_32_memop(d): return (d & 0xffe0fc00) == 0x78200000 and (d & 0x00001f) != 0x00001f | |
def is_STADDH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820001f | |
def is_LDCLRH_32_memop(d): return (d & 0xffe0fc00) == 0x78201000 and (d & 0x00001f) != 0x00001f | |
def is_STCLRH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820101f | |
def is_LDEORH_32_memop(d): return (d & 0xffe0fc00) == 0x78202000 and (d & 0x00001f) != 0x00001f | |
def is_STEORH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820201f | |
def is_LDSETH_32_memop(d): return (d & 0xffe0fc00) == 0x78203000 and (d & 0x00001f) != 0x00001f | |
def is_STSETH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820301f | |
def is_LDSMAXH_32_memop(d): return (d & 0xffe0fc00) == 0x78204000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAXH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820401f | |
def is_LDSMINH_32_memop(d): return (d & 0xffe0fc00) == 0x78205000 and (d & 0x00001f) != 0x00001f | |
def is_STSMINH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820501f | |
def is_LDUMAXH_32_memop(d): return (d & 0xffe0fc00) == 0x78206000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAXH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820601f | |
def is_LDUMINH_32_memop(d): return (d & 0xffe0fc00) == 0x78207000 and (d & 0x00001f) != 0x00001f | |
def is_STUMINH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7820701f | |
def is_SWPH_32_memop(d): return (d & 0xffe0fc00) == 0x78208000 | |
def is_LDADDLH_32_memop(d): return (d & 0xffe0fc00) == 0x78600000 and (d & 0x00001f) != 0x00001f | |
def is_STADDLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860001f | |
def is_LDCLRLH_32_memop(d): return (d & 0xffe0fc00) == 0x78601000 and (d & 0x00001f) != 0x00001f | |
def is_STCLRLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860101f | |
def is_LDEORLH_32_memop(d): return (d & 0xffe0fc00) == 0x78602000 and (d & 0x00001f) != 0x00001f | |
def is_STEORLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860201f | |
def is_LDSETLH_32_memop(d): return (d & 0xffe0fc00) == 0x78603000 and (d & 0x00001f) != 0x00001f | |
def is_STSETLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860301f | |
def is_LDSMAXLH_32_memop(d): return (d & 0xffe0fc00) == 0x78604000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAXLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860401f | |
def is_LDSMINLH_32_memop(d): return (d & 0xffe0fc00) == 0x78605000 and (d & 0x00001f) != 0x00001f | |
def is_STSMINLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860501f | |
def is_LDUMAXLH_32_memop(d): return (d & 0xffe0fc00) == 0x78606000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAXLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860601f | |
def is_LDUMINLH_32_memop(d): return (d & 0xffe0fc00) == 0x78607000 and (d & 0x00001f) != 0x00001f | |
def is_STUMINLH_32S_memop(d): return (d & 0xffe0fc1f) == 0x7860701f | |
def is_SWPLH_32_memop(d): return (d & 0xffe0fc00) == 0x78608000 | |
def is_LDADDAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a00000 | |
def is_LDCLRAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a01000 | |
def is_LDEORAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a02000 | |
def is_LDSETAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a03000 | |
def is_LDSMAXAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a04000 | |
def is_LDSMINAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a05000 | |
def is_LDUMAXAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a06000 | |
def is_LDUMINAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a07000 | |
def is_SWPAH_32_memop(d): return (d & 0xffe0fc00) == 0x78a08000 | |
def is_LDAPRH_32L_memop(d): return (d & 0xffe0fc00) == 0x78a0c000 | |
def is_LDADDALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e00000 | |
def is_LDCLRALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e01000 | |
def is_LDEORALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e02000 | |
def is_LDSETALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e03000 | |
def is_LDSMAXALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e04000 | |
def is_LDSMINALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e05000 | |
def is_LDUMAXALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e06000 | |
def is_LDUMINALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e07000 | |
def is_SWPALH_32_memop(d): return (d & 0xffe0fc00) == 0x78e08000 | |
def is_LDADD_32_memop(d): return (d & 0xffe0fc00) == 0xb8200000 and (d & 0x00001f) != 0x00001f | |
def is_STADD_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820001f | |
def is_LDCLR_32_memop(d): return (d & 0xffe0fc00) == 0xb8201000 and (d & 0x00001f) != 0x00001f | |
def is_STCLR_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820101f | |
def is_LDEOR_32_memop(d): return (d & 0xffe0fc00) == 0xb8202000 and (d & 0x00001f) != 0x00001f | |
def is_STEOR_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820201f | |
def is_LDSET_32_memop(d): return (d & 0xffe0fc00) == 0xb8203000 and (d & 0x00001f) != 0x00001f | |
def is_STSET_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820301f | |
def is_LDSMAX_32_memop(d): return (d & 0xffe0fc00) == 0xb8204000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAX_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820401f | |
def is_LDSMIN_32_memop(d): return (d & 0xffe0fc00) == 0xb8205000 and (d & 0x00001f) != 0x00001f | |
def is_STSMIN_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820501f | |
def is_LDUMAX_32_memop(d): return (d & 0xffe0fc00) == 0xb8206000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAX_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820601f | |
def is_LDUMIN_32_memop(d): return (d & 0xffe0fc00) == 0xb8207000 and (d & 0x00001f) != 0x00001f | |
def is_STUMIN_32S_memop(d): return (d & 0xffe0fc1f) == 0xb820701f | |
def is_SWP_32_memop(d): return (d & 0xffe0fc00) == 0xb8208000 | |
def is_LDADDL_32_memop(d): return (d & 0xffe0fc00) == 0xb8600000 and (d & 0x00001f) != 0x00001f | |
def is_STADDL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860001f | |
def is_LDCLRL_32_memop(d): return (d & 0xffe0fc00) == 0xb8601000 and (d & 0x00001f) != 0x00001f | |
def is_STCLRL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860101f | |
def is_LDEORL_32_memop(d): return (d & 0xffe0fc00) == 0xb8602000 and (d & 0x00001f) != 0x00001f | |
def is_STEORL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860201f | |
def is_LDSETL_32_memop(d): return (d & 0xffe0fc00) == 0xb8603000 and (d & 0x00001f) != 0x00001f | |
def is_STSETL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860301f | |
def is_LDSMAXL_32_memop(d): return (d & 0xffe0fc00) == 0xb8604000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAXL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860401f | |
def is_LDSMINL_32_memop(d): return (d & 0xffe0fc00) == 0xb8605000 and (d & 0x00001f) != 0x00001f | |
def is_STSMINL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860501f | |
def is_LDUMAXL_32_memop(d): return (d & 0xffe0fc00) == 0xb8606000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAXL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860601f | |
def is_LDUMINL_32_memop(d): return (d & 0xffe0fc00) == 0xb8607000 and (d & 0x00001f) != 0x00001f | |
def is_STUMINL_32S_memop(d): return (d & 0xffe0fc1f) == 0xb860701f | |
def is_SWPL_32_memop(d): return (d & 0xffe0fc00) == 0xb8608000 | |
def is_LDADDA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a00000 | |
def is_LDCLRA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a01000 | |
def is_LDEORA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a02000 | |
def is_LDSETA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a03000 | |
def is_LDSMAXA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a04000 | |
def is_LDSMINA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a05000 | |
def is_LDUMAXA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a06000 | |
def is_LDUMINA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a07000 | |
def is_SWPA_32_memop(d): return (d & 0xffe0fc00) == 0xb8a08000 | |
def is_LDAPR_32L_memop(d): return (d & 0xffe0fc00) == 0xb8a0c000 | |
def is_LDADDAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e00000 | |
def is_LDCLRAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e01000 | |
def is_LDEORAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e02000 | |
def is_LDSETAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e03000 | |
def is_LDSMAXAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e04000 | |
def is_LDSMINAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e05000 | |
def is_LDUMAXAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e06000 | |
def is_LDUMINAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e07000 | |
def is_SWPAL_32_memop(d): return (d & 0xffe0fc00) == 0xb8e08000 | |
def is_LDADD_64_memop(d): return (d & 0xffe0fc00) == 0xf8200000 and (d & 0x00001f) != 0x00001f | |
def is_STADD_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820001f | |
def is_LDCLR_64_memop(d): return (d & 0xffe0fc00) == 0xf8201000 and (d & 0x00001f) != 0x00001f | |
def is_STCLR_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820101f | |
def is_LDEOR_64_memop(d): return (d & 0xffe0fc00) == 0xf8202000 and (d & 0x00001f) != 0x00001f | |
def is_STEOR_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820201f | |
def is_LDSET_64_memop(d): return (d & 0xffe0fc00) == 0xf8203000 and (d & 0x00001f) != 0x00001f | |
def is_STSET_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820301f | |
def is_LDSMAX_64_memop(d): return (d & 0xffe0fc00) == 0xf8204000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAX_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820401f | |
def is_LDSMIN_64_memop(d): return (d & 0xffe0fc00) == 0xf8205000 and (d & 0x00001f) != 0x00001f | |
def is_STSMIN_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820501f | |
def is_LDUMAX_64_memop(d): return (d & 0xffe0fc00) == 0xf8206000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAX_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820601f | |
def is_LDUMIN_64_memop(d): return (d & 0xffe0fc00) == 0xf8207000 and (d & 0x00001f) != 0x00001f | |
def is_STUMIN_64S_memop(d): return (d & 0xffe0fc1f) == 0xf820701f | |
def is_SWP_64_memop(d): return (d & 0xffe0fc00) == 0xf8208000 | |
def is_LDADDL_64_memop(d): return (d & 0xffe0fc00) == 0xf8600000 and (d & 0x00001f) != 0x00001f | |
def is_STADDL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860001f | |
def is_LDCLRL_64_memop(d): return (d & 0xffe0fc00) == 0xf8601000 and (d & 0x00001f) != 0x00001f | |
def is_STCLRL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860101f | |
def is_LDEORL_64_memop(d): return (d & 0xffe0fc00) == 0xf8602000 and (d & 0x00001f) != 0x00001f | |
def is_STEORL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860201f | |
def is_LDSETL_64_memop(d): return (d & 0xffe0fc00) == 0xf8603000 and (d & 0x00001f) != 0x00001f | |
def is_STSETL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860301f | |
def is_LDSMAXL_64_memop(d): return (d & 0xffe0fc00) == 0xf8604000 and (d & 0x00001f) != 0x00001f | |
def is_STSMAXL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860401f | |
def is_LDSMINL_64_memop(d): return (d & 0xffe0fc00) == 0xf8605000 and (d & 0x00001f) != 0x00001f | |
def is_STSMINL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860501f | |
def is_LDUMAXL_64_memop(d): return (d & 0xffe0fc00) == 0xf8606000 and (d & 0x00001f) != 0x00001f | |
def is_STUMAXL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860601f | |
def is_LDUMINL_64_memop(d): return (d & 0xffe0fc00) == 0xf8607000 and (d & 0x00001f) != 0x00001f | |
def is_STUMINL_64S_memop(d): return (d & 0xffe0fc1f) == 0xf860701f | |
def is_SWPL_64_memop(d): return (d & 0xffe0fc00) == 0xf8608000 | |
def is_LDADDA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a00000 | |
def is_LDCLRA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a01000 | |
def is_LDEORA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a02000 | |
def is_LDSETA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a03000 | |
def is_LDSMAXA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a04000 | |
def is_LDSMINA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a05000 | |
def is_LDUMAXA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a06000 | |
def is_LDUMINA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a07000 | |
def is_SWPA_64_memop(d): return (d & 0xffe0fc00) == 0xf8a08000 | |
def is_LDAPR_64L_memop(d): return (d & 0xffe0fc00) == 0xf8a0c000 | |
def is_LDADDAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e00000 | |
def is_LDCLRAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e01000 | |
def is_LDEORAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e02000 | |
def is_LDSETAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e03000 | |
def is_LDSMAXAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e04000 | |
def is_LDSMINAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e05000 | |
def is_LDUMAXAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e06000 | |
def is_LDUMINAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e07000 | |
def is_SWPAL_64_memop(d): return (d & 0xffe0fc00) == 0xf8e08000 | |
def is_LDR_32_loadlit(d): return (d & 0xff000000) == 0x18000000 | |
def is_LDR_S_loadlit(d): return (d & 0xff000000) == 0x1c000000 | |
def is_LDR_64_loadlit(d): return (d & 0xff000000) == 0x58000000 | |
def is_LDR_D_loadlit(d): return (d & 0xff000000) == 0x5c000000 | |
def is_LDRSW_64_loadlit(d): return (d & 0xff000000) == 0x98000000 | |
def is_LDR_Q_loadlit(d): return (d & 0xff000000) == 0x9c000000 | |
def is_PRFM_P_loadlit(d): return (d & 0xff000000) == 0xd8000000 | |
def is_STXRB_SR32_ldstexcl(d): return (d & 0xffe08000) == 0x08000000 | |
def is_STLXRB_SR32_ldstexcl(d): return (d & 0xffe08000) == 0x08008000 | |
def is_CASP_CP32_ldstexcl(d): return (d & 0xffe0fc00) == 0x08207c00 | |
def is_CASPL_CP32_ldstexcl(d): return (d & 0xffe0fc00) == 0x0820fc00 | |
def is_LDXRB_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x08400000 | |
def is_LDAXRB_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x08408000 | |
def is_CASPA_CP32_ldstexcl(d): return (d & 0xffe0fc00) == 0x08607c00 | |
def is_CASPAL_CP32_ldstexcl(d): return (d & 0xffe0fc00) == 0x0860fc00 | |
def is_STLLRB_SL32_ldstexcl(d): return (d & 0xffe08000) == 0x08800000 | |
def is_STLRB_SL32_ldstexcl(d): return (d & 0xffe08000) == 0x08808000 | |
def is_CASB_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x08a07c00 | |
def is_CASLB_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x08a0fc00 | |
def is_LDLARB_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x08c00000 | |
def is_LDARB_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x08c08000 | |
def is_CASAB_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x08e07c00 | |
def is_CASALB_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x08e0fc00 | |
def is_STXRH_SR32_ldstexcl(d): return (d & 0xffe08000) == 0x48000000 | |
def is_STLXRH_SR32_ldstexcl(d): return (d & 0xffe08000) == 0x48008000 | |
def is_CASP_CP64_ldstexcl(d): return (d & 0xffe0fc00) == 0x48207c00 | |
def is_CASPL_CP64_ldstexcl(d): return (d & 0xffe0fc00) == 0x4820fc00 | |
def is_LDXRH_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x48400000 | |
def is_LDAXRH_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x48408000 | |
def is_CASPA_CP64_ldstexcl(d): return (d & 0xffe0fc00) == 0x48607c00 | |
def is_CASPAL_CP64_ldstexcl(d): return (d & 0xffe0fc00) == 0x4860fc00 | |
def is_STLLRH_SL32_ldstexcl(d): return (d & 0xffe08000) == 0x48800000 | |
def is_STLRH_SL32_ldstexcl(d): return (d & 0xffe08000) == 0x48808000 | |
def is_CASH_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x48a07c00 | |
def is_CASLH_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x48a0fc00 | |
def is_LDLARH_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x48c00000 | |
def is_LDARH_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x48c08000 | |
def is_CASAH_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x48e07c00 | |
def is_CASALH_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x48e0fc00 | |
def is_STXR_SR32_ldstexcl(d): return (d & 0xffe08000) == 0x88000000 | |
def is_STLXR_SR32_ldstexcl(d): return (d & 0xffe08000) == 0x88008000 | |
def is_STXP_SP32_ldstexcl(d): return (d & 0xffe08000) == 0x88200000 | |
def is_STLXP_SP32_ldstexcl(d): return (d & 0xffe08000) == 0x88208000 | |
def is_LDXR_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x88400000 | |
def is_LDAXR_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x88408000 | |
def is_LDXP_LP32_ldstexcl(d): return (d & 0xffe08000) == 0x88600000 | |
def is_LDAXP_LP32_ldstexcl(d): return (d & 0xffe08000) == 0x88608000 | |
def is_STLLR_SL32_ldstexcl(d): return (d & 0xffe08000) == 0x88800000 | |
def is_STLR_SL32_ldstexcl(d): return (d & 0xffe08000) == 0x88808000 | |
def is_CAS_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x88a07c00 | |
def is_CASL_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x88a0fc00 | |
def is_LDLAR_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x88c00000 | |
def is_LDAR_LR32_ldstexcl(d): return (d & 0xffe08000) == 0x88c08000 | |
def is_CASA_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x88e07c00 | |
def is_CASAL_C32_ldstexcl(d): return (d & 0xffe0fc00) == 0x88e0fc00 | |
def is_STXR_SR64_ldstexcl(d): return (d & 0xffe08000) == 0xc8000000 | |
def is_STLXR_SR64_ldstexcl(d): return (d & 0xffe08000) == 0xc8008000 | |
def is_STXP_SP64_ldstexcl(d): return (d & 0xffe08000) == 0xc8200000 | |
def is_STLXP_SP64_ldstexcl(d): return (d & 0xffe08000) == 0xc8208000 | |
def is_LDXR_LR64_ldstexcl(d): return (d & 0xffe08000) == 0xc8400000 | |
def is_LDAXR_LR64_ldstexcl(d): return (d & 0xffe08000) == 0xc8408000 | |
def is_LDXP_LP64_ldstexcl(d): return (d & 0xffe08000) == 0xc8600000 | |
def is_LDAXP_LP64_ldstexcl(d): return (d & 0xffe08000) == 0xc8608000 | |
def is_STLLR_SL64_ldstexcl(d): return (d & 0xffe08000) == 0xc8800000 | |
def is_STLR_SL64_ldstexcl(d): return (d & 0xffe08000) == 0xc8808000 | |
def is_CAS_C64_ldstexcl(d): return (d & 0xffe0fc00) == 0xc8a07c00 | |
def is_CASL_C64_ldstexcl(d): return (d & 0xffe0fc00) == 0xc8a0fc00 | |
def is_LDLAR_LR64_ldstexcl(d): return (d & 0xffe08000) == 0xc8c00000 | |
def is_LDAR_LR64_ldstexcl(d): return (d & 0xffe08000) == 0xc8c08000 | |
def is_CASA_C64_ldstexcl(d): return (d & 0xffe0fc00) == 0xc8e07c00 | |
def is_CASAL_C64_ldstexcl(d): return (d & 0xffe0fc00) == 0xc8e0fc00 | |
def is_STNP_32_ldstnapair_offs(d): return (d & 0xffc00000) == 0x28000000 | |
def is_LDNP_32_ldstnapair_offs(d): return (d & 0xffc00000) == 0x28400000 | |
def is_STNP_S_ldstnapair_offs(d): return (d & 0xffc00000) == 0x2c000000 | |
def is_LDNP_S_ldstnapair_offs(d): return (d & 0xffc00000) == 0x2c400000 | |
def is_STNP_D_ldstnapair_offs(d): return (d & 0xffc00000) == 0x6c000000 | |
def is_LDNP_D_ldstnapair_offs(d): return (d & 0xffc00000) == 0x6c400000 | |
def is_STNP_64_ldstnapair_offs(d): return (d & 0xffc00000) == 0xa8000000 | |
def is_LDNP_64_ldstnapair_offs(d): return (d & 0xffc00000) == 0xa8400000 | |
def is_STNP_Q_ldstnapair_offs(d): return (d & 0xffc00000) == 0xac000000 | |
def is_LDNP_Q_ldstnapair_offs(d): return (d & 0xffc00000) == 0xac400000 | |
def is_STRB_32_ldst_immpost(d): return (d & 0xffe00c00) == 0x38000400 | |
def is_LDRB_32_ldst_immpost(d): return (d & 0xffe00c00) == 0x38400400 | |
def is_LDRSB_64_ldst_immpost(d): return (d & 0xffe00c00) == 0x38800400 | |
def is_LDRSB_32_ldst_immpost(d): return (d & 0xffe00c00) == 0x38c00400 | |
def is_STR_B_ldst_immpost(d): return (d & 0xffe00c00) == 0x3c000400 | |
def is_LDR_B_ldst_immpost(d): return (d & 0xffe00c00) == 0x3c400400 | |
def is_STR_Q_ldst_immpost(d): return (d & 0xffe00c00) == 0x3c800400 | |
def is_LDR_Q_ldst_immpost(d): return (d & 0xffe00c00) == 0x3cc00400 | |
def is_STRH_32_ldst_immpost(d): return (d & 0xffe00c00) == 0x78000400 | |
def is_LDRH_32_ldst_immpost(d): return (d & 0xffe00c00) == 0x78400400 | |
def is_LDRSH_64_ldst_immpost(d): return (d & 0xffe00c00) == 0x78800400 | |
def is_LDRSH_32_ldst_immpost(d): return (d & 0xffe00c00) == 0x78c00400 | |
def is_STR_H_ldst_immpost(d): return (d & 0xffe00c00) == 0x7c000400 | |
def is_LDR_H_ldst_immpost(d): return (d & 0xffe00c00) == 0x7c400400 | |
def is_STR_32_ldst_immpost(d): return (d & 0xffe00c00) == 0xb8000400 | |
def is_LDR_32_ldst_immpost(d): return (d & 0xffe00c00) == 0xb8400400 | |
def is_LDRSW_64_ldst_immpost(d): return (d & 0xffe00c00) == 0xb8800400 | |
def is_STR_S_ldst_immpost(d): return (d & 0xffe00c00) == 0xbc000400 | |
def is_LDR_S_ldst_immpost(d): return (d & 0xffe00c00) == 0xbc400400 | |
def is_STR_64_ldst_immpost(d): return (d & 0xffe00c00) == 0xf8000400 | |
def is_LDR_64_ldst_immpost(d): return (d & 0xffe00c00) == 0xf8400400 | |
def is_STR_D_ldst_immpost(d): return (d & 0xffe00c00) == 0xfc000400 | |
def is_LDR_D_ldst_immpost(d): return (d & 0xffe00c00) == 0xfc400400 | |
def is_STRB_32_ldst_immpre(d): return (d & 0xffe00c00) == 0x38000c00 | |
def is_LDRB_32_ldst_immpre(d): return (d & 0xffe00c00) == 0x38400c00 | |
def is_LDRSB_64_ldst_immpre(d): return (d & 0xffe00c00) == 0x38800c00 | |
def is_LDRSB_32_ldst_immpre(d): return (d & 0xffe00c00) == 0x38c00c00 | |
def is_STR_B_ldst_immpre(d): return (d & 0xffe00c00) == 0x3c000c00 | |
def is_LDR_B_ldst_immpre(d): return (d & 0xffe00c00) == 0x3c400c00 | |
def is_STR_Q_ldst_immpre(d): return (d & 0xffe00c00) == 0x3c800c00 | |
def is_LDR_Q_ldst_immpre(d): return (d & 0xffe00c00) == 0x3cc00c00 | |
def is_STRH_32_ldst_immpre(d): return (d & 0xffe00c00) == 0x78000c00 | |
def is_LDRH_32_ldst_immpre(d): return (d & 0xffe00c00) == 0x78400c00 | |
def is_LDRSH_64_ldst_immpre(d): return (d & 0xffe00c00) == 0x78800c00 | |
def is_LDRSH_32_ldst_immpre(d): return (d & 0xffe00c00) == 0x78c00c00 | |
def is_STR_H_ldst_immpre(d): return (d & 0xffe00c00) == 0x7c000c00 | |
def is_LDR_H_ldst_immpre(d): return (d & 0xffe00c00) == 0x7c400c00 | |
def is_STR_32_ldst_immpre(d): return (d & 0xffe00c00) == 0xb8000c00 | |
def is_LDR_32_ldst_immpre(d): return (d & 0xffe00c00) == 0xb8400c00 | |
def is_LDRSW_64_ldst_immpre(d): return (d & 0xffe00c00) == 0xb8800c00 | |
def is_STR_S_ldst_immpre(d): return (d & 0xffe00c00) == 0xbc000c00 | |
def is_LDR_S_ldst_immpre(d): return (d & 0xffe00c00) == 0xbc400c00 | |
def is_STR_64_ldst_immpre(d): return (d & 0xffe00c00) == 0xf8000c00 | |
def is_LDR_64_ldst_immpre(d): return (d & 0xffe00c00) == 0xf8400c00 | |
def is_STR_D_ldst_immpre(d): return (d & 0xffe00c00) == 0xfc000c00 | |
def is_LDR_D_ldst_immpre(d): return (d & 0xffe00c00) == 0xfc400c00 | |
def is_LDRAA_64_ldst_pac(d): return (d & 0xfba00c00) == 0xf8200400 | |
def is_LDRAA_64W_ldst_pac(d): return (d & 0xfba00c00) == 0xf8200c00 | |
def is_LDRAB_64_ldst_pac(d): return (d & 0xfba00c00) == 0xf8a00400 | |
def is_LDRAB_64W_ldst_pac(d): return (d & 0xfba00c00) == 0xf8a00c00 | |
def is_STRB_32B_ldst_regoff(d): return (d & 0xffe00c00) == 0x38200800 and (d & 0x00e000) != 0x006000 | |
def is_STRB_32BL_ldst_regoff(d): return (d & 0xffe0ec00) == 0x38206800 | |
def is_LDRB_32B_ldst_regoff(d): return (d & 0xffe00c00) == 0x38600800 and (d & 0x00e000) != 0x006000 | |
def is_LDRB_32BL_ldst_regoff(d): return (d & 0xffe0ec00) == 0x38606800 | |
def is_LDRSB_64B_ldst_regoff(d): return (d & 0xffe00c00) == 0x38a00800 and (d & 0x00e000) != 0x006000 | |
def is_LDRSB_64BL_ldst_regoff(d): return (d & 0xffe0ec00) == 0x38a06800 | |
def is_LDRSB_32B_ldst_regoff(d): return (d & 0xffe00c00) == 0x38e00800 and (d & 0x00e000) != 0x006000 | |
def is_LDRSB_32BL_ldst_regoff(d): return (d & 0xffe0ec00) == 0x38e06800 | |
def is_STR_B_ldst_regoff(d): return (d & 0xffe00c00) == 0x3c200800 and (d & 0x00e000) != 0x006000 | |
def is_STR_BL_ldst_regoff(d): return (d & 0xffe0ec00) == 0x3c206800 | |
def is_LDR_B_ldst_regoff(d): return (d & 0xffe00c00) == 0x3c600800 and (d & 0x00e000) != 0x006000 | |
def is_LDR_BL_ldst_regoff(d): return (d & 0xffe0ec00) == 0x3c606800 | |
def is_STR_Q_ldst_regoff(d): return (d & 0xffe00c00) == 0x3ca00800 | |
def is_LDR_Q_ldst_regoff(d): return (d & 0xffe00c00) == 0x3ce00800 | |
def is_STRH_32_ldst_regoff(d): return (d & 0xffe00c00) == 0x78200800 | |
def is_LDRH_32_ldst_regoff(d): return (d & 0xffe00c00) == 0x78600800 | |
def is_LDRSH_64_ldst_regoff(d): return (d & 0xffe00c00) == 0x78a00800 | |
def is_LDRSH_32_ldst_regoff(d): return (d & 0xffe00c00) == 0x78e00800 | |
def is_STR_H_ldst_regoff(d): return (d & 0xffe00c00) == 0x7c200800 | |
def is_LDR_H_ldst_regoff(d): return (d & 0xffe00c00) == 0x7c600800 | |
def is_STR_32_ldst_regoff(d): return (d & 0xffe00c00) == 0xb8200800 | |
def is_LDR_32_ldst_regoff(d): return (d & 0xffe00c00) == 0xb8600800 | |
def is_LDRSW_64_ldst_regoff(d): return (d & 0xffe00c00) == 0xb8a00800 | |
def is_STR_S_ldst_regoff(d): return (d & 0xffe00c00) == 0xbc200800 | |
def is_LDR_S_ldst_regoff(d): return (d & 0xffe00c00) == 0xbc600800 | |
def is_STR_64_ldst_regoff(d): return (d & 0xffe00c00) == 0xf8200800 | |
def is_LDR_64_ldst_regoff(d): return (d & 0xffe00c00) == 0xf8600800 | |
def is_PRFM_P_ldst_regoff(d): return (d & 0xffe00c00) == 0xf8a00800 | |
def is_STR_D_ldst_regoff(d): return (d & 0xffe00c00) == 0xfc200800 | |
def is_LDR_D_ldst_regoff(d): return (d & 0xffe00c00) == 0xfc600800 | |
def is_STTRB_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0x38000800 | |
def is_LDTRB_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0x38400800 | |
def is_LDTRSB_64_ldst_unpriv(d): return (d & 0xffe00c00) == 0x38800800 | |
def is_LDTRSB_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0x38c00800 | |
def is_STTRH_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0x78000800 | |
def is_LDTRH_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0x78400800 | |
def is_LDTRSH_64_ldst_unpriv(d): return (d & 0xffe00c00) == 0x78800800 | |
def is_LDTRSH_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0x78c00800 | |
def is_STTR_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0xb8000800 | |
def is_LDTR_32_ldst_unpriv(d): return (d & 0xffe00c00) == 0xb8400800 | |
def is_LDTRSW_64_ldst_unpriv(d): return (d & 0xffe00c00) == 0xb8800800 | |
def is_STTR_64_ldst_unpriv(d): return (d & 0xffe00c00) == 0xf8000800 | |
def is_LDTR_64_ldst_unpriv(d): return (d & 0xffe00c00) == 0xf8400800 | |
def is_STURB_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0x38000000 | |
def is_LDURB_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0x38400000 | |
def is_LDURSB_64_ldst_unscaled(d): return (d & 0xffe00c00) == 0x38800000 | |
def is_LDURSB_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0x38c00000 | |
def is_STUR_B_ldst_unscaled(d): return (d & 0xffe00c00) == 0x3c000000 | |
def is_LDUR_B_ldst_unscaled(d): return (d & 0xffe00c00) == 0x3c400000 | |
def is_STUR_Q_ldst_unscaled(d): return (d & 0xffe00c00) == 0x3c800000 | |
def is_LDUR_Q_ldst_unscaled(d): return (d & 0xffe00c00) == 0x3cc00000 | |
def is_STURH_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0x78000000 | |
def is_LDURH_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0x78400000 | |
def is_LDURSH_64_ldst_unscaled(d): return (d & 0xffe00c00) == 0x78800000 | |
def is_LDURSH_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0x78c00000 | |
def is_STUR_H_ldst_unscaled(d): return (d & 0xffe00c00) == 0x7c000000 | |
def is_LDUR_H_ldst_unscaled(d): return (d & 0xffe00c00) == 0x7c400000 | |
def is_STUR_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0xb8000000 | |
def is_LDUR_32_ldst_unscaled(d): return (d & 0xffe00c00) == 0xb8400000 | |
def is_LDURSW_64_ldst_unscaled(d): return (d & 0xffe00c00) == 0xb8800000 | |
def is_STUR_S_ldst_unscaled(d): return (d & 0xffe00c00) == 0xbc000000 | |
def is_LDUR_S_ldst_unscaled(d): return (d & 0xffe00c00) == 0xbc400000 | |
def is_STUR_64_ldst_unscaled(d): return (d & 0xffe00c00) == 0xf8000000 | |
def is_LDUR_64_ldst_unscaled(d): return (d & 0xffe00c00) == 0xf8400000 | |
def is_PRFUM_P_ldst_unscaled(d): return (d & 0xffe00c00) == 0xf8800000 | |
def is_STUR_D_ldst_unscaled(d): return (d & 0xffe00c00) == 0xfc000000 | |
def is_LDUR_D_ldst_unscaled(d): return (d & 0xffe00c00) == 0xfc400000 | |
def is_STRB_32_ldst_pos(d): return (d & 0xffc00000) == 0x39000000 | |
def is_LDRB_32_ldst_pos(d): return (d & 0xffc00000) == 0x39400000 | |
def is_LDRSB_64_ldst_pos(d): return (d & 0xffc00000) == 0x39800000 | |
def is_LDRSB_32_ldst_pos(d): return (d & 0xffc00000) == 0x39c00000 | |
def is_STR_B_ldst_pos(d): return (d & 0xffc00000) == 0x3d000000 | |
def is_LDR_B_ldst_pos(d): return (d & 0xffc00000) == 0x3d400000 | |
def is_STR_Q_ldst_pos(d): return (d & 0xffc00000) == 0x3d800000 | |
def is_LDR_Q_ldst_pos(d): return (d & 0xffc00000) == 0x3dc00000 | |
def is_STRH_32_ldst_pos(d): return (d & 0xffc00000) == 0x79000000 | |
def is_LDRH_32_ldst_pos(d): return (d & 0xffc00000) == 0x79400000 | |
def is_LDRSH_64_ldst_pos(d): return (d & 0xffc00000) == 0x79800000 | |
def is_LDRSH_32_ldst_pos(d): return (d & 0xffc00000) == 0x79c00000 | |
def is_STR_H_ldst_pos(d): return (d & 0xffc00000) == 0x7d000000 | |
def is_LDR_H_ldst_pos(d): return (d & 0xffc00000) == 0x7d400000 | |
def is_STR_32_ldst_pos(d): return (d & 0xffc00000) == 0xb9000000 | |
def is_LDR_32_ldst_pos(d): return (d & 0xffc00000) == 0xb9400000 | |
def is_LDRSW_64_ldst_pos(d): return (d & 0xffc00000) == 0xb9800000 | |
def is_STR_S_ldst_pos(d): return (d & 0xffc00000) == 0xbd000000 | |
def is_LDR_S_ldst_pos(d): return (d & 0xffc00000) == 0xbd400000 | |
def is_STR_64_ldst_pos(d): return (d & 0xffc00000) == 0xf9000000 | |
def is_LDR_64_ldst_pos(d): return (d & 0xffc00000) == 0xf9400000 | |
def is_PRFM_P_ldst_pos(d): return (d & 0xffc00000) == 0xf9800000 | |
def is_STR_D_ldst_pos(d): return (d & 0xffc00000) == 0xfd000000 | |
def is_LDR_D_ldst_pos(d): return (d & 0xffc00000) == 0xfd400000 | |
def is_STP_32_ldstpair_off(d): return (d & 0xffc00000) == 0x29000000 | |
def is_LDP_32_ldstpair_off(d): return (d & 0xffc00000) == 0x29400000 | |
def is_STP_S_ldstpair_off(d): return (d & 0xffc00000) == 0x2d000000 | |
def is_LDP_S_ldstpair_off(d): return (d & 0xffc00000) == 0x2d400000 | |
def is_LDPSW_64_ldstpair_off(d): return (d & 0xffc00000) == 0x69400000 | |
def is_STP_D_ldstpair_off(d): return (d & 0xffc00000) == 0x6d000000 | |
def is_LDP_D_ldstpair_off(d): return (d & 0xffc00000) == 0x6d400000 | |
def is_STP_64_ldstpair_off(d): return (d & 0xffc00000) == 0xa9000000 | |
def is_LDP_64_ldstpair_off(d): return (d & 0xffc00000) == 0xa9400000 | |
def is_STP_Q_ldstpair_off(d): return (d & 0xffc00000) == 0xad000000 | |
def is_LDP_Q_ldstpair_off(d): return (d & 0xffc00000) == 0xad400000 | |
def is_STP_32_ldstpair_post(d): return (d & 0xffc00000) == 0x28800000 | |
def is_LDP_32_ldstpair_post(d): return (d & 0xffc00000) == 0x28c00000 | |
def is_STP_S_ldstpair_post(d): return (d & 0xffc00000) == 0x2c800000 | |
def is_LDP_S_ldstpair_post(d): return (d & 0xffc00000) == 0x2cc00000 | |
def is_LDPSW_64_ldstpair_post(d): return (d & 0xffc00000) == 0x68c00000 | |
def is_STP_D_ldstpair_post(d): return (d & 0xffc00000) == 0x6c800000 | |
def is_LDP_D_ldstpair_post(d): return (d & 0xffc00000) == 0x6cc00000 | |
def is_STP_64_ldstpair_post(d): return (d & 0xffc00000) == 0xa8800000 | |
def is_LDP_64_ldstpair_post(d): return (d & 0xffc00000) == 0xa8c00000 | |
def is_STP_Q_ldstpair_post(d): return (d & 0xffc00000) == 0xac800000 | |
def is_LDP_Q_ldstpair_post(d): return (d & 0xffc00000) == 0xacc00000 | |
def is_STP_32_ldstpair_pre(d): return (d & 0xffc00000) == 0x29800000 | |
def is_LDP_32_ldstpair_pre(d): return (d & 0xffc00000) == 0x29c00000 | |
def is_STP_S_ldstpair_pre(d): return (d & 0xffc00000) == 0x2d800000 | |
def is_LDP_S_ldstpair_pre(d): return (d & 0xffc00000) == 0x2dc00000 | |
def is_LDPSW_64_ldstpair_pre(d): return (d & 0xffc00000) == 0x69c00000 | |
def is_STP_D_ldstpair_pre(d): return (d & 0xffc00000) == 0x6d800000 | |
def is_LDP_D_ldstpair_pre(d): return (d & 0xffc00000) == 0x6dc00000 | |
def is_STP_64_ldstpair_pre(d): return (d & 0xffc00000) == 0xa9800000 | |
def is_LDP_64_ldstpair_pre(d): return (d & 0xffc00000) == 0xa9c00000 | |
def is_STP_Q_ldstpair_pre(d): return (d & 0xffc00000) == 0xad800000 | |
def is_LDP_Q_ldstpair_pre(d): return (d & 0xffc00000) == 0xadc00000 | |
def is_ADD_32_addsub_imm(d): return (d & 0xff000000) == 0x11000000 | |
def is_ADDS_32S_addsub_imm(d): return (d & 0xff000000) == 0x31000000 | |
def is_SUB_32_addsub_imm(d): return (d & 0xff000000) == 0x51000000 | |
def is_SUBS_32S_addsub_imm(d): return (d & 0xff000000) == 0x71000000 | |
def is_ADD_64_addsub_imm(d): return (d & 0xff000000) == 0x91000000 | |
def is_ADDS_64S_addsub_imm(d): return (d & 0xff000000) == 0xb1000000 | |
def is_SUB_64_addsub_imm(d): return (d & 0xff000000) == 0xd1000000 | |
def is_SUBS_64S_addsub_imm(d): return (d & 0xff000000) == 0xf1000000 | |
def is_SBFM_32M_bitfield(d): return (d & 0xffc00000) == 0x13000000 | |
def is_BFM_32M_bitfield(d): return (d & 0xffc00000) == 0x33000000 | |
def is_UBFM_32M_bitfield(d): return (d & 0xffc00000) == 0x53000000 | |
def is_SBFM_64M_bitfield(d): return (d & 0xffc00000) == 0x93400000 | |
def is_BFM_64M_bitfield(d): return (d & 0xffc00000) == 0xb3400000 | |
def is_UBFM_64M_bitfield(d): return (d & 0xffc00000) == 0xd3400000 | |
def is_EXTR_32_extract(d): return (d & 0xffe08000) == 0x13800000 | |
def is_EXTR_64_extract(d): return (d & 0xffe00000) == 0x93c00000 | |
def is_AND_32_log_imm(d): return (d & 0xffc00000) == 0x12000000 | |
def is_ORR_32_log_imm(d): return (d & 0xffc00000) == 0x32000000 | |
def is_EOR_32_log_imm(d): return (d & 0xffc00000) == 0x52000000 | |
def is_ANDS_32S_log_imm(d): return (d & 0xffc00000) == 0x72000000 | |
def is_AND_64_log_imm(d): return (d & 0xff800000) == 0x92000000 | |
def is_ORR_64_log_imm(d): return (d & 0xff800000) == 0xb2000000 | |
def is_EOR_64_log_imm(d): return (d & 0xff800000) == 0xd2000000 | |
def is_ANDS_64S_log_imm(d): return (d & 0xff800000) == 0xf2000000 | |
def is_MOVN_32_movewide(d): return (d & 0xff800000) == 0x12800000 | |
def is_MOVZ_32_movewide(d): return (d & 0xff800000) == 0x52800000 | |
def is_MOVK_32_movewide(d): return (d & 0xff800000) == 0x72800000 | |
def is_MOVN_64_movewide(d): return (d & 0xff800000) == 0x92800000 | |
def is_MOVZ_64_movewide(d): return (d & 0xff800000) == 0xd2800000 | |
def is_MOVK_64_movewide(d): return (d & 0xff800000) == 0xf2800000 | |
def is_ADR_only_pcreladdr(d): return (d & 0x9f000000) == 0x10000000 | |
def is_ADRP_only_pcreladdr(d): return (d & 0x9f000000) == 0x90000000 | |
def is_ADD_32_addsub_ext(d): return (d & 0xffe00000) == 0x0b200000 | |
def is_ADDS_32S_addsub_ext(d): return (d & 0xffe00000) == 0x2b200000 | |
def is_SUB_32_addsub_ext(d): return (d & 0xffe00000) == 0x4b200000 | |
def is_SUBS_32S_addsub_ext(d): return (d & 0xffe00000) == 0x6b200000 | |
def is_ADD_64_addsub_ext(d): return (d & 0xffe00000) == 0x8b200000 | |
def is_ADDS_64S_addsub_ext(d): return (d & 0xffe00000) == 0xab200000 | |
def is_SUB_64_addsub_ext(d): return (d & 0xffe00000) == 0xcb200000 | |
def is_SUBS_64S_addsub_ext(d): return (d & 0xffe00000) == 0xeb200000 | |
def is_ADD_32_addsub_shift(d): return (d & 0xff200000) == 0x0b000000 | |
def is_ADDS_32_addsub_shift(d): return (d & 0xff200000) == 0x2b000000 | |
def is_SUB_32_addsub_shift(d): return (d & 0xff200000) == 0x4b000000 | |
def is_SUBS_32_addsub_shift(d): return (d & 0xff200000) == 0x6b000000 | |
def is_ADD_64_addsub_shift(d): return (d & 0xff200000) == 0x8b000000 | |
def is_ADDS_64_addsub_shift(d): return (d & 0xff200000) == 0xab000000 | |
def is_SUB_64_addsub_shift(d): return (d & 0xff200000) == 0xcb000000 | |
def is_SUBS_64_addsub_shift(d): return (d & 0xff200000) == 0xeb000000 | |
def is_ADC_32_addsub_carry(d): return (d & 0xffe0fc00) == 0x1a000000 | |
def is_ADCS_32_addsub_carry(d): return (d & 0xffe0fc00) == 0x3a000000 | |
def is_SBC_32_addsub_carry(d): return (d & 0xffe0fc00) == 0x5a000000 | |
def is_SBCS_32_addsub_carry(d): return (d & 0xffe0fc00) == 0x7a000000 | |
def is_ADC_64_addsub_carry(d): return (d & 0xffe0fc00) == 0x9a000000 | |
def is_ADCS_64_addsub_carry(d): return (d & 0xffe0fc00) == 0xba000000 | |
def is_SBC_64_addsub_carry(d): return (d & 0xffe0fc00) == 0xda000000 | |
def is_SBCS_64_addsub_carry(d): return (d & 0xffe0fc00) == 0xfa000000 | |
def is_CCMN_32_condcmp_imm(d): return (d & 0xffe00c10) == 0x3a400800 | |
def is_CCMP_32_condcmp_imm(d): return (d & 0xffe00c10) == 0x7a400800 | |
def is_CCMN_64_condcmp_imm(d): return (d & 0xffe00c10) == 0xba400800 | |
def is_CCMP_64_condcmp_imm(d): return (d & 0xffe00c10) == 0xfa400800 | |
def is_CCMN_32_condcmp_reg(d): return (d & 0xffe00c10) == 0x3a400000 | |
def is_CCMP_32_condcmp_reg(d): return (d & 0xffe00c10) == 0x7a400000 | |
def is_CCMN_64_condcmp_reg(d): return (d & 0xffe00c10) == 0xba400000 | |
def is_CCMP_64_condcmp_reg(d): return (d & 0xffe00c10) == 0xfa400000 | |
def is_CSEL_32_condsel(d): return (d & 0xffe00c00) == 0x1a800000 | |
def is_CSINC_32_condsel(d): return (d & 0xffe00c00) == 0x1a800400 | |
def is_CSINV_32_condsel(d): return (d & 0xffe00c00) == 0x5a800000 | |
def is_CSNEG_32_condsel(d): return (d & 0xffe00c00) == 0x5a800400 | |
def is_CSEL_64_condsel(d): return (d & 0xffe00c00) == 0x9a800000 | |
def is_CSINC_64_condsel(d): return (d & 0xffe00c00) == 0x9a800400 | |
def is_CSINV_64_condsel(d): return (d & 0xffe00c00) == 0xda800000 | |
def is_CSNEG_64_condsel(d): return (d & 0xffe00c00) == 0xda800400 | |
def is_RBIT_32_dp_1src(d): return (d & 0xfffffc00) == 0x5ac00000 | |
def is_REV16_32_dp_1src(d): return (d & 0xfffffc00) == 0x5ac00400 | |
def is_REV_32_dp_1src(d): return (d & 0xfffffc00) == 0x5ac00800 | |
def is_CLZ_32_dp_1src(d): return (d & 0xfffffc00) == 0x5ac01000 | |
def is_CLS_32_dp_1src(d): return (d & 0xfffffc00) == 0x5ac01400 | |
def is_RBIT_64_dp_1src(d): return (d & 0xfffffc00) == 0xdac00000 | |
def is_REV16_64_dp_1src(d): return (d & 0xfffffc00) == 0xdac00400 | |
def is_REV32_64_dp_1src(d): return (d & 0xfffffc00) == 0xdac00800 | |
def is_REV_64_dp_1src(d): return (d & 0xfffffc00) == 0xdac00c00 | |
def is_CLZ_64_dp_1src(d): return (d & 0xfffffc00) == 0xdac01000 | |
def is_CLS_64_dp_1src(d): return (d & 0xfffffc00) == 0xdac01400 | |
def is_PACIA_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac10000 | |
def is_PACIB_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac10400 | |
def is_PACDA_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac10800 | |
def is_PACDB_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac10c00 | |
def is_AUTIA_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac11000 | |
def is_AUTIB_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac11400 | |
def is_AUTDA_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac11800 | |
def is_AUTDB_64P_dp_1src(d): return (d & 0xfffffc00) == 0xdac11c00 | |
def is_PACIZA_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac123e0 | |
def is_PACIZB_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac127e0 | |
def is_PACDZA_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac12be0 | |
def is_PACDZB_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac12fe0 | |
def is_AUTIZA_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac133e0 | |
def is_AUTIZB_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac137e0 | |
def is_AUTDZA_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac13be0 | |
def is_AUTDZB_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac13fe0 | |
def is_XPACI_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac143e0 | |
def is_XPACD_64Z_dp_1src(d): return (d & 0xffffffe0) == 0xdac147e0 | |
def is_UDIV_32_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac00800 | |
def is_SDIV_32_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac00c00 | |
def is_LSLV_32_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac02000 | |
def is_LSRV_32_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac02400 | |
def is_ASRV_32_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac02800 | |
def is_RORV_32_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac02c00 | |
def is_CRC32B_32C_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac04000 | |
def is_CRC32H_32C_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac04400 | |
def is_CRC32W_32C_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac04800 | |
def is_CRC32CB_32C_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac05000 | |
def is_CRC32CH_32C_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac05400 | |
def is_CRC32CW_32C_dp_2src(d): return (d & 0xffe0fc00) == 0x1ac05800 | |
def is_UDIV_64_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac00800 | |
def is_SDIV_64_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac00c00 | |
def is_LSLV_64_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac02000 | |
def is_LSRV_64_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac02400 | |
def is_ASRV_64_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac02800 | |
def is_RORV_64_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac02c00 | |
def is_PACGA_64P_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac03000 | |
def is_CRC32X_64C_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac04c00 | |
def is_CRC32CX_64C_dp_2src(d): return (d & 0xffe0fc00) == 0x9ac05c00 | |
def is_MADD_32A_dp_3src(d): return (d & 0xffe08000) == 0x1b000000 | |
def is_MSUB_32A_dp_3src(d): return (d & 0xffe08000) == 0x1b008000 | |
def is_MADD_64A_dp_3src(d): return (d & 0xffe08000) == 0x9b000000 | |
def is_MSUB_64A_dp_3src(d): return (d & 0xffe08000) == 0x9b008000 | |
def is_SMADDL_64WA_dp_3src(d): return (d & 0xffe08000) == 0x9b200000 | |
def is_SMSUBL_64WA_dp_3src(d): return (d & 0xffe08000) == 0x9b208000 | |
def is_SMULH_64_dp_3src(d): return (d & 0xffe08000) == 0x9b400000 | |
def is_UMADDL_64WA_dp_3src(d): return (d & 0xffe08000) == 0x9ba00000 | |
def is_UMSUBL_64WA_dp_3src(d): return (d & 0xffe08000) == 0x9ba08000 | |
def is_UMULH_64_dp_3src(d): return (d & 0xffe08000) == 0x9bc00000 | |
def is_AND_32_log_shift(d): return (d & 0xff200000) == 0x0a000000 | |
def is_BIC_32_log_shift(d): return (d & 0xff200000) == 0x0a200000 | |
def is_ORR_32_log_shift(d): return (d & 0xff200000) == 0x2a000000 | |
def is_ORN_32_log_shift(d): return (d & 0xff200000) == 0x2a200000 | |
def is_EOR_32_log_shift(d): return (d & 0xff200000) == 0x4a000000 | |
def is_EON_32_log_shift(d): return (d & 0xff200000) == 0x4a200000 | |
def is_ANDS_32_log_shift(d): return (d & 0xff200000) == 0x6a000000 | |
def is_BICS_32_log_shift(d): return (d & 0xff200000) == 0x6a200000 | |
def is_AND_64_log_shift(d): return (d & 0xff200000) == 0x8a000000 | |
def is_BIC_64_log_shift(d): return (d & 0xff200000) == 0x8a200000 | |
def is_ORR_64_log_shift(d): return (d & 0xff200000) == 0xaa000000 | |
def is_ORN_64_log_shift(d): return (d & 0xff200000) == 0xaa200000 | |
def is_EOR_64_log_shift(d): return (d & 0xff200000) == 0xca000000 | |
def is_EON_64_log_shift(d): return (d & 0xff200000) == 0xca200000 | |
def is_ANDS_64_log_shift(d): return (d & 0xff200000) == 0xea000000 | |
def is_BICS_64_log_shift(d): return (d & 0xff200000) == 0xea200000 | |
def is_SADDLV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x0e303800 | |
def is_SMAXV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x0e30a800 | |
def is_SMINV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x0e31a800 | |
def is_ADDV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x0e31b800 | |
def is_FMAXNMV_asimdall_only_H(d): return (d & 0xbffffc00) == 0x0e30c800 | |
def is_FMAXV_asimdall_only_H(d): return (d & 0xbffffc00) == 0x0e30f800 | |
def is_FMINNMV_asimdall_only_H(d): return (d & 0xbffffc00) == 0x0eb0c800 | |
def is_FMINV_asimdall_only_H(d): return (d & 0xbffffc00) == 0x0eb0f800 | |
def is_UADDLV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x2e303800 | |
def is_UMAXV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x2e30a800 | |
def is_UMINV_asimdall_only(d): return (d & 0xbf3ffc00) == 0x2e31a800 | |
def is_FMAXNMV_asimdall_only_SD(d): return (d & 0xbfbffc00) == 0x2e30c800 | |
def is_FMAXV_asimdall_only_SD(d): return (d & 0xbfbffc00) == 0x2e30f800 | |
def is_FMINNMV_asimdall_only_SD(d): return (d & 0xbfbffc00) == 0x2eb0c800 | |
def is_FMINV_asimdall_only_SD(d): return (d & 0xbfbffc00) == 0x2eb0f800 | |
def is_DUP_asimdins_DV_v(d): return (d & 0xbfe0fc00) == 0x0e000400 | |
def is_DUP_asimdins_DR_r(d): return (d & 0xbfe0fc00) == 0x0e000c00 | |
def is_SMOV_asimdins_W_w(d): return (d & 0xffe0fc00) == 0x0e002c00 | |
def is_UMOV_asimdins_W_w(d): return (d & 0xffe0fc00) == 0x0e003c00 | |
def is_INS_asimdins_IR_r(d): return (d & 0xffe0fc00) == 0x4e001c00 | |
def is_SMOV_asimdins_X_x(d): return (d & 0xffe0fc00) == 0x4e002c00 | |
def is_UMOV_asimdins_X_x(d): return (d & 0xffeffc00) == 0x4e083c00 | |
def is_INS_asimdins_IV_v(d): return (d & 0xffe08400) == 0x6e000400 | |
def is_EXT_asimdext_only(d): return (d & 0xbfe08400) == 0x2e000000 | |
def is_MOVI_asimdimm_L_sl(d): return (d & 0xbff89c00) == 0x0f000400 | |
def is_ORR_asimdimm_L_sl(d): return (d & 0xbff89c00) == 0x0f001400 | |
def is_MOVI_asimdimm_L_hl(d): return (d & 0xbff8dc00) == 0x0f008400 | |
def is_ORR_asimdimm_L_hl(d): return (d & 0xbff8dc00) == 0x0f009400 | |
def is_MOVI_asimdimm_M_sm(d): return (d & 0xbff8ec00) == 0x0f00c400 | |
def is_MOVI_asimdimm_N_b(d): return (d & 0xbff8fc00) == 0x0f00e400 | |
def is_FMOV_asimdimm_S_s(d): return (d & 0xbff8fc00) == 0x0f00f400 | |
def is_FMOV_asimdimm_H_h(d): return (d & 0xbff8fc00) == 0x0f00fc00 | |
def is_MVNI_asimdimm_L_sl(d): return (d & 0xbff89c00) == 0x2f000400 | |
def is_BIC_asimdimm_L_sl(d): return (d & 0xbff89c00) == 0x2f001400 | |
def is_MVNI_asimdimm_L_hl(d): return (d & 0xbff8dc00) == 0x2f008400 | |
def is_BIC_asimdimm_L_hl(d): return (d & 0xbff8dc00) == 0x2f009400 | |
def is_MVNI_asimdimm_M_sm(d): return (d & 0xbff8ec00) == 0x2f00c400 | |
def is_MOVI_asimdimm_D_ds(d): return (d & 0xfff8fc00) == 0x2f00e400 | |
def is_MOVI_asimdimm_D2_d(d): return (d & 0xfff8fc00) == 0x6f00e400 | |
def is_FMOV_asimdimm_D2_d(d): return (d & 0xfff8fc00) == 0x6f00f400 | |
def is_UZP1_asimdperm_only(d): return (d & 0xbf20fc00) == 0x0e001800 | |
def is_TRN1_asimdperm_only(d): return (d & 0xbf20fc00) == 0x0e002800 | |
def is_ZIP1_asimdperm_only(d): return (d & 0xbf20fc00) == 0x0e003800 | |
def is_UZP2_asimdperm_only(d): return (d & 0xbf20fc00) == 0x0e005800 | |
def is_TRN2_asimdperm_only(d): return (d & 0xbf20fc00) == 0x0e006800 | |
def is_ZIP2_asimdperm_only(d): return (d & 0xbf20fc00) == 0x0e007800 | |
def is_DUP_asisdone_only(d): return (d & 0xffe0fc00) == 0x5e000400 | |
def is_ADDP_asisdpair_only(d): return (d & 0xff3ffc00) == 0x5e31b800 | |
def is_FMAXNMP_asisdpair_only_H(d): return (d & 0xfffffc00) == 0x5e30c800 | |
def is_FADDP_asisdpair_only_H(d): return (d & 0xfffffc00) == 0x5e30d800 | |
def is_FMAXP_asisdpair_only_H(d): return (d & 0xfffffc00) == 0x5e30f800 | |
def is_FMINNMP_asisdpair_only_H(d): return (d & 0xfffffc00) == 0x5eb0c800 | |
def is_FMINP_asisdpair_only_H(d): return (d & 0xfffffc00) == 0x5eb0f800 | |
def is_FMAXNMP_asisdpair_only_SD(d): return (d & 0xffbffc00) == 0x7e30c800 | |
def is_FADDP_asisdpair_only_SD(d): return (d & 0xffbffc00) == 0x7e30d800 | |
def is_FMAXP_asisdpair_only_SD(d): return (d & 0xffbffc00) == 0x7e30f800 | |
def is_FMINNMP_asisdpair_only_SD(d): return (d & 0xffbffc00) == 0x7eb0c800 | |
def is_FMINP_asisdpair_only_SD(d): return (d & 0xffbffc00) == 0x7eb0f800 | |
def is_SSHR_asisdshf_R(d): return (d & 0xff80fc00) == 0x5f000400 and (d & 0x780000) != 0x000000 | |
def is_SSRA_asisdshf_R(d): return (d & 0xff80fc00) == 0x5f001400 and (d & 0x780000) != 0x000000 | |
def is_SRSHR_asisdshf_R(d): return (d & 0xff80fc00) == 0x5f002400 and (d & 0x780000) != 0x000000 | |
def is_SRSRA_asisdshf_R(d): return (d & 0xff80fc00) == 0x5f003400 and (d & 0x780000) != 0x000000 | |
def is_SHL_asisdshf_R(d): return (d & 0xff80fc00) == 0x5f005400 and (d & 0x780000) != 0x000000 | |
def is_SQSHL_asisdshf_R(d): return (d & 0xff80fc00) == 0x5f007400 and (d & 0x780000) != 0x000000 | |
def is_SQSHRN_asisdshf_N(d): return (d & 0xff80fc00) == 0x5f009400 and (d & 0x780000) != 0x000000 | |
def is_SQRSHRN_asisdshf_N(d): return (d & 0xff80fc00) == 0x5f009c00 and (d & 0x780000) != 0x000000 | |
def is_SCVTF_asisdshf_C(d): return (d & 0xff80fc00) == 0x5f00e400 and (d & 0x780000) != 0x000000 | |
def is_FCVTZS_asisdshf_C(d): return (d & 0xff80fc00) == 0x5f00fc00 and (d & 0x780000) != 0x000000 | |
def is_USHR_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f000400 and (d & 0x780000) != 0x000000 | |
def is_USRA_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f001400 and (d & 0x780000) != 0x000000 | |
def is_URSHR_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f002400 and (d & 0x780000) != 0x000000 | |
def is_URSRA_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f003400 and (d & 0x780000) != 0x000000 | |
def is_SRI_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f004400 and (d & 0x780000) != 0x000000 | |
def is_SLI_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f005400 and (d & 0x780000) != 0x000000 | |
def is_SQSHLU_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f006400 and (d & 0x780000) != 0x000000 | |
def is_UQSHL_asisdshf_R(d): return (d & 0xff80fc00) == 0x7f007400 and (d & 0x780000) != 0x000000 | |
def is_SQSHRUN_asisdshf_N(d): return (d & 0xff80fc00) == 0x7f008400 and (d & 0x780000) != 0x000000 | |
def is_SQRSHRUN_asisdshf_N(d): return (d & 0xff80fc00) == 0x7f008c00 and (d & 0x780000) != 0x000000 | |
def is_UQSHRN_asisdshf_N(d): return (d & 0xff80fc00) == 0x7f009400 and (d & 0x780000) != 0x000000 | |
def is_UQRSHRN_asisdshf_N(d): return (d & 0xff80fc00) == 0x7f009c00 and (d & 0x780000) != 0x000000 | |
def is_UCVTF_asisdshf_C(d): return (d & 0xff80fc00) == 0x7f00e400 and (d & 0x780000) != 0x000000 | |
def is_FCVTZU_asisdshf_C(d): return (d & 0xff80fc00) == 0x7f00fc00 and (d & 0x780000) != 0x000000 | |
def is_SQDMLAL_asisddiff_only(d): return (d & 0xff20fc00) == 0x5e209000 | |
def is_SQDMLSL_asisddiff_only(d): return (d & 0xff20fc00) == 0x5e20b000 | |
def is_SQDMULL_asisddiff_only(d): return (d & 0xff20fc00) == 0x5e20d000 | |
def is_SQADD_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e200c00 | |
def is_SQSUB_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e202c00 | |
def is_CMGT_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e203400 | |
def is_CMGE_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e203c00 | |
def is_SSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e204400 | |
def is_SQSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e204c00 | |
def is_SRSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e205400 | |
def is_SQRSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e205c00 | |
def is_ADD_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e208400 | |
def is_CMTST_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e208c00 | |
def is_SQDMULH_asisdsame_only(d): return (d & 0xff20fc00) == 0x5e20b400 | |
def is_FMULX_asisdsame_only(d): return (d & 0xffa0fc00) == 0x5e20dc00 | |
def is_FCMEQ_asisdsame_only(d): return (d & 0xffa0fc00) == 0x5e20e400 | |
def is_FRECPS_asisdsame_only(d): return (d & 0xffa0fc00) == 0x5e20fc00 | |
def is_FRSQRTS_asisdsame_only(d): return (d & 0xffa0fc00) == 0x5ea0fc00 | |
def is_UQADD_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e200c00 | |
def is_UQSUB_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e202c00 | |
def is_CMHI_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e203400 | |
def is_CMHS_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e203c00 | |
def is_USHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e204400 | |
def is_UQSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e204c00 | |
def is_URSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e205400 | |
def is_UQRSHL_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e205c00 | |
def is_SUB_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e208400 | |
def is_CMEQ_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e208c00 | |
def is_SQRDMULH_asisdsame_only(d): return (d & 0xff20fc00) == 0x7e20b400 | |
def is_FCMGE_asisdsame_only(d): return (d & 0xffa0fc00) == 0x7e20e400 | |
def is_FACGE_asisdsame_only(d): return (d & 0xffa0fc00) == 0x7e20ec00 | |
def is_FABD_asisdsame_only(d): return (d & 0xffa0fc00) == 0x7ea0d400 | |
def is_FCMGT_asisdsame_only(d): return (d & 0xffa0fc00) == 0x7ea0e400 | |
def is_FACGT_asisdsame_only(d): return (d & 0xffa0fc00) == 0x7ea0ec00 | |
def is_FMULX_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x5e401c00 | |
def is_FCMEQ_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x5e402400 | |
def is_FRECPS_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x5e403c00 | |
def is_FRSQRTS_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x5ec03c00 | |
def is_FCMGE_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x7e402400 | |
def is_FACGE_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x7e402c00 | |
def is_FABD_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x7ec01400 | |
def is_FCMGT_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x7ec02400 | |
def is_FACGT_asisdsamefp16_only(d): return (d & 0xffe0fc00) == 0x7ec02c00 | |
def is_SQRDMLAH_asisdsame2_only(d): return (d & 0xff20fc00) == 0x7e008400 | |
def is_SQRDMLSH_asisdsame2_only(d): return (d & 0xff20fc00) == 0x7e008c00 | |
def is_SUQADD_asisdmisc_R(d): return (d & 0xff3ffc00) == 0x5e203800 | |
def is_SQABS_asisdmisc_R(d): return (d & 0xff3ffc00) == 0x5e207800 | |
def is_CMGT_asisdmisc_Z(d): return (d & 0xff3ffc00) == 0x5e208800 | |
def is_CMEQ_asisdmisc_Z(d): return (d & 0xff3ffc00) == 0x5e209800 | |
def is_CMLT_asisdmisc_Z(d): return (d & 0xff3ffc00) == 0x5e20a800 | |
def is_ABS_asisdmisc_R(d): return (d & 0xff3ffc00) == 0x5e20b800 | |
def is_SQXTN_asisdmisc_N(d): return (d & 0xff3ffc00) == 0x5e214800 | |
def is_FCVTNS_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5e21a800 | |
def is_FCVTMS_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5e21b800 | |
def is_FCVTAS_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5e21c800 | |
def is_SCVTF_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5e21d800 | |
def is_FCMGT_asisdmisc_FZ(d): return (d & 0xffbffc00) == 0x5ea0c800 | |
def is_FCMEQ_asisdmisc_FZ(d): return (d & 0xffbffc00) == 0x5ea0d800 | |
def is_FCMLT_asisdmisc_FZ(d): return (d & 0xffbffc00) == 0x5ea0e800 | |
def is_FCVTPS_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5ea1a800 | |
def is_FCVTZS_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5ea1b800 | |
def is_FRECPE_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5ea1d800 | |
def is_FRECPX_asisdmisc_R(d): return (d & 0xffbffc00) == 0x5ea1f800 | |
def is_USQADD_asisdmisc_R(d): return (d & 0xff3ffc00) == 0x7e203800 | |
def is_SQNEG_asisdmisc_R(d): return (d & 0xff3ffc00) == 0x7e207800 | |
def is_CMGE_asisdmisc_Z(d): return (d & 0xff3ffc00) == 0x7e208800 | |
def is_CMLE_asisdmisc_Z(d): return (d & 0xff3ffc00) == 0x7e209800 | |
def is_NEG_asisdmisc_R(d): return (d & 0xff3ffc00) == 0x7e20b800 | |
def is_SQXTUN_asisdmisc_N(d): return (d & 0xff3ffc00) == 0x7e212800 | |
def is_UQXTN_asisdmisc_N(d): return (d & 0xff3ffc00) == 0x7e214800 | |
def is_FCVTXN_asisdmisc_N(d): return (d & 0xffbffc00) == 0x7e216800 | |
def is_FCVTNU_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7e21a800 | |
def is_FCVTMU_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7e21b800 | |
def is_FCVTAU_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7e21c800 | |
def is_UCVTF_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7e21d800 | |
def is_FCMGE_asisdmisc_FZ(d): return (d & 0xffbffc00) == 0x7ea0c800 | |
def is_FCMLE_asisdmisc_FZ(d): return (d & 0xffbffc00) == 0x7ea0d800 | |
def is_FCVTPU_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7ea1a800 | |
def is_FCVTZU_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7ea1b800 | |
def is_FRSQRTE_asisdmisc_R(d): return (d & 0xffbffc00) == 0x7ea1d800 | |
def is_FCVTNS_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5e79a800 | |
def is_FCVTMS_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5e79b800 | |
def is_FCVTAS_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5e79c800 | |
def is_SCVTF_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5e79d800 | |
def is_FCMGT_asisdmiscfp16_FZ(d): return (d & 0xfffffc00) == 0x5ef8c800 | |
def is_FCMEQ_asisdmiscfp16_FZ(d): return (d & 0xfffffc00) == 0x5ef8d800 | |
def is_FCMLT_asisdmiscfp16_FZ(d): return (d & 0xfffffc00) == 0x5ef8e800 | |
def is_FCVTPS_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5ef9a800 | |
def is_FCVTZS_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5ef9b800 | |
def is_FRECPE_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5ef9d800 | |
def is_FRECPX_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x5ef9f800 | |
def is_FCVTNU_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7e79a800 | |
def is_FCVTMU_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7e79b800 | |
def is_FCVTAU_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7e79c800 | |
def is_UCVTF_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7e79d800 | |
def is_FCMGE_asisdmiscfp16_FZ(d): return (d & 0xfffffc00) == 0x7ef8c800 | |
def is_FCMLE_asisdmiscfp16_FZ(d): return (d & 0xfffffc00) == 0x7ef8d800 | |
def is_FCVTPU_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7ef9a800 | |
def is_FCVTZU_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7ef9b800 | |
def is_FRSQRTE_asisdmiscfp16_R(d): return (d & 0xfffffc00) == 0x7ef9d800 | |
def is_SQDMLAL_asisdelem_L(d): return (d & 0xff00f400) == 0x5f003000 | |
def is_SQDMLSL_asisdelem_L(d): return (d & 0xff00f400) == 0x5f007000 | |
def is_SQDMULL_asisdelem_L(d): return (d & 0xff00f400) == 0x5f00b000 | |
def is_SQDMULH_asisdelem_R(d): return (d & 0xff00f400) == 0x5f00c000 | |
def is_SQRDMULH_asisdelem_R(d): return (d & 0xff00f400) == 0x5f00d000 | |
def is_FMLA_asisdelem_RH_H(d): return (d & 0xffc0f400) == 0x5f001000 | |
def is_FMLS_asisdelem_RH_H(d): return (d & 0xffc0f400) == 0x5f005000 | |
def is_FMUL_asisdelem_RH_H(d): return (d & 0xffc0f400) == 0x5f009000 | |
def is_FMLA_asisdelem_R_SD(d): return (d & 0xff80f400) == 0x5f801000 | |
def is_FMLS_asisdelem_R_SD(d): return (d & 0xff80f400) == 0x5f805000 | |
def is_FMUL_asisdelem_R_SD(d): return (d & 0xff80f400) == 0x5f809000 | |
def is_SQRDMLAH_asisdelem_R(d): return (d & 0xff00f400) == 0x7f00d000 | |
def is_SQRDMLSH_asisdelem_R(d): return (d & 0xff00f400) == 0x7f00f000 | |
def is_FMULX_asisdelem_RH_H(d): return (d & 0xffc0f400) == 0x7f009000 | |
def is_FMULX_asisdelem_R_SD(d): return (d & 0xff80f400) == 0x7f809000 | |
def is_SSHR_asimdshf_R(d): return (d & 0xbf80fc00) == 0x0f000400 and (d & 0x780000) != 0x000000 | |
def is_SSRA_asimdshf_R(d): return (d & 0xbf80fc00) == 0x0f001400 and (d & 0x780000) != 0x000000 | |
def is_SRSHR_asimdshf_R(d): return (d & 0xbf80fc00) == 0x0f002400 and (d & 0x780000) != 0x000000 | |
def is_SRSRA_asimdshf_R(d): return (d & 0xbf80fc00) == 0x0f003400 and (d & 0x780000) != 0x000000 | |
def is_SHL_asimdshf_R(d): return (d & 0xbf80fc00) == 0x0f005400 and (d & 0x780000) != 0x000000 | |
def is_SQSHL_asimdshf_R(d): return (d & 0xbf80fc00) == 0x0f007400 and (d & 0x780000) != 0x000000 | |
def is_SHRN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x0f008400 and (d & 0x780000) != 0x000000 | |
def is_RSHRN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x0f008c00 and (d & 0x780000) != 0x000000 | |
def is_SQSHRN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x0f009400 and (d & 0x780000) != 0x000000 | |
def is_SQRSHRN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x0f009c00 and (d & 0x780000) != 0x000000 | |
def is_SSHLL_asimdshf_L(d): return (d & 0xbf80fc00) == 0x0f00a400 and (d & 0x780000) != 0x000000 | |
def is_SCVTF_asimdshf_C(d): return (d & 0xbf80fc00) == 0x0f00e400 and (d & 0x780000) != 0x000000 | |
def is_FCVTZS_asimdshf_C(d): return (d & 0xbf80fc00) == 0x0f00fc00 and (d & 0x780000) != 0x000000 | |
def is_USHR_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f000400 and (d & 0x780000) != 0x000000 | |
def is_USRA_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f001400 and (d & 0x780000) != 0x000000 | |
def is_URSHR_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f002400 and (d & 0x780000) != 0x000000 | |
def is_URSRA_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f003400 and (d & 0x780000) != 0x000000 | |
def is_SRI_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f004400 and (d & 0x780000) != 0x000000 | |
def is_SLI_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f005400 and (d & 0x780000) != 0x000000 | |
def is_SQSHLU_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f006400 and (d & 0x780000) != 0x000000 | |
def is_UQSHL_asimdshf_R(d): return (d & 0xbf80fc00) == 0x2f007400 and (d & 0x780000) != 0x000000 | |
def is_SQSHRUN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x2f008400 and (d & 0x780000) != 0x000000 | |
def is_SQRSHRUN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x2f008c00 and (d & 0x780000) != 0x000000 | |
def is_UQSHRN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x2f009400 and (d & 0x780000) != 0x000000 | |
def is_UQRSHRN_asimdshf_N(d): return (d & 0xbf80fc00) == 0x2f009c00 and (d & 0x780000) != 0x000000 | |
def is_USHLL_asimdshf_L(d): return (d & 0xbf80fc00) == 0x2f00a400 and (d & 0x780000) != 0x000000 | |
def is_UCVTF_asimdshf_C(d): return (d & 0xbf80fc00) == 0x2f00e400 and (d & 0x780000) != 0x000000 | |
def is_FCVTZU_asimdshf_C(d): return (d & 0xbf80fc00) == 0x2f00fc00 and (d & 0x780000) != 0x000000 | |
def is_TBL_asimdtbl_L1_1(d): return (d & 0xbfe0fc00) == 0x0e000000 | |
def is_TBX_asimdtbl_L1_1(d): return (d & 0xbfe0fc00) == 0x0e001000 | |
def is_TBL_asimdtbl_L2_2(d): return (d & 0xbfe0fc00) == 0x0e002000 | |
def is_TBX_asimdtbl_L2_2(d): return (d & 0xbfe0fc00) == 0x0e003000 | |
def is_TBL_asimdtbl_L3_3(d): return (d & 0xbfe0fc00) == 0x0e004000 | |
def is_TBX_asimdtbl_L3_3(d): return (d & 0xbfe0fc00) == 0x0e005000 | |
def is_TBL_asimdtbl_L4_4(d): return (d & 0xbfe0fc00) == 0x0e006000 | |
def is_TBX_asimdtbl_L4_4(d): return (d & 0xbfe0fc00) == 0x0e007000 | |
def is_SADDL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e200000 | |
def is_SADDW_asimddiff_W(d): return (d & 0xbf20fc00) == 0x0e201000 | |
def is_SSUBL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e202000 | |
def is_SSUBW_asimddiff_W(d): return (d & 0xbf20fc00) == 0x0e203000 | |
def is_ADDHN_asimddiff_N(d): return (d & 0xbf20fc00) == 0x0e204000 | |
def is_SABAL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e205000 | |
def is_SUBHN_asimddiff_N(d): return (d & 0xbf20fc00) == 0x0e206000 | |
def is_SABDL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e207000 | |
def is_SMLAL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e208000 | |
def is_SQDMLAL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e209000 | |
def is_SMLSL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e20a000 | |
def is_SQDMLSL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e20b000 | |
def is_SMULL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e20c000 | |
def is_SQDMULL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e20d000 | |
def is_PMULL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x0e20e000 | |
def is_UADDL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e200000 | |
def is_UADDW_asimddiff_W(d): return (d & 0xbf20fc00) == 0x2e201000 | |
def is_USUBL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e202000 | |
def is_USUBW_asimddiff_W(d): return (d & 0xbf20fc00) == 0x2e203000 | |
def is_RADDHN_asimddiff_N(d): return (d & 0xbf20fc00) == 0x2e204000 | |
def is_UABAL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e205000 | |
def is_RSUBHN_asimddiff_N(d): return (d & 0xbf20fc00) == 0x2e206000 | |
def is_UABDL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e207000 | |
def is_UMLAL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e208000 | |
def is_UMLSL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e20a000 | |
def is_UMULL_asimddiff_L(d): return (d & 0xbf20fc00) == 0x2e20c000 | |
def is_SHADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e200400 | |
def is_SQADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e200c00 | |
def is_SRHADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e201400 | |
def is_SHSUB_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e202400 | |
def is_SQSUB_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e202c00 | |
def is_CMGT_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e203400 | |
def is_CMGE_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e203c00 | |
def is_SSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e204400 | |
def is_SQSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e204c00 | |
def is_SRSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e205400 | |
def is_SQRSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e205c00 | |
def is_SMAX_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e206400 | |
def is_SMIN_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e206c00 | |
def is_SABD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e207400 | |
def is_SABA_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e207c00 | |
def is_ADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e208400 | |
def is_CMTST_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e208c00 | |
def is_MLA_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e209400 | |
def is_MUL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e209c00 | |
def is_SMAXP_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e20a400 | |
def is_SMINP_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e20ac00 | |
def is_SQDMULH_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e20b400 | |
def is_ADDP_asimdsame_only(d): return (d & 0xbf20fc00) == 0x0e20bc00 | |
def is_FMAXNM_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20c400 | |
def is_FMLA_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20cc00 | |
def is_FADD_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20d400 | |
def is_FMULX_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20dc00 | |
def is_FCMEQ_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20e400 | |
def is_FMAX_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20f400 | |
def is_FRECPS_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0e20fc00 | |
def is_AND_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x0e201c00 | |
def is_BIC_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x0e601c00 | |
def is_FMINNM_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0ea0c400 | |
def is_FMLS_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0ea0cc00 | |
def is_FSUB_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0ea0d400 | |
def is_FMIN_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0ea0f400 | |
def is_FRSQRTS_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x0ea0fc00 | |
def is_ORR_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x0ea01c00 | |
def is_ORN_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x0ee01c00 | |
def is_UHADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e200400 | |
def is_UQADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e200c00 | |
def is_URHADD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e201400 | |
def is_UHSUB_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e202400 | |
def is_UQSUB_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e202c00 | |
def is_CMHI_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e203400 | |
def is_CMHS_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e203c00 | |
def is_USHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e204400 | |
def is_UQSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e204c00 | |
def is_URSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e205400 | |
def is_UQRSHL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e205c00 | |
def is_UMAX_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e206400 | |
def is_UMIN_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e206c00 | |
def is_UABD_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e207400 | |
def is_UABA_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e207c00 | |
def is_SUB_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e208400 | |
def is_CMEQ_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e208c00 | |
def is_MLS_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e209400 | |
def is_PMUL_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e209c00 | |
def is_UMAXP_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e20a400 | |
def is_UMINP_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e20ac00 | |
def is_SQRDMULH_asimdsame_only(d): return (d & 0xbf20fc00) == 0x2e20b400 | |
def is_FMAXNMP_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20c400 | |
def is_FADDP_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20d400 | |
def is_FMUL_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20dc00 | |
def is_FCMGE_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20e400 | |
def is_FACGE_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20ec00 | |
def is_FMAXP_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20f400 | |
def is_FDIV_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2e20fc00 | |
def is_EOR_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x2e201c00 | |
def is_BSL_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x2e601c00 | |
def is_FMINNMP_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2ea0c400 | |
def is_FABD_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2ea0d400 | |
def is_FCMGT_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2ea0e400 | |
def is_FACGT_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2ea0ec00 | |
def is_FMINP_asimdsame_only(d): return (d & 0xbfa0fc00) == 0x2ea0f400 | |
def is_BIT_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x2ea01c00 | |
def is_BIF_asimdsame_only(d): return (d & 0xbfe0fc00) == 0x2ee01c00 | |
def is_FMAXNM_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e400400 | |
def is_FMLA_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e400c00 | |
def is_FADD_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e401400 | |
def is_FMULX_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e401c00 | |
def is_FCMEQ_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e402400 | |
def is_FMAX_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e403400 | |
def is_FRECPS_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0e403c00 | |
def is_FMINNM_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0ec00400 | |
def is_FMLS_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0ec00c00 | |
def is_FSUB_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0ec01400 | |
def is_FMIN_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0ec03400 | |
def is_FRSQRTS_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x0ec03c00 | |
def is_FMAXNMP_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e400400 | |
def is_FADDP_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e401400 | |
def is_FMUL_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e401c00 | |
def is_FCMGE_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e402400 | |
def is_FACGE_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e402c00 | |
def is_FMAXP_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e403400 | |
def is_FDIV_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2e403c00 | |
def is_FMINNMP_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2ec00400 | |
def is_FABD_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2ec01400 | |
def is_FCMGT_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2ec02400 | |
def is_FACGT_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2ec02c00 | |
def is_FMINP_asimdsamefp16_only(d): return (d & 0xbfe0fc00) == 0x2ec03400 | |
def is_SDOT_asimdsame2_D(d): return (d & 0xbf20fc00) == 0x0e009400 | |
def is_SQRDMLAH_asimdsame2_only(d): return (d & 0xbf20fc00) == 0x2e008400 | |
def is_SQRDMLSH_asimdsame2_only(d): return (d & 0xbf20fc00) == 0x2e008c00 | |
def is_UDOT_asimdsame2_D(d): return (d & 0xbf20fc00) == 0x2e009400 | |
def is_FCMLA_asimdsame2_C(d): return (d & 0xbf20e400) == 0x2e00c400 | |
def is_FCADD_asimdsame2_C(d): return (d & 0xbf20ec00) == 0x2e00e400 | |
def is_REV64_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e200800 | |
def is_REV16_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e201800 | |
def is_SADDLP_asimdmisc_P(d): return (d & 0xbf3ffc00) == 0x0e202800 | |
def is_SUQADD_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e203800 | |
def is_CLS_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e204800 | |
def is_CNT_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e205800 | |
def is_SADALP_asimdmisc_P(d): return (d & 0xbf3ffc00) == 0x0e206800 | |
def is_SQABS_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e207800 | |
def is_CMGT_asimdmisc_Z(d): return (d & 0xbf3ffc00) == 0x0e208800 | |
def is_CMEQ_asimdmisc_Z(d): return (d & 0xbf3ffc00) == 0x0e209800 | |
def is_CMLT_asimdmisc_Z(d): return (d & 0xbf3ffc00) == 0x0e20a800 | |
def is_ABS_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x0e20b800 | |
def is_XTN_asimdmisc_N(d): return (d & 0xbf3ffc00) == 0x0e212800 | |
def is_SQXTN_asimdmisc_N(d): return (d & 0xbf3ffc00) == 0x0e214800 | |
def is_FCVTN_asimdmisc_N(d): return (d & 0xbfbffc00) == 0x0e216800 | |
def is_FCVTL_asimdmisc_L(d): return (d & 0xbfbffc00) == 0x0e217800 | |
def is_FRINTN_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0e218800 | |
def is_FRINTM_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0e219800 | |
def is_FCVTNS_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0e21a800 | |
def is_FCVTMS_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0e21b800 | |
def is_FCVTAS_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0e21c800 | |
def is_SCVTF_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0e21d800 | |
def is_FCMGT_asimdmisc_FZ(d): return (d & 0xbfbffc00) == 0x0ea0c800 | |
def is_FCMEQ_asimdmisc_FZ(d): return (d & 0xbfbffc00) == 0x0ea0d800 | |
def is_FCMLT_asimdmisc_FZ(d): return (d & 0xbfbffc00) == 0x0ea0e800 | |
def is_FABS_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea0f800 | |
def is_FRINTP_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea18800 | |
def is_FRINTZ_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea19800 | |
def is_FCVTPS_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea1a800 | |
def is_FCVTZS_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea1b800 | |
def is_URECPE_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea1c800 | |
def is_FRECPE_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x0ea1d800 | |
def is_REV32_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x2e200800 | |
def is_UADDLP_asimdmisc_P(d): return (d & 0xbf3ffc00) == 0x2e202800 | |
def is_USQADD_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x2e203800 | |
def is_CLZ_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x2e204800 | |
def is_UADALP_asimdmisc_P(d): return (d & 0xbf3ffc00) == 0x2e206800 | |
def is_SQNEG_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x2e207800 | |
def is_CMGE_asimdmisc_Z(d): return (d & 0xbf3ffc00) == 0x2e208800 | |
def is_CMLE_asimdmisc_Z(d): return (d & 0xbf3ffc00) == 0x2e209800 | |
def is_NEG_asimdmisc_R(d): return (d & 0xbf3ffc00) == 0x2e20b800 | |
def is_SQXTUN_asimdmisc_N(d): return (d & 0xbf3ffc00) == 0x2e212800 | |
def is_SHLL_asimdmisc_S(d): return (d & 0xbf3ffc00) == 0x2e213800 | |
def is_UQXTN_asimdmisc_N(d): return (d & 0xbf3ffc00) == 0x2e214800 | |
def is_FCVTXN_asimdmisc_N(d): return (d & 0xbfbffc00) == 0x2e216800 | |
def is_FRINTA_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2e218800 | |
def is_FRINTX_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2e219800 | |
def is_FCVTNU_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2e21a800 | |
def is_FCVTMU_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2e21b800 | |
def is_FCVTAU_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2e21c800 | |
def is_UCVTF_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2e21d800 | |
def is_NOT_asimdmisc_R(d): return (d & 0xbffffc00) == 0x2e205800 | |
def is_RBIT_asimdmisc_R(d): return (d & 0xbffffc00) == 0x2e605800 | |
def is_FCMGE_asimdmisc_FZ(d): return (d & 0xbfbffc00) == 0x2ea0c800 | |
def is_FCMLE_asimdmisc_FZ(d): return (d & 0xbfbffc00) == 0x2ea0d800 | |
def is_FNEG_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea0f800 | |
def is_FRINTI_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea19800 | |
def is_FCVTPU_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea1a800 | |
def is_FCVTZU_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea1b800 | |
def is_URSQRTE_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea1c800 | |
def is_FRSQRTE_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea1d800 | |
def is_FSQRT_asimdmisc_R(d): return (d & 0xbfbffc00) == 0x2ea1f800 | |
def is_FRINTN_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0e798800 | |
def is_FRINTM_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0e799800 | |
def is_FCVTNS_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0e79a800 | |
def is_FCVTMS_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0e79b800 | |
def is_FCVTAS_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0e79c800 | |
def is_SCVTF_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0e79d800 | |
def is_FCMGT_asimdmiscfp16_FZ(d): return (d & 0xbffffc00) == 0x0ef8c800 | |
def is_FCMEQ_asimdmiscfp16_FZ(d): return (d & 0xbffffc00) == 0x0ef8d800 | |
def is_FCMLT_asimdmiscfp16_FZ(d): return (d & 0xbffffc00) == 0x0ef8e800 | |
def is_FABS_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0ef8f800 | |
def is_FRINTP_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0ef98800 | |
def is_FRINTZ_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0ef99800 | |
def is_FCVTPS_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0ef9a800 | |
def is_FCVTZS_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0ef9b800 | |
def is_FRECPE_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x0ef9d800 | |
def is_FRINTA_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2e798800 | |
def is_FRINTX_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2e799800 | |
def is_FCVTNU_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2e79a800 | |
def is_FCVTMU_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2e79b800 | |
def is_FCVTAU_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2e79c800 | |
def is_UCVTF_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2e79d800 | |
def is_FCMGE_asimdmiscfp16_FZ(d): return (d & 0xbffffc00) == 0x2ef8c800 | |
def is_FCMLE_asimdmiscfp16_FZ(d): return (d & 0xbffffc00) == 0x2ef8d800 | |
def is_FNEG_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2ef8f800 | |
def is_FRINTI_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2ef99800 | |
def is_FCVTPU_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2ef9a800 | |
def is_FCVTZU_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2ef9b800 | |
def is_FRSQRTE_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2ef9d800 | |
def is_FSQRT_asimdmiscfp16_R(d): return (d & 0xbffffc00) == 0x2ef9f800 | |
def is_SMLAL_asimdelem_L(d): return (d & 0xbf00f400) == 0x0f002000 | |
def is_SQDMLAL_asimdelem_L(d): return (d & 0xbf00f400) == 0x0f003000 | |
def is_SMLSL_asimdelem_L(d): return (d & 0xbf00f400) == 0x0f006000 | |
def is_SQDMLSL_asimdelem_L(d): return (d & 0xbf00f400) == 0x0f007000 | |
def is_MUL_asimdelem_R(d): return (d & 0xbf00f400) == 0x0f008000 | |
def is_SMULL_asimdelem_L(d): return (d & 0xbf00f400) == 0x0f00a000 | |
def is_SQDMULL_asimdelem_L(d): return (d & 0xbf00f400) == 0x0f00b000 | |
def is_SQDMULH_asimdelem_R(d): return (d & 0xbf00f400) == 0x0f00c000 | |
def is_SQRDMULH_asimdelem_R(d): return (d & 0xbf00f400) == 0x0f00d000 | |
def is_SDOT_asimdelem_D(d): return (d & 0xbf00f400) == 0x0f00e000 | |
def is_FMLA_asimdelem_RH_H(d): return (d & 0xbfc0f400) == 0x0f001000 | |
def is_FMLS_asimdelem_RH_H(d): return (d & 0xbfc0f400) == 0x0f005000 | |
def is_FMUL_asimdelem_RH_H(d): return (d & 0xbfc0f400) == 0x0f009000 | |
def is_FMLA_asimdelem_R_SD(d): return (d & 0xbf80f400) == 0x0f801000 | |
def is_FMLS_asimdelem_R_SD(d): return (d & 0xbf80f400) == 0x0f805000 | |
def is_FMUL_asimdelem_R_SD(d): return (d & 0xbf80f400) == 0x0f809000 | |
def is_MLA_asimdelem_R(d): return (d & 0xbf00f400) == 0x2f000000 | |
def is_UMLAL_asimdelem_L(d): return (d & 0xbf00f400) == 0x2f002000 | |
def is_MLS_asimdelem_R(d): return (d & 0xbf00f400) == 0x2f004000 | |
def is_UMLSL_asimdelem_L(d): return (d & 0xbf00f400) == 0x2f006000 | |
def is_UMULL_asimdelem_L(d): return (d & 0xbf00f400) == 0x2f00a000 | |
def is_SQRDMLAH_asimdelem_R(d): return (d & 0xbf00f400) == 0x2f00d000 | |
def is_UDOT_asimdelem_D(d): return (d & 0xbf00f400) == 0x2f00e000 | |
def is_SQRDMLSH_asimdelem_R(d): return (d & 0xbf00f400) == 0x2f00f000 | |
def is_FMULX_asimdelem_RH_H(d): return (d & 0xbfc0f400) == 0x2f009000 | |
def is_FCMLA_asimdelem_C_H(d): return (d & 0xbfc09400) == 0x2f401000 | |
def is_FMULX_asimdelem_R_SD(d): return (d & 0xbf80f400) == 0x2f809000 | |
def is_FCMLA_asimdelem_C_S(d): return (d & 0xbfc09400) == 0x2f801000 | |
def is_SCVTF_S32_float2fix(d): return (d & 0xffff0000) == 0x1e020000 | |
def is_UCVTF_S32_float2fix(d): return (d & 0xffff0000) == 0x1e030000 | |
def is_FCVTZS_32S_float2fix(d): return (d & 0xffff0000) == 0x1e180000 | |
def is_FCVTZU_32S_float2fix(d): return (d & 0xffff0000) == 0x1e190000 | |
def is_SCVTF_D32_float2fix(d): return (d & 0xffff0000) == 0x1e420000 | |
def is_UCVTF_D32_float2fix(d): return (d & 0xffff0000) == 0x1e430000 | |
def is_FCVTZS_32D_float2fix(d): return (d & 0xffff0000) == 0x1e580000 | |
def is_FCVTZU_32D_float2fix(d): return (d & 0xffff0000) == 0x1e590000 | |
def is_SCVTF_H32_float2fix(d): return (d & 0xffff0000) == 0x1ec20000 | |
def is_UCVTF_H32_float2fix(d): return (d & 0xffff0000) == 0x1ec30000 | |
def is_FCVTZS_32H_float2fix(d): return (d & 0xffff0000) == 0x1ed80000 | |
def is_FCVTZU_32H_float2fix(d): return (d & 0xffff0000) == 0x1ed90000 | |
def is_SCVTF_S64_float2fix(d): return (d & 0xffff0000) == 0x9e020000 | |
def is_UCVTF_S64_float2fix(d): return (d & 0xffff0000) == 0x9e030000 | |
def is_FCVTZS_64S_float2fix(d): return (d & 0xffff0000) == 0x9e180000 | |
def is_FCVTZU_64S_float2fix(d): return (d & 0xffff0000) == 0x9e190000 | |
def is_SCVTF_D64_float2fix(d): return (d & 0xffff0000) == 0x9e420000 | |
def is_UCVTF_D64_float2fix(d): return (d & 0xffff0000) == 0x9e430000 | |
def is_FCVTZS_64D_float2fix(d): return (d & 0xffff0000) == 0x9e580000 | |
def is_FCVTZU_64D_float2fix(d): return (d & 0xffff0000) == 0x9e590000 | |
def is_SCVTF_H64_float2fix(d): return (d & 0xffff0000) == 0x9ec20000 | |
def is_UCVTF_H64_float2fix(d): return (d & 0xffff0000) == 0x9ec30000 | |
def is_FCVTZS_64H_float2fix(d): return (d & 0xffff0000) == 0x9ed80000 | |
def is_FCVTZU_64H_float2fix(d): return (d & 0xffff0000) == 0x9ed90000 | |
def is_FCVTNS_32S_float2int(d): return (d & 0xfffffc00) == 0x1e200000 | |
def is_FCVTNU_32S_float2int(d): return (d & 0xfffffc00) == 0x1e210000 | |
def is_SCVTF_S32_float2int(d): return (d & 0xfffffc00) == 0x1e220000 | |
def is_UCVTF_S32_float2int(d): return (d & 0xfffffc00) == 0x1e230000 | |
def is_FCVTAS_32S_float2int(d): return (d & 0xfffffc00) == 0x1e240000 | |
def is_FCVTAU_32S_float2int(d): return (d & 0xfffffc00) == 0x1e250000 | |
def is_FMOV_32S_float2int(d): return (d & 0xfffffc00) == 0x1e260000 | |
def is_FMOV_S32_float2int(d): return (d & 0xfffffc00) == 0x1e270000 | |
def is_FCVTPS_32S_float2int(d): return (d & 0xfffffc00) == 0x1e280000 | |
def is_FCVTPU_32S_float2int(d): return (d & 0xfffffc00) == 0x1e290000 | |
def is_FCVTMS_32S_float2int(d): return (d & 0xfffffc00) == 0x1e300000 | |
def is_FCVTMU_32S_float2int(d): return (d & 0xfffffc00) == 0x1e310000 | |
def is_FCVTZS_32S_float2int(d): return (d & 0xfffffc00) == 0x1e380000 | |
def is_FCVTZU_32S_float2int(d): return (d & 0xfffffc00) == 0x1e390000 | |
def is_FCVTNS_32D_float2int(d): return (d & 0xfffffc00) == 0x1e600000 | |
def is_FCVTNU_32D_float2int(d): return (d & 0xfffffc00) == 0x1e610000 | |
def is_SCVTF_D32_float2int(d): return (d & 0xfffffc00) == 0x1e620000 | |
def is_UCVTF_D32_float2int(d): return (d & 0xfffffc00) == 0x1e630000 | |
def is_FCVTAS_32D_float2int(d): return (d & 0xfffffc00) == 0x1e640000 | |
def is_FCVTAU_32D_float2int(d): return (d & 0xfffffc00) == 0x1e650000 | |
def is_FCVTPS_32D_float2int(d): return (d & 0xfffffc00) == 0x1e680000 | |
def is_FCVTPU_32D_float2int(d): return (d & 0xfffffc00) == 0x1e690000 | |
def is_FCVTMS_32D_float2int(d): return (d & 0xfffffc00) == 0x1e700000 | |
def is_FCVTMU_32D_float2int(d): return (d & 0xfffffc00) == 0x1e710000 | |
def is_FCVTZS_32D_float2int(d): return (d & 0xfffffc00) == 0x1e780000 | |
def is_FCVTZU_32D_float2int(d): return (d & 0xfffffc00) == 0x1e790000 | |
def is_FJCVTZS_32D_float2int(d): return (d & 0xfffffc00) == 0x1e7e0000 | |
def is_FCVTNS_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee00000 | |
def is_FCVTNU_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee10000 | |
def is_SCVTF_H32_float2int(d): return (d & 0xfffffc00) == 0x1ee20000 | |
def is_UCVTF_H32_float2int(d): return (d & 0xfffffc00) == 0x1ee30000 | |
def is_FCVTAS_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee40000 | |
def is_FCVTAU_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee50000 | |
def is_FMOV_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee60000 | |
def is_FMOV_H32_float2int(d): return (d & 0xfffffc00) == 0x1ee70000 | |
def is_FCVTPS_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee80000 | |
def is_FCVTPU_32H_float2int(d): return (d & 0xfffffc00) == 0x1ee90000 | |
def is_FCVTMS_32H_float2int(d): return (d & 0xfffffc00) == 0x1ef00000 | |
def is_FCVTMU_32H_float2int(d): return (d & 0xfffffc00) == 0x1ef10000 | |
def is_FCVTZS_32H_float2int(d): return (d & 0xfffffc00) == 0x1ef80000 | |
def is_FCVTZU_32H_float2int(d): return (d & 0xfffffc00) == 0x1ef90000 | |
def is_FCVTNS_64S_float2int(d): return (d & 0xfffffc00) == 0x9e200000 | |
def is_FCVTNU_64S_float2int(d): return (d & 0xfffffc00) == 0x9e210000 | |
def is_SCVTF_S64_float2int(d): return (d & 0xfffffc00) == 0x9e220000 | |
def is_UCVTF_S64_float2int(d): return (d & 0xfffffc00) == 0x9e230000 | |
def is_FCVTAS_64S_float2int(d): return (d & 0xfffffc00) == 0x9e240000 | |
def is_FCVTAU_64S_float2int(d): return (d & 0xfffffc00) == 0x9e250000 | |
def is_FCVTPS_64S_float2int(d): return (d & 0xfffffc00) == 0x9e280000 | |
def is_FCVTPU_64S_float2int(d): return (d & 0xfffffc00) == 0x9e290000 | |
def is_FCVTMS_64S_float2int(d): return (d & 0xfffffc00) == 0x9e300000 | |
def is_FCVTMU_64S_float2int(d): return (d & 0xfffffc00) == 0x9e310000 | |
def is_FCVTZS_64S_float2int(d): return (d & 0xfffffc00) == 0x9e380000 | |
def is_FCVTZU_64S_float2int(d): return (d & 0xfffffc00) == 0x9e390000 | |
def is_FCVTNS_64D_float2int(d): return (d & 0xfffffc00) == 0x9e600000 | |
def is_FCVTNU_64D_float2int(d): return (d & 0xfffffc00) == 0x9e610000 | |
def is_SCVTF_D64_float2int(d): return (d & 0xfffffc00) == 0x9e620000 | |
def is_UCVTF_D64_float2int(d): return (d & 0xfffffc00) == 0x9e630000 | |
def is_FCVTAS_64D_float2int(d): return (d & 0xfffffc00) == 0x9e640000 | |
def is_FCVTAU_64D_float2int(d): return (d & 0xfffffc00) == 0x9e650000 | |
def is_FMOV_64D_float2int(d): return (d & 0xfffffc00) == 0x9e660000 | |
def is_FMOV_D64_float2int(d): return (d & 0xfffffc00) == 0x9e670000 | |
def is_FCVTPS_64D_float2int(d): return (d & 0xfffffc00) == 0x9e680000 | |
def is_FCVTPU_64D_float2int(d): return (d & 0xfffffc00) == 0x9e690000 | |
def is_FCVTMS_64D_float2int(d): return (d & 0xfffffc00) == 0x9e700000 | |
def is_FCVTMU_64D_float2int(d): return (d & 0xfffffc00) == 0x9e710000 | |
def is_FCVTZS_64D_float2int(d): return (d & 0xfffffc00) == 0x9e780000 | |
def is_FCVTZU_64D_float2int(d): return (d & 0xfffffc00) == 0x9e790000 | |
def is_FMOV_64VX_float2int(d): return (d & 0xfffffc00) == 0x9eae0000 | |
def is_FMOV_V64I_float2int(d): return (d & 0xfffffc00) == 0x9eaf0000 | |
def is_FCVTNS_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee00000 | |
def is_FCVTNU_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee10000 | |
def is_SCVTF_H64_float2int(d): return (d & 0xfffffc00) == 0x9ee20000 | |
def is_UCVTF_H64_float2int(d): return (d & 0xfffffc00) == 0x9ee30000 | |
def is_FCVTAS_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee40000 | |
def is_FCVTAU_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee50000 | |
def is_FMOV_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee60000 | |
def is_FMOV_H64_float2int(d): return (d & 0xfffffc00) == 0x9ee70000 | |
def is_FCVTPS_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee80000 | |
def is_FCVTPU_64H_float2int(d): return (d & 0xfffffc00) == 0x9ee90000 | |
def is_FCVTMS_64H_float2int(d): return (d & 0xfffffc00) == 0x9ef00000 | |
def is_FCVTMU_64H_float2int(d): return (d & 0xfffffc00) == 0x9ef10000 | |
def is_FCVTZS_64H_float2int(d): return (d & 0xfffffc00) == 0x9ef80000 | |
def is_FCVTZU_64H_float2int(d): return (d & 0xfffffc00) == 0x9ef90000 | |
def is_AESE_B_cryptoaes(d): return (d & 0xfffffc00) == 0x4e284800 | |
def is_AESD_B_cryptoaes(d): return (d & 0xfffffc00) == 0x4e285800 | |
def is_AESMC_B_cryptoaes(d): return (d & 0xfffffc00) == 0x4e286800 | |
def is_AESIMC_B_cryptoaes(d): return (d & 0xfffffc00) == 0x4e287800 | |
def is_EOR3_VVV16_crypto4(d): return (d & 0xffe08000) == 0xce000000 | |
def is_BCAX_VVV16_crypto4(d): return (d & 0xffe08000) == 0xce200000 | |
def is_SM3SS1_VVV4_crypto4(d): return (d & 0xffe08000) == 0xce400000 | |
def is_SHA1C_QSV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e000000 | |
def is_SHA1P_QSV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e001000 | |
def is_SHA1M_QSV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e002000 | |
def is_SHA1SU0_VVV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e003000 | |
def is_SHA256H_QQV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e004000 | |
def is_SHA256H2_QQV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e005000 | |
def is_SHA256SU1_VVV_cryptosha3(d): return (d & 0xffe0fc00) == 0x5e006000 | |
def is_SHA512H_QQV_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce608000 | |
def is_SHA512H2_QQV_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce608400 | |
def is_SHA512SU1_VVV2_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce608800 | |
def is_RAX1_VVV2_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce608c00 | |
def is_SM3PARTW1_VVV4_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce60c000 | |
def is_SM3PARTW2_VVV4_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce60c400 | |
def is_SM4EKEY_VVV4_cryptosha512_3(d): return (d & 0xffe0fc00) == 0xce60c800 | |
def is_SM3TT1A_VVV4_crypto3_imm2(d): return (d & 0xffe0cc00) == 0xce408000 | |
def is_SM3TT1B_VVV4_crypto3_imm2(d): return (d & 0xffe0cc00) == 0xce408400 | |
def is_SM3TT2A_VVV4_crypto3_imm2(d): return (d & 0xffe0cc00) == 0xce408800 | |
def is_SM3TT2B_VVV_crypto3_imm2(d): return (d & 0xffe0cc00) == 0xce408c00 | |
def is_XAR_VVV2_crypto3_imm6(d): return (d & 0xffe00000) == 0xce800000 | |
def is_SHA1H_SS_cryptosha2(d): return (d & 0xfffffc00) == 0x5e280800 | |
def is_SHA1SU1_VV_cryptosha2(d): return (d & 0xfffffc00) == 0x5e281800 | |
def is_SHA256SU0_VV_cryptosha2(d): return (d & 0xfffffc00) == 0x5e282800 | |
def is_SHA512SU0_VV2_cryptosha512_2(d): return (d & 0xfffffc00) == 0xcec08000 | |
def is_SM4E_VV4_cryptosha512_2(d): return (d & 0xfffffc00) == 0xcec08400 | |
def is_FCMP_S_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e202000 | |
def is_FCMP_SZ_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e202008 | |
def is_FCMPE_S_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e202010 | |
def is_FCMPE_SZ_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e202018 | |
def is_FCMP_D_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e602000 | |
def is_FCMP_DZ_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e602008 | |
def is_FCMPE_D_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e602010 | |
def is_FCMPE_DZ_floatcmp(d): return (d & 0xffe0fc1f) == 0x1e602018 | |
def is_FCMP_H_floatcmp(d): return (d & 0xffe0fc1f) == 0x1ee02000 | |
def is_FCMP_HZ_floatcmp(d): return (d & 0xffe0fc1f) == 0x1ee02008 | |
def is_FCMPE_H_floatcmp(d): return (d & 0xffe0fc1f) == 0x1ee02010 | |
def is_FCMPE_HZ_floatcmp(d): return (d & 0xffe0fc1f) == 0x1ee02018 | |
def is_FCCMP_S_floatccmp(d): return (d & 0xffe00c10) == 0x1e200400 | |
def is_FCCMPE_S_floatccmp(d): return (d & 0xffe00c10) == 0x1e200410 | |
def is_FCCMP_D_floatccmp(d): return (d & 0xffe00c10) == 0x1e600400 | |
def is_FCCMPE_D_floatccmp(d): return (d & 0xffe00c10) == 0x1e600410 | |
def is_FCCMP_H_floatccmp(d): return (d & 0xffe00c10) == 0x1ee00400 | |
def is_FCCMPE_H_floatccmp(d): return (d & 0xffe00c10) == 0x1ee00410 | |
def is_FCSEL_S_floatsel(d): return (d & 0xffe00c00) == 0x1e200c00 | |
def is_FCSEL_D_floatsel(d): return (d & 0xffe00c00) == 0x1e600c00 | |
def is_FCSEL_H_floatsel(d): return (d & 0xffe00c00) == 0x1ee00c00 | |
def is_FMOV_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e204000 | |
def is_FABS_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e20c000 | |
def is_FNEG_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e214000 | |
def is_FSQRT_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e21c000 | |
def is_FCVT_DS_floatdp1(d): return (d & 0xfffffc00) == 0x1e22c000 | |
def is_FCVT_HS_floatdp1(d): return (d & 0xfffffc00) == 0x1e23c000 | |
def is_FRINTN_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e244000 | |
def is_FRINTP_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e24c000 | |
def is_FRINTM_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e254000 | |
def is_FRINTZ_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e25c000 | |
def is_FRINTA_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e264000 | |
def is_FRINTX_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e274000 | |
def is_FRINTI_S_floatdp1(d): return (d & 0xfffffc00) == 0x1e27c000 | |
def is_FMOV_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e604000 | |
def is_FABS_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e60c000 | |
def is_FNEG_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e614000 | |
def is_FSQRT_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e61c000 | |
def is_FCVT_SD_floatdp1(d): return (d & 0xfffffc00) == 0x1e624000 | |
def is_FCVT_HD_floatdp1(d): return (d & 0xfffffc00) == 0x1e63c000 | |
def is_FRINTN_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e644000 | |
def is_FRINTP_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e64c000 | |
def is_FRINTM_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e654000 | |
def is_FRINTZ_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e65c000 | |
def is_FRINTA_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e664000 | |
def is_FRINTX_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e674000 | |
def is_FRINTI_D_floatdp1(d): return (d & 0xfffffc00) == 0x1e67c000 | |
def is_FMOV_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee04000 | |
def is_FABS_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee0c000 | |
def is_FNEG_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee14000 | |
def is_FSQRT_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee1c000 | |
def is_FCVT_SH_floatdp1(d): return (d & 0xfffffc00) == 0x1ee24000 | |
def is_FCVT_DH_floatdp1(d): return (d & 0xfffffc00) == 0x1ee2c000 | |
def is_FRINTN_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee44000 | |
def is_FRINTP_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee4c000 | |
def is_FRINTM_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee54000 | |
def is_FRINTZ_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee5c000 | |
def is_FRINTA_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee64000 | |
def is_FRINTX_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee74000 | |
def is_FRINTI_H_floatdp1(d): return (d & 0xfffffc00) == 0x1ee7c000 | |
def is_FMUL_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e200800 | |
def is_FDIV_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e201800 | |
def is_FADD_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e202800 | |
def is_FSUB_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e203800 | |
def is_FMAX_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e204800 | |
def is_FMIN_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e205800 | |
def is_FMAXNM_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e206800 | |
def is_FMINNM_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e207800 | |
def is_FNMUL_S_floatdp2(d): return (d & 0xffe0fc00) == 0x1e208800 | |
def is_FMUL_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e600800 | |
def is_FDIV_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e601800 | |
def is_FADD_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e602800 | |
def is_FSUB_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e603800 | |
def is_FMAX_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e604800 | |
def is_FMIN_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e605800 | |
def is_FMAXNM_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e606800 | |
def is_FMINNM_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e607800 | |
def is_FNMUL_D_floatdp2(d): return (d & 0xffe0fc00) == 0x1e608800 | |
def is_FMUL_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee00800 | |
def is_FDIV_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee01800 | |
def is_FADD_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee02800 | |
def is_FSUB_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee03800 | |
def is_FMAX_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee04800 | |
def is_FMIN_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee05800 | |
def is_FMAXNM_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee06800 | |
def is_FMINNM_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee07800 | |
def is_FNMUL_H_floatdp2(d): return (d & 0xffe0fc00) == 0x1ee08800 | |
def is_FMADD_S_floatdp3(d): return (d & 0xffe08000) == 0x1f000000 | |
def is_FMSUB_S_floatdp3(d): return (d & 0xffe08000) == 0x1f008000 | |
def is_FNMADD_S_floatdp3(d): return (d & 0xffe08000) == 0x1f200000 | |
def is_FNMSUB_S_floatdp3(d): return (d & 0xffe08000) == 0x1f208000 | |
def is_FMADD_D_floatdp3(d): return (d & 0xffe08000) == 0x1f400000 | |
def is_FMSUB_D_floatdp3(d): return (d & 0xffe08000) == 0x1f408000 | |
def is_FNMADD_D_floatdp3(d): return (d & 0xffe08000) == 0x1f600000 | |
def is_FNMSUB_D_floatdp3(d): return (d & 0xffe08000) == 0x1f608000 | |
def is_FMADD_H_floatdp3(d): return (d & 0xffe08000) == 0x1fc00000 | |
def is_FMSUB_H_floatdp3(d): return (d & 0xffe08000) == 0x1fc08000 | |
def is_FNMADD_H_floatdp3(d): return (d & 0xffe08000) == 0x1fe00000 | |
def is_FNMSUB_H_floatdp3(d): return (d & 0xffe08000) == 0x1fe08000 | |
def is_FMOV_S_floatimm(d): return (d & 0xffe01fe0) == 0x1e201000 | |
def is_FMOV_D_floatimm(d): return (d & 0xffe01fe0) == 0x1e601000 | |
def is_FMOV_H_floatimm(d): return (d & 0xffe01fe0) == 0x1ee01000 | |
def get_A(d): return (d >> 23) & 1 | |
def get_CRm(d): return (d >> 8) & 0xF | |
def get_CRn(d): return (d >> 12) & 0xF | |
def get_H(d): return (d >> 11) & 1 | |
# def get_L(d): return (d >> 21) & 1 # system, asisdelem, asimdelem | |
# def get_L(d): return (d >> 22) & 1 # asisdlse, asisdlsep, asisdlso, asisdlsop, ldstexcl, ldstnapair_offs, ldstpair_off, ldstpair_post, ldstpair_pre | |
def get_LL(d): return (d >> 0) & 3 | |
# def get_M(d): return (d >> 20) & 1 # asisdelem, asimdelem | |
# def get_M(d): return (d >> 23) & 1 # ldst_pac | |
# def get_M(d): return (d >> 31) & 1 # floatcmp, floatccmp, floatsel, floatdp1, floatdp2, floatdp3, floatimm | |
# def get_N(d): return (d >> 21) & 1 # log_shift | |
# def get_N(d): return (d >> 22) & 1 # bitfield, extract, log_imm | |
def get_O(d): return (d >> 14) & 1 | |
def get_Op0(d): return (d >> 21) & 3 | |
def get_Q(d): return (d >> 30) & 1 | |
# def get_R(d): return (d >> 21) & 1 # asisdlso, asisdlsop | |
# def get_R(d): return (d >> 22) & 1 # memop | |
def get_Ra(d): return (d >> 10) & 0x1F | |
def get_Rd(d): return (d >> 0) & 0x1F | |
# def get_Rm(d): return (d >> 16) & 0x1F # asisdlsep, asisdlsop, ldst_regoff, extract, addsub_ext, addsub_shift, addsub_carry, condcmp_reg, condsel, dp_2src, dp_3src, log_shift, asimdext, asimdperm, asisddiff, asisdsame, asisdsamefp16, asisdsame2, asimdtbl, asimddiff, asimdsame, asimdsamefp16, asimdsame2, crypto4, cryptosha3, cryptosha512_3, crypto3_imm2, crypto3_imm6, floatcmp, floatccmp, floatsel, floatdp2, floatdp3 | |
# def get_Rm(d): return (d >> 16) & 0xF # asisdelem, asimdelem | |
def get_Rn(d): return (d >> 5) & 0x1F | |
def get_Rs(d): return (d >> 16) & 0x1F | |
def get_Rt(d): return (d >> 0) & 0x1F | |
def get_Rt2(d): return (d >> 10) & 0x1F | |
# def get_S(d): return (d >> 12) & 1 # asisdlso, asisdlsop, ldst_regoff | |
# def get_S(d): return (d >> 22) & 1 # ldst_pac | |
# def get_S(d): return (d >> 29) & 1 # addsub_imm, addsub_ext, addsub_shift, addsub_carry, condcmp_imm, condcmp_reg, condsel, dp_1src, dp_2src, float2fix, float2int, floatcmp, floatccmp, floatsel, floatdp1, floatdp2, floatdp3, floatimm | |
def get_U(d): return (d >> 29) & 1 | |
def get_V(d): return (d >> 26) & 1 | |
def get_W(d): return (d >> 11) & 1 | |
# def get_a(d): return (d >> 18) & 1 # asimdimm | |
# def get_a(d): return (d >> 23) & 1 # asisdsamefp16, asisdmiscfp16, asimdsamefp16, asimdmiscfp16 | |
def get_b(d): return (d >> 17) & 1 | |
def get_b40(d): return (d >> 19) & 0x1F | |
def get_b5(d): return (d >> 31) & 1 | |
def get_c(d): return (d >> 16) & 1 | |
def get_cmode(d): return (d >> 12) & 0xF | |
# def get_cond(d): return (d >> 0) & 0xF # condbranch | |
# def get_cond(d): return (d >> 12) & 0xF # condcmp_imm, condcmp_reg, condsel, floatccmp, floatsel | |
def get_d(d): return (d >> 9) & 1 | |
def get_e(d): return (d >> 8) & 1 | |
def get_f(d): return (d >> 7) & 1 | |
def get_g(d): return (d >> 6) & 1 | |
def get_h(d): return (d >> 5) & 1 | |
def get_hw(d): return (d >> 21) & 3 | |
def get_imm12(d): return (d >> 10) & 0xFFF | |
def get_imm14(d): return (d >> 5) & 0x3FFF | |
def get_imm16(d): return (d >> 5) & 0xFFFF | |
def get_imm19(d): return (d >> 5) & 0x7FFFF | |
def get_imm2(d): return (d >> 12) & 3 | |
def get_imm26(d): return (d >> 0) & 0x3FFFFFF | |
def get_imm3(d): return (d >> 10) & 7 | |
def get_imm4(d): return (d >> 11) & 0xF | |
# def get_imm5(d): return (d >> 16) & 0x1F # condcmp_imm, asimdins, asisdone | |
# def get_imm5(d): return (d >> 5) & 0x1F # floatimm | |
def get_imm6(d): return (d >> 10) & 0x3F | |
def get_imm7(d): return (d >> 15) & 0x7F | |
def get_imm8(d): return (d >> 13) & 0xFF | |
def get_imm9(d): return (d >> 12) & 0x1FF | |
def get_immb(d): return (d >> 16) & 7 | |
def get_immh(d): return (d >> 19) & 0xF | |
def get_immhi(d): return (d >> 5) & 0x7FFFF | |
def get_immlo(d): return (d >> 29) & 3 | |
def get_immr(d): return (d >> 16) & 0x3F | |
def get_imms(d): return (d >> 10) & 0x3F | |
def get_len(d): return (d >> 13) & 3 | |
def get_nzcv(d): return (d >> 0) & 0xF | |
def get_rmode(d): return (d >> 19) & 3 | |
def get_scale(d): return (d >> 10) & 0x3F | |
def get_sf(d): return (d >> 31) & 1 | |
def get_shift(d): return (d >> 22) & 3 | |
# def get_size(d): return (d >> 10) & 3 # asisdlse, asisdlsep, asisdlso, asisdlsop | |
# def get_size(d): return (d >> 22) & 3 # asimdall, asimdperm, asisdpair, asisddiff, asisdsame, asisdsame2, asisdmisc, asisdelem, asimddiff, asimdsame, asimdsame2, asimdmisc, asimdelem, cryptoaes, cryptosha3, cryptosha2 | |
# def get_size(d): return (d >> 30) & 3 # memop, ldstexcl, ldst_immpost, ldst_immpre, ldst_pac, ldst_regoff, ldst_unpriv, ldst_unscaled, ldst_pos | |
def get_type(d): return (d >> 22) & 3 | |
def get_A_s(d): return ((d >> 23) & 1) | (~1 if d & 0x800000 else 0) | |
def get_CRm_s(d): return ((d >> 8) & 0xF) | (~0xF if d & 0x800 else 0) | |
def get_CRn_s(d): return ((d >> 12) & 0xF) | (~0xF if d & 0x8000 else 0) | |
def get_H_s(d): return ((d >> 11) & 1) | (~1 if d & 0x800 else 0) | |
# def get_L_s(d): return ((d >> 21) & 1) | (~1 if d & 0x200000 else 0) | |
# def get_L_s(d): return ((d >> 22) & 1) | (~1 if d & 0x400000 else 0) | |
def get_LL_s(d): return ((d >> 0) & 3) | (~3 if d & 2 else 0) | |
# def get_M_s(d): return ((d >> 20) & 1) | (~1 if d & 0x100000 else 0) | |
# def get_M_s(d): return ((d >> 23) & 1) | (~1 if d & 0x800000 else 0) | |
# def get_M_s(d): return ((d >> 31) & 1) | (~1 if d & 0x80000000 else 0) | |
# def get_N_s(d): return ((d >> 21) & 1) | (~1 if d & 0x200000 else 0) | |
# def get_N_s(d): return ((d >> 22) & 1) | (~1 if d & 0x400000 else 0) | |
def get_O_s(d): return ((d >> 14) & 1) | (~1 if d & 0x4000 else 0) | |
def get_Op0_s(d): return ((d >> 21) & 3) | (~3 if d & 0x400000 else 0) | |
def get_Q_s(d): return ((d >> 30) & 1) | (~1 if d & 0x40000000 else 0) | |
# def get_R_s(d): return ((d >> 21) & 1) | (~1 if d & 0x200000 else 0) | |
# def get_R_s(d): return ((d >> 22) & 1) | (~1 if d & 0x400000 else 0) | |
def get_Ra_s(d): return ((d >> 10) & 0x1F) | (~0x1F if d & 0x4000 else 0) | |
def get_Rd_s(d): return ((d >> 0) & 0x1F) | (~0x1F if d & 0x10 else 0) | |
# def get_Rm_s(d): return ((d >> 16) & 0x1F) | (~0x1F if d & 0x100000 else 0) | |
# def get_Rm_s(d): return ((d >> 16) & 0xF) | (~0xF if d & 0x80000 else 0) | |
def get_Rn_s(d): return ((d >> 5) & 0x1F) | (~0x1F if d & 0x200 else 0) | |
def get_Rs_s(d): return ((d >> 16) & 0x1F) | (~0x1F if d & 0x100000 else 0) | |
def get_Rt_s(d): return ((d >> 0) & 0x1F) | (~0x1F if d & 0x10 else 0) | |
def get_Rt2_s(d): return ((d >> 10) & 0x1F) | (~0x1F if d & 0x4000 else 0) | |
# def get_S_s(d): return ((d >> 12) & 1) | (~1 if d & 0x1000 else 0) | |
# def get_S_s(d): return ((d >> 22) & 1) | (~1 if d & 0x400000 else 0) | |
# def get_S_s(d): return ((d >> 29) & 1) | (~1 if d & 0x20000000 else 0) | |
def get_U_s(d): return ((d >> 29) & 1) | (~1 if d & 0x20000000 else 0) | |
def get_V_s(d): return ((d >> 26) & 1) | (~1 if d & 0x4000000 else 0) | |
def get_W_s(d): return ((d >> 11) & 1) | (~1 if d & 0x800 else 0) | |
# def get_a_s(d): return ((d >> 18) & 1) | (~1 if d & 0x40000 else 0) | |
# def get_a_s(d): return ((d >> 23) & 1) | (~1 if d & 0x800000 else 0) | |
def get_b_s(d): return ((d >> 17) & 1) | (~1 if d & 0x20000 else 0) | |
def get_b40_s(d): return ((d >> 19) & 0x1F) | (~0x1F if d & 0x800000 else 0) | |
def get_b5_s(d): return ((d >> 31) & 1) | (~1 if d & 0x80000000 else 0) | |
def get_c_s(d): return ((d >> 16) & 1) | (~1 if d & 0x10000 else 0) | |
def get_cmode_s(d): return ((d >> 12) & 0xF) | (~0xF if d & 0x8000 else 0) | |
# def get_cond_s(d): return ((d >> 0) & 0xF) | (~0xF if d & 8 else 0) | |
# def get_cond_s(d): return ((d >> 12) & 0xF) | (~0xF if d & 0x8000 else 0) | |
def get_d_s(d): return ((d >> 9) & 1) | (~1 if d & 0x200 else 0) | |
def get_e_s(d): return ((d >> 8) & 1) | (~1 if d & 0x100 else 0) | |
def get_f_s(d): return ((d >> 7) & 1) | (~1 if d & 0x80 else 0) | |
def get_g_s(d): return ((d >> 6) & 1) | (~1 if d & 0x40 else 0) | |
def get_h_s(d): return ((d >> 5) & 1) | (~1 if d & 0x20 else 0) | |
def get_hw_s(d): return ((d >> 21) & 3) | (~3 if d & 0x400000 else 0) | |
def get_imm12_s(d): return ((d >> 10) & 0xFFF) | (~0xFFF if d & 0x200000 else 0) | |
def get_imm14_s(d): return ((d >> 5) & 0x3FFF) | (~0x3FFF if d & 0x40000 else 0) | |
def get_imm16_s(d): return ((d >> 5) & 0xFFFF) | (~0xFFFF if d & 0x100000 else 0) | |
def get_imm19_s(d): return ((d >> 5) & 0x7FFFF) | (~0x7FFFF if d & 0x800000 else 0) | |
def get_imm2_s(d): return ((d >> 12) & 3) | (~3 if d & 0x2000 else 0) | |
def get_imm26_s(d): return ((d >> 0) & 0x3FFFFFF) | (~0x3FFFFFF if d & 0x2000000 else 0) | |
def get_imm3_s(d): return ((d >> 10) & 7) | (~7 if d & 0x1000 else 0) | |
def get_imm4_s(d): return ((d >> 11) & 0xF) | (~0xF if d & 0x4000 else 0) | |
# def get_imm5_s(d): return ((d >> 16) & 0x1F) | (~0x1F if d & 0x100000 else 0) | |
# def get_imm5_s(d): return ((d >> 5) & 0x1F) | (~0x1F if d & 0x200 else 0) | |
def get_imm6_s(d): return ((d >> 10) & 0x3F) | (~0x3F if d & 0x8000 else 0) | |
def get_imm7_s(d): return ((d >> 15) & 0x7F) | (~0x7F if d & 0x200000 else 0) | |
def get_imm8_s(d): return ((d >> 13) & 0xFF) | (~0xFF if d & 0x100000 else 0) | |
def get_imm9_s(d): return ((d >> 12) & 0x1FF) | (~0x1FF if d & 0x100000 else 0) | |
def get_immb_s(d): return ((d >> 16) & 7) | (~7 if d & 0x40000 else 0) | |
def get_immh_s(d): return ((d >> 19) & 0xF) | (~0xF if d & 0x400000 else 0) | |
def get_immhi_s(d): return ((d >> 5) & 0x7FFFF) | (~0x7FFFF if d & 0x800000 else 0) | |
def get_immlo_s(d): return ((d >> 29) & 3) | (~3 if d & 0x40000000 else 0) | |
def get_immr_s(d): return ((d >> 16) & 0x3F) | (~0x3F if d & 0x200000 else 0) | |
def get_imms_s(d): return ((d >> 10) & 0x3F) | (~0x3F if d & 0x8000 else 0) | |
def get_len_s(d): return ((d >> 13) & 3) | (~3 if d & 0x4000 else 0) | |
def get_nzcv_s(d): return ((d >> 0) & 0xF) | (~0xF if d & 8 else 0) | |
def get_rmode_s(d): return ((d >> 19) & 3) | (~3 if d & 0x100000 else 0) | |
def get_scale_s(d): return ((d >> 10) & 0x3F) | (~0x3F if d & 0x8000 else 0) | |
def get_sf_s(d): return ((d >> 31) & 1) | (~1 if d & 0x80000000 else 0) | |
def get_shift_s(d): return ((d >> 22) & 3) | (~3 if d & 0x800000 else 0) | |
# def get_size_s(d): return ((d >> 10) & 3) | (~3 if d & 0x800 else 0) | |
# def get_size_s(d): return ((d >> 22) & 3) | (~3 if d & 0x800000 else 0) | |
# def get_size_s(d): return ((d >> 30) & 3) | (~3 if d & 0x80000000 else 0) | |
def get_type_s(d): return ((d >> 22) & 3) | (~3 if d & 0x800000 else 0) | |
def decode_UNDEFINED(d): | |
raise Exception("undefined instruction") | |
def decode_root(d): | |
assert (d & 0x00000000) == 0x00000000 | |
op0 = (d >> 25) & 0xF | |
if (d & 0x0e000000) == 0x0a000000: return decode_dataproc_register(d) | |
if (d & 0x0e000000) == 0x0e000000: return decode_dataproc_simd(d) | |
if (d & 0x1c000000) == 0x10000000: return decode_dataproc_immediate(d) | |
if (d & 0x1c000000) == 0x14000000: return decode_branch_and_sys(d) | |
if (d & 0x0a000000) == 0x08000000: return decode_load_and_store(d) | |
return decode_UNDEFINED(d) | |
def decode_dataproc_immediate(d): | |
assert (d & 0x1c000000) == 0x10000000 | |
op0 = (d >> 23) & 7 | |
if (d & 0x1f800000) == 0x12000000: return decode_log_imm(d) | |
if (d & 0x1f800000) == 0x12800000: return decode_movewide(d) | |
if (d & 0x1f800000) == 0x13000000: return decode_bitfield(d) | |
if (d & 0x1f800000) == 0x13800000: return decode_extract(d) | |
if (d & 0x1f000000) == 0x10000000: return decode_pcreladdr(d) | |
if (d & 0x1f000000) == 0x11000000: return decode_addsub_imm(d) | |
return decode_UNDEFINED(d) | |
def decode_branch_and_sys(d): | |
assert (d & 0x1c000000) == 0x14000000 | |
op0 = (d >> 29) & 7 | |
op1 = (d >> 22) & 0xF | |
if (d & 0xffc00000) == 0xd5000000: return decode_system(d) | |
if (d & 0xff000000) == 0xd4000000: return decode_exception(d) | |
if (d & 0xfe000000) == 0x54000000: return decode_condbranch(d) | |
if (d & 0xfe000000) == 0xd6000000: return decode_branch_reg(d) | |
if (d & 0x7e000000) == 0x34000000: return decode_compbranch(d) | |
if (d & 0x7e000000) == 0x36000000: return decode_testbranch(d) | |
if (d & 0x7c000000) == 0x14000000: return decode_branch_imm(d) | |
return decode_UNDEFINED(d) | |
def decode_load_and_store(d): | |
assert (d & 0x0a000000) == 0x08000000 | |
op0 = (d >> 31) & 1 | |
op1 = (d >> 28) & 3 | |
op2 = (d >> 26) & 1 | |
op3 = (d >> 23) & 3 | |
op4 = (d >> 16) & 0x3F | |
op5 = (d >> 10) & 3 | |
if (d & 0xbfbf0000) == 0x0c000000: return decode_asisdlse(d) | |
if (d & 0xbf9f0000) == 0x0d000000: return decode_asisdlso(d) | |
if (d & 0xbfa00000) == 0x0c800000: return decode_asisdlsep(d) | |
if (d & 0x3b200c00) == 0x38000000: return decode_ldst_unscaled(d) | |
if (d & 0x3b200c00) == 0x38000400: return decode_ldst_immpost(d) | |
if (d & 0x3b200c00) == 0x38000800: return decode_ldst_unpriv(d) | |
if (d & 0x3b200c00) == 0x38000c00: return decode_ldst_immpre(d) | |
if (d & 0x3b200c00) == 0x38200000: return decode_memop(d) | |
if (d & 0x3b200c00) == 0x38200800: return decode_ldst_regoff(d) | |
if (d & 0xbf800000) == 0x0d800000: return decode_asisdlsop(d) | |
if (d & 0x3b200400) == 0x38200400: return decode_ldst_pac(d) | |
if (d & 0x3b800000) == 0x28000000: return decode_ldstnapair_offs(d) | |
if (d & 0x3b800000) == 0x28800000: return decode_ldstpair_post(d) | |
if (d & 0x3b800000) == 0x29000000: return decode_ldstpair_off(d) | |
if (d & 0x3b800000) == 0x29800000: return decode_ldstpair_pre(d) | |
if (d & 0x3f000000) == 0x08000000: return decode_ldstexcl(d) | |
if (d & 0x3b000000) == 0x18000000: return decode_loadlit(d) | |
if (d & 0x3b000000) == 0x39000000: return decode_ldst_pos(d) | |
return decode_UNDEFINED(d) | |
def decode_dataproc_register(d): | |
assert (d & 0x0e000000) == 0x0a000000 | |
op0 = (d >> 30) & 1 | |
op1 = (d >> 28) & 1 | |
op2 = (d >> 21) & 0xF | |
op3 = (d >> 11) & 1 | |
if (d & 0x1fe00800) == 0x1a400000: return decode_condcmp_reg(d) | |
if (d & 0x1fe00800) == 0x1a400800: return decode_condcmp_imm(d) | |
if (d & 0x5fe00000) == 0x1ac00000: return decode_dp_2src(d) | |
if (d & 0x5fe00000) == 0x5ac00000: return decode_dp_1src(d) | |
if (d & 0x1fe00000) == 0x1a000000: return decode_addsub_carry(d) | |
if (d & 0x1fe00000) == 0x1a800000: return decode_condsel(d) | |
if (d & 0x1f200000) == 0x0b000000: return decode_addsub_shift(d) | |
if (d & 0x1f200000) == 0x0b200000: return decode_addsub_ext(d) | |
if (d & 0x1f000000) == 0x0a000000: return decode_log_shift(d) | |
if (d & 0x1f000000) == 0x1b000000: return decode_dp_3src(d) | |
return decode_UNDEFINED(d) | |
def decode_dataproc_simd(d): | |
assert (d & 0x0e000000) == 0x0e000000 | |
op0 = (d >> 28) & 0xF | |
op1 = (d >> 23) & 3 | |
op2 = (d >> 19) & 0xF | |
op3 = (d >> 10) & 0x1FF | |
if (d & 0xfffff000) == 0xcec08000: return decode_cryptosha512_2(d) | |
if (d & 0xdf7e0c00) == 0x5e780800: return decode_asisdmiscfp16(d) | |
if (d & 0xff3e0c00) == 0x4e280800: return decode_cryptoaes(d) | |
if (d & 0xff3e0c00) == 0x5e280800: return decode_cryptosha2(d) | |
if (d & 0x9f7e0c00) == 0x0e780800: return decode_asimdmiscfp16(d) | |
if (d & 0xdf3e0c00) == 0x5e200800: return decode_asisdmisc(d) | |
if (d & 0xdf3e0c00) == 0x5e300800: return decode_asisdpair(d) | |
if (d & 0xffe0b000) == 0xce608000: return decode_cryptosha512_3(d) | |
if (d & 0x5f20fc00) == 0x1e200000: return decode_float2int(d) | |
if (d & 0x9f3e0c00) == 0x0e200800: return decode_asimdmisc(d) | |
if (d & 0x9f3e0c00) == 0x0e300800: return decode_asimdall(d) | |
if (d & 0xffe0c000) == 0xce408000: return decode_crypto3_imm2(d) | |
if (d & 0x5f207c00) == 0x1e204000: return decode_floatdp1(d) | |
if (d & 0x9ff80400) == 0x0f000400: return decode_asimdimm(d) | |
if (d & 0xdf60c400) == 0x5e400400: return decode_asisdsamefp16(d) | |
if (d & 0xdfe08400) == 0x5e000400: return decode_asisdone(d) | |
if (d & 0xff208c00) == 0x5e000000: return decode_cryptosha3(d) | |
if (d & 0x5f203c00) == 0x1e202000: return decode_floatcmp(d) | |
if (d & 0x9f60c400) == 0x0e400400: return decode_asimdsamefp16(d) | |
if (d & 0x9fe08400) == 0x0e000400: return decode_asimdins(d) | |
if (d & 0xbf208c00) == 0x0e000000: return decode_asimdtbl(d) | |
if (d & 0xbf208c00) == 0x0e000800: return decode_asimdperm(d) | |
if (d & 0xffe00000) == 0xce800000: return decode_crypto3_imm6(d) | |
if (d & 0x5f201c00) == 0x1e201000: return decode_floatimm(d) | |
if (d & 0xbf208400) == 0x2e000000: return decode_asimdext(d) | |
if (d & 0xdf200c00) == 0x5e200000: return decode_asisddiff(d) | |
if (d & 0xdf208400) == 0x5e008400: return decode_asisdsame2(d) | |
if (d & 0xff808000) == 0xce000000: return decode_crypto4(d) | |
if (d & 0x5f200c00) == 0x1e200400: return decode_floatccmp(d) | |
if (d & 0x5f200c00) == 0x1e200800: return decode_floatdp2(d) | |
if (d & 0x5f200c00) == 0x1e200c00: return decode_floatsel(d) | |
if (d & 0x9f200c00) == 0x0e200000: return decode_asimddiff(d) | |
if (d & 0x9f208400) == 0x0e008400: return decode_asimdsame2(d) | |
if (d & 0xdf200400) == 0x5e200400: return decode_asisdsame(d) | |
if (d & 0xdf800400) == 0x5f000400: return decode_asisdshf(d) | |
if (d & 0x9f200400) == 0x0e200400: return decode_asimdsame(d) | |
if (d & 0xdf000400) == 0x5f000000: return decode_asisdelem(d) | |
if (d & 0x5f200000) == 0x1e000000: return decode_float2fix(d) | |
if (d & 0x9f000400) == 0x0f000000: return decode_asimdelem(d) | |
if (d & 0x5f000000) == 0x1f000000: return decode_floatdp3(d) | |
if (d & 0x9f800400) == 0x0f000400 and (d & 0x780000) != 0x000000: return decode_asimdshf(d) | |
return decode_UNDEFINED(d) | |
def decode_compbranch(d): | |
assert (d & 0x7e000000) == 0x34000000 | |
Rt = (d >> 0) & 0x1F | |
imm19 = (d >> 5) & 0x7FFFF | |
op = (d >> 24) & 1 | |
sf = (d >> 31) & 1 | |
if (d & 0xff000000) == 0x34000000: return ('CBZ_32_compbranch', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0x35000000: return ('CBNZ_32_compbranch', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0xb4000000: return ('CBZ_64_compbranch', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0xb5000000: return ('CBNZ_64_compbranch', {'Rt': Rt, 'imm19': imm19}) | |
return decode_UNDEFINED(d) | |
def decode_condbranch(d): | |
assert (d & 0xfe000000) == 0x54000000 | |
cond = (d >> 0) & 0xF | |
imm19 = (d >> 5) & 0x7FFFF | |
o0 = (d >> 4) & 1 | |
o1 = (d >> 24) & 1 | |
if (d & 0xff000010) == 0x54000000: return ('B_only_condbranch', {'cond': cond, 'imm19': imm19}) | |
return decode_UNDEFINED(d) | |
def decode_exception(d): | |
assert (d & 0xff000000) == 0xd4000000 | |
LL = (d >> 0) & 3 | |
imm16 = (d >> 5) & 0xFFFF | |
op2 = (d >> 2) & 7 | |
opc = (d >> 21) & 7 | |
if (d & 0xffe0001f) == 0xd4000001: return ('SVC_EX_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4000002: return ('HVC_EX_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4000003: return ('SMC_EX_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4200000: return ('BRK_EX_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4400000: return ('HLT_EX_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4a00001: return ('DCPS1_DC_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4a00002: return ('DCPS2_DC_exception', {'imm16': imm16}) | |
if (d & 0xffe0001f) == 0xd4a00003: return ('DCPS3_DC_exception', {'imm16': imm16}) | |
return decode_UNDEFINED(d) | |
def decode_system(d): | |
assert (d & 0xffc00000) == 0xd5000000 | |
CRm = (d >> 8) & 0xF | |
CRn = (d >> 12) & 0xF | |
L = (d >> 21) & 1 | |
Rt = (d >> 0) & 0x1F | |
op0 = (d >> 19) & 3 | |
op1 = (d >> 16) & 7 | |
op2 = (d >> 5) & 7 | |
if (d & 0xffffffff) == 0xd503201f: return ('NOP_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503203f: return ('YIELD_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503205f: return ('WFE_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503207f: return ('WFI_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503209f: return ('SEV_HI_system', {}) | |
if (d & 0xffffffff) == 0xd50320bf: return ('SEVL_HI_system', {}) | |
if (d & 0xffffffff) == 0xd50320ff: return ('XPACLRI_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503211f: return ('PACIA1716_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503215f: return ('PACIB1716_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503219f: return ('AUTIA1716_HI_system', {}) | |
if (d & 0xffffffff) == 0xd50321df: return ('AUTIB1716_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503221f: return ('ESB_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503223f: return ('PSB_HC_system', {}) | |
if (d & 0xffffffff) == 0xd503231f: return ('PACIAZ_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503233f: return ('PACIASP_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503235f: return ('PACIBZ_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503237f: return ('PACIBSP_HI_system', {}) | |
if (d & 0xffffffff) == 0xd503239f: return ('AUTIAZ_HI_system', {}) | |
if (d & 0xffffffff) == 0xd50323bf: return ('AUTIASP_HI_system', {}) | |
if (d & 0xffffffff) == 0xd50323df: return ('AUTIBZ_HI_system', {}) | |
if (d & 0xffffffff) == 0xd50323ff: return ('AUTIBSP_HI_system', {}) | |
if (d & 0xffffffdf) == 0xd50320df: return ('HINT_1', {'op2': op2}) | |
if (d & 0xfffff0ff) == 0xd503305f: return ('CLREX_BN_system', {'CRm': CRm}) | |
if (d & 0xfffff0ff) == 0xd503309f: return ('DSB_BO_system', {'CRm': CRm}) | |
if (d & 0xfffff0ff) == 0xd50330bf: return ('DMB_BO_system', {'CRm': CRm}) | |
if (d & 0xfffff0ff) == 0xd50330df: return ('ISB_BI_system', {'CRm': CRm}) | |
if (d & 0xfff8f01f) == 0xd500401f: return ('MSR_SI_system', {'CRm': CRm, 'op1': op1, 'op2': op2}) | |
if (d & 0xfff80000) == 0xd5080000: return ('SYS_CR_system', {'CRm': CRm, 'CRn': CRn, 'Rt': Rt, 'op1': op1, 'op2': op2}) | |
if (d & 0xfff80000) == 0xd5280000: return ('SYSL_RC_system', {'CRm': CRm, 'CRn': CRn, 'Rt': Rt, 'op1': op1, 'op2': op2}) | |
if (d & 0xfff00000) == 0xd5100000: return ('MSR_SR_system', {'CRm': CRm, 'CRn': CRn, 'Rt': Rt, 'op0': op0, 'op1': op1, 'op2': op2}) | |
if (d & 0xfff00000) == 0xd5300000: return ('MRS_RS_system', {'CRm': CRm, 'CRn': CRn, 'Rt': Rt, 'op0': op0, 'op1': op1, 'op2': op2}) | |
if (d & 0xffffff1f) == 0xd503221f and (d & 0x0000c0) != 0x000000: return ('HINT_3', {'op2': op2}) | |
if (d & 0xfffff01f) == 0xd503201f and (d & 0x000d00) != 0x000000: return ('HINT_2', {'CRm': CRm, 'op2': op2}) | |
return decode_UNDEFINED(d) | |
def decode_testbranch(d): | |
assert (d & 0x7e000000) == 0x36000000 | |
Rt = (d >> 0) & 0x1F | |
b40 = (d >> 19) & 0x1F | |
b5 = (d >> 31) & 1 | |
imm14 = (d >> 5) & 0x3FFF | |
op = (d >> 24) & 1 | |
if (d & 0x7f000000) == 0x36000000: return ('TBZ_only_testbranch', {'Rt': Rt, 'b40': b40, 'b5': b5, 'imm14': imm14}) | |
if (d & 0x7f000000) == 0x37000000: return ('TBNZ_only_testbranch', {'Rt': Rt, 'b40': b40, 'b5': b5, 'imm14': imm14}) | |
return decode_UNDEFINED(d) | |
def decode_branch_imm(d): | |
assert (d & 0x7c000000) == 0x14000000 | |
imm26 = (d >> 0) & 0x3FFFFFF | |
op = (d >> 31) & 1 | |
if (d & 0xfc000000) == 0x14000000: return ('B_only_branch_imm', {'imm26': imm26}) | |
if (d & 0xfc000000) == 0x94000000: return ('BL_only_branch_imm', {'imm26': imm26}) | |
return decode_UNDEFINED(d) | |
def decode_branch_reg(d): | |
assert (d & 0xfe000000) == 0xd6000000 | |
Rn = (d >> 5) & 0x1F | |
op2 = (d >> 16) & 0x1F | |
op3 = (d >> 10) & 0x3F | |
op4 = (d >> 0) & 0x1F | |
opc = (d >> 21) & 0xF | |
if (d & 0xffffffff) == 0xd65f0bff: return ('RETAA_64E_branch_reg', {}) | |
if (d & 0xffffffff) == 0xd65f0fff: return ('RETAB_64E_branch_reg', {}) | |
if (d & 0xffffffff) == 0xd69f03e0: return ('ERET_64E_branch_reg', {}) | |
if (d & 0xffffffff) == 0xd69f0bff: return ('ERETAA_64E_branch_reg', {}) | |
if (d & 0xffffffff) == 0xd69f0fff: return ('ERETAB_64E_branch_reg', {}) | |
if (d & 0xffffffff) == 0xd6bf03e0: return ('DRPS_64E_branch_reg', {}) | |
if (d & 0xfffffc1f) == 0xd61f0000: return ('BR_64_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc1f) == 0xd61f081f: return ('BRAAZ_64_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc1f) == 0xd61f0c1f: return ('BRABZ_64_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc1f) == 0xd63f0000: return ('BLR_64_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc1f) == 0xd63f081f: return ('BLRAAZ_64_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc1f) == 0xd63f0c1f: return ('BLRABZ_64_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc1f) == 0xd65f0000: return ('RET_64R_branch_reg', {'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xd71f0800: return ('BRAA_64P_branch_reg', {'Rn': Rn, 'op4': op4}) | |
if (d & 0xfffffc00) == 0xd71f0c00: return ('BRAB_64P_branch_reg', {'Rn': Rn, 'op4': op4}) | |
if (d & 0xfffffc00) == 0xd73f0800: return ('BLRAA_64P_branch_reg', {'Rn': Rn, 'op4': op4}) | |
if (d & 0xfffffc00) == 0xd73f0c00: return ('BLRAB_64P_branch_reg', {'Rn': Rn, 'op4': op4}) | |
return decode_UNDEFINED(d) | |
def decode_asisdlse(d): | |
assert (d & 0xbfbf0000) == 0x0c000000 | |
L = (d >> 22) & 1 | |
Q = (d >> 30) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
opcode = (d >> 12) & 0xF | |
size = (d >> 10) & 3 | |
if (d & 0xbffff000) == 0x0c000000: return ('ST4_asisdlse_R4', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c002000: return ('ST1_asisdlse_R4_4v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c004000: return ('ST3_asisdlse_R3', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c006000: return ('ST1_asisdlse_R3_3v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c007000: return ('ST1_asisdlse_R1_1v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c008000: return ('ST2_asisdlse_R2', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c00a000: return ('ST1_asisdlse_R2_2v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c400000: return ('LD4_asisdlse_R4', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c402000: return ('LD1_asisdlse_R4_4v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c404000: return ('LD3_asisdlse_R3', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c406000: return ('LD1_asisdlse_R3_3v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c407000: return ('LD1_asisdlse_R1_1v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c408000: return ('LD2_asisdlse_R2', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c40a000: return ('LD1_asisdlse_R2_2v', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdlsep(d): | |
assert (d & 0xbfa00000) == 0x0c800000 | |
L = (d >> 22) & 1 | |
Q = (d >> 30) & 1 | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
opcode = (d >> 12) & 0xF | |
size = (d >> 10) & 3 | |
if (d & 0xbffff000) == 0x0c9f0000: return ('ST4_asisdlsep_I4_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c9f2000: return ('ST1_asisdlsep_I4_i4', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c9f4000: return ('ST3_asisdlsep_I3_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c9f6000: return ('ST1_asisdlsep_I3_i3', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c9f7000: return ('ST1_asisdlsep_I1_i1', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c9f8000: return ('ST2_asisdlsep_I2_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0c9fa000: return ('ST1_asisdlsep_I2_i2', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdf0000: return ('LD4_asisdlsep_I4_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdf2000: return ('LD1_asisdlsep_I4_i4', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdf4000: return ('LD3_asisdlsep_I3_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdf6000: return ('LD1_asisdlsep_I3_i3', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdf7000: return ('LD1_asisdlsep_I1_i1', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdf8000: return ('LD2_asisdlsep_I2_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0cdfa000: return ('LD1_asisdlsep_I2_i2', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c800000 and (d & 0x1f0000) != 0x1f0000: return ('ST4_asisdlsep_R4_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c802000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsep_R4_r4', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c804000 and (d & 0x1f0000) != 0x1f0000: return ('ST3_asisdlsep_R3_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c806000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsep_R3_r3', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c807000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsep_R1_r1', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c808000 and (d & 0x1f0000) != 0x1f0000: return ('ST2_asisdlsep_R2_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0c80a000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsep_R2_r2', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc00000 and (d & 0x1f0000) != 0x1f0000: return ('LD4_asisdlsep_R4_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc02000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsep_R4_r4', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc04000 and (d & 0x1f0000) != 0x1f0000: return ('LD3_asisdlsep_R3_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc06000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsep_R3_r3', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc07000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsep_R1_r1', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc08000 and (d & 0x1f0000) != 0x1f0000: return ('LD2_asisdlsep_R2_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0cc0a000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsep_R2_r2', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdlso(d): | |
assert (d & 0xbf9f0000) == 0x0d000000 | |
L = (d >> 22) & 1 | |
Q = (d >> 30) & 1 | |
R = (d >> 21) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
S = (d >> 12) & 1 | |
opcode = (d >> 13) & 7 | |
size = (d >> 10) & 3 | |
if (d & 0xbffffc00) == 0x0d008400: return ('ST1_asisdlso_D1_1d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d00a400: return ('ST3_asisdlso_D3_3d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d208400: return ('ST2_asisdlso_D2_2d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d20a400: return ('ST4_asisdlso_D4_4d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d408400: return ('LD1_asisdlso_D1_1d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d40a400: return ('LD3_asisdlso_D3_3d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d608400: return ('LD2_asisdlso_D2_2d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d60a400: return ('LD4_asisdlso_D4_4d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfffec00) == 0x0d008000: return ('ST1_asisdlso_S1_1s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d00a000: return ('ST3_asisdlso_S3_3s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d208000: return ('ST2_asisdlso_S2_2s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d20a000: return ('ST4_asisdlso_S4_4s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d408000: return ('LD1_asisdlso_S1_1s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d40a000: return ('LD3_asisdlso_S3_3s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d608000: return ('LD2_asisdlso_S2_2s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d60a000: return ('LD4_asisdlso_S4_4s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffe400) == 0x0d004000: return ('ST1_asisdlso_H1_1h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d006000: return ('ST3_asisdlso_H3_3h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d204000: return ('ST2_asisdlso_H2_2h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d206000: return ('ST4_asisdlso_H4_4h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d404000: return ('LD1_asisdlso_H1_1h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d406000: return ('LD3_asisdlso_H3_3h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d604000: return ('LD2_asisdlso_H2_2h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d606000: return ('LD4_asisdlso_H4_4h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbffff000) == 0x0d40c000: return ('LD1R_asisdlso_R1', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0d40e000: return ('LD3R_asisdlso_R3', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0d60c000: return ('LD2R_asisdlso_R2', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0d60e000: return ('LD4R_asisdlso_R4', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d000000: return ('ST1_asisdlso_B1_1b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d002000: return ('ST3_asisdlso_B3_3b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d200000: return ('ST2_asisdlso_B2_2b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d202000: return ('ST4_asisdlso_B4_4b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d400000: return ('LD1_asisdlso_B1_1b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d402000: return ('LD3_asisdlso_B3_3b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d600000: return ('LD2_asisdlso_B2_2b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d602000: return ('LD4_asisdlso_B4_4b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdlsop(d): | |
assert (d & 0xbf800000) == 0x0d800000 | |
L = (d >> 22) & 1 | |
Q = (d >> 30) & 1 | |
R = (d >> 21) & 1 | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
S = (d >> 12) & 1 | |
opcode = (d >> 13) & 7 | |
size = (d >> 10) & 3 | |
if (d & 0xbffffc00) == 0x0d9f8400: return ('ST1_asisdlsop_D1_i1d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0d9fa400: return ('ST3_asisdlsop_D3_i3d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0dbf8400: return ('ST2_asisdlsop_D2_i2d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0dbfa400: return ('ST4_asisdlsop_D4_i4d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0ddf8400: return ('LD1_asisdlsop_D1_i1d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0ddfa400: return ('LD3_asisdlsop_D3_i3d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0dff8400: return ('LD2_asisdlsop_D2_i2d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbffffc00) == 0x0dffa400: return ('LD4_asisdlsop_D4_i4d', {'Q': Q, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfffec00) == 0x0d9f8000: return ('ST1_asisdlsop_S1_i1s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0d9fa000: return ('ST3_asisdlsop_S3_i3s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0dbf8000: return ('ST2_asisdlsop_S2_i2s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0dbfa000: return ('ST4_asisdlsop_S4_i4s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0ddf8000: return ('LD1_asisdlsop_S1_i1s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0ddfa000: return ('LD3_asisdlsop_S3_i3s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0dff8000: return ('LD2_asisdlsop_S2_i2s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffec00) == 0x0dffa000: return ('LD4_asisdlsop_S4_i4s', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfffe400) == 0x0d9f4000: return ('ST1_asisdlsop_H1_i1h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0d9f6000: return ('ST3_asisdlsop_H3_i3h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0dbf4000: return ('ST2_asisdlsop_H2_i2h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0dbf6000: return ('ST4_asisdlsop_H4_i4h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0ddf4000: return ('LD1_asisdlsop_H1_i1h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0ddf6000: return ('LD3_asisdlsop_H3_i3h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0dff4000: return ('LD2_asisdlsop_H2_i2h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe400) == 0x0dff6000: return ('LD4_asisdlsop_H4_i4h', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbffff000) == 0x0ddfc000: return ('LD1R_asisdlsop_R1_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0ddfe000: return ('LD3R_asisdlsop_R3_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0dffc000: return ('LD2R_asisdlsop_R2_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbffff000) == 0x0dffe000: return ('LD4R_asisdlsop_R4_i', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d9f0000: return ('ST1_asisdlsop_B1_i1b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0d9f2000: return ('ST3_asisdlsop_B3_i3b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0dbf0000: return ('ST2_asisdlsop_B2_i2b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0dbf2000: return ('ST4_asisdlsop_B4_i4b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0ddf0000: return ('LD1_asisdlsop_B1_i1b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0ddf2000: return ('LD3_asisdlsop_B3_i3b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0dff0000: return ('LD2_asisdlsop_B2_i2b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfffe000) == 0x0dff2000: return ('LD4_asisdlsop_B4_i4b', {'Q': Q, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0fc00) == 0x0d808400 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsop_DX1_r1d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0d80a400 and (d & 0x1f0000) != 0x1f0000: return ('ST3_asisdlsop_DX3_r3d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0da08400 and (d & 0x1f0000) != 0x1f0000: return ('ST2_asisdlsop_DX2_r2d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0da0a400 and (d & 0x1f0000) != 0x1f0000: return ('ST4_asisdlsop_DX4_r4d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0dc08400 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsop_DX1_r1d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0dc0a400 and (d & 0x1f0000) != 0x1f0000: return ('LD3_asisdlsop_DX3_r3d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0de08400 and (d & 0x1f0000) != 0x1f0000: return ('LD2_asisdlsop_DX2_r2d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0fc00) == 0x0de0a400 and (d & 0x1f0000) != 0x1f0000: return ('LD4_asisdlsop_DX4_r4d', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt}) | |
if (d & 0xbfe0ec00) == 0x0d808000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsop_SX1_r1s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0d80a000 and (d & 0x1f0000) != 0x1f0000: return ('ST3_asisdlsop_SX3_r3s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0da08000 and (d & 0x1f0000) != 0x1f0000: return ('ST2_asisdlsop_SX2_r2s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0da0a000 and (d & 0x1f0000) != 0x1f0000: return ('ST4_asisdlsop_SX4_r4s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0dc08000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsop_SX1_r1s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0dc0a000 and (d & 0x1f0000) != 0x1f0000: return ('LD3_asisdlsop_SX3_r3s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0de08000 and (d & 0x1f0000) != 0x1f0000: return ('LD2_asisdlsop_SX2_r2s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0ec00) == 0x0de0a000 and (d & 0x1f0000) != 0x1f0000: return ('LD4_asisdlsop_SX4_r4s', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xbfe0e400) == 0x0d804000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsop_HX1_r1h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0d806000 and (d & 0x1f0000) != 0x1f0000: return ('ST3_asisdlsop_HX3_r3h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0da04000 and (d & 0x1f0000) != 0x1f0000: return ('ST2_asisdlsop_HX2_r2h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0da06000 and (d & 0x1f0000) != 0x1f0000: return ('ST4_asisdlsop_HX4_r4h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0dc04000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsop_HX1_r1h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0dc06000 and (d & 0x1f0000) != 0x1f0000: return ('LD3_asisdlsop_HX3_r3h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0de04000 and (d & 0x1f0000) != 0x1f0000: return ('LD2_asisdlsop_HX2_r2h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e400) == 0x0de06000 and (d & 0x1f0000) != 0x1f0000: return ('LD4_asisdlsop_HX4_r4h', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0dc0c000 and (d & 0x1f0000) != 0x1f0000: return ('LD1R_asisdlsop_RX1_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0dc0e000 and (d & 0x1f0000) != 0x1f0000: return ('LD3R_asisdlsop_RX3_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0de0c000 and (d & 0x1f0000) != 0x1f0000: return ('LD2R_asisdlsop_RX2_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0f000) == 0x0de0e000 and (d & 0x1f0000) != 0x1f0000: return ('LD4R_asisdlsop_RX4_r', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0d800000 and (d & 0x1f0000) != 0x1f0000: return ('ST1_asisdlsop_BX1_r1b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0d802000 and (d & 0x1f0000) != 0x1f0000: return ('ST3_asisdlsop_BX3_r3b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0da00000 and (d & 0x1f0000) != 0x1f0000: return ('ST2_asisdlsop_BX2_r2b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0da02000 and (d & 0x1f0000) != 0x1f0000: return ('ST4_asisdlsop_BX4_r4b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0dc00000 and (d & 0x1f0000) != 0x1f0000: return ('LD1_asisdlsop_BX1_r1b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0dc02000 and (d & 0x1f0000) != 0x1f0000: return ('LD3_asisdlsop_BX3_r3b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0de00000 and (d & 0x1f0000) != 0x1f0000: return ('LD2_asisdlsop_BX2_r2b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
if (d & 0xbfe0e000) == 0x0de02000 and (d & 0x1f0000) != 0x1f0000: return ('LD4_asisdlsop_BX4_r4b', {'Q': Q, 'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_memop(d): | |
assert (d & 0x3b200c00) == 0x38200000 | |
A = (d >> 23) & 1 | |
R = (d >> 22) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rs = (d >> 16) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
o3 = (d >> 15) & 1 | |
opc = (d >> 12) & 7 | |
size = (d >> 30) & 3 | |
if (d & 0xffe0fc1f) == 0x3820001f: return ('STADDB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820101f: return ('STCLRB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820201f: return ('STEORB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820301f: return ('STSETB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820401f: return ('STSMAXB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820501f: return ('STSMINB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820601f: return ('STUMAXB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3820701f: return ('STUMINB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860001f: return ('STADDLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860101f: return ('STCLRLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860201f: return ('STEORLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860301f: return ('STSETLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860401f: return ('STSMAXLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860501f: return ('STSMINLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860601f: return ('STUMAXLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x3860701f: return ('STUMINLB_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820001f: return ('STADDH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820101f: return ('STCLRH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820201f: return ('STEORH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820301f: return ('STSETH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820401f: return ('STSMAXH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820501f: return ('STSMINH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820601f: return ('STUMAXH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7820701f: return ('STUMINH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860001f: return ('STADDLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860101f: return ('STCLRLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860201f: return ('STEORLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860301f: return ('STSETLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860401f: return ('STSMAXLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860501f: return ('STSMINLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860601f: return ('STUMAXLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0x7860701f: return ('STUMINLH_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820001f: return ('STADD_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820101f: return ('STCLR_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820201f: return ('STEOR_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820301f: return ('STSET_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820401f: return ('STSMAX_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820501f: return ('STSMIN_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820601f: return ('STUMAX_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb820701f: return ('STUMIN_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860001f: return ('STADDL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860101f: return ('STCLRL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860201f: return ('STEORL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860301f: return ('STSETL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860401f: return ('STSMAXL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860501f: return ('STSMINL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860601f: return ('STUMAXL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xb860701f: return ('STUMINL_32S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820001f: return ('STADD_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820101f: return ('STCLR_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820201f: return ('STEOR_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820301f: return ('STSET_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820401f: return ('STSMAX_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820501f: return ('STSMIN_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820601f: return ('STUMAX_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf820701f: return ('STUMIN_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860001f: return ('STADDL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860101f: return ('STCLRL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860201f: return ('STEORL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860301f: return ('STSETL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860401f: return ('STSMAXL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860501f: return ('STSMINL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860601f: return ('STUMAXL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc1f) == 0xf860701f: return ('STUMINL_64S_memop', {'Rn': Rn, 'Rs': Rs}) | |
if (d & 0xffe0fc00) == 0x38208000: return ('SWPB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38608000: return ('SWPLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a00000: return ('LDADDAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a01000: return ('LDCLRAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a02000: return ('LDEORAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a03000: return ('LDSETAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a04000: return ('LDSMAXAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a05000: return ('LDSMINAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a06000: return ('LDUMAXAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a07000: return ('LDUMINAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a08000: return ('SWPAB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38a0c000: return ('LDAPRB_32L_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e00000: return ('LDADDALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e01000: return ('LDCLRALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e02000: return ('LDEORALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e03000: return ('LDSETALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e04000: return ('LDSMAXALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e05000: return ('LDSMINALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e06000: return ('LDUMAXALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e07000: return ('LDUMINALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38e08000: return ('SWPALB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78208000: return ('SWPH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78608000: return ('SWPLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a00000: return ('LDADDAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a01000: return ('LDCLRAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a02000: return ('LDEORAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a03000: return ('LDSETAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a04000: return ('LDSMAXAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a05000: return ('LDSMINAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a06000: return ('LDUMAXAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a07000: return ('LDUMINAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a08000: return ('SWPAH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78a0c000: return ('LDAPRH_32L_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e00000: return ('LDADDALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e01000: return ('LDCLRALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e02000: return ('LDEORALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e03000: return ('LDSETALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e04000: return ('LDSMAXALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e05000: return ('LDSMINALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e06000: return ('LDUMAXALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e07000: return ('LDUMINALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78e08000: return ('SWPALH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8208000: return ('SWP_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8608000: return ('SWPL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a00000: return ('LDADDA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a01000: return ('LDCLRA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a02000: return ('LDEORA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a03000: return ('LDSETA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a04000: return ('LDSMAXA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a05000: return ('LDSMINA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a06000: return ('LDUMAXA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a07000: return ('LDUMINA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a08000: return ('SWPA_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8a0c000: return ('LDAPR_32L_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e00000: return ('LDADDAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e01000: return ('LDCLRAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e02000: return ('LDEORAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e03000: return ('LDSETAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e04000: return ('LDSMAXAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e05000: return ('LDSMINAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e06000: return ('LDUMAXAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e07000: return ('LDUMINAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8e08000: return ('SWPAL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8208000: return ('SWP_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8608000: return ('SWPL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a00000: return ('LDADDA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a01000: return ('LDCLRA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a02000: return ('LDEORA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a03000: return ('LDSETA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a04000: return ('LDSMAXA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a05000: return ('LDSMINA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a06000: return ('LDUMAXA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a07000: return ('LDUMINA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a08000: return ('SWPA_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8a0c000: return ('LDAPR_64L_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e00000: return ('LDADDAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e01000: return ('LDCLRAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e02000: return ('LDEORAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e03000: return ('LDSETAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e04000: return ('LDSMAXAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e05000: return ('LDSMINAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e06000: return ('LDUMAXAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e07000: return ('LDUMINAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8e08000: return ('SWPAL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38200000 and (d & 0x00001f) != 0x00001f: return ('LDADDB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38201000 and (d & 0x00001f) != 0x00001f: return ('LDCLRB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38202000 and (d & 0x00001f) != 0x00001f: return ('LDEORB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38203000 and (d & 0x00001f) != 0x00001f: return ('LDSETB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38204000 and (d & 0x00001f) != 0x00001f: return ('LDSMAXB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38205000 and (d & 0x00001f) != 0x00001f: return ('LDSMINB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38206000 and (d & 0x00001f) != 0x00001f: return ('LDUMAXB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38207000 and (d & 0x00001f) != 0x00001f: return ('LDUMINB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38600000 and (d & 0x00001f) != 0x00001f: return ('LDADDLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38601000 and (d & 0x00001f) != 0x00001f: return ('LDCLRLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38602000 and (d & 0x00001f) != 0x00001f: return ('LDEORLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38603000 and (d & 0x00001f) != 0x00001f: return ('LDSETLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38604000 and (d & 0x00001f) != 0x00001f: return ('LDSMAXLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38605000 and (d & 0x00001f) != 0x00001f: return ('LDSMINLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38606000 and (d & 0x00001f) != 0x00001f: return ('LDUMAXLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x38607000 and (d & 0x00001f) != 0x00001f: return ('LDUMINLB_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78200000 and (d & 0x00001f) != 0x00001f: return ('LDADDH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78201000 and (d & 0x00001f) != 0x00001f: return ('LDCLRH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78202000 and (d & 0x00001f) != 0x00001f: return ('LDEORH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78203000 and (d & 0x00001f) != 0x00001f: return ('LDSETH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78204000 and (d & 0x00001f) != 0x00001f: return ('LDSMAXH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78205000 and (d & 0x00001f) != 0x00001f: return ('LDSMINH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78206000 and (d & 0x00001f) != 0x00001f: return ('LDUMAXH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78207000 and (d & 0x00001f) != 0x00001f: return ('LDUMINH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78600000 and (d & 0x00001f) != 0x00001f: return ('LDADDLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78601000 and (d & 0x00001f) != 0x00001f: return ('LDCLRLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78602000 and (d & 0x00001f) != 0x00001f: return ('LDEORLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78603000 and (d & 0x00001f) != 0x00001f: return ('LDSETLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78604000 and (d & 0x00001f) != 0x00001f: return ('LDSMAXLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78605000 and (d & 0x00001f) != 0x00001f: return ('LDSMINLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78606000 and (d & 0x00001f) != 0x00001f: return ('LDUMAXLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x78607000 and (d & 0x00001f) != 0x00001f: return ('LDUMINLH_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8200000 and (d & 0x00001f) != 0x00001f: return ('LDADD_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8201000 and (d & 0x00001f) != 0x00001f: return ('LDCLR_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8202000 and (d & 0x00001f) != 0x00001f: return ('LDEOR_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8203000 and (d & 0x00001f) != 0x00001f: return ('LDSET_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8204000 and (d & 0x00001f) != 0x00001f: return ('LDSMAX_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8205000 and (d & 0x00001f) != 0x00001f: return ('LDSMIN_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8206000 and (d & 0x00001f) != 0x00001f: return ('LDUMAX_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8207000 and (d & 0x00001f) != 0x00001f: return ('LDUMIN_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8600000 and (d & 0x00001f) != 0x00001f: return ('LDADDL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8601000 and (d & 0x00001f) != 0x00001f: return ('LDCLRL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8602000 and (d & 0x00001f) != 0x00001f: return ('LDEORL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8603000 and (d & 0x00001f) != 0x00001f: return ('LDSETL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8604000 and (d & 0x00001f) != 0x00001f: return ('LDSMAXL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8605000 and (d & 0x00001f) != 0x00001f: return ('LDSMINL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8606000 and (d & 0x00001f) != 0x00001f: return ('LDUMAXL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xb8607000 and (d & 0x00001f) != 0x00001f: return ('LDUMINL_32_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8200000 and (d & 0x00001f) != 0x00001f: return ('LDADD_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8201000 and (d & 0x00001f) != 0x00001f: return ('LDCLR_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8202000 and (d & 0x00001f) != 0x00001f: return ('LDEOR_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8203000 and (d & 0x00001f) != 0x00001f: return ('LDSET_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8204000 and (d & 0x00001f) != 0x00001f: return ('LDSMAX_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8205000 and (d & 0x00001f) != 0x00001f: return ('LDSMIN_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8206000 and (d & 0x00001f) != 0x00001f: return ('LDUMAX_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8207000 and (d & 0x00001f) != 0x00001f: return ('LDUMIN_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8600000 and (d & 0x00001f) != 0x00001f: return ('LDADDL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8601000 and (d & 0x00001f) != 0x00001f: return ('LDCLRL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8602000 and (d & 0x00001f) != 0x00001f: return ('LDEORL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8603000 and (d & 0x00001f) != 0x00001f: return ('LDSETL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8604000 and (d & 0x00001f) != 0x00001f: return ('LDSMAXL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8605000 and (d & 0x00001f) != 0x00001f: return ('LDSMINL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8606000 and (d & 0x00001f) != 0x00001f: return ('LDUMAXL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xf8607000 and (d & 0x00001f) != 0x00001f: return ('LDUMINL_64_memop', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
return decode_UNDEFINED(d) | |
def decode_loadlit(d): | |
assert (d & 0x3b000000) == 0x18000000 | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
imm19 = (d >> 5) & 0x7FFFF | |
opc = (d >> 30) & 3 | |
if (d & 0xff000000) == 0x18000000: return ('LDR_32_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0x1c000000: return ('LDR_S_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0x58000000: return ('LDR_64_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0x5c000000: return ('LDR_D_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0x98000000: return ('LDRSW_64_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0x9c000000: return ('LDR_Q_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
if (d & 0xff000000) == 0xd8000000: return ('PRFM_P_loadlit', {'Rt': Rt, 'imm19': imm19}) | |
return decode_UNDEFINED(d) | |
def decode_ldstexcl(d): | |
assert (d & 0x3f000000) == 0x08000000 | |
L = (d >> 22) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rs = (d >> 16) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
Rt2 = (d >> 10) & 0x1F | |
o0 = (d >> 15) & 1 | |
o1 = (d >> 21) & 1 | |
o2 = (d >> 23) & 1 | |
size = (d >> 30) & 3 | |
if (d & 0xffe0fc00) == 0x08207c00: return ('CASP_CP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x0820fc00: return ('CASPL_CP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x08607c00: return ('CASPA_CP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x0860fc00: return ('CASPAL_CP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x08a07c00: return ('CASB_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x08a0fc00: return ('CASLB_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x08e07c00: return ('CASAB_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x08e0fc00: return ('CASALB_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x48207c00: return ('CASP_CP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x4820fc00: return ('CASPL_CP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x48607c00: return ('CASPA_CP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x4860fc00: return ('CASPAL_CP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x48a07c00: return ('CASH_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x48a0fc00: return ('CASLH_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x48e07c00: return ('CASAH_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x48e0fc00: return ('CASALH_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x88a07c00: return ('CAS_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x88a0fc00: return ('CASL_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x88e07c00: return ('CASA_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0x88e0fc00: return ('CASAL_C32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xc8a07c00: return ('CAS_C64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xc8a0fc00: return ('CASL_C64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xc8e07c00: return ('CASA_C64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe0fc00) == 0xc8e0fc00: return ('CASAL_C64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt}) | |
if (d & 0xffe08000) == 0x08000000: return ('STXRB_SR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08008000: return ('STLXRB_SR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08400000: return ('LDXRB_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08408000: return ('LDAXRB_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08800000: return ('STLLRB_SL32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08808000: return ('STLRB_SL32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08c00000: return ('LDLARB_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x08c08000: return ('LDARB_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48000000: return ('STXRH_SR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48008000: return ('STLXRH_SR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48400000: return ('LDXRH_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48408000: return ('LDAXRH_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48800000: return ('STLLRH_SL32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48808000: return ('STLRH_SL32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48c00000: return ('LDLARH_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x48c08000: return ('LDARH_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88000000: return ('STXR_SR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88008000: return ('STLXR_SR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88200000: return ('STXP_SP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88208000: return ('STLXP_SP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88400000: return ('LDXR_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88408000: return ('LDAXR_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88600000: return ('LDXP_LP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88608000: return ('LDAXP_LP32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88800000: return ('STLLR_SL32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88808000: return ('STLR_SL32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88c00000: return ('LDLAR_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0x88c08000: return ('LDAR_LR32_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8000000: return ('STXR_SR64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8008000: return ('STLXR_SR64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8200000: return ('STXP_SP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8208000: return ('STLXP_SP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8400000: return ('LDXR_LR64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8408000: return ('LDAXR_LR64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8600000: return ('LDXP_LP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8608000: return ('LDAXP_LP64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8800000: return ('STLLR_SL64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8808000: return ('STLR_SL64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8c00000: return ('LDLAR_LR64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
if (d & 0xffe08000) == 0xc8c08000: return ('LDAR_LR64_ldstexcl', {'Rn': Rn, 'Rs': Rs, 'Rt': Rt, 'Rt2': Rt2}) | |
return decode_UNDEFINED(d) | |
def decode_ldstnapair_offs(d): | |
assert (d & 0x3b800000) == 0x28000000 | |
L = (d >> 22) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
Rt2 = (d >> 10) & 0x1F | |
V = (d >> 26) & 1 | |
imm7 = (d >> 15) & 0x7F | |
opc = (d >> 30) & 3 | |
if (d & 0xffc00000) == 0x28000000: return ('STNP_32_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x28400000: return ('LDNP_32_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2c000000: return ('STNP_S_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2c400000: return ('LDNP_S_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6c000000: return ('STNP_D_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6c400000: return ('LDNP_D_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa8000000: return ('STNP_64_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa8400000: return ('LDNP_64_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xac000000: return ('STNP_Q_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xac400000: return ('LDNP_Q_ldstnapair_offs', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_immpost(d): | |
assert (d & 0x3b200c00) == 0x38000400 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
imm9 = (d >> 12) & 0x1FF | |
opc = (d >> 22) & 3 | |
size = (d >> 30) & 3 | |
if (d & 0xffe00c00) == 0x38000400: return ('STRB_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38400400: return ('LDRB_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38800400: return ('LDRSB_64_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38c00400: return ('LDRSB_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c000400: return ('STR_B_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c400400: return ('LDR_B_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c800400: return ('STR_Q_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3cc00400: return ('LDR_Q_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78000400: return ('STRH_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78400400: return ('LDRH_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78800400: return ('LDRSH_64_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78c00400: return ('LDRSH_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x7c000400: return ('STR_H_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x7c400400: return ('LDR_H_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8000400: return ('STR_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8400400: return ('LDR_32_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8800400: return ('LDRSW_64_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xbc000400: return ('STR_S_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xbc400400: return ('LDR_S_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8000400: return ('STR_64_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8400400: return ('LDR_64_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xfc000400: return ('STR_D_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xfc400400: return ('LDR_D_ldst_immpost', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_immpre(d): | |
assert (d & 0x3b200c00) == 0x38000c00 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
imm9 = (d >> 12) & 0x1FF | |
opc = (d >> 22) & 3 | |
size = (d >> 30) & 3 | |
if (d & 0xffe00c00) == 0x38000c00: return ('STRB_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38400c00: return ('LDRB_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38800c00: return ('LDRSB_64_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38c00c00: return ('LDRSB_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c000c00: return ('STR_B_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c400c00: return ('LDR_B_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c800c00: return ('STR_Q_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3cc00c00: return ('LDR_Q_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78000c00: return ('STRH_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78400c00: return ('LDRH_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78800c00: return ('LDRSH_64_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78c00c00: return ('LDRSH_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x7c000c00: return ('STR_H_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x7c400c00: return ('LDR_H_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8000c00: return ('STR_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8400c00: return ('LDR_32_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8800c00: return ('LDRSW_64_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xbc000c00: return ('STR_S_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xbc400c00: return ('LDR_S_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8000c00: return ('STR_64_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8400c00: return ('LDR_64_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xfc000c00: return ('STR_D_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xfc400c00: return ('LDR_D_ldst_immpre', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_pac(d): | |
assert (d & 0x3b200400) == 0x38200400 | |
M = (d >> 23) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
S = (d >> 22) & 1 | |
V = (d >> 26) & 1 | |
W = (d >> 11) & 1 | |
imm9 = (d >> 12) & 0x1FF | |
size = (d >> 30) & 3 | |
if (d & 0xfba00c00) == 0xf8200400: return ('LDRAA_64_ldst_pac', {'Rn': Rn, 'Rt': Rt, 'S': S, 'V': V, 'imm9': imm9}) | |
if (d & 0xfba00c00) == 0xf8200c00: return ('LDRAA_64W_ldst_pac', {'Rn': Rn, 'Rt': Rt, 'S': S, 'V': V, 'imm9': imm9}) | |
if (d & 0xfba00c00) == 0xf8a00400: return ('LDRAB_64_ldst_pac', {'Rn': Rn, 'Rt': Rt, 'S': S, 'V': V, 'imm9': imm9}) | |
if (d & 0xfba00c00) == 0xf8a00c00: return ('LDRAB_64W_ldst_pac', {'Rn': Rn, 'Rt': Rt, 'S': S, 'V': V, 'imm9': imm9}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_regoff(d): | |
assert (d & 0x3b200c00) == 0x38200800 | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
S = (d >> 12) & 1 | |
V = (d >> 26) & 1 | |
opc = (d >> 22) & 3 | |
option = (d >> 13) & 7 | |
size = (d >> 30) & 3 | |
if (d & 0xffe0ec00) == 0x38206800: return ('STRB_32BL_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xffe0ec00) == 0x38606800: return ('LDRB_32BL_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xffe0ec00) == 0x38a06800: return ('LDRSB_64BL_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xffe0ec00) == 0x38e06800: return ('LDRSB_32BL_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xffe0ec00) == 0x3c206800: return ('STR_BL_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xffe0ec00) == 0x3c606800: return ('LDR_BL_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S}) | |
if (d & 0xffe00c00) == 0x3ca00800: return ('STR_Q_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x3ce00800: return ('LDR_Q_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x78200800: return ('STRH_32_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x78600800: return ('LDRH_32_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x78a00800: return ('LDRSH_64_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x78e00800: return ('LDRSH_32_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x7c200800: return ('STR_H_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x7c600800: return ('LDR_H_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xb8200800: return ('STR_32_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xb8600800: return ('LDR_32_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xb8a00800: return ('LDRSW_64_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xbc200800: return ('STR_S_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xbc600800: return ('LDR_S_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xf8200800: return ('STR_64_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xf8600800: return ('LDR_64_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xf8a00800: return ('PRFM_P_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xfc200800: return ('STR_D_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0xfc600800: return ('LDR_D_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x38200800 and (d & 0x00e000) != 0x006000: return ('STRB_32B_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x38600800 and (d & 0x00e000) != 0x006000: return ('LDRB_32B_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x38a00800 and (d & 0x00e000) != 0x006000: return ('LDRSB_64B_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x38e00800 and (d & 0x00e000) != 0x006000: return ('LDRSB_32B_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x3c200800 and (d & 0x00e000) != 0x006000: return ('STR_B_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
if (d & 0xffe00c00) == 0x3c600800 and (d & 0x00e000) != 0x006000: return ('LDR_B_ldst_regoff', {'Rm': Rm, 'Rn': Rn, 'Rt': Rt, 'S': S, 'option': option}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_unpriv(d): | |
assert (d & 0x3b200c00) == 0x38000800 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
imm9 = (d >> 12) & 0x1FF | |
opc = (d >> 22) & 3 | |
size = (d >> 30) & 3 | |
if (d & 0xffe00c00) == 0x38000800: return ('STTRB_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38400800: return ('LDTRB_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38800800: return ('LDTRSB_64_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38c00800: return ('LDTRSB_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78000800: return ('STTRH_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78400800: return ('LDTRH_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78800800: return ('LDTRSH_64_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78c00800: return ('LDTRSH_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8000800: return ('STTR_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8400800: return ('LDTR_32_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8800800: return ('LDTRSW_64_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8000800: return ('STTR_64_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8400800: return ('LDTR_64_ldst_unpriv', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_unscaled(d): | |
assert (d & 0x3b200c00) == 0x38000000 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
imm9 = (d >> 12) & 0x1FF | |
opc = (d >> 22) & 3 | |
size = (d >> 30) & 3 | |
if (d & 0xffe00c00) == 0x38000000: return ('STURB_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38400000: return ('LDURB_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38800000: return ('LDURSB_64_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x38c00000: return ('LDURSB_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c000000: return ('STUR_B_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c400000: return ('LDUR_B_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3c800000: return ('STUR_Q_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x3cc00000: return ('LDUR_Q_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78000000: return ('STURH_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78400000: return ('LDURH_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78800000: return ('LDURSH_64_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x78c00000: return ('LDURSH_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x7c000000: return ('STUR_H_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0x7c400000: return ('LDUR_H_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8000000: return ('STUR_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8400000: return ('LDUR_32_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xb8800000: return ('LDURSW_64_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xbc000000: return ('STUR_S_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xbc400000: return ('LDUR_S_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8000000: return ('STUR_64_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8400000: return ('LDUR_64_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xf8800000: return ('PRFUM_P_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xfc000000: return ('STUR_D_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
if (d & 0xffe00c00) == 0xfc400000: return ('LDUR_D_ldst_unscaled', {'Rn': Rn, 'Rt': Rt, 'imm9': imm9}) | |
return decode_UNDEFINED(d) | |
def decode_ldst_pos(d): | |
assert (d & 0x3b000000) == 0x39000000 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
V = (d >> 26) & 1 | |
imm12 = (d >> 10) & 0xFFF | |
opc = (d >> 22) & 3 | |
size = (d >> 30) & 3 | |
if (d & 0xffc00000) == 0x39000000: return ('STRB_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x39400000: return ('LDRB_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x39800000: return ('LDRSB_64_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x39c00000: return ('LDRSB_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x3d000000: return ('STR_B_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x3d400000: return ('LDR_B_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x3d800000: return ('STR_Q_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x3dc00000: return ('LDR_Q_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x79000000: return ('STRH_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x79400000: return ('LDRH_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x79800000: return ('LDRSH_64_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x79c00000: return ('LDRSH_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x7d000000: return ('STR_H_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0x7d400000: return ('LDR_H_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xb9000000: return ('STR_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xb9400000: return ('LDR_32_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xb9800000: return ('LDRSW_64_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xbd000000: return ('STR_S_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xbd400000: return ('LDR_S_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xf9000000: return ('STR_64_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xf9400000: return ('LDR_64_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xf9800000: return ('PRFM_P_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xfd000000: return ('STR_D_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
if (d & 0xffc00000) == 0xfd400000: return ('LDR_D_ldst_pos', {'Rn': Rn, 'Rt': Rt, 'imm12': imm12}) | |
return decode_UNDEFINED(d) | |
def decode_ldstpair_off(d): | |
assert (d & 0x3b800000) == 0x29000000 | |
L = (d >> 22) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
Rt2 = (d >> 10) & 0x1F | |
V = (d >> 26) & 1 | |
imm7 = (d >> 15) & 0x7F | |
opc = (d >> 30) & 3 | |
if (d & 0xffc00000) == 0x29000000: return ('STP_32_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x29400000: return ('LDP_32_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2d000000: return ('STP_S_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2d400000: return ('LDP_S_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x69400000: return ('LDPSW_64_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6d000000: return ('STP_D_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6d400000: return ('LDP_D_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa9000000: return ('STP_64_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa9400000: return ('LDP_64_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xad000000: return ('STP_Q_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xad400000: return ('LDP_Q_ldstpair_off', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
return decode_UNDEFINED(d) | |
def decode_ldstpair_post(d): | |
assert (d & 0x3b800000) == 0x28800000 | |
L = (d >> 22) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
Rt2 = (d >> 10) & 0x1F | |
V = (d >> 26) & 1 | |
imm7 = (d >> 15) & 0x7F | |
opc = (d >> 30) & 3 | |
if (d & 0xffc00000) == 0x28800000: return ('STP_32_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x28c00000: return ('LDP_32_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2c800000: return ('STP_S_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2cc00000: return ('LDP_S_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x68c00000: return ('LDPSW_64_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6c800000: return ('STP_D_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6cc00000: return ('LDP_D_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa8800000: return ('STP_64_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa8c00000: return ('LDP_64_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xac800000: return ('STP_Q_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xacc00000: return ('LDP_Q_ldstpair_post', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
return decode_UNDEFINED(d) | |
def decode_ldstpair_pre(d): | |
assert (d & 0x3b800000) == 0x29800000 | |
L = (d >> 22) & 1 | |
Rn = (d >> 5) & 0x1F | |
Rt = (d >> 0) & 0x1F | |
Rt2 = (d >> 10) & 0x1F | |
V = (d >> 26) & 1 | |
imm7 = (d >> 15) & 0x7F | |
opc = (d >> 30) & 3 | |
if (d & 0xffc00000) == 0x29800000: return ('STP_32_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x29c00000: return ('LDP_32_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2d800000: return ('STP_S_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x2dc00000: return ('LDP_S_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x69c00000: return ('LDPSW_64_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6d800000: return ('STP_D_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0x6dc00000: return ('LDP_D_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa9800000: return ('STP_64_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xa9c00000: return ('LDP_64_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xad800000: return ('STP_Q_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
if (d & 0xffc00000) == 0xadc00000: return ('LDP_Q_ldstpair_pre', {'Rn': Rn, 'Rt': Rt, 'Rt2': Rt2, 'imm7': imm7}) | |
return decode_UNDEFINED(d) | |
def decode_addsub_imm(d): | |
assert (d & 0x1f000000) == 0x11000000 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
imm12 = (d >> 10) & 0xFFF | |
op = (d >> 30) & 1 | |
sf = (d >> 31) & 1 | |
shift = (d >> 22) & 3 | |
if (d & 0xff000000) == 0x11000000: return ('ADD_32_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0x31000000: return ('ADDS_32S_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0x51000000: return ('SUB_32_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0x71000000: return ('SUBS_32S_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0x91000000: return ('ADD_64_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0xb1000000: return ('ADDS_64S_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0xd1000000: return ('SUB_64_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
if (d & 0xff000000) == 0xf1000000: return ('SUBS_64S_addsub_imm', {'Rd': Rd, 'Rn': Rn, 'imm12': imm12, 'shift': shift}) | |
return decode_UNDEFINED(d) | |
def decode_bitfield(d): | |
assert (d & 0x1f800000) == 0x13000000 | |
N = (d >> 22) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
immr = (d >> 16) & 0x3F | |
imms = (d >> 10) & 0x3F | |
opc = (d >> 29) & 3 | |
sf = (d >> 31) & 1 | |
if (d & 0xffc00000) == 0x13000000: return ('SBFM_32M_bitfield', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0x33000000: return ('BFM_32M_bitfield', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0x53000000: return ('UBFM_32M_bitfield', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0x93400000: return ('SBFM_64M_bitfield', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0xb3400000: return ('BFM_64M_bitfield', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0xd3400000: return ('UBFM_64M_bitfield', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
return decode_UNDEFINED(d) | |
def decode_extract(d): | |
assert (d & 0x1f800000) == 0x13800000 | |
N = (d >> 22) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imms = (d >> 10) & 0x3F | |
o0 = (d >> 21) & 1 | |
op21 = (d >> 29) & 3 | |
sf = (d >> 31) & 1 | |
if (d & 0xffe08000) == 0x13800000: return ('EXTR_32_extract', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imms': imms}) | |
if (d & 0xffe00000) == 0x93c00000: return ('EXTR_64_extract', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imms': imms}) | |
return decode_UNDEFINED(d) | |
def decode_log_imm(d): | |
assert (d & 0x1f800000) == 0x12000000 | |
N = (d >> 22) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
immr = (d >> 16) & 0x3F | |
imms = (d >> 10) & 0x3F | |
opc = (d >> 29) & 3 | |
sf = (d >> 31) & 1 | |
if (d & 0xffc00000) == 0x12000000: return ('AND_32_log_imm', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0x32000000: return ('ORR_32_log_imm', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0x52000000: return ('EOR_32_log_imm', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xffc00000) == 0x72000000: return ('ANDS_32S_log_imm', {'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xff800000) == 0x92000000: return ('AND_64_log_imm', {'N': N, 'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xff800000) == 0xb2000000: return ('ORR_64_log_imm', {'N': N, 'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xff800000) == 0xd2000000: return ('EOR_64_log_imm', {'N': N, 'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
if (d & 0xff800000) == 0xf2000000: return ('ANDS_64S_log_imm', {'N': N, 'Rd': Rd, 'Rn': Rn, 'immr': immr, 'imms': imms}) | |
return decode_UNDEFINED(d) | |
def decode_movewide(d): | |
assert (d & 0x1f800000) == 0x12800000 | |
Rd = (d >> 0) & 0x1F | |
hw = (d >> 21) & 3 | |
imm16 = (d >> 5) & 0xFFFF | |
opc = (d >> 29) & 3 | |
sf = (d >> 31) & 1 | |
if (d & 0xff800000) == 0x12800000: return ('MOVN_32_movewide', {'Rd': Rd, 'hw': hw, 'imm16': imm16}) | |
if (d & 0xff800000) == 0x52800000: return ('MOVZ_32_movewide', {'Rd': Rd, 'hw': hw, 'imm16': imm16}) | |
if (d & 0xff800000) == 0x72800000: return ('MOVK_32_movewide', {'Rd': Rd, 'hw': hw, 'imm16': imm16}) | |
if (d & 0xff800000) == 0x92800000: return ('MOVN_64_movewide', {'Rd': Rd, 'hw': hw, 'imm16': imm16}) | |
if (d & 0xff800000) == 0xd2800000: return ('MOVZ_64_movewide', {'Rd': Rd, 'hw': hw, 'imm16': imm16}) | |
if (d & 0xff800000) == 0xf2800000: return ('MOVK_64_movewide', {'Rd': Rd, 'hw': hw, 'imm16': imm16}) | |
return decode_UNDEFINED(d) | |
def decode_pcreladdr(d): | |
assert (d & 0x1f000000) == 0x10000000 | |
Rd = (d >> 0) & 0x1F | |
immhi = (d >> 5) & 0x7FFFF | |
immlo = (d >> 29) & 3 | |
op = (d >> 31) & 1 | |
if (d & 0x9f000000) == 0x10000000: return ('ADR_only_pcreladdr', {'Rd': Rd, 'immhi': immhi, 'immlo': immlo}) | |
if (d & 0x9f000000) == 0x90000000: return ('ADRP_only_pcreladdr', {'Rd': Rd, 'immhi': immhi, 'immlo': immlo}) | |
return decode_UNDEFINED(d) | |
def decode_addsub_ext(d): | |
assert (d & 0x1f200000) == 0x0b200000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
imm3 = (d >> 10) & 7 | |
op = (d >> 30) & 1 | |
opt = (d >> 22) & 3 | |
option = (d >> 13) & 7 | |
sf = (d >> 31) & 1 | |
if (d & 0xffe00000) == 0x0b200000: return ('ADD_32_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0x2b200000: return ('ADDS_32S_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0x4b200000: return ('SUB_32_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0x6b200000: return ('SUBS_32S_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0x8b200000: return ('ADD_64_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0xab200000: return ('ADDS_64S_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0xcb200000: return ('SUB_64_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
if (d & 0xffe00000) == 0xeb200000: return ('SUBS_64S_addsub_ext', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm3': imm3, 'option': option}) | |
return decode_UNDEFINED(d) | |
def decode_addsub_shift(d): | |
assert (d & 0x1f200000) == 0x0b000000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
imm6 = (d >> 10) & 0x3F | |
op = (d >> 30) & 1 | |
sf = (d >> 31) & 1 | |
shift = (d >> 22) & 3 | |
if (d & 0xff200000) == 0x0b000000: return ('ADD_32_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x2b000000: return ('ADDS_32_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x4b000000: return ('SUB_32_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x6b000000: return ('SUBS_32_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x8b000000: return ('ADD_64_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xab000000: return ('ADDS_64_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xcb000000: return ('SUB_64_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xeb000000: return ('SUBS_64_addsub_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
return decode_UNDEFINED(d) | |
def decode_addsub_carry(d): | |
assert (d & 0x1fe00000) == 0x1a000000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
op = (d >> 30) & 1 | |
opcode2 = (d >> 10) & 0x3F | |
sf = (d >> 31) & 1 | |
if (d & 0xffe0fc00) == 0x1a000000: return ('ADC_32_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x3a000000: return ('ADCS_32_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5a000000: return ('SBC_32_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x7a000000: return ('SBCS_32_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9a000000: return ('ADC_64_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xba000000: return ('ADCS_64_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xda000000: return ('SBC_64_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xfa000000: return ('SBCS_64_addsub_carry', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_condcmp_imm(d): | |
assert (d & 0x1fe00800) == 0x1a400800 | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
cond = (d >> 12) & 0xF | |
imm5 = (d >> 16) & 0x1F | |
nzcv = (d >> 0) & 0xF | |
o2 = (d >> 10) & 1 | |
o3 = (d >> 4) & 1 | |
op = (d >> 30) & 1 | |
sf = (d >> 31) & 1 | |
if (d & 0xffe00c10) == 0x3a400800: return ('CCMN_32_condcmp_imm', {'Rn': Rn, 'cond': cond, 'imm5': imm5, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x7a400800: return ('CCMP_32_condcmp_imm', {'Rn': Rn, 'cond': cond, 'imm5': imm5, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0xba400800: return ('CCMN_64_condcmp_imm', {'Rn': Rn, 'cond': cond, 'imm5': imm5, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0xfa400800: return ('CCMP_64_condcmp_imm', {'Rn': Rn, 'cond': cond, 'imm5': imm5, 'nzcv': nzcv}) | |
return decode_UNDEFINED(d) | |
def decode_condcmp_reg(d): | |
assert (d & 0x1fe00800) == 0x1a400000 | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
cond = (d >> 12) & 0xF | |
nzcv = (d >> 0) & 0xF | |
o2 = (d >> 10) & 1 | |
o3 = (d >> 4) & 1 | |
op = (d >> 30) & 1 | |
sf = (d >> 31) & 1 | |
if (d & 0xffe00c10) == 0x3a400000: return ('CCMN_32_condcmp_reg', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x7a400000: return ('CCMP_32_condcmp_reg', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0xba400000: return ('CCMN_64_condcmp_reg', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0xfa400000: return ('CCMP_64_condcmp_reg', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
return decode_UNDEFINED(d) | |
def decode_condsel(d): | |
assert (d & 0x1fe00000) == 0x1a800000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
cond = (d >> 12) & 0xF | |
op = (d >> 30) & 1 | |
op2 = (d >> 10) & 3 | |
sf = (d >> 31) & 1 | |
if (d & 0xffe00c00) == 0x1a800000: return ('CSEL_32_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x1a800400: return ('CSINC_32_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x5a800000: return ('CSINV_32_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x5a800400: return ('CSNEG_32_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x9a800000: return ('CSEL_64_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x9a800400: return ('CSINC_64_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0xda800000: return ('CSINV_64_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0xda800400: return ('CSNEG_64_condsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
return decode_UNDEFINED(d) | |
def decode_dp_1src(d): | |
assert (d & 0x5fe00000) == 0x5ac00000 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
opcode = (d >> 10) & 0x3F | |
opcode2 = (d >> 16) & 0x1F | |
sf = (d >> 31) & 1 | |
if (d & 0xffffffe0) == 0xdac123e0: return ('PACIZA_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac127e0: return ('PACIZB_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac12be0: return ('PACDZA_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac12fe0: return ('PACDZB_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac133e0: return ('AUTIZA_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac137e0: return ('AUTIZB_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac13be0: return ('AUTDZA_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac13fe0: return ('AUTDZB_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac143e0: return ('XPACI_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xffffffe0) == 0xdac147e0: return ('XPACD_64Z_dp_1src', {'Rd': Rd}) | |
if (d & 0xfffffc00) == 0x5ac00000: return ('RBIT_32_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ac00400: return ('REV16_32_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ac00800: return ('REV_32_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ac01000: return ('CLZ_32_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ac01400: return ('CLS_32_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac00000: return ('RBIT_64_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac00400: return ('REV16_64_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac00800: return ('REV32_64_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac00c00: return ('REV_64_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac01000: return ('CLZ_64_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac01400: return ('CLS_64_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac10000: return ('PACIA_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac10400: return ('PACIB_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac10800: return ('PACDA_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac10c00: return ('PACDB_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac11000: return ('AUTIA_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac11400: return ('AUTIB_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac11800: return ('AUTDA_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xdac11c00: return ('AUTDB_64P_dp_1src', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_dp_2src(d): | |
assert (d & 0x5fe00000) == 0x1ac00000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
opcode = (d >> 10) & 0x3F | |
sf = (d >> 31) & 1 | |
if (d & 0xffe0fc00) == 0x1ac00800: return ('UDIV_32_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac00c00: return ('SDIV_32_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac02000: return ('LSLV_32_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac02400: return ('LSRV_32_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac02800: return ('ASRV_32_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac02c00: return ('RORV_32_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac04000: return ('CRC32B_32C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac04400: return ('CRC32H_32C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac04800: return ('CRC32W_32C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac05000: return ('CRC32CB_32C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac05400: return ('CRC32CH_32C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ac05800: return ('CRC32CW_32C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac00800: return ('UDIV_64_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac00c00: return ('SDIV_64_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac02000: return ('LSLV_64_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac02400: return ('LSRV_64_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac02800: return ('ASRV_64_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac02c00: return ('RORV_64_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac03000: return ('PACGA_64P_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac04c00: return ('CRC32X_64C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x9ac05c00: return ('CRC32CX_64C_dp_2src', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_dp_3src(d): | |
assert (d & 0x1f000000) == 0x1b000000 | |
Ra = (d >> 10) & 0x1F | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
o0 = (d >> 15) & 1 | |
op31 = (d >> 21) & 7 | |
op54 = (d >> 29) & 3 | |
sf = (d >> 31) & 1 | |
if (d & 0xffe08000) == 0x1b000000: return ('MADD_32A_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1b008000: return ('MSUB_32A_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9b000000: return ('MADD_64A_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9b008000: return ('MSUB_64A_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9b200000: return ('SMADDL_64WA_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9b208000: return ('SMSUBL_64WA_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9b400000: return ('SMULH_64_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9ba00000: return ('UMADDL_64WA_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9ba08000: return ('UMSUBL_64WA_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x9bc00000: return ('UMULH_64_dp_3src', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_log_shift(d): | |
assert (d & 0x1f000000) == 0x0a000000 | |
N = (d >> 21) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imm6 = (d >> 10) & 0x3F | |
opc = (d >> 29) & 3 | |
sf = (d >> 31) & 1 | |
shift = (d >> 22) & 3 | |
if (d & 0xff200000) == 0x0a000000: return ('AND_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x0a200000: return ('BIC_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x2a000000: return ('ORR_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x2a200000: return ('ORN_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x4a000000: return ('EOR_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x4a200000: return ('EON_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x6a000000: return ('ANDS_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x6a200000: return ('BICS_32_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x8a000000: return ('AND_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0x8a200000: return ('BIC_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xaa000000: return ('ORR_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xaa200000: return ('ORN_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xca000000: return ('EOR_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xca200000: return ('EON_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xea000000: return ('ANDS_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
if (d & 0xff200000) == 0xea200000: return ('BICS_64_log_shift', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6, 'shift': shift}) | |
return decode_UNDEFINED(d) | |
def decode_asimdall(d): | |
assert (d & 0x9f3e0c00) == 0x0e300800 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xbffffc00) == 0x0e30c800: return ('FMAXNMV_asimdall_only_H', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0e30f800: return ('FMAXV_asimdall_only_H', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0eb0c800: return ('FMINNMV_asimdall_only_H', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0eb0f800: return ('FMINV_asimdall_only_H', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbfbffc00) == 0x2e30c800: return ('FMAXNMV_asimdall_only_SD', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e30f800: return ('FMAXV_asimdall_only_SD', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2eb0c800: return ('FMINNMV_asimdall_only_SD', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2eb0f800: return ('FMINV_asimdall_only_SD', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e303800: return ('SADDLV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e30a800: return ('SMAXV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e31a800: return ('SMINV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e31b800: return ('ADDV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e303800: return ('UADDLV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e30a800: return ('UMAXV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e31a800: return ('UMINV_asimdall_only', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asimdins(d): | |
assert (d & 0x9fe08400) == 0x0e000400 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imm4 = (d >> 11) & 0xF | |
imm5 = (d >> 16) & 0x1F | |
op = (d >> 29) & 1 | |
if (d & 0xffeffc00) == 0x4e083c00: return ('UMOV_asimdins_X_x', {'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xffe0fc00) == 0x0e002c00: return ('SMOV_asimdins_W_w', {'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xffe0fc00) == 0x0e003c00: return ('UMOV_asimdins_W_w', {'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xffe0fc00) == 0x4e001c00: return ('INS_asimdins_IR_r', {'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xffe0fc00) == 0x4e002c00: return ('SMOV_asimdins_X_x', {'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xbfe0fc00) == 0x0e000400: return ('DUP_asimdins_DV_v', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xbfe0fc00) == 0x0e000c00: return ('DUP_asimdins_DR_r', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
if (d & 0xffe08400) == 0x6e000400: return ('INS_asimdins_IV_v', {'Rd': Rd, 'Rn': Rn, 'imm4': imm4, 'imm5': imm5}) | |
return decode_UNDEFINED(d) | |
def decode_asimdext(d): | |
assert (d & 0xbf208400) == 0x2e000000 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imm4 = (d >> 11) & 0xF | |
op2 = (d >> 22) & 3 | |
if (d & 0xbfe08400) == 0x2e000000: return ('EXT_asimdext_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm4': imm4}) | |
return decode_UNDEFINED(d) | |
def decode_asimdimm(d): | |
assert (d & 0x9ff80400) == 0x0f000400 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
a = (d >> 18) & 1 | |
b = (d >> 17) & 1 | |
c = (d >> 16) & 1 | |
cmode = (d >> 12) & 0xF | |
d = (d >> 9) & 1 | |
e = (d >> 8) & 1 | |
f = (d >> 7) & 1 | |
g = (d >> 6) & 1 | |
h = (d >> 5) & 1 | |
o2 = (d >> 11) & 1 | |
op = (d >> 29) & 1 | |
if (d & 0xfff8fc00) == 0x2f00e400: return ('MOVI_asimdimm_D_ds', {'Rd': Rd, 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xfff8fc00) == 0x6f00e400: return ('MOVI_asimdimm_D2_d', {'Rd': Rd, 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xfff8fc00) == 0x6f00f400: return ('FMOV_asimdimm_D2_d', {'Rd': Rd, 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8fc00) == 0x0f00e400: return ('MOVI_asimdimm_N_b', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8fc00) == 0x0f00f400: return ('FMOV_asimdimm_S_s', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8fc00) == 0x0f00fc00: return ('FMOV_asimdimm_H_h', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8dc00) == 0x0f008400: return ('MOVI_asimdimm_L_hl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8dc00) == 0x0f009400: return ('ORR_asimdimm_L_hl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8dc00) == 0x2f008400: return ('MVNI_asimdimm_L_hl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8dc00) == 0x2f009400: return ('BIC_asimdimm_L_hl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8ec00) == 0x0f00c400: return ('MOVI_asimdimm_M_sm', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff8ec00) == 0x2f00c400: return ('MVNI_asimdimm_M_sm', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff89c00) == 0x0f000400: return ('MOVI_asimdimm_L_sl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff89c00) == 0x0f001400: return ('ORR_asimdimm_L_sl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff89c00) == 0x2f000400: return ('MVNI_asimdimm_L_sl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
if (d & 0xbff89c00) == 0x2f001400: return ('BIC_asimdimm_L_sl', {'Q': Q, 'Rd': Rd, 'a': a, 'b': b, 'c': c, 'cmode': cmode, 'd': d, 'e': e, 'f': f, 'g': g, 'h': h}) | |
return decode_UNDEFINED(d) | |
def decode_asimdperm(d): | |
assert (d & 0xbf208c00) == 0x0e000800 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
opcode = (d >> 12) & 7 | |
size = (d >> 22) & 3 | |
if (d & 0xbf20fc00) == 0x0e001800: return ('UZP1_asimdperm_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e002800: return ('TRN1_asimdperm_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e003800: return ('ZIP1_asimdperm_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e005800: return ('UZP2_asimdperm_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e006800: return ('TRN2_asimdperm_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e007800: return ('ZIP2_asimdperm_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdone(d): | |
assert (d & 0xdfe08400) == 0x5e000400 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imm4 = (d >> 11) & 0xF | |
imm5 = (d >> 16) & 0x1F | |
op = (d >> 29) & 1 | |
if (d & 0xffe0fc00) == 0x5e000400: return ('DUP_asisdone_only', {'Rd': Rd, 'Rn': Rn, 'imm5': imm5}) | |
return decode_UNDEFINED(d) | |
def decode_asisdpair(d): | |
assert (d & 0xdf3e0c00) == 0x5e300800 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xfffffc00) == 0x5e30c800: return ('FMAXNMP_asisdpair_only_H', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e30d800: return ('FADDP_asisdpair_only_H', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e30f800: return ('FMAXP_asisdpair_only_H', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5eb0c800: return ('FMINNMP_asisdpair_only_H', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5eb0f800: return ('FMINP_asisdpair_only_H', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xffbffc00) == 0x7e30c800: return ('FMAXNMP_asisdpair_only_SD', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e30d800: return ('FADDP_asisdpair_only_SD', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e30f800: return ('FMAXP_asisdpair_only_SD', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7eb0c800: return ('FMINNMP_asisdpair_only_SD', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7eb0f800: return ('FMINP_asisdpair_only_SD', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e31b800: return ('ADDP_asisdpair_only', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdshf(d): | |
assert (d & 0xdf800400) == 0x5f000400 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
immb = (d >> 16) & 7 | |
immh = (d >> 19) & 0xF | |
opcode = (d >> 11) & 0x1F | |
if (d & 0xff80fc00) == 0x5f000400 and (d & 0x780000) != 0x000000: return ('SSHR_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f001400 and (d & 0x780000) != 0x000000: return ('SSRA_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f002400 and (d & 0x780000) != 0x000000: return ('SRSHR_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f003400 and (d & 0x780000) != 0x000000: return ('SRSRA_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f005400 and (d & 0x780000) != 0x000000: return ('SHL_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f007400 and (d & 0x780000) != 0x000000: return ('SQSHL_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f009400 and (d & 0x780000) != 0x000000: return ('SQSHRN_asisdshf_N', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f009c00 and (d & 0x780000) != 0x000000: return ('SQRSHRN_asisdshf_N', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f00e400 and (d & 0x780000) != 0x000000: return ('SCVTF_asisdshf_C', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x5f00fc00 and (d & 0x780000) != 0x000000: return ('FCVTZS_asisdshf_C', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f000400 and (d & 0x780000) != 0x000000: return ('USHR_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f001400 and (d & 0x780000) != 0x000000: return ('USRA_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f002400 and (d & 0x780000) != 0x000000: return ('URSHR_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f003400 and (d & 0x780000) != 0x000000: return ('URSRA_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f004400 and (d & 0x780000) != 0x000000: return ('SRI_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f005400 and (d & 0x780000) != 0x000000: return ('SLI_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f006400 and (d & 0x780000) != 0x000000: return ('SQSHLU_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f007400 and (d & 0x780000) != 0x000000: return ('UQSHL_asisdshf_R', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f008400 and (d & 0x780000) != 0x000000: return ('SQSHRUN_asisdshf_N', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f008c00 and (d & 0x780000) != 0x000000: return ('SQRSHRUN_asisdshf_N', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f009400 and (d & 0x780000) != 0x000000: return ('UQSHRN_asisdshf_N', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f009c00 and (d & 0x780000) != 0x000000: return ('UQRSHRN_asisdshf_N', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f00e400 and (d & 0x780000) != 0x000000: return ('UCVTF_asisdshf_C', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xff80fc00) == 0x7f00fc00 and (d & 0x780000) != 0x000000: return ('FCVTZU_asisdshf_C', {'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
return decode_UNDEFINED(d) | |
def decode_asisddiff(d): | |
assert (d & 0xdf200c00) == 0x5e200000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0xF | |
size = (d >> 22) & 3 | |
if (d & 0xff20fc00) == 0x5e209000: return ('SQDMLAL_asisddiff_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e20b000: return ('SQDMLSL_asisddiff_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e20d000: return ('SQDMULL_asisddiff_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdsame(d): | |
assert (d & 0xdf200400) == 0x5e200400 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 11) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xffa0fc00) == 0x5e20dc00: return ('FMULX_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x5e20e400: return ('FCMEQ_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x5e20fc00: return ('FRECPS_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x5ea0fc00: return ('FRSQRTS_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x7e20e400: return ('FCMGE_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x7e20ec00: return ('FACGE_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x7ea0d400: return ('FABD_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x7ea0e400: return ('FCMGT_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xffa0fc00) == 0x7ea0ec00: return ('FACGT_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e200c00: return ('SQADD_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e202c00: return ('SQSUB_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e203400: return ('CMGT_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e203c00: return ('CMGE_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e204400: return ('SSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e204c00: return ('SQSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e205400: return ('SRSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e205c00: return ('SQRSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e208400: return ('ADD_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e208c00: return ('CMTST_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x5e20b400: return ('SQDMULH_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e200c00: return ('UQADD_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e202c00: return ('UQSUB_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e203400: return ('CMHI_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e203c00: return ('CMHS_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e204400: return ('USHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e204c00: return ('UQSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e205400: return ('URSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e205c00: return ('UQRSHL_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e208400: return ('SUB_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e208c00: return ('CMEQ_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e20b400: return ('SQRDMULH_asisdsame_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdsamefp16(d): | |
assert (d & 0xdf60c400) == 0x5e400400 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
a = (d >> 23) & 1 | |
opcode = (d >> 11) & 7 | |
if (d & 0xffe0fc00) == 0x5e401c00: return ('FMULX_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e402400: return ('FCMEQ_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e403c00: return ('FRECPS_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5ec03c00: return ('FRSQRTS_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x7e402400: return ('FCMGE_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x7e402c00: return ('FACGE_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x7ec01400: return ('FABD_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x7ec02400: return ('FCMGT_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x7ec02c00: return ('FACGT_asisdsamefp16_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_asisdsame2(d): | |
assert (d & 0xdf208400) == 0x5e008400 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 11) & 0xF | |
size = (d >> 22) & 3 | |
if (d & 0xff20fc00) == 0x7e008400: return ('SQRDMLAH_asisdsame2_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff20fc00) == 0x7e008c00: return ('SQRDMLSH_asisdsame2_only', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdmisc(d): | |
assert (d & 0xdf3e0c00) == 0x5e200800 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xffbffc00) == 0x5e21a800: return ('FCVTNS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5e21b800: return ('FCVTMS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5e21c800: return ('FCVTAS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5e21d800: return ('SCVTF_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea0c800: return ('FCMGT_asisdmisc_FZ', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea0d800: return ('FCMEQ_asisdmisc_FZ', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea0e800: return ('FCMLT_asisdmisc_FZ', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea1a800: return ('FCVTPS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea1b800: return ('FCVTZS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea1d800: return ('FRECPE_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x5ea1f800: return ('FRECPX_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e216800: return ('FCVTXN_asisdmisc_N', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e21a800: return ('FCVTNU_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e21b800: return ('FCVTMU_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e21c800: return ('FCVTAU_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7e21d800: return ('UCVTF_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7ea0c800: return ('FCMGE_asisdmisc_FZ', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7ea0d800: return ('FCMLE_asisdmisc_FZ', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7ea1a800: return ('FCVTPU_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7ea1b800: return ('FCVTZU_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xffbffc00) == 0x7ea1d800: return ('FRSQRTE_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e203800: return ('SUQADD_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e207800: return ('SQABS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e208800: return ('CMGT_asisdmisc_Z', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e209800: return ('CMEQ_asisdmisc_Z', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e20a800: return ('CMLT_asisdmisc_Z', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e20b800: return ('ABS_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x5e214800: return ('SQXTN_asisdmisc_N', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e203800: return ('USQADD_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e207800: return ('SQNEG_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e208800: return ('CMGE_asisdmisc_Z', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e209800: return ('CMLE_asisdmisc_Z', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e20b800: return ('NEG_asisdmisc_R', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e212800: return ('SQXTUN_asisdmisc_N', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xff3ffc00) == 0x7e214800: return ('UQXTN_asisdmisc_N', {'Rd': Rd, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asisdmiscfp16(d): | |
assert (d & 0xdf7e0c00) == 0x5e780800 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
a = (d >> 23) & 1 | |
opcode = (d >> 12) & 0x1F | |
if (d & 0xfffffc00) == 0x5e79a800: return ('FCVTNS_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e79b800: return ('FCVTMS_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e79c800: return ('FCVTAS_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e79d800: return ('SCVTF_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef8c800: return ('FCMGT_asisdmiscfp16_FZ', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef8d800: return ('FCMEQ_asisdmiscfp16_FZ', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef8e800: return ('FCMLT_asisdmiscfp16_FZ', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef9a800: return ('FCVTPS_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef9b800: return ('FCVTZS_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef9d800: return ('FRECPE_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5ef9f800: return ('FRECPX_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7e79a800: return ('FCVTNU_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7e79b800: return ('FCVTMU_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7e79c800: return ('FCVTAU_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7e79d800: return ('UCVTF_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7ef8c800: return ('FCMGE_asisdmiscfp16_FZ', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7ef8d800: return ('FCMLE_asisdmiscfp16_FZ', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7ef9a800: return ('FCVTPU_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7ef9b800: return ('FCVTZU_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x7ef9d800: return ('FRSQRTE_asisdmiscfp16_R', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_asisdelem(d): | |
assert (d & 0xdf000400) == 0x5f000000 | |
H = (d >> 11) & 1 | |
L = (d >> 21) & 1 | |
M = (d >> 20) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0xF | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0xF | |
size = (d >> 22) & 3 | |
if (d & 0xffc0f400) == 0x5f001000: return ('FMLA_asisdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffc0f400) == 0x5f005000: return ('FMLS_asisdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffc0f400) == 0x5f009000: return ('FMUL_asisdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffc0f400) == 0x7f009000: return ('FMULX_asisdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xff80f400) == 0x5f801000: return ('FMLA_asisdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff80f400) == 0x5f805000: return ('FMLS_asisdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff80f400) == 0x5f809000: return ('FMUL_asisdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff80f400) == 0x7f809000: return ('FMULX_asisdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x5f003000: return ('SQDMLAL_asisdelem_L', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x5f007000: return ('SQDMLSL_asisdelem_L', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x5f00b000: return ('SQDMULL_asisdelem_L', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x5f00c000: return ('SQDMULH_asisdelem_R', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x5f00d000: return ('SQRDMULH_asisdelem_R', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x7f00d000: return ('SQRDMLAH_asisdelem_R', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xff00f400) == 0x7f00f000: return ('SQRDMLSH_asisdelem_R', {'H': H, 'L': L, 'M': M, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asimdshf(d): | |
assert (d & 0x9f800400) == 0x0f000400 and (d & 0x780000) != 0x000000 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
immb = (d >> 16) & 7 | |
immh = (d >> 19) & 0xF | |
opcode = (d >> 11) & 0x1F | |
if (d & 0xbf80fc00) == 0x0f000400 and (d & 0x780000) != 0x000000: return ('SSHR_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f001400 and (d & 0x780000) != 0x000000: return ('SSRA_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f002400 and (d & 0x780000) != 0x000000: return ('SRSHR_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f003400 and (d & 0x780000) != 0x000000: return ('SRSRA_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f005400 and (d & 0x780000) != 0x000000: return ('SHL_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f007400 and (d & 0x780000) != 0x000000: return ('SQSHL_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f008400 and (d & 0x780000) != 0x000000: return ('SHRN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f008c00 and (d & 0x780000) != 0x000000: return ('RSHRN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f009400 and (d & 0x780000) != 0x000000: return ('SQSHRN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f009c00 and (d & 0x780000) != 0x000000: return ('SQRSHRN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f00a400 and (d & 0x780000) != 0x000000: return ('SSHLL_asimdshf_L', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f00e400 and (d & 0x780000) != 0x000000: return ('SCVTF_asimdshf_C', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x0f00fc00 and (d & 0x780000) != 0x000000: return ('FCVTZS_asimdshf_C', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f000400 and (d & 0x780000) != 0x000000: return ('USHR_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f001400 and (d & 0x780000) != 0x000000: return ('USRA_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f002400 and (d & 0x780000) != 0x000000: return ('URSHR_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f003400 and (d & 0x780000) != 0x000000: return ('URSRA_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f004400 and (d & 0x780000) != 0x000000: return ('SRI_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f005400 and (d & 0x780000) != 0x000000: return ('SLI_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f006400 and (d & 0x780000) != 0x000000: return ('SQSHLU_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f007400 and (d & 0x780000) != 0x000000: return ('UQSHL_asimdshf_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f008400 and (d & 0x780000) != 0x000000: return ('SQSHRUN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f008c00 and (d & 0x780000) != 0x000000: return ('SQRSHRUN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f009400 and (d & 0x780000) != 0x000000: return ('UQSHRN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f009c00 and (d & 0x780000) != 0x000000: return ('UQRSHRN_asimdshf_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f00a400 and (d & 0x780000) != 0x000000: return ('USHLL_asimdshf_L', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f00e400 and (d & 0x780000) != 0x000000: return ('UCVTF_asimdshf_C', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
if (d & 0xbf80fc00) == 0x2f00fc00 and (d & 0x780000) != 0x000000: return ('FCVTZU_asimdshf_C', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'immb': immb, 'immh': immh}) | |
return decode_UNDEFINED(d) | |
def decode_asimdtbl(d): | |
assert (d & 0xbf208c00) == 0x0e000000 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
len = (d >> 13) & 3 | |
op = (d >> 12) & 1 | |
op2 = (d >> 22) & 3 | |
if (d & 0xbfe0fc00) == 0x0e000000: return ('TBL_asimdtbl_L1_1', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e001000: return ('TBX_asimdtbl_L1_1', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e002000: return ('TBL_asimdtbl_L2_2', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e003000: return ('TBX_asimdtbl_L2_2', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e004000: return ('TBL_asimdtbl_L3_3', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e005000: return ('TBX_asimdtbl_L3_3', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e006000: return ('TBL_asimdtbl_L4_4', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e007000: return ('TBX_asimdtbl_L4_4', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_asimddiff(d): | |
assert (d & 0x9f200c00) == 0x0e200000 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0xF | |
size = (d >> 22) & 3 | |
if (d & 0xbf20fc00) == 0x0e200000: return ('SADDL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e201000: return ('SADDW_asimddiff_W', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e202000: return ('SSUBL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e203000: return ('SSUBW_asimddiff_W', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e204000: return ('ADDHN_asimddiff_N', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e205000: return ('SABAL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e206000: return ('SUBHN_asimddiff_N', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e207000: return ('SABDL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e208000: return ('SMLAL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e209000: return ('SQDMLAL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20a000: return ('SMLSL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20b000: return ('SQDMLSL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20c000: return ('SMULL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20d000: return ('SQDMULL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20e000: return ('PMULL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e200000: return ('UADDL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e201000: return ('UADDW_asimddiff_W', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e202000: return ('USUBL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e203000: return ('USUBW_asimddiff_W', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e204000: return ('RADDHN_asimddiff_N', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e205000: return ('UABAL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e206000: return ('RSUBHN_asimddiff_N', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e207000: return ('UABDL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e208000: return ('UMLAL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e20a000: return ('UMLSL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e20c000: return ('UMULL_asimddiff_L', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asimdsame(d): | |
assert (d & 0x9f200400) == 0x0e200400 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 11) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xbfe0fc00) == 0x0e201c00: return ('AND_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e601c00: return ('BIC_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ea01c00: return ('ORR_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ee01c00: return ('ORN_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e201c00: return ('EOR_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e601c00: return ('BSL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ea01c00: return ('BIT_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ee01c00: return ('BIF_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfa0fc00) == 0x0e20c400: return ('FMAXNM_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0e20cc00: return ('FMLA_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0e20d400: return ('FADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0e20dc00: return ('FMULX_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0e20e400: return ('FCMEQ_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0e20f400: return ('FMAX_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0e20fc00: return ('FRECPS_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0ea0c400: return ('FMINNM_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0ea0cc00: return ('FMLS_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0ea0d400: return ('FSUB_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0ea0f400: return ('FMIN_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x0ea0fc00: return ('FRSQRTS_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20c400: return ('FMAXNMP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20d400: return ('FADDP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20dc00: return ('FMUL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20e400: return ('FCMGE_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20ec00: return ('FACGE_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20f400: return ('FMAXP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2e20fc00: return ('FDIV_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2ea0c400: return ('FMINNMP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2ea0d400: return ('FABD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2ea0e400: return ('FCMGT_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2ea0ec00: return ('FACGT_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfa0fc00) == 0x2ea0f400: return ('FMINP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e200400: return ('SHADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e200c00: return ('SQADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e201400: return ('SRHADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e202400: return ('SHSUB_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e202c00: return ('SQSUB_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e203400: return ('CMGT_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e203c00: return ('CMGE_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e204400: return ('SSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e204c00: return ('SQSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e205400: return ('SRSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e205c00: return ('SQRSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e206400: return ('SMAX_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e206c00: return ('SMIN_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e207400: return ('SABD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e207c00: return ('SABA_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e208400: return ('ADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e208c00: return ('CMTST_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e209400: return ('MLA_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e209c00: return ('MUL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20a400: return ('SMAXP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20ac00: return ('SMINP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20b400: return ('SQDMULH_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x0e20bc00: return ('ADDP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e200400: return ('UHADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e200c00: return ('UQADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e201400: return ('URHADD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e202400: return ('UHSUB_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e202c00: return ('UQSUB_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e203400: return ('CMHI_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e203c00: return ('CMHS_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e204400: return ('USHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e204c00: return ('UQSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e205400: return ('URSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e205c00: return ('UQRSHL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e206400: return ('UMAX_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e206c00: return ('UMIN_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e207400: return ('UABD_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e207c00: return ('UABA_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e208400: return ('SUB_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e208c00: return ('CMEQ_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e209400: return ('MLS_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e209c00: return ('PMUL_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e20a400: return ('UMAXP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e20ac00: return ('UMINP_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e20b400: return ('SQRDMULH_asimdsame_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asimdsamefp16(d): | |
assert (d & 0x9f60c400) == 0x0e400400 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
a = (d >> 23) & 1 | |
opcode = (d >> 11) & 7 | |
if (d & 0xbfe0fc00) == 0x0e400400: return ('FMAXNM_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e400c00: return ('FMLA_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e401400: return ('FADD_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e401c00: return ('FMULX_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e402400: return ('FCMEQ_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e403400: return ('FMAX_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0e403c00: return ('FRECPS_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ec00400: return ('FMINNM_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ec00c00: return ('FMLS_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ec01400: return ('FSUB_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ec03400: return ('FMIN_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x0ec03c00: return ('FRSQRTS_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e400400: return ('FMAXNMP_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e401400: return ('FADDP_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e401c00: return ('FMUL_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e402400: return ('FCMGE_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e402c00: return ('FACGE_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e403400: return ('FMAXP_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2e403c00: return ('FDIV_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ec00400: return ('FMINNMP_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ec01400: return ('FABD_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ec02400: return ('FCMGT_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ec02c00: return ('FACGT_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfe0fc00) == 0x2ec03400: return ('FMINP_asimdsamefp16_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_asimdsame2(d): | |
assert (d & 0x9f208400) == 0x0e008400 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 11) & 0xF | |
size = (d >> 22) & 3 | |
if (d & 0xbf20fc00) == 0x0e009400: return ('SDOT_asimdsame2_D', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e008400: return ('SQRDMLAH_asimdsame2_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e008c00: return ('SQRDMLSH_asimdsame2_only', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20fc00) == 0x2e009400: return ('UDOT_asimdsame2_D', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf20ec00) == 0x2e00e400: return ('FCADD_asimdsame2_C', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'opcode': opcode, 'size': size}) | |
if (d & 0xbf20e400) == 0x2e00c400: return ('FCMLA_asimdsame2_C', {'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'opcode': opcode, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asimdmisc(d): | |
assert (d & 0x9f3e0c00) == 0x0e200800 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xbffffc00) == 0x2e205800: return ('NOT_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e605800: return ('RBIT_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbfbffc00) == 0x0e216800: return ('FCVTN_asimdmisc_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e217800: return ('FCVTL_asimdmisc_L', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e218800: return ('FRINTN_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e219800: return ('FRINTM_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e21a800: return ('FCVTNS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e21b800: return ('FCVTMS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e21c800: return ('FCVTAS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0e21d800: return ('SCVTF_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea0c800: return ('FCMGT_asimdmisc_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea0d800: return ('FCMEQ_asimdmisc_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea0e800: return ('FCMLT_asimdmisc_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea0f800: return ('FABS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea18800: return ('FRINTP_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea19800: return ('FRINTZ_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea1a800: return ('FCVTPS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea1b800: return ('FCVTZS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea1c800: return ('URECPE_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x0ea1d800: return ('FRECPE_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e216800: return ('FCVTXN_asimdmisc_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e218800: return ('FRINTA_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e219800: return ('FRINTX_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e21a800: return ('FCVTNU_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e21b800: return ('FCVTMU_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e21c800: return ('FCVTAU_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2e21d800: return ('UCVTF_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea0c800: return ('FCMGE_asimdmisc_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea0d800: return ('FCMLE_asimdmisc_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea0f800: return ('FNEG_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea19800: return ('FRINTI_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea1a800: return ('FCVTPU_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea1b800: return ('FCVTZU_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea1c800: return ('URSQRTE_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea1d800: return ('FRSQRTE_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfbffc00) == 0x2ea1f800: return ('FSQRT_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e200800: return ('REV64_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e201800: return ('REV16_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e202800: return ('SADDLP_asimdmisc_P', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e203800: return ('SUQADD_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e204800: return ('CLS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e205800: return ('CNT_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e206800: return ('SADALP_asimdmisc_P', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e207800: return ('SQABS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e208800: return ('CMGT_asimdmisc_Z', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e209800: return ('CMEQ_asimdmisc_Z', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e20a800: return ('CMLT_asimdmisc_Z', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e20b800: return ('ABS_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e212800: return ('XTN_asimdmisc_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x0e214800: return ('SQXTN_asimdmisc_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e200800: return ('REV32_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e202800: return ('UADDLP_asimdmisc_P', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e203800: return ('USQADD_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e204800: return ('CLZ_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e206800: return ('UADALP_asimdmisc_P', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e207800: return ('SQNEG_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e208800: return ('CMGE_asimdmisc_Z', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e209800: return ('CMLE_asimdmisc_Z', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e20b800: return ('NEG_asimdmisc_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e212800: return ('SQXTUN_asimdmisc_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e213800: return ('SHLL_asimdmisc_S', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf3ffc00) == 0x2e214800: return ('UQXTN_asimdmisc_N', {'Q': Q, 'Rd': Rd, 'Rn': Rn, 'size': size}) | |
return decode_UNDEFINED(d) | |
def decode_asimdmiscfp16(d): | |
assert (d & 0x9f7e0c00) == 0x0e780800 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
a = (d >> 23) & 1 | |
opcode = (d >> 12) & 0x1F | |
if (d & 0xbffffc00) == 0x0e798800: return ('FRINTN_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0e799800: return ('FRINTM_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0e79a800: return ('FCVTNS_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0e79b800: return ('FCVTMS_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0e79c800: return ('FCVTAS_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0e79d800: return ('SCVTF_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef8c800: return ('FCMGT_asimdmiscfp16_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef8d800: return ('FCMEQ_asimdmiscfp16_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef8e800: return ('FCMLT_asimdmiscfp16_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef8f800: return ('FABS_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef98800: return ('FRINTP_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef99800: return ('FRINTZ_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef9a800: return ('FCVTPS_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef9b800: return ('FCVTZS_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x0ef9d800: return ('FRECPE_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e798800: return ('FRINTA_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e799800: return ('FRINTX_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e79a800: return ('FCVTNU_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e79b800: return ('FCVTMU_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e79c800: return ('FCVTAU_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2e79d800: return ('UCVTF_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef8c800: return ('FCMGE_asimdmiscfp16_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef8d800: return ('FCMLE_asimdmiscfp16_FZ', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef8f800: return ('FNEG_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef99800: return ('FRINTI_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef9a800: return ('FCVTPU_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef9b800: return ('FCVTZU_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef9d800: return ('FRSQRTE_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xbffffc00) == 0x2ef9f800: return ('FSQRT_asimdmiscfp16_R', {'Q': Q, 'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_asimdelem(d): | |
assert (d & 0x9f000400) == 0x0f000000 | |
H = (d >> 11) & 1 | |
L = (d >> 21) & 1 | |
M = (d >> 20) & 1 | |
Q = (d >> 30) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0xF | |
Rn = (d >> 5) & 0x1F | |
U = (d >> 29) & 1 | |
opcode = (d >> 12) & 0xF | |
size = (d >> 22) & 3 | |
if (d & 0xbfc0f400) == 0x0f001000: return ('FMLA_asimdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfc0f400) == 0x0f005000: return ('FMLS_asimdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfc0f400) == 0x0f009000: return ('FMUL_asimdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbfc0f400) == 0x2f009000: return ('FMULX_asimdelem_RH_H', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xbf80f400) == 0x0f801000: return ('FMLA_asimdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf80f400) == 0x0f805000: return ('FMLS_asimdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf80f400) == 0x0f809000: return ('FMUL_asimdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf80f400) == 0x2f809000: return ('FMULX_asimdelem_R_SD', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f002000: return ('SMLAL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f003000: return ('SQDMLAL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f006000: return ('SMLSL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f007000: return ('SQDMLSL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f008000: return ('MUL_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f00a000: return ('SMULL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f00b000: return ('SQDMULL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f00c000: return ('SQDMULH_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f00d000: return ('SQRDMULH_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x0f00e000: return ('SDOT_asimdelem_D', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f000000: return ('MLA_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f002000: return ('UMLAL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f004000: return ('MLS_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f006000: return ('UMLSL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f00a000: return ('UMULL_asimdelem_L', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f00d000: return ('SQRDMLAH_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f00e000: return ('UDOT_asimdelem_D', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbf00f400) == 0x2f00f000: return ('SQRDMLSH_asimdelem_R', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'size': size}) | |
if (d & 0xbfc09400) == 0x2f401000: return ('FCMLA_asimdelem_C_H', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'opcode': opcode}) | |
if (d & 0xbfc09400) == 0x2f801000: return ('FCMLA_asimdelem_C_S', {'H': H, 'L': L, 'M': M, 'Q': Q, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'opcode': opcode}) | |
return decode_UNDEFINED(d) | |
def decode_float2fix(d): | |
assert (d & 0x5f200000) == 0x1e000000 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
opcode = (d >> 16) & 7 | |
rmode = (d >> 19) & 3 | |
scale = (d >> 10) & 0x3F | |
sf = (d >> 31) & 1 | |
type = (d >> 22) & 3 | |
if (d & 0xffff0000) == 0x1e020000: return ('SCVTF_S32_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e030000: return ('UCVTF_S32_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e180000: return ('FCVTZS_32S_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e190000: return ('FCVTZU_32S_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e420000: return ('SCVTF_D32_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e430000: return ('UCVTF_D32_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e580000: return ('FCVTZS_32D_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1e590000: return ('FCVTZU_32D_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1ec20000: return ('SCVTF_H32_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1ec30000: return ('UCVTF_H32_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1ed80000: return ('FCVTZS_32H_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x1ed90000: return ('FCVTZU_32H_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e020000: return ('SCVTF_S64_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e030000: return ('UCVTF_S64_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e180000: return ('FCVTZS_64S_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e190000: return ('FCVTZU_64S_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e420000: return ('SCVTF_D64_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e430000: return ('UCVTF_D64_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e580000: return ('FCVTZS_64D_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9e590000: return ('FCVTZU_64D_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9ec20000: return ('SCVTF_H64_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9ec30000: return ('UCVTF_H64_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9ed80000: return ('FCVTZS_64H_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
if (d & 0xffff0000) == 0x9ed90000: return ('FCVTZU_64H_float2fix', {'Rd': Rd, 'Rn': Rn, 'scale': scale}) | |
return decode_UNDEFINED(d) | |
def decode_float2int(d): | |
assert (d & 0x5f20fc00) == 0x1e200000 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
opcode = (d >> 16) & 7 | |
rmode = (d >> 19) & 3 | |
sf = (d >> 31) & 1 | |
type = (d >> 22) & 3 | |
if (d & 0xfffffc00) == 0x1e200000: return ('FCVTNS_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e210000: return ('FCVTNU_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e220000: return ('SCVTF_S32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e230000: return ('UCVTF_S32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e240000: return ('FCVTAS_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e250000: return ('FCVTAU_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e260000: return ('FMOV_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e270000: return ('FMOV_S32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e280000: return ('FCVTPS_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e290000: return ('FCVTPU_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e300000: return ('FCVTMS_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e310000: return ('FCVTMU_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e380000: return ('FCVTZS_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e390000: return ('FCVTZU_32S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e600000: return ('FCVTNS_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e610000: return ('FCVTNU_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e620000: return ('SCVTF_D32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e630000: return ('UCVTF_D32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e640000: return ('FCVTAS_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e650000: return ('FCVTAU_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e680000: return ('FCVTPS_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e690000: return ('FCVTPU_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e700000: return ('FCVTMS_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e710000: return ('FCVTMU_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e780000: return ('FCVTZS_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e790000: return ('FCVTZU_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e7e0000: return ('FJCVTZS_32D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee00000: return ('FCVTNS_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee10000: return ('FCVTNU_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee20000: return ('SCVTF_H32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee30000: return ('UCVTF_H32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee40000: return ('FCVTAS_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee50000: return ('FCVTAU_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee60000: return ('FMOV_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee70000: return ('FMOV_H32_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee80000: return ('FCVTPS_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee90000: return ('FCVTPU_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ef00000: return ('FCVTMS_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ef10000: return ('FCVTMU_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ef80000: return ('FCVTZS_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ef90000: return ('FCVTZU_32H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e200000: return ('FCVTNS_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e210000: return ('FCVTNU_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e220000: return ('SCVTF_S64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e230000: return ('UCVTF_S64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e240000: return ('FCVTAS_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e250000: return ('FCVTAU_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e280000: return ('FCVTPS_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e290000: return ('FCVTPU_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e300000: return ('FCVTMS_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e310000: return ('FCVTMU_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e380000: return ('FCVTZS_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e390000: return ('FCVTZU_64S_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e600000: return ('FCVTNS_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e610000: return ('FCVTNU_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e620000: return ('SCVTF_D64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e630000: return ('UCVTF_D64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e640000: return ('FCVTAS_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e650000: return ('FCVTAU_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e660000: return ('FMOV_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e670000: return ('FMOV_D64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e680000: return ('FCVTPS_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e690000: return ('FCVTPU_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e700000: return ('FCVTMS_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e710000: return ('FCVTMU_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e780000: return ('FCVTZS_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9e790000: return ('FCVTZU_64D_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9eae0000: return ('FMOV_64VX_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9eaf0000: return ('FMOV_V64I_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee00000: return ('FCVTNS_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee10000: return ('FCVTNU_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee20000: return ('SCVTF_H64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee30000: return ('UCVTF_H64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee40000: return ('FCVTAS_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee50000: return ('FCVTAU_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee60000: return ('FMOV_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee70000: return ('FMOV_H64_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee80000: return ('FCVTPS_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ee90000: return ('FCVTPU_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ef00000: return ('FCVTMS_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ef10000: return ('FCVTMU_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ef80000: return ('FCVTZS_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x9ef90000: return ('FCVTZU_64H_float2int', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_cryptoaes(d): | |
assert (d & 0xff3e0c00) == 0x4e280800 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
opcode = (d >> 12) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xfffffc00) == 0x4e284800: return ('AESE_B_cryptoaes', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x4e285800: return ('AESD_B_cryptoaes', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x4e286800: return ('AESMC_B_cryptoaes', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x4e287800: return ('AESIMC_B_cryptoaes', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_crypto4(d): | |
assert (d & 0xff808000) == 0xce000000 | |
Op0 = (d >> 21) & 3 | |
Ra = (d >> 10) & 0x1F | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
if (d & 0xffe08000) == 0xce000000: return ('EOR3_VVV16_crypto4', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0xce200000: return ('BCAX_VVV16_crypto4', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0xce400000: return ('SM3SS1_VVV4_crypto4', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_cryptosha3(d): | |
assert (d & 0xff208c00) == 0x5e000000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
opcode = (d >> 12) & 7 | |
size = (d >> 22) & 3 | |
if (d & 0xffe0fc00) == 0x5e000000: return ('SHA1C_QSV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e001000: return ('SHA1P_QSV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e002000: return ('SHA1M_QSV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e003000: return ('SHA1SU0_VVV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e004000: return ('SHA256H_QQV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e005000: return ('SHA256H2_QQV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x5e006000: return ('SHA256SU1_VVV_cryptosha3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_cryptosha512_3(d): | |
assert (d & 0xffe0b000) == 0xce608000 | |
O = (d >> 14) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
opcode = (d >> 10) & 3 | |
if (d & 0xffe0fc00) == 0xce608000: return ('SHA512H_QQV_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xce608400: return ('SHA512H2_QQV_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xce608800: return ('SHA512SU1_VVV2_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xce608c00: return ('RAX1_VVV2_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xce60c000: return ('SM3PARTW1_VVV4_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xce60c400: return ('SM3PARTW2_VVV4_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0xce60c800: return ('SM4EKEY_VVV4_cryptosha512_3', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_crypto3_imm2(d): | |
assert (d & 0xffe0c000) == 0xce408000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imm2 = (d >> 12) & 3 | |
opcode = (d >> 10) & 3 | |
if (d & 0xffe0cc00) == 0xce408000: return ('SM3TT1A_VVV4_crypto3_imm2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm2': imm2}) | |
if (d & 0xffe0cc00) == 0xce408400: return ('SM3TT1B_VVV4_crypto3_imm2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm2': imm2}) | |
if (d & 0xffe0cc00) == 0xce408800: return ('SM3TT2A_VVV4_crypto3_imm2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm2': imm2}) | |
if (d & 0xffe0cc00) == 0xce408c00: return ('SM3TT2B_VVV_crypto3_imm2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm2': imm2}) | |
return decode_UNDEFINED(d) | |
def decode_crypto3_imm6(d): | |
assert (d & 0xffe00000) == 0xce800000 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
imm6 = (d >> 10) & 0x3F | |
if (d & 0xffe00000) == 0xce800000: return ('XAR_VVV2_crypto3_imm6', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'imm6': imm6}) | |
return decode_UNDEFINED(d) | |
def decode_cryptosha2(d): | |
assert (d & 0xff3e0c00) == 0x5e280800 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
opcode = (d >> 12) & 0x1F | |
size = (d >> 22) & 3 | |
if (d & 0xfffffc00) == 0x5e280800: return ('SHA1H_SS_cryptosha2', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e281800: return ('SHA1SU1_VV_cryptosha2', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x5e282800: return ('SHA256SU0_VV_cryptosha2', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_cryptosha512_2(d): | |
assert (d & 0xfffff000) == 0xcec08000 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
opcode = (d >> 10) & 3 | |
if (d & 0xfffffc00) == 0xcec08000: return ('SHA512SU0_VV2_cryptosha512_2', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0xcec08400: return ('SM4E_VV4_cryptosha512_2', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_floatcmp(d): | |
assert (d & 0x5f203c00) == 0x1e202000 | |
M = (d >> 31) & 1 | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
op = (d >> 14) & 3 | |
opcode2 = (d >> 0) & 0x1F | |
type = (d >> 22) & 3 | |
if (d & 0xffe0fc1f) == 0x1e202000: return ('FCMP_S_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e202008: return ('FCMP_SZ_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e202010: return ('FCMPE_S_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e202018: return ('FCMPE_SZ_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e602000: return ('FCMP_D_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e602008: return ('FCMP_DZ_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e602010: return ('FCMPE_D_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1e602018: return ('FCMPE_DZ_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1ee02000: return ('FCMP_H_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1ee02008: return ('FCMP_HZ_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1ee02010: return ('FCMPE_H_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc1f) == 0x1ee02018: return ('FCMPE_HZ_floatcmp', {'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_floatccmp(d): | |
assert (d & 0x5f200c00) == 0x1e200400 | |
M = (d >> 31) & 1 | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
cond = (d >> 12) & 0xF | |
nzcv = (d >> 0) & 0xF | |
op = (d >> 4) & 1 | |
type = (d >> 22) & 3 | |
if (d & 0xffe00c10) == 0x1e200400: return ('FCCMP_S_floatccmp', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x1e200410: return ('FCCMPE_S_floatccmp', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x1e600400: return ('FCCMP_D_floatccmp', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x1e600410: return ('FCCMPE_D_floatccmp', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x1ee00400: return ('FCCMP_H_floatccmp', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
if (d & 0xffe00c10) == 0x1ee00410: return ('FCCMPE_H_floatccmp', {'Rm': Rm, 'Rn': Rn, 'cond': cond, 'nzcv': nzcv}) | |
return decode_UNDEFINED(d) | |
def decode_floatsel(d): | |
assert (d & 0x5f200c00) == 0x1e200c00 | |
M = (d >> 31) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
cond = (d >> 12) & 0xF | |
type = (d >> 22) & 3 | |
if (d & 0xffe00c00) == 0x1e200c00: return ('FCSEL_S_floatsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x1e600c00: return ('FCSEL_D_floatsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
if (d & 0xffe00c00) == 0x1ee00c00: return ('FCSEL_H_floatsel', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn, 'cond': cond}) | |
return decode_UNDEFINED(d) | |
def decode_floatdp1(d): | |
assert (d & 0x5f207c00) == 0x1e204000 | |
M = (d >> 31) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
opcode = (d >> 15) & 0x3F | |
type = (d >> 22) & 3 | |
if (d & 0xfffffc00) == 0x1e204000: return ('FMOV_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e20c000: return ('FABS_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e214000: return ('FNEG_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e21c000: return ('FSQRT_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e22c000: return ('FCVT_DS_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e23c000: return ('FCVT_HS_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e244000: return ('FRINTN_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e24c000: return ('FRINTP_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e254000: return ('FRINTM_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e25c000: return ('FRINTZ_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e264000: return ('FRINTA_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e274000: return ('FRINTX_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e27c000: return ('FRINTI_S_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e604000: return ('FMOV_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e60c000: return ('FABS_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e614000: return ('FNEG_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e61c000: return ('FSQRT_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e624000: return ('FCVT_SD_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e63c000: return ('FCVT_HD_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e644000: return ('FRINTN_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e64c000: return ('FRINTP_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e654000: return ('FRINTM_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e65c000: return ('FRINTZ_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e664000: return ('FRINTA_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e674000: return ('FRINTX_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1e67c000: return ('FRINTI_D_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee04000: return ('FMOV_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee0c000: return ('FABS_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee14000: return ('FNEG_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee1c000: return ('FSQRT_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee24000: return ('FCVT_SH_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee2c000: return ('FCVT_DH_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee44000: return ('FRINTN_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee4c000: return ('FRINTP_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee54000: return ('FRINTM_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee5c000: return ('FRINTZ_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee64000: return ('FRINTA_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee74000: return ('FRINTX_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
if (d & 0xfffffc00) == 0x1ee7c000: return ('FRINTI_H_floatdp1', {'Rd': Rd, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_floatdp2(d): | |
assert (d & 0x5f200c00) == 0x1e200800 | |
M = (d >> 31) & 1 | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
opcode = (d >> 12) & 0xF | |
type = (d >> 22) & 3 | |
if (d & 0xffe0fc00) == 0x1e200800: return ('FMUL_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e201800: return ('FDIV_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e202800: return ('FADD_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e203800: return ('FSUB_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e204800: return ('FMAX_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e205800: return ('FMIN_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e206800: return ('FMAXNM_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e207800: return ('FMINNM_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e208800: return ('FNMUL_S_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e600800: return ('FMUL_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e601800: return ('FDIV_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e602800: return ('FADD_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e603800: return ('FSUB_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e604800: return ('FMAX_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e605800: return ('FMIN_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e606800: return ('FMAXNM_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e607800: return ('FMINNM_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1e608800: return ('FNMUL_D_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee00800: return ('FMUL_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee01800: return ('FDIV_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee02800: return ('FADD_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee03800: return ('FSUB_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee04800: return ('FMAX_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee05800: return ('FMIN_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee06800: return ('FMAXNM_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee07800: return ('FMINNM_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe0fc00) == 0x1ee08800: return ('FNMUL_H_floatdp2', {'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_floatdp3(d): | |
assert (d & 0x5f000000) == 0x1f000000 | |
M = (d >> 31) & 1 | |
Ra = (d >> 10) & 0x1F | |
Rd = (d >> 0) & 0x1F | |
Rm = (d >> 16) & 0x1F | |
Rn = (d >> 5) & 0x1F | |
S = (d >> 29) & 1 | |
o0 = (d >> 15) & 1 | |
o1 = (d >> 21) & 1 | |
type = (d >> 22) & 3 | |
if (d & 0xffe08000) == 0x1f000000: return ('FMADD_S_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f008000: return ('FMSUB_S_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f200000: return ('FNMADD_S_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f208000: return ('FNMSUB_S_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f400000: return ('FMADD_D_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f408000: return ('FMSUB_D_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f600000: return ('FNMADD_D_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1f608000: return ('FNMSUB_D_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1fc00000: return ('FMADD_H_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1fc08000: return ('FMSUB_H_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1fe00000: return ('FNMADD_H_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
if (d & 0xffe08000) == 0x1fe08000: return ('FNMSUB_H_floatdp3', {'Ra': Ra, 'Rd': Rd, 'Rm': Rm, 'Rn': Rn}) | |
return decode_UNDEFINED(d) | |
def decode_floatimm(d): | |
assert (d & 0x5f201c00) == 0x1e201000 | |
M = (d >> 31) & 1 | |
Rd = (d >> 0) & 0x1F | |
S = (d >> 29) & 1 | |
imm5 = (d >> 5) & 0x1F | |
imm8 = (d >> 13) & 0xFF | |
type = (d >> 22) & 3 | |
if (d & 0xffe01fe0) == 0x1e201000: return ('FMOV_S_floatimm', {'Rd': Rd, 'imm8': imm8}) | |
if (d & 0xffe01fe0) == 0x1e601000: return ('FMOV_D_floatimm', {'Rd': Rd, 'imm8': imm8}) | |
if (d & 0xffe01fe0) == 0x1ee01000: return ('FMOV_H_floatimm', {'Rd': Rd, 'imm8': imm8}) | |
return decode_UNDEFINED(d) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment