summaryrefslogtreecommitdiff
path: root/arch/arm64/disassembler/decode0.c
diff options
context:
space:
mode:
authorMark Rowe <mark@vector35.com>2025-10-09 09:31:15 -0700
committerMark Rowe <mark@vector35.com>2025-10-15 14:10:49 -0700
commit3f39c3fc3d5603bba111502eee26b5fbbb0077fe (patch)
tree1bc2fc14f8a87569a4eab1f32dac269d0670dfb0 /arch/arm64/disassembler/decode0.c
parent25212cfd39f6dc45ce9030c194b6131645b76ba3 (diff)
[AArch64] Update disassembler based on 2025-09 ARM ISA data
Diffstat (limited to 'arch/arm64/disassembler/decode0.c')
-rw-r--r--arch/arm64/disassembler/decode0.c945
1 files changed, 494 insertions, 451 deletions
diff --git a/arch/arm64/disassembler/decode0.c b/arch/arm64/disassembler/decode0.c
index ac2a6046..e100f637 100644
--- a/arch/arm64/disassembler/decode0.c
+++ b/arch/arm64/disassembler/decode0.c
@@ -70,17 +70,17 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(!op0 && !(op1&0x305f) && (op2&0x24)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_12_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_31_sme
if(!op0 && (op1&0x305f)==1 && !(op2&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_11_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_25_sme
if(!op0 && (op1&0x305e)==2 && !(op2&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_10_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_22_sme
if(!op0 && (op1&0x305c)==4 && !(op2&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_9_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_17_sme
if(!op0 && (op1&0x3058)==8 && !(op2&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_8_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_13_sme
if(!op0 && (op1&0x3050)==0x40 && !(op2&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_7_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_9_sme
if(!op0 && (op1&0x3010)==0x1000 && !(op2&4)) {
/* GROUP: mortlach2_ss_prod */
op0 = (INSWORD>>24)&1;
@@ -118,7 +118,7 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(!op0 && !(op1&0x2010) && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_4_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_6_sme
if(!op0 && (op1&0x2010)==0x10)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_3_sme
if(!op0 && (op1&0x3000)==0x2000 && !(op2&12)) {
@@ -231,7 +231,7 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(!(op0&2) && (op1&0x3000)==0x2000 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_5_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_4_sme
if(!(op0&2) && (op1&0x307f)==0x3000 && (op2&0x28)==8) {
/* GROUP: mortlach2_64bit_prod4 */
op0 = (INSWORD>>29)&1;
@@ -248,21 +248,21 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(!(op0&2) && (op1&0x307f)==0x3000 && (op2&0x28)==0x28)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_20_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_32_sme
if(!(op0&2) && (op1&0x307f)==0x3001 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_19_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_26_sme
if(!(op0&2) && (op1&0x307e)==0x3002 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_18_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_23_sme
if(!(op0&2) && (op1&0x307c)==0x3004 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_17_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_18_sme
if(!(op0&2) && (op1&0x3078)==0x3008 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_16_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_14_sme
if(!(op0&2) && (op1&0x3070)==0x3010 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_15_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_10_sme
if(!(op0&2) && (op1&0x3060)==0x3020 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_14_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_8_sme
if(!(op0&2) && (op1&0x3040)==0x3040 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_13_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_7_sme
if(!(op0&2) && (op1&0x3000)==0x3000 && !(op2&8)) {
/* GROUP: mortlach_64bit_prod */
op0 = (INSWORD>>29)&1;
@@ -318,17 +318,26 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(op0==2 && (op1&0x6e00)==0x600)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_21_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_11_sme
if(op0==2 && (op1&0x7e00)==0x2600) {
/* GROUP: mortlach_zt_expand_nctg */
op0 = (INSWORD>>16)&7;
op1 = (INSWORD>>14)&3;
+ op4 = (INSWORD>>6)&1;
op2 = (INSWORD>>5)&1;
op3 = (INSWORD>>2)&3;
+ if(!(op0&6) && !op1 && !op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_68_mortlach_zt_expand_nctg
+ if(op0==2 && !op1 && !op4 && !op2 && !op3)
+ return decode_iclass_mortlach_expand_4dst3src_nctg(ctx, dec);
+ if(op0==2 && !op1 && op4 && !op2 && !op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_70_mortlach_zt_expand_nctg
if(op0==3 && !op1 && !op2 && !op3)
return decode_iclass_mortlach_expand_4dst2src_nctg(ctx, dec);
- if(op0==3 && !op1 && op2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_68_mortlach_zt_expand_nctg
+ if((op0&6)==2 && !op1 && op2 && !op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_69_mortlach_zt_expand_nctg
+ if((op0&4)==4 && !op1 && !op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_67_mortlach_zt_expand_nctg
if(op1==2 && !op3)
return decode_iclass_mortlach_expand_4dst_nctg(ctx, dec);
if(!(op1&1) && op3==1)
@@ -337,36 +346,37 @@ int decode_spec(context *ctx, Instruction *dec)
return decode_iclass_mortlach_expand_2dst_nctg(ctx, dec);
if((op3&2)==2)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_65_mortlach_zt_expand_nctg
- if(op0!=3 && !op1 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_67_mortlach_zt_expand_nctg
UNMATCHED;
}
if(op0==2 && (op1&0x7e00)==0x3600)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_22_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_15_sme
if(op0==2 && (op1&0x6e00)==0x2200) {
/* GROUP: mortlach_zt_expand_ctg */
op0 = (INSWORD>>22)&1;
op1 = (INSWORD>>14)&0x1f;
+ op4 = (INSWORD>>6)&1;
op2 = (INSWORD>>5)&1;
op3 = INSWORD&3;
if(!op0 && !(op1&0x1b) && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_72_mortlach_zt_expand_ctg
- if(!op0 && op1==8 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_73_mortlach_zt_expand_ctg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_74_mortlach_zt_expand_ctg
+ if(!op0 && op1==8 && !op4 && !op2 && !op3)
+ return decode_iclass_mortlach_expand_4dst3src_ctg(ctx, dec);
+ if(!op0 && op1==8 && op4 && !op2 && !op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_76_mortlach_zt_expand_ctg
if(!op0 && op1==12 && !op2 && !op3)
return decode_iclass_mortlach_expand_4dst2src_ctg(ctx, dec);
- if(!op0 && op1==12 && op2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_74_mortlach_zt_expand_ctg
+ if(!op0 && (op1&0x1b)==8 && op2 && !op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_75_mortlach_zt_expand_ctg
if(!op0 && (op1&0x13)==0x10 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_71_mortlach_zt_expand_ctg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_73_mortlach_zt_expand_ctg
if(!op0 && (op1&3)==2 && !op3)
return decode_iclass_mortlach_expand_4dst_ctg(ctx, dec);
if(!op0 && !(op1&1) && op3==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_70_mortlach_zt_expand_ctg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_72_mortlach_zt_expand_ctg
if(!op0 && op1&1 && !(op3&1))
return decode_iclass_mortlach_expand_2dst_ctg(ctx, dec);
if(!op0 && op3&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_69_mortlach_zt_expand_ctg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_71_mortlach_zt_expand_ctg
if(op0)
return decode_iclass_mortlach_expand_1dst(ctx, dec);
UNMATCHED;
@@ -384,9 +394,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1 && !op2 && op3==3 && !op4 && !op5)
return decode_iclass_mortlach_multi4_za_insert_ctg(ctx, dec);
if(!op0 && op1 && !op2 && op3==3 && op4==2 && !op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_82_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_84_mortlach_ins
if(!op0 && op1 && op2==1 && (op3&6)==2 && !(op4&1) && !op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_80_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_83_mortlach_ins
if(!op1)
return decode_iclass_mortlach_insert_pred(ctx, dec);
if(op1 && !(op2&2) && !op3 && !(op4&1) && !op5)
@@ -394,21 +404,21 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1 && !(op2&2) && op3==1 && !op4 && !op5)
return decode_iclass_mortlach_multi4_insert_ctg(ctx, dec);
if(op1 && !(op2&2) && op3==1 && op4==2 && !op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_81_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_82_mortlach_ins
if(op1 && !(op2&2) && !(op3&4) && !(op4&1) && op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_78_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_80_mortlach_ins
if(op1 && !(op2&2) && !(op3&4) && op4&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_77_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_79_mortlach_ins
if(op1 && !(op2&2) && (op3&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_76_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_78_mortlach_ins
if(op1 && (op2&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_75_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_77_mortlach_ins
if(op0 && op1 && !(op2&2) && (op3&6)==2 && !(op4&1) && !op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_79_mortlach_ins
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_81_mortlach_ins
UNMATCHED;
}
if(op0==2 && !(op1&0x4e80) && (op2&0x10)==0x10)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_24_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_16_sme
if(op0==2 && (op1&0x4e80)==0x80) {
/* GROUP: mortlach_ext */
op0 = (INSWORD>>22)&3;
@@ -426,15 +436,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1 && !op2 && op3==3 && op4==2 && !op5)
return decode_iclass_mortlach_multi4_za_extract_zero(ctx, dec);
if(!op0 && op1 && !op2 && op3==3 && !(op4&1) && op5==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_91_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_93_mortlach_ext
if(!op0 && op1 && op2==1 && (op3&6)==2 && !(op4&1) && !(op5&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_89_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_92_mortlach_ext
if(!op1 && !op3 && (op4&2)==2)
return decode_iclass_mortlach_extract_zero(ctx, dec);
if(!op1 && !(op4&2))
return decode_iclass_mortlach_extract_pred(ctx, dec);
if(!op1 && op3 && (op4&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_87_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_86_mortlach_ext
if(op1 && !(op2&2) && !op3 && !op4 && !(op5&1))
return decode_iclass_mortlach_multi2_extract_ctg(ctx, dec);
if(op1 && !(op2&2) && !op3 && op4==2 && !(op5&1))
@@ -444,17 +454,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1 && !(op2&2) && op3==1 && op4==2 && !op5)
return decode_iclass_mortlach_multi4_extract_zero(ctx, dec);
if(op1 && !(op2&2) && op3==1 && !(op4&1) && op5==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_90_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_91_mortlach_ext
if(op1 && !(op2&2) && !(op3&4) && !(op4&1) && op5&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_86_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_89_mortlach_ext
if(op1 && !(op2&2) && !(op3&4) && op4&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_85_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_88_mortlach_ext
if(op1 && !(op2&2) && (op3&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_84_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_87_mortlach_ext
if(op1 && (op2&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_83_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_85_mortlach_ext
if(op0 && op1 && !(op2&2) && (op3&6)==2 && !(op4&1) && !(op5&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_88_mortlach_ext
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_90_mortlach_ext
UNMATCHED;
}
if(op0==2 && (op1&0x4e00)==0x400 && !(op2&8)) {
@@ -463,19 +473,19 @@ int decode_spec(context *ctx, Instruction *dec)
op1 = (INSWORD>>17)&3;
op2 = (INSWORD>>4)&1;
if(!op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_92_mortlach_hvadd
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_94_mortlach_hvadd
if(op0 && !op1 && !op2)
return decode_iclass_mortlach_addhv(ctx, dec);
if(op0 && !op1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_94_mortlach_hvadd
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_96_mortlach_hvadd
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_93_mortlach_hvadd
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_95_mortlach_hvadd
UNMATCHED;
}
if(op0==2 && (op1&0x4e00)==0x400 && (op2&8)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_23_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_12_sme
if(op0==2 && (op1&0x4800)==0x800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_6_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_5_sme
if(op0==2 && (op1&0x6c20)==0x4800) {
/* GROUP: mortlach_multi_array_1a */
op0 = (INSWORD>>22)&1;
@@ -485,7 +495,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && !op2 && op3)
return decode_iclass_mortlach_multi2_zz_za_fp8_fma_long_long_sm(ctx, dec);
if(!op0 && !op1 && op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_98_mortlach_multi_array_1a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_100_mortlach_multi_array_1a
if(!op0 && op1==2)
return decode_iclass_mortlach_multi2_zz_za_fma_long_sm(ctx, dec);
if(!op0 && op1==3)
@@ -495,13 +505,13 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==5 && (op2&2)==2)
return decode_iclass_mortlach_multi2_z_za_mixed_dot_sm(ctx, dec);
if(op0 && !op1 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_96_mortlach_multi_array_1a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_99_mortlach_multi_array_1a
if(op0 && op1==2)
return decode_iclass_mortlach_multi2_zz_za_mla_long_sm(ctx, dec);
if(op0 && op1==3)
return decode_iclass_mortlach_multi1_zz_za_mla_long_sm(ctx, dec);
if(op0 && op1==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_95_mortlach_multi_array_1a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_97_mortlach_multi_array_1a
if(op0 && op1==5 && (op2&2)==2)
return decode_iclass_mortlach_multi2_z_za_2way_dot_sm(ctx, dec);
if(!op1 && !op3)
@@ -517,7 +527,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1==7 && !(op2&4))
return decode_iclass_mortlach_multi2_zz_za_f16_sm(ctx, dec);
if(op1==7 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_97_mortlach_multi_array_1a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_98_mortlach_multi_array_1a
UNMATCHED;
}
if(op0==2 && (op1&0x6c20)==0x4c00) {
@@ -529,29 +539,29 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && !op2 && op3)
return decode_iclass_mortlach_multi4_zz_za_fp8_fma_long_long_sm(ctx, dec);
if(!op0 && !op1 && op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_106_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_107_mortlach_multi_array_1b
if(!op0 && op1==1 && !op2)
return decode_iclass_mortlach_multi1_zz_za_fp8_fma_long_long_sm(ctx, dec);
if(!op0 && op1==1 && op2==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_105_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_108_mortlach_multi_array_1b
if(!op0 && op1==2)
return decode_iclass_mortlach_multi4_zz_za_fma_long_sm(ctx, dec);
if(!op0 && op1==3 && !(op2&6))
return decode_iclass_mortlach_multi1_zz_za_fp8_fma_long_sm(ctx, dec);
if(!op0 && (op1&5)==1 && (op2&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_101_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_105_mortlach_multi_array_1b
if(!op0 && (op1&5)==1 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_100_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_102_mortlach_multi_array_1b
if(!op0 && op1==4)
return decode_iclass_mortlach_multi4_z_za_fpdot_sm(ctx, dec);
if(!op0 && op1==5 && (op2&2)==2)
return decode_iclass_mortlach_multi4_z_za_mixed_dot_sm(ctx, dec);
if(op0 && !op1 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_104_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_106_mortlach_multi_array_1b
if(op0 && op1==2)
return decode_iclass_mortlach_multi4_zz_za_mla_long_sm(ctx, dec);
if(op0 && (op1&5)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_99_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_101_mortlach_multi_array_1b
if(op0 && op1==4)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_103_mortlach_multi_array_1b
if(op0 && op1==5 && (op2&2)==2)
@@ -567,7 +577,27 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1==7 && !(op2&4))
return decode_iclass_mortlach_multi4_zz_za_f16_sm(ctx, dec);
if(op1==7 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_102_mortlach_multi_array_1b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_104_mortlach_multi_array_1b
+ UNMATCHED;
+ }
+ if(op0==2 && (op1&0x683c)==0x483c) {
+ /* GROUP: mortlach_multi_sve_6 */
+ op0 = (INSWORD>>10)&3;
+ op1 = INSWORD&15;
+ if(op0==1 && !(op1&3))
+ return decode_iclass_mortlach_multi4_lut6_16_ctg(ctx, dec);
+ if(op0==1 && (op1&3)==1)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_112_mortlach_multi_sve_6
+ if(op0==1 && (op1&2)==2)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_110_mortlach_multi_sve_6
+ if(op0==3 && !(op1&12))
+ return decode_iclass_mortlach_multi4_lut6_16_nctg(ctx, dec);
+ if(op0==3 && (op1&12)==4)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_113_mortlach_multi_sve_6
+ if(op0==3 && (op1&8)==8)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_111_mortlach_multi_sve_6
+ if(!(op0&1))
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_109_mortlach_multi_sve_6
UNMATCHED;
}
if(op0==2 && (op1&0x6860)==0x6800) {
@@ -582,41 +612,41 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op3 && op4 && !op5 && !op6)
return decode_iclass_mortlach_multi2_zz_za_fp8_fma_long_long_mm(ctx, dec);
if(!op0 && !op3 && op4 && op5==1 && !op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_120_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_130_mortlach_multi_array_2a
if(!op0 && !op3 && op4 && (op5&6)==4 && !op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_118_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_128_mortlach_multi_array_2a
if(!op0 && !op3 && op4 && !(op5&2) && op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_115_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_124_mortlach_multi_array_2a
if(!op0 && op3==2 && !op4 && !(op5&1))
return decode_iclass_mortlach_multi2_zz_za_fma_long_mm(ctx, dec);
if(!op0 && op3==2 && op4 && !op5)
return decode_iclass_mortlach_multi2_zz_za_fp8_fma_long_mm(ctx, dec);
if(!op0 && op3==2 && op4 && op5==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_119_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_129_mortlach_multi_array_2a
if(!op0 && op3==2 && op4 && (op5&3)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_117_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_125_mortlach_multi_array_2a
if(!op0 && (op3&5)==1 && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_109_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_116_mortlach_multi_array_2a
if(!op0 && op3==4 && !(op5&2))
return decode_iclass_mortlach_multi2_z_za_fpdot_mm(ctx, dec);
if(!op0 && op3==5 && !op4 && (op5&6)==2)
return decode_iclass_mortlach_multi2_z_za_mixed_dot_mm(ctx, dec);
if(!op0 && op3==5 && !op4 && (op5&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_123_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_126_mortlach_multi_array_2a
if(!op0 && op3==6 && op4 && !(op5&2))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_121_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_122_mortlach_multi_array_2a
if(!op0 && (op3&5)==5 && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_110_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_117_mortlach_multi_array_2a
if(!op0 && !(op3&1) && op4 && (op5&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_111_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_118_mortlach_multi_array_2a
if(op0 && op3==2 && !op4 && !(op5&1))
return decode_iclass_mortlach_multi2_zz_za_mla_long_mm(ctx, dec);
if(op0 && op3==4 && !op4 && !(op5&2))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_124_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_123_mortlach_multi_array_2a
if(op0 && op3==5 && !op4 && (op5&2)==2)
return decode_iclass_mortlach_multi2_z_za_2way_dot_mm(ctx, dec);
if(op0 && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_107_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_114_mortlach_multi_array_2a
if(!op1 && !op2 && op3==7 && !op4 && !(op5&4))
return decode_iclass_mortlach_multi2_z_za_float_mm(ctx, dec);
if(!op1 && !op2 && op3==7 && !op4 && (op5&4)==4)
@@ -624,17 +654,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op1 && op2==2 && op3==7 && !op4 && !(op5&4))
return decode_iclass_mortlach_multi2_z_za_f16_mm(ctx, dec);
if(!op1 && op2==2 && op3==7 && !op4 && (op5&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_122_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_131_mortlach_multi_array_2a
if(!op1 && op2&1 && op3==7 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_113_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_127_mortlach_multi_array_2a
if(!op3 && !op4 && !op6)
return decode_iclass_mortlach_multi2_zz_za_mla_long_long_mm(ctx, dec);
if(!op3 && !op4 && op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_114_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_120_mortlach_multi_array_2a
if(op3==2 && !op4 && op5&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_116_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_121_mortlach_multi_array_2a
if((op3&5)==1 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_108_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_115_mortlach_multi_array_2a
if(op3==4 && !op4 && (op5&2)==2)
return decode_iclass_mortlach_multi2_zz_za_f16_mm(ctx, dec);
if(op3==5 && !op4 && !(op5&2))
@@ -644,7 +674,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op3==6 && !op4 && (op5&4)==4)
return decode_iclass_mortlach_multi2_zz_za_int_mm(ctx, dec);
if(op1 && op3==7 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_112_mortlach_multi_array_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_119_mortlach_multi_array_2a
UNMATCHED;
}
if(op0==2 && (op1&0x6860)==0x6840) {
@@ -659,33 +689,33 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !(op2&1) && !op3 && op4==1 && !op5 && !op6)
return decode_iclass_mortlach_multi4_zz_za_fp8_fma_long_long_mm(ctx, dec);
if(!op0 && !(op2&1) && !op3 && op4==1 && op5==1 && !op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_139_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_150_mortlach_multi_array_2b
if(!op0 && !(op2&1) && !op3 && op4==1 && (op5&6)==4 && !op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_137_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_147_mortlach_multi_array_2b
if(!op0 && !(op2&1) && !op3 && op4==1 && !(op5&2) && op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_134_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_144_mortlach_multi_array_2b
if(!op0 && !(op2&1) && op3==2 && !op4 && !(op5&1))
return decode_iclass_mortlach_multi4_zz_za_fma_long_mm(ctx, dec);
if(!op0 && !(op2&1) && op3==2 && op4==1 && !op5)
return decode_iclass_mortlach_multi4_zz_za_fp8_fma_long_mm(ctx, dec);
if(!op0 && !(op2&1) && op3==2 && op4==1 && op5==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_138_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_148_mortlach_multi_array_2b
if(!op0 && !(op2&1) && op3==2 && op4==1 && (op5&3)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_136_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_145_mortlach_multi_array_2b
if(!op0 && !(op2&1) && (op3&5)==1 && op4==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_129_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_136_mortlach_multi_array_2b
if(!op0 && !(op2&1) && op3==4 && !(op4&2) && !(op5&2))
return decode_iclass_mortlach_multi4_z_za_fpdot_mm(ctx, dec);
if(!op0 && !(op2&1) && op3==5 && !op4 && (op5&6)==2)
return decode_iclass_mortlach_multi4_z_za_mixed_dot_mm(ctx, dec);
if(!op0 && !(op2&1) && op3==5 && !op4 && (op5&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_142_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_146_mortlach_multi_array_2b
if(!op0 && !(op2&1) && op3==6 && op4==1 && !(op5&2))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_140_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_142_mortlach_multi_array_2b
if(!op0 && !(op2&1) && (op3&5)==5 && op4==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_130_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_137_mortlach_multi_array_2b
if(!op0 && !(op2&1) && !(op3&1) && op4==1 && (op5&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_131_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_138_mortlach_multi_array_2b
if(op0 && !(op2&1) && op3==2 && !op4 && !(op5&1))
return decode_iclass_mortlach_multi4_zz_za_mla_long_mm(ctx, dec);
if(op0 && !(op2&1) && op3==4 && !op4 && !(op5&2))
@@ -693,7 +723,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0 && !(op2&1) && op3==5 && !op4 && (op5&2)==2)
return decode_iclass_mortlach_multi4_z_za_2way_dot_mm(ctx, dec);
if(op0 && !(op2&1) && op4==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_127_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_134_mortlach_multi_array_2b
if(!op1 && !op2 && op3==7 && !op4 && !(op5&4))
return decode_iclass_mortlach_multi4_z_za_float_mm(ctx, dec);
if(!op1 && !op2 && op3==7 && !op4 && (op5&4)==4)
@@ -701,15 +731,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op1 && op2==2 && op3==7 && !op4 && !(op5&4))
return decode_iclass_mortlach_multi4_z_za_f16_mm(ctx, dec);
if(!op1 && op2==2 && op3==7 && !op4 && (op5&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_141_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_149_mortlach_multi_array_2b
if(!(op2&1) && !op3 && !op4 && !op6)
return decode_iclass_mortlach_multi4_zz_za_mla_long_long_mm(ctx, dec);
if(!(op2&1) && !op3 && !op4 && op6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_133_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_140_mortlach_multi_array_2b
if(!(op2&1) && op3==2 && !op4 && op5&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_135_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_141_mortlach_multi_array_2b
if(!(op2&1) && (op3&5)==1 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_128_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_135_mortlach_multi_array_2b
if(!(op2&1) && op3==4 && !op4 && (op5&2)==2)
return decode_iclass_mortlach_multi4_zz_za_f16_mm(ctx, dec);
if(!(op2&1) && op3==5 && !op4 && !(op5&2))
@@ -719,13 +749,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op2&1) && op3==6 && !op4 && (op5&4)==4)
return decode_iclass_mortlach_multi4_zz_za_int_mm(ctx, dec);
if(!(op2&1) && (op4&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_126_mortlach_multi_array_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_133_mortlach_multi_array_2b
if(op2&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_125_mortlach_multi_array_2b
- if(op1 && !(op2&1) && op3==7 && !op4)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_132_mortlach_multi_array_2b
+ if(op1 && !(op2&1) && op3==7 && !op4)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_139_mortlach_multi_array_2b
UNMATCHED;
}
+ if(op0==2 && (op1&0x683c)==0x683c)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_19_sme
if(op0==2 && (op1&0x4c00)==0x4000) {
/* GROUP: mortlach_multi_indexed_1 */
op0 = (INSWORD>>22)&3;
@@ -736,17 +768,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==1 && !op2)
return decode_iclass_mortlach_multi1_fp8_fma_long_long_idx(ctx, dec);
if(op0==1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_144_mortlach_multi_indexed_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_151_mortlach_multi_indexed_1
if(op0==2 && !op1 && !(op2&1))
return decode_iclass_mortlach_multi1_mla_long_long_idx_d(ctx, dec);
if(op0==2 && !op1 && op2&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_146_mortlach_multi_indexed_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_152_mortlach_multi_indexed_1
if(op0==2 && op1)
return decode_iclass_mortlach_multi1_fma_long_idx(ctx, dec);
if(op0==3 && !op1 && !(op2&4))
return decode_iclass_mortlach_multi1_fp8_fma_long_idx(ctx, dec);
if(op0==3 && !op1 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_145_mortlach_multi_indexed_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_153_mortlach_multi_indexed_1
if(op0==3 && op1)
return decode_iclass_mortlach_multi1_mla_long_idx(ctx, dec);
UNMATCHED;
@@ -766,15 +798,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==2 && !op1 && !op2)
return decode_iclass_mortlach_multi2_mla_long_long_idx_d(ctx, dec);
if(op0==2 && op1==1 && !op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_149_mortlach_multi_indexed_2
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_155_mortlach_multi_indexed_2
if(op0==2 && !(op1&2) && op2 && !op3)
return decode_iclass_mortlach_multi2_fp8_fma_long_long_idx(ctx, dec);
if(op0==2 && !(op1&2) && op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_148_mortlach_multi_indexed_2
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_156_mortlach_multi_indexed_2
if(op0==2 && (op1&2)==2 && !op2)
return decode_iclass_mortlach_multi2_fma_long_idx(ctx, dec);
if(op0==2 && (op1&2)==2 && op2 && !(op3&2))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_150_mortlach_multi_indexed_2
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_157_mortlach_multi_indexed_2
if(op0==2 && (op1&2)==2 && op2 && (op3&2)==2)
return decode_iclass_mortlach_multi2_fp8_fma_long_idx(ctx, dec);
if(op0==3 && !op1 && !op2)
@@ -786,7 +818,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==3 && op2 && !(op3&2))
return decode_iclass_mortlach_multi2_fp8_fdot_idx(ctx, dec);
if(op0==3 && op2 && (op3&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_147_mortlach_multi_indexed_2
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_154_mortlach_multi_indexed_2
UNMATCHED;
}
if(op0==2 && (op1&0x4c20)==0x4420) {
@@ -800,37 +832,37 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !(op1&2) && op2==4 && !op3)
return decode_iclass_mortlach_multi4_fp8_fma_long_long_idx(ctx, dec);
if(!op0 && !(op1&2) && op2==4 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_157_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_165_mortlach_multi_indexed_3
if(!op0 && (op1&2)==2 && !(op2&4))
return decode_iclass_mortlach_multi4_zza_idx_h(ctx, dec);
if(!op0 && (op1&2)==2 && op2==4)
return decode_iclass_mortlach_multi4_fp8_fdot_idx_h(ctx, dec);
if(!op0 && op2==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_153_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_161_mortlach_multi_indexed_3
if(!op0 && (op2&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_152_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_159_mortlach_multi_indexed_3
if(op0==1 && !(op2&4))
return decode_iclass_mortlach_multi4_zza_idx_s(ctx, dec);
if(op0==2 && !op1 && !(op2&6))
return decode_iclass_mortlach_multi4_mla_long_long_idx_d(ctx, dec);
if(op0==2 && op1==1 && !(op2&6))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_158_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_163_mortlach_multi_indexed_3
if(op0==2 && !(op1&2) && (op2&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_155_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_162_mortlach_multi_indexed_3
if(op0==2 && (op1&2)==2 && !(op2&6))
return decode_iclass_mortlach_multi4_fma_long_idx(ctx, dec);
if(op0==2 && (op1&2)==2 && op2==2)
return decode_iclass_mortlach_multi4_fp8_fma_long_idx(ctx, dec);
if(op0==2 && (op1&2)==2 && op2==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_156_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_164_mortlach_multi_indexed_3
if(op0==3 && !(op1&2) && !(op2&6))
return decode_iclass_mortlach_multi4_zza_idx_d(ctx, dec);
if(op0==3 && (op1&2)==2 && !(op2&6))
return decode_iclass_mortlach_multi4_mla_long_idx(ctx, dec);
if(op0==3 && (op2&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_154_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_160_mortlach_multi_indexed_3
if(op0 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_151_mortlach_multi_indexed_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_158_mortlach_multi_indexed_3
UNMATCHED;
}
if(op0==2 && (op1&0x4c3e)==0x4828) {
@@ -841,31 +873,31 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && !(op2&6))
return decode_iclass_mortlach_multi2_z_z_minmax_sm(ctx, dec);
if(!op0 && !op1 && op2==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_165_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_172_mortlach_multi_sve_2a
if(!op0 && op1==1 && !(op2&6))
return decode_iclass_mortlach_multi2_z_z_fminmax_sm(ctx, dec);
if(!op0 && op1==1 && op2==4)
return decode_iclass_mortlach_multi2_z_z_fscale_sm(ctx, dec);
if(!op0 && op1==1 && op2==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_166_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_173_mortlach_multi_sve_2a
if(!op0 && !(op1&2) && (op2&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_161_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_167_mortlach_multi_sve_2a
if(!op0 && op1==2)
return decode_iclass_mortlach_multi2_z_z_shift_sm(ctx, dec);
if(!op0 && op1==3 && !op2)
return decode_iclass_mortlach_multi2_z_z_add_sm(ctx, dec);
if(!op0 && op1==3 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_163_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_168_mortlach_multi_sve_2a
if(op0 && !op1 && !op2)
return decode_iclass_mortlach_multi2_z_z_sqdmulh_sm(ctx, dec);
if(op0 && !op1 && (op2&3)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_162_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_170_mortlach_multi_sve_2a
if(op0 && !op1 && op2&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_160_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_169_mortlach_multi_sve_2a
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_159_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_166_mortlach_multi_sve_2a
if(!op1 && op2==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_164_mortlach_multi_sve_2a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_171_mortlach_multi_sve_2a
UNMATCHED;
}
if(op0==2 && (op1&0x4c3e)==0x482a && !(op2&2)) {
@@ -876,44 +908,44 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && !(op2&6))
return decode_iclass_mortlach_multi4_z_z_minmax_sm(ctx, dec);
if(!op0 && !op1 && op2==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_173_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_180_mortlach_multi_sve_2b
if(!op0 && op1==1 && !(op2&6))
return decode_iclass_mortlach_multi4_z_z_fminmax_sm(ctx, dec);
if(!op0 && op1==1 && op2==4)
return decode_iclass_mortlach_multi4_z_z_fscale_sm(ctx, dec);
if(!op0 && op1==1 && op2==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_174_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_181_mortlach_multi_sve_2b
if(!op0 && !(op1&2) && (op2&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_169_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_175_mortlach_multi_sve_2b
if(!op0 && op1==2)
return decode_iclass_mortlach_multi4_z_z_shift_sm(ctx, dec);
if(!op0 && op1==3 && !op2)
return decode_iclass_mortlach_multi4_z_z_add_sm(ctx, dec);
if(!op0 && op1==3 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_171_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_176_mortlach_multi_sve_2b
if(op0 && !op1 && !op2)
return decode_iclass_mortlach_multi4_z_z_sqdmulh_sm(ctx, dec);
if(op0 && !op1 && (op2&3)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_170_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_178_mortlach_multi_sve_2b
if(op0 && !op1 && op2&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_168_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_177_mortlach_multi_sve_2b
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_167_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_174_mortlach_multi_sve_2b
if(!op1 && op2==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_172_mortlach_multi_sve_2b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_179_mortlach_multi_sve_2b
UNMATCHED;
}
if(op0==2 && (op1&0x4c3e)==0x482a && (op2&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_29_sme
- if(op0==2 && (op1&0x4c3c)==0x4c28)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_27_sme
+ if(op0==2 && (op1&0x4c3c)==0x4c28)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_20_sme
if(op0==2 && (op1&0x48ff)==0x482e && !(op2&2)) {
/* GROUP: mortlach_multi_sve_2d0 */
op0 = (INSWORD>>7)&7;
if(!op0)
return decode_iclass_mortlach_multi4_z_z_minmax_mm(ctx, dec);
if(op0==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_176_mortlach_multi_sve_2d0
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_183_mortlach_multi_sve_2d0
if(op0==2)
return decode_iclass_mortlach_multi4_z_z_fminmax_mm(ctx, dec);
if(op0==3)
@@ -921,7 +953,7 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&6)==4)
return decode_iclass_mortlach_multi4_z_z_shift_mm(ctx, dec);
if((op0&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_175_mortlach_multi_sve_2d0
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_182_mortlach_multi_sve_2d0
UNMATCHED;
}
if(op0==2 && (op1&0x48ff)==0x482f && !(op2&2)) {
@@ -930,20 +962,18 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0)
return decode_iclass_mortlach_multi4_z_z_sqdmulh_mm(ctx, dec);
if(op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_177_mortlach_multi_sve_2d1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_184_mortlach_multi_sve_2d1
UNMATCHED;
}
- if(op0==2 && (op1&0x48fe)==0x482e && (op2&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_30_sme
- if(op0==2 && (op1&0x48fe)==0x48ae)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_28_sme
+ if(op0==2 && (op1&0x48fe)==0x48ae && !(op2&2))
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_33_sme
if(op0==2 && (op1&0x487f)==0x482c) {
/* GROUP: mortlach_multi_sve_2c0 */
op0 = (INSWORD>>7)&7;
if(!op0)
return decode_iclass_mortlach_multi2_z_z_minmax_mm(ctx, dec);
if(op0==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_179_mortlach_multi_sve_2c0
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_186_mortlach_multi_sve_2c0
if(op0==2)
return decode_iclass_mortlach_multi2_z_z_fminmax_mm(ctx, dec);
if(op0==3)
@@ -951,7 +981,7 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&6)==4)
return decode_iclass_mortlach_multi2_z_z_shift_mm(ctx, dec);
if((op0&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_178_mortlach_multi_sve_2c0
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_185_mortlach_multi_sve_2c0
UNMATCHED;
}
if(op0==2 && (op1&0x487f)==0x482d) {
@@ -960,13 +990,13 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0)
return decode_iclass_mortlach_multi2_z_z_sqdmulh_mm(ctx, dec);
if(op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_180_mortlach_multi_sve_2c1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_187_mortlach_multi_sve_2c1
UNMATCHED;
}
- if(op0==2 && (op1&0x487c)==0x483c)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_26_sme
- if(op0==2 && (op1&0x486c)==0x486c)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_25_sme
+ if(op0==2 && (op1&0x487e)==0x482e && (op2&2)==2)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_28_sme
+ if(op0==2 && (op1&0x487c)==0x486c)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_21_sme
if(op0==2 && (op1&0x4838)==0x4820) {
/* GROUP: mortlach_multi_sve_1 */
op0 = (INSWORD>>16)&3;
@@ -975,17 +1005,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==1 && !op1 && !op2)
return decode_iclass_mortlach_multi4_select_int(ctx, dec);
if(op0==1 && !op1 && op2==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_185_mortlach_multi_sve_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_192_mortlach_multi_sve_1
if(op0==1 && op1==2 && !(op2&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_184_mortlach_multi_sve_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_191_mortlach_multi_sve_1
if(op0==3 && !(op1&1) && !(op2&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_183_mortlach_multi_sve_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_190_mortlach_multi_sve_1
if(!(op0&1) && !(op1&1) && !(op2&1))
return decode_iclass_mortlach_multi2_select_int(ctx, dec);
if(!(op1&1) && op2&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_182_mortlach_multi_sve_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_189_mortlach_multi_sve_1
if(op1&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_181_mortlach_multi_sve_1
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_188_mortlach_multi_sve_1
UNMATCHED;
}
if(op0==2 && (op1&0x4838)==0x4830) {
@@ -996,9 +1026,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==5)
return decode_iclass_mortlach_multi2_z_z_long_zip(ctx, dec);
if(op0==1 && op1==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_187_mortlach_multi_sve_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_194_mortlach_multi_sve_3
if(op0==2 && op1==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_188_mortlach_multi_sve_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_195_mortlach_multi_sve_3
if(op0==3 && op1==5)
return decode_iclass_mortlach_multi2_qrshr(ctx, dec);
if(!op1)
@@ -1010,7 +1040,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1==3 && !op2)
return decode_iclass_mortlach_multi4_clamp_int(ctx, dec);
if((op1&6)==2 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_186_mortlach_multi_sve_3
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_193_mortlach_multi_sve_3
if(op1==4)
return decode_iclass_mortlach_multi2_z_z_zip(ctx, dec);
if((op1&6)==6)
@@ -1028,8 +1058,6 @@ int decode_spec(context *ctx, Instruction *dec)
return decode_iclass_mortlach_multi2_fpint_cvrt(ctx, dec);
if(!op0 && !op1 && op2==2 && !(op4&1))
return decode_iclass_mortlach_multi2_intfp_cvrt(ctx, dec);
- if(!op0 && op1==1 && op2==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_220_mortlach_multi_sve_4
if(!op0 && op1==4 && op2==1 && !(op3&2) && !op4)
return decode_iclass_mortlach_multi4_fpint_cvrt(ctx, dec);
if(!op0 && op1==4 && op2==2 && !(op3&2) && !op4)
@@ -1039,11 +1067,13 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==5 && op2==3 && !op3 && !(op4&1))
return decode_iclass_mortlach_multi4_z_z_long_zip(ctx, dec);
if(op0==1 && !op1 && op2==1 && !(op4&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_219_mortlach_multi_sve_4
- if(op0==1 && op1==5 && !op2 && !(op3&2) && (op4&2)==2)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_218_mortlach_multi_sve_4
+ if(op0==1 && op1==1 && op2==3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_211_mortlach_multi_sve_4
+ if(op0==1 && op1==5 && !op2 && !(op3&2) && (op4&2)==2)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_225_mortlach_multi_sve_4
if(op0==1 && (op1&6)==4 && !op2 && !(op3&2) && !(op4&2))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_217_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_219_mortlach_multi_sve_4
if(!(op0&2) && !op1 && !op2)
return decode_iclass_mortlach_multi2_narrow_fp_cvrt(ctx, dec);
if(!(op0&2) && !op1 && op2==3)
@@ -1051,29 +1081,29 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&2) && op1==1 && !op2 && !(op3&1))
return decode_iclass_mortlach_multi2_narrow_fp8_cvrt(ctx, dec);
if(!(op0&2) && op1==1 && !op2 && op3&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_221_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_212_mortlach_multi_sve_4
if(op0==2 && !op1 && !op2)
return decode_iclass_mortlach_multi2_wide_fp_cvrt(ctx, dec);
if(op0==2 && op1==1 && !op2 && (op3&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_214_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_220_mortlach_multi_sve_4
if(op0==2 && (op1&3)==1 && !op2 && !(op3&2))
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_213_mortlach_multi_sve_4
if(op0==3 && !(op1&6) && !op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_205_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_200_mortlach_multi_sve_4
if(op0==3 && op1==5 && !op2 && !(op3&2) && (op4&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_207_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_226_mortlach_multi_sve_4
if(op0==3 && (op1&6)==4 && !op2 && !(op3&2) && !(op4&2))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_206_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_221_mortlach_multi_sve_4
if((op0&2)==2 && !op1 && op2==3 && op4&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_209_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_215_mortlach_multi_sve_4
if((op0&2)==2 && !op1 && op2&1 && !(op4&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_208_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_201_mortlach_multi_sve_4
if(!(op0&1) && op1==4 && !op2 && !(op3&2) && !(op4&2))
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_222_mortlach_multi_sve_4
if(!op1 && op2==1 && op4&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_201_mortlach_multi_sve_4
- if(!op1 && op2==2 && op4&1)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_203_mortlach_multi_sve_4
+ if(!op1 && op2==2 && op4&1)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_204_mortlach_multi_sve_4
if(op1==1 && op2==1)
return decode_iclass_mortlach_multi2_wide_int(ctx, dec);
if(op1==1 && op2==2)
@@ -1081,51 +1111,51 @@ int decode_spec(context *ctx, Instruction *dec)
if((op1&6)==2 && !(op3&1) && !(op4&1))
return decode_iclass_mortlach_multi2_frint(ctx, dec);
if(op1==4 && op2==1 && !(op3&2) && op4==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_202_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_223_mortlach_multi_sve_4
if(op1==4 && op2==1 && (op3&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_194_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_205_mortlach_multi_sve_4
if(op1==4 && op2==2 && !(op3&2) && op4==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_204_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_224_mortlach_multi_sve_4
if(op1==4 && op2==3)
return decode_iclass_mortlach_multi4_narrow_int_cvrt(ctx, dec);
if(op1==4 && op2!=3 && !(op3&2) && (op4&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_195_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_206_mortlach_multi_sve_4
if(op1==5 && op2==1 && !(op3&1) && !(op4&2))
return decode_iclass_mortlach_multi4_wide_int(ctx, dec);
if(op1==5 && op2==1 && !(op3&1) && (op4&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_200_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_216_mortlach_multi_sve_4
if(op1==5 && op2==1 && op3&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_199_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_207_mortlach_multi_sve_4
if(op1==5 && op2==2 && !op3 && !(op4&1))
return decode_iclass_mortlach_multi4_z_z_zip(ctx, dec);
if(op1==5 && op2==3 && (op3&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_196_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_208_mortlach_multi_sve_4
if(op1==5 && (op2&2)==2 && !op3 && op4&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_198_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_217_mortlach_multi_sve_4
if(op1==5 && (op2&2)==2 && op3==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_197_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_209_mortlach_multi_sve_4
if((op1&6)==4 && !(op2&1) && (op3&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_193_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_198_mortlach_multi_sve_4
if((op1&6)==6 && !op3 && !op4)
return decode_iclass_mortlach_multi4_frint(ctx, dec);
if((op1&6)==6 && !op3 && op4==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_192_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_210_mortlach_multi_sve_4
if((op1&6)==6 && op3==2 && !(op4&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_191_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_199_mortlach_multi_sve_4
if((op1&2)==2 && !(op3&1) && op4&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_190_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_197_mortlach_multi_sve_4
if((op1&2)==2 && op3&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_189_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_196_mortlach_multi_sve_4
if(op0 && !op1 && op2==2 && !(op4&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_211_mortlach_multi_sve_4
- if(op0 && op1==1 && op2==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_215_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_214_mortlach_multi_sve_4
if(op0 && op1==4 && op2==1 && !(op3&2) && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_210_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_227_mortlach_multi_sve_4
if(op0 && op1==4 && op2==2 && !(op3&2) && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_212_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_228_mortlach_multi_sve_4
if(op0 && op1==5 && op2==3 && !op3 && !(op4&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_216_mortlach_multi_sve_4
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_229_mortlach_multi_sve_4
+ if(op0!=1 && op1==1 && op2==3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_202_mortlach_multi_sve_4
UNMATCHED;
}
if(op0==2 && (op1&0x483f)==0x4839 && !(op2&0x21)) {
@@ -1136,19 +1166,19 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==1 && !op1 && !op2)
return decode_iclass_mortlach_multi4_fmul_mm(ctx, dec);
if(op0==1 && !op1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_225_mortlach_multi_sve_5a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_232_mortlach_multi_sve_5a
if(op0==1 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_224_mortlach_multi_sve_5a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_231_mortlach_multi_sve_5a
if(op0==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_223_mortlach_multi_sve_5a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_230_mortlach_multi_sve_5a
if(!(op0&1))
return decode_iclass_mortlach_multi2_fmul_mm(ctx, dec);
UNMATCHED;
}
if(op0==2 && (op1&0x483f)==0x4839 && (op2&0x21)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_35_sme
- if(op0==2 && (op1&0x483f)==0x4839 && (op2&0x20)==0x20)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_34_sme
+ if(op0==2 && (op1&0x483f)==0x4839 && (op2&0x20)==0x20)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_29_sme
if(op0==2 && (op1&0x483f)==0x483a && !(op2&0x21)) {
/* GROUP: mortlach_multi_sve_5b */
op0 = (INSWORD>>16)&1;
@@ -1159,17 +1189,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0 && !op1 && !op2)
return decode_iclass_mortlach_multi4_fmul_sm(ctx, dec);
if(op0 && !op1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_227_mortlach_multi_sve_5b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_234_mortlach_multi_sve_5b
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_226_mortlach_multi_sve_5b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_233_mortlach_multi_sve_5b
UNMATCHED;
}
if(op0==2 && (op1&0x483f)==0x483a && (op2&0x21)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_33_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_35_sme
if(op0==2 && (op1&0x483f)==0x483a && (op2&0x20)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_32_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_30_sme
if(op0==2 && (op1&0x483f)==0x483b)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_31_sme
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_24_sme
if(op0==3) {
/* GROUP: mortlach_mem */
op0 = (INSWORD>>21)&15;
@@ -1186,31 +1216,31 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&14)==8 && op2 && !op3 && !op4)
return decode_iclass_mortlach_zt_ldst(ctx, dec);
if((op0&14)==8 && op2 && !op3 && op4==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_238_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_245_mortlach_mem
if((op0&14)==8 && op2 && !op3 && (op4&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_237_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_244_mortlach_mem
if((op0&14)==8 && op2 && op3==8 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_236_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_243_mortlach_mem
if((op0&14)==8 && op2 && (op3&0x17)==0x10 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_235_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_242_mortlach_mem
if((op0&14)==8 && (op3&7)==1 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_233_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_240_mortlach_mem
if((op0&14)==8 && (op3&6)==2 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_232_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_239_mortlach_mem
if((op0&14)==8 && (op3&4)==4 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_231_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_238_mortlach_mem
if((op0&14)==8 && op1 && !op2 && !(op3&7) && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_234_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_241_mortlach_mem
if((op0&14)==10 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_229_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_236_mortlach_mem
if((op0&14)==12 && !(op4&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_230_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_237_mortlach_mem
if(op0==14 && !(op4&4))
return decode_iclass_mortlach_contig_qload(ctx, dec);
if(op0==15 && !(op4&4))
return decode_iclass_mortlach_contig_qstore(ctx, dec);
if((op4&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_228_mortlach_mem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_235_mortlach_mem
UNMATCHED;
}
UNMATCHED;
@@ -1288,7 +1318,7 @@ int decode_spec(context *ctx, Instruction *dec)
/* GROUP: sve_int_unpred_logical */
op0 = (INSWORD>>10)&7;
if(!(op0&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_260_sve_int_unpred_logical
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_265_sve_int_unpred_logical
if(op0==4)
return decode_iclass_sve_int_bin_cons_log(ctx, dec);
if(op0==5)
@@ -1331,8 +1361,10 @@ int decode_spec(context *ctx, Instruction *dec)
return decode_iclass_sve_int_mul_b(ctx, dec);
if((op0&6)==4)
return decode_iclass_sve_int_sqdmulh(ctx, dec);
- if((op0&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_261_sve_int_unpred_arit_b
+ if(op0==6)
+ return decode_iclass_sve_int_addqp(ctx, dec);
+ if(op0==7)
+ return decode_iclass_sve_int_addsubp(ctx, dec);
UNMATCHED;
}
if(!op0 && (op1&0x90)==0x10 && (op2&0x38)==0x20) {
@@ -1364,15 +1396,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==4)
return decode_iclass_sve_int_count(ctx, dec);
if(!op0 && op1==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_264_sve_countelt
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_268_sve_countelt
if(op0 && !op1)
return decode_iclass_sve_int_countvlv1(ctx, dec);
if(op0 && op1==4)
return decode_iclass_sve_int_pred_pattern_a(ctx, dec);
if(op0 && (op1&3)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_263_sve_countelt
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_267_sve_countelt
if((op1&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_262_sve_countelt
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_266_sve_countelt
if((op1&6)==6)
return decode_iclass_sve_int_pred_pattern_b(ctx, dec);
UNMATCHED;
@@ -1392,7 +1424,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0)
return decode_iclass_sve_int_perm_bin_long_perm_zz(ctx, dec);
if(op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_265_sve_perm_inter_long
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_269_sve_perm_inter_long
UNMATCHED;
}
if(!op0 && (op1&0x98)==0x80) {
@@ -1402,7 +1434,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==3 && !op1)
return decode_iclass_sve_int_dup_mask_imm(ctx, dec);
if(op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_266_sve_maskimm
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_270_sve_maskimm
if(op0!=3 && !op1)
return decode_iclass_sve_int_log_imm(ctx, dec);
UNMATCHED;
@@ -1413,11 +1445,11 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&4))
return decode_iclass_sve_int_dup_imm_pred(ctx, dec);
if((op0&6)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_267_sve_wideimm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_271_sve_wideimm_pred
if(op0==6)
return decode_iclass_sve_int_dup_fpimm_pred(ctx, dec);
if(op0==7)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_268_sve_wideimm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_272_sve_wideimm_pred
UNMATCHED;
}
if(!op0 && (op1&0x90)==0x90 && op2==9) {
@@ -1429,9 +1461,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==1 && !op1)
return decode_iclass_sve_int_perm_extq(ctx, dec);
if(op0==1 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_270_sve_perm_quads_a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_274_sve_perm_quads_a
if((op0&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_269_sve_perm_quads_a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_273_sve_perm_quads_a
UNMATCHED;
}
if(!op0 && (op1&0x90)==0x90 && op2==14) {
@@ -1445,33 +1477,33 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==4)
return decode_iclass_sve_int_perm_insrs(ctx, dec);
if(!op0 && (op1&3)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_272_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_277_sve_perm_unpred_d
if(!op0 && (op1&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_271_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_275_sve_perm_unpred_d
if(op0==1 && !(op1&1) && !op3)
return decode_iclass_sve_int_mov_v2p(ctx, dec);
if(op0==1 && !(op1&1) && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_277_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_278_sve_perm_unpred_d
if(op0==1 && op1&1 && !op2)
return decode_iclass_sve_int_mov_p2v(ctx, dec);
if(op0==1 && op1&1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_276_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_279_sve_perm_unpred_d
if(op0==2 && !(op1&4))
return decode_iclass_sve_int_perm_unpk(ctx, dec);
if(op0==2 && op1==4)
return decode_iclass_sve_int_perm_insrv(ctx, dec);
if(op0==2 && op1==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_275_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_281_sve_perm_unpred_d
if(op0==2 && (op1&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_274_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_280_sve_perm_unpred_d
if(op0==3 && !op1)
return decode_iclass_sve_int_perm_reverse_z(ctx, dec);
if(op0==3 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_273_sve_perm_unpred_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_276_sve_perm_unpred_d
UNMATCHED;
}
if(!op0 && (op1&0x90)==0x90 && op2==15)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_257_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_259_sve
if(!op0 && (op1&0x90)==0x90 && (op2&0x38)==0x10) {
/* GROUP: sve_perm_predicates */
op0 = (INSWORD>>22)&3;
@@ -1485,23 +1517,23 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1==0x14 && !op2 && !op3)
return decode_iclass_sve_int_perm_reverse_p(ctx, dec);
if(op1==0x15 && !op2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_286_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_290_sve_perm_predicates
if((op1&0x1a)==0x10 && op2==2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_284_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_288_sve_perm_predicates
if((op1&0x1a)==0x10 && (op2&13)==4 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_283_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_287_sve_perm_predicates
if((op1&0x1a)==0x10 && (op2&9)==8 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_282_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_286_sve_perm_predicates
if((op1&0x1a)==0x12 && !(op2&1) && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_281_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_285_sve_perm_predicates
if((op1&0x18)==0x18 && !(op2&1) && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_280_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_284_sve_perm_predicates
if(!(op2&1) && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_279_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_283_sve_perm_predicates
if(op2&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_278_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_282_sve_perm_predicates
if(op0 && (op1&0x1e)==0x10 && !op2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_285_sve_perm_predicates
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_289_sve_perm_predicates
UNMATCHED;
}
if(!op0 && (op1&0x90)==0x90 && (op2&0x30)==0x20) {
@@ -1517,7 +1549,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && op3)
return decode_iclass_sve_int_perm_last_r(ctx, dec);
if(!op0 && op1==1 && op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_291_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_294_sve_perm_pred
if(!op0 && op1==1 && !op3)
return decode_iclass_sve_int_perm_last_v(ctx, dec);
if(!op0 && (op1&6)==2)
@@ -1531,25 +1563,25 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==6 && !op2 && !op3)
return decode_iclass_sve_int_perm_splice(ctx, dec);
if(!op0 && op1==6 && !op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_292_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_295_sve_perm_pred
if(!op0 && op1==6 && op2 && !op3)
return decode_iclass_sve_intx_perm_splice(ctx, dec);
if(!op0 && op1==7 && !op2)
return decode_iclass_sve_int_perm_revd(ctx, dec);
if(!op0 && op1==7 && op2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_293_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_296_sve_perm_pred
if(!op0 && (op1&4)==4 && op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_289_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_292_sve_perm_pred
if(!op0 && (op1&3)==1 && !op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_290_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_293_sve_perm_pred
if(op0 && !op1 && !op2 && !op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_288_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_297_sve_perm_pred
if(op0 && !op1 && op2 && !op3)
return decode_iclass_sve_int_perm_expand(ctx, dec);
if(op0 && !op1 && op3)
return decode_iclass_sve_int_perm_clast_rz(ctx, dec);
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_287_sve_perm_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_291_sve_perm_pred
UNMATCHED;
}
if(op0==1 && !(op1&0x90)) {
@@ -1567,7 +1599,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0)
return decode_iclass_sve_int_brkp(ctx, dec);
if(op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_294_sve_pred_gen_b
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_298_sve_pred_gen_b
UNMATCHED;
}
if(op0==1 && (op1&0x98)==0x88 && (op2&0x30)==0x10) {
@@ -1579,19 +1611,19 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==8 && !op2 && !op3)
return decode_iclass_sve_int_brkn(ctx, dec);
if(!op0 && op1==8 && !op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_300_sve_pred_gen_c
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_304_sve_pred_gen_c
if(op0 && op1==8 && !op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_299_sve_pred_gen_c
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_303_sve_pred_gen_c
if(!op1 && !op2)
return decode_iclass_sve_int_break(ctx, dec);
if(!(op1&7) && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_298_sve_pred_gen_c
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_302_sve_pred_gen_c
if((op1&7)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_297_sve_pred_gen_c
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_301_sve_pred_gen_c
if((op1&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_296_sve_pred_gen_c
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_300_sve_pred_gen_c
if((op1&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_295_sve_pred_gen_c
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_299_sve_pred_gen_c
UNMATCHED;
}
if(op0==1 && (op1&0x98)==0x88 && (op2&0x30)==0x30) {
@@ -1604,47 +1636,47 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !(op2&1) && !op4)
return decode_iclass_sve_int_ptest(ctx, dec);
if(!op0 && op2&1 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_305_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_310_sve_pred_gen_d
if(op0==1 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_304_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_308_sve_pred_gen_d
if(op0==8 && !op1 && !op2 && !op4)
return decode_iclass_sve_int_pfirst(ctx, dec);
if(op0==8 && !op1 && op2==2 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_314_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_315_sve_pred_gen_d
if(op0==8 && op1==4 && op2==2 && !op3 && !op4)
return decode_iclass_sve_int_pfalse(ctx, dec);
if(op0==8 && op1==4 && op2==2 && op3 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_315_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_318_sve_pred_gen_d
if(op0==8 && op1==6 && !op2 && !op4)
return decode_iclass_sve_int_rdffr(ctx, dec);
if(op0==9 && !op1 && !op2 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_311_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_316_sve_pred_gen_d
if(op0==9 && !op1 && op2==2 && !op4)
return decode_iclass_sve_int_pnext(ctx, dec);
if(op0==9 && op1==4 && op2==2 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_312_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_317_sve_pred_gen_d
if(op0==9 && op1==6 && !op2 && !op3 && !op4)
return decode_iclass_sve_int_rdffr_2(ctx, dec);
if(op0==9 && op1==6 && !op2 && op3 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_313_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_319_sve_pred_gen_d
if((op0&14)==8 && op1==2 && !(op2&1) && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_310_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_312_sve_pred_gen_d
if((op0&14)==8 && !(op1&5) && op2&1 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_307_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_311_sve_pred_gen_d
if((op0&14)==8 && op1==4 && !(op2&2) && !op4)
return decode_iclass_sve_int_ptrue(ctx, dec);
if((op0&14)==8 && op1==4 && op2==3 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_309_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_314_sve_pred_gen_d
if((op0&14)==8 && op1==6 && op2 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_308_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_313_sve_pred_gen_d
if((op0&14)==8 && op1&1 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_306_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_309_sve_pred_gen_d
if(!(op0&6) && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_303_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_307_sve_pred_gen_d
if((op0&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_302_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_306_sve_pred_gen_d
if((op0&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_301_sve_pred_gen_d
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_305_sve_pred_gen_d
UNMATCHED;
}
if(op0==1 && (op1&0x9c)==0x90 && (op2&0x30)==0x20) {
@@ -1656,7 +1688,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op1)
return decode_iclass_sve_int_pcount_pred(ctx, dec);
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_316_sve_pred_count_a
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_320_sve_pred_count_a
UNMATCHED;
}
if(op0==1 && (op1&0x9c)==0x94 && (op2&0x3c)==0x20) {
@@ -1685,19 +1717,19 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0 && !op1 && !op2 && !op3 && !op4)
return decode_iclass_sve_int_setffr(ctx, dec);
if(op0 && !op1 && !op2 && op3 && !op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_320_sve_pred_wrffr
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_324_sve_pred_wrffr
if(!op1 && !op2 && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_319_sve_pred_wrffr
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_323_sve_pred_wrffr
if(!op1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_318_sve_pred_wrffr
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_322_sve_pred_wrffr
if(op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_317_sve_pred_wrffr
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_321_sve_pred_wrffr
UNMATCHED;
}
if(op0==1 && (op1&0x9c)==0x94 && (op2&0x38)==0x28)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_248_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_255_sve
if(op0==1 && (op1&0x98)==0x98 && (op2&0x30)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_239_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_246_sve
if(op0==1 && (op1&0x90)==0x90 && !(op2&0x30)) {
/* GROUP: sve_cmpgpr */
op0 = (INSWORD>>12)&3;
@@ -1708,11 +1740,11 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==2 && !op1 && !op2)
return decode_iclass_sve_int_cterm(ctx, dec);
if(op0==2 && !op1 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_322_sve_cmpgpr
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_326_sve_cmpgpr
if(op0==3 && !op1)
return decode_iclass_sve_int_whilenc(ctx, dec);
if((op0&2)==2 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_321_sve_cmpgpr
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_325_sve_cmpgpr
UNMATCHED;
}
if(op0==1 && (op1&0x90)==0x90 && (op2&0x30)==0x10 && op3) {
@@ -1726,15 +1758,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==7 && !op2 && !op3)
return decode_iclass_sve_int_pn_ptrue(ctx, dec);
if(!op0 && op1==7 && !op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_325_sve_while_pn
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_329_sve_while_pn
if(!op0 && op1==7 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_324_sve_while_pn
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_328_sve_while_pn
if((op1&6)==2)
return decode_iclass_sve_int_while_rr_pair(ctx, dec);
if(!(op1&2))
return decode_iclass_sve_int_while_rr_pn(ctx, dec);
if(op0 && (op1&6)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_323_sve_while_pn
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_327_sve_while_pn
UNMATCHED;
}
if(op0==1 && (op1&0x90)==0x90 && (op2&0x30)==0x30) {
@@ -1754,7 +1786,7 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(op0==2 && (op1&0xb0)==0x20 && (op2&0x3e)==0x32)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_258_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_260_sve
if(op0==2 && !(op1&0x90) && !(op2&0x20)) {
/* GROUP: sve_intx_muladd_unpred */
op0 = (INSWORD>>10)&0x1f;
@@ -1775,7 +1807,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==0x1e)
return decode_iclass_sve_intx_mixed_dot(ctx, dec);
if(op0==0x1f)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_326_sve_intx_muladd_unpred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_330_sve_intx_muladd_unpred
UNMATCHED;
}
if(op0==2 && !(op1&0x90) && (op2&0x30)==0x20) {
@@ -1785,9 +1817,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==2 && op1)
return decode_iclass_sve_intx_accumulate_long_pairs(ctx, dec);
if(op0==3 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_329_sve_intx_predicated
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_333_sve_intx_predicated
if((op0&14)==6 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_328_sve_intx_predicated
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_332_sve_intx_predicated
if(!(op0&10) && op1)
return decode_iclass_sve_intx_pred_arith_unary(ctx, dec);
if(!(op0&8) && !op1)
@@ -1799,11 +1831,9 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&12)==12 && !op1)
return decode_iclass_sve_intx_pred_arith_binary_sat(ctx, dec);
if((op0&12)==12 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_327_sve_intx_predicated
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_331_sve_intx_predicated
UNMATCHED;
}
- if(op0==2 && !(op1&0x90) && (op2&0x3d)==0x35)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_255_sve
if(op0==2 && (op1&0x90)==0x10) {
/* GROUP: sve_intx_by_indexed_elem */
op0 = (INSWORD>>10)&0x3f;
@@ -1820,7 +1850,7 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&0x3c)==0x10)
return decode_iclass_sve_intx_cdot_by_indexed_elem(ctx, dec);
if((op0&0x3c)==0x14)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_330_sve_intx_by_indexed_elem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_334_sve_intx_by_indexed_elem
if((op0&0x3c)==0x18)
return decode_iclass_sve_intx_cmla_by_indexed_elem(ctx, dec);
if((op0&0x3c)==0x1c)
@@ -1836,7 +1866,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==0x3e)
return decode_iclass_sve_intx_mul_by_indexed_elem(ctx, dec);
if(op0==0x3f)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_331_sve_intx_by_indexed_elem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_335_sve_intx_by_indexed_elem
UNMATCHED;
}
if(op0==2 && (op1&0x90)==0x80 && !(op2&0x20)) {
@@ -1857,7 +1887,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && (op1&12)==8)
return decode_iclass_sve_intx_shift_long(ctx, dec);
if(op0 && (op1&12)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_332_sve_intx_constructive
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_336_sve_intx_constructive
if(!(op1&12))
return decode_iclass_sve_intx_clong(ctx, dec);
if((op1&14)==4)
@@ -1865,7 +1895,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1==6)
return decode_iclass_sve_intx_mmla(ctx, dec);
if(op1==7)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_333_sve_intx_constructive
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_337_sve_intx_constructive
if((op1&12)==12)
return decode_iclass_sve_intx_perm_bit(ctx, dec);
UNMATCHED;
@@ -1887,7 +1917,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1==7)
return decode_iclass_sve_intx_aba(ctx, dec);
if(op0 && op1==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_334_sve_intx_acc
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_338_sve_intx_acc
UNMATCHED;
}
if(op0==2 && (op1&0x90)==0x90 && !(op2&0x20)) {
@@ -1903,35 +1933,40 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && op2 && op3==2 && !op4 && !op5)
return decode_iclass_sve_intx_multi_extract_narrow(ctx, dec);
if(!op0 && !op1 && op2 && op3==2 && !op4 && op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_340_sve_intx_narrowing
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_344_sve_intx_narrowing
if(!op0 && !op1 && op2 && op3==2 && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_339_sve_intx_narrowing
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_343_sve_intx_narrowing
if(!op0 && !(op3&2))
return decode_iclass_sve_intx_shift_narrow(ctx, dec);
if(!op0 && op1 && op3==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_338_sve_intx_narrowing
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_341_sve_intx_narrowing
if(op0 && !(op3&2) && !op4 && !op5)
return decode_iclass_sve_intx_multi_shift_narrow(ctx, dec);
if(op0 && !(op3&2) && !op4 && op5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_336_sve_intx_narrowing
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_342_sve_intx_narrowing
if(op0 && !(op3&2) && op4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_335_sve_intx_narrowing
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_339_sve_intx_narrowing
if(op0 && op3==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_337_sve_intx_narrowing
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_340_sve_intx_narrowing
if(op3==3)
return decode_iclass_sve_intx_arith_narrow(ctx, dec);
UNMATCHED;
}
if(op0==2 && (op1&0x90)==0x90 && (op2&0x38)==0x28) {
/* GROUP: sve_intx_histseg_lut */
+ op2 = (INSWORD>>23)&1;
op0 = (INSWORD>>22)&1;
op1 = (INSWORD>>10)&7;
- if(!op0 && (op1&5)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_341_sve_intx_histseg_lut
+ if(!op2 && !op0 && op1==1)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_346_sve_intx_histseg_lut
+ if(!op2 && !op0 && op1==3)
+ return decode_iclass_sve_intx_lut6_8(ctx, dec);
+ if(op2 && !op0 && (op1&5)==1)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_345_sve_intx_histseg_lut
if(op0 && op1==1)
return decode_iclass_sve_intx_lut4_8(ctx, dec);
if(op0 && op1==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_342_sve_intx_histseg_lut
+ return decode_iclass_sve_intx_lut6_16(ctx, dec);
if(!op1)
return decode_iclass_sve_intx_histseg(ctx, dec);
if(op1==4)
@@ -1952,9 +1987,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && !(op2&6) && !op3)
return decode_iclass_sve_crypto_unary(ctx, dec);
if(!op0 && !op1 && !(op2&6) && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_347_sve_intx_crypto
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_352_sve_intx_crypto
if(!op0 && op1==1 && !(op2&6))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_345_sve_intx_crypto
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_351_sve_intx_crypto
if(!op0 && (op1&2)==2 && !(op2&6))
return decode_iclass_sve_crypto_binary_dest(ctx, dec);
if(!(op0&1) && (op1&2)==2 && (op2&6)==2)
@@ -1962,9 +1997,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0&1 && (op1&2)==2 && (op2&6)==2)
return decode_iclass_sve_crypto_binary_multi4(ctx, dec);
if(!op1 && (op2&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_346_sve_intx_crypto
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_349_sve_intx_crypto
if(op1==1 && (op2&6)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_344_sve_intx_crypto
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_350_sve_intx_crypto
if((op2&6)==4)
return decode_iclass_sve_crypto_binary_const(ctx, dec);
if(op2==6 && !op4)
@@ -1974,13 +2009,11 @@ int decode_spec(context *ctx, Instruction *dec)
if((op2&6)==6 && op4)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_348_sve_intx_crypto
if(op0 && !(op2&6))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_343_sve_intx_crypto
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_347_sve_intx_crypto
UNMATCHED;
}
- if(op0==3 && (op1&0xd0)==0x50 && op2==0x38)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_256_sve
if(op0==3 && (op1&0xb0)==0x10 && (op2&0x3c)==0x1c)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_245_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_256_sve
if(op0==3 && (op1&0xb0)==0x10 && (op2&0x33)==0x22) {
/* GROUP: sve_fp8_fma_w */
op0 = (INSWORD>>23)&1;
@@ -1990,27 +2023,27 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0 && !op1)
return decode_iclass_sve_fp8_fma_long(ctx, dec);
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_349_sve_fp8_fma_w
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_353_sve_fp8_fma_w
UNMATCHED;
}
if(op0==3 && (op1&0xb0)==0x10 && (op2&0x33)==0x23)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_252_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_257_sve
if(op0==3 && (op1&0xb0)==0x10 && (op2&0x34)==0x34)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_246_sve
- if(op0==3 && (op1&0xb0)==0x30 && (op2&0x32)==0x22)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_249_sve
+ if(op0==3 && (op1&0xb0)==0x30 && (op2&0x32)==0x22)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_250_sve
if(op0==3 && (op1&0xb0)==0x30 && (op2&0x14)==0x14)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_240_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_247_sve
if(op0==3 && (op1&0x9f)==1 && (op2&0x38)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_251_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_264_sve
if(op0==3 && (op1&0x9e)==4 && (op2&0x38)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_250_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_261_sve
if(op0==3 && !(op1&0x9a) && (op2&0x30)==0x30)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_242_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_251_sve
if(op0==3 && (op1&0x9a)==2 && (op2&0x20)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_241_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_248_sve
if(op0==3 && (op1&0x9c)==8 && (op2&0x30)==0x30)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_243_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_252_sve
if(op0==3 && (op1&0x9c)==12 && (op2&0x20)==0x20) {
/* GROUP: sve_fp_zeroing_unary */
op0 = (INSWORD>>16)&7;
@@ -2027,9 +2060,9 @@ int decode_spec(context *ctx, Instruction *dec)
UNMATCHED;
}
if(op0==3 && (op1&0x90)==0x10 && op2==11)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_254_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_262_sve
if(op0==3 && (op1&0x90)==0x10 && (op2&0x3c)==12)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_244_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_253_sve
if(op0==3 && (op1&0x90)==0x10 && (op2&0x34)==0x10) {
/* GROUP: sve_fp_fma_w_by_indexed_elem */
op0 = (INSWORD>>23)&1;
@@ -2037,7 +2070,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1)
return decode_iclass_sve_fp_fdot_by_indexed_elem(ctx, dec);
if(!op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_350_sve_fp_fma_w_by_indexed_elem
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_354_sve_fp_fma_w_by_indexed_elem
if(op0)
return decode_iclass_sve_fp_fma_long_by_indexed_elem(ctx, dec);
UNMATCHED;
@@ -2049,17 +2082,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1)
return decode_iclass_sve_fp_fdot(ctx, dec);
if(!op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_351_sve_fp_fma_w
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_355_sve_fp_fma_w
if(op0)
return decode_iclass_sve_fp_fma_long(ctx, dec);
UNMATCHED;
}
if(op0==3 && (op1&0x90)==0x10 && (op2&0x36)==0x24)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_247_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_254_sve
if(op0==3 && (op1&0x90)==0x10 && (op2&0x3e)==0x3a)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_253_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_258_sve
if(op0==3 && (op1&0x9c)==0x84 && (op2&0x3c)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_259_sve
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_263_sve
if(op0==3 && (op1&0x9c)==0x84 && (op2&0x3c)==12) {
/* GROUP: sve_fp_unary_unpred */
op0 = (INSWORD>>22)&3;
@@ -2071,17 +2104,23 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1==2 && !op3)
return decode_iclass_sve_fp8_fcvt_narrow(ctx, dec);
if(!op0 && op1==2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_356_sve_fp_unary_unpred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_361_sve_fp_unary_unpred
if(!op0 && op1==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_355_sve_fp_unary_unpred
- if((op1&6)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_353_sve_fp_unary_unpred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_359_sve_fp_unary_unpred
+ if(op1==4)
+ return decode_iclass_sve_fp_ucvtf_wide(ctx, dec);
+ if(op1==5 && !(op2&2) && !op3)
+ return decode_iclass_sve_fp_fcvtzu_narrow(ctx, dec);
+ if(op1==5 && !(op2&2) && op3)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_360_sve_fp_unary_unpred
+ if(op1==5 && (op2&2)==2)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_358_sve_fp_unary_unpred
if((op1&6)==6 && !op2)
return decode_iclass_sve_fp_2op_u_zd(ctx, dec);
if((op1&6)==6 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_354_sve_fp_unary_unpred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_357_sve_fp_unary_unpred
if(op0 && !(op1&4))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_352_sve_fp_unary_unpred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_356_sve_fp_unary_unpred
UNMATCHED;
}
if(op0==3 && (op1&0x9c)==0x88 && (op2&0x38)==8) {
@@ -2090,7 +2129,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0)
return decode_iclass_sve_fp_2op_p_pd(ctx, dec);
if(op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_357_sve_fp_cmpzero
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_362_sve_fp_cmpzero
UNMATCHED;
}
if(op0==3 && (op1&0x9c)==0x8c && (op2&0x38)==8) {
@@ -2099,7 +2138,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0)
return decode_iclass_sve_fp_2op_p_vd(ctx, dec);
if(op0)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_358_sve_fp_slowreduce
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_363_sve_fp_slowreduce
UNMATCHED;
}
if(op0==3 && (op1&0x90)==0x80 && (op2&0x38)==0x20) {
@@ -2112,11 +2151,11 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==2 && !op1)
return decode_iclass_sve_fp_ftmad(ctx, dec);
if(op0==2 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_359_sve_fp_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_364_sve_fp_pred
if(op0==3 && !op2)
return decode_iclass_sve_fp_2op_i_p_zds(ctx, dec);
if(op0==3 && op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_360_sve_fp_pred
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_365_sve_fp_pred
UNMATCHED;
}
if(op0==3 && (op1&0x90)==0x80 && (op2&0x38)==0x28) {
@@ -2152,7 +2191,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && op1&1 && !(op2&4) && !op3)
return decode_iclass_sve_mem_32b_prfm_sv(ctx, dec);
if(!op0 && op1&1 && !(op2&4) && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_361_sve_mem32
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_366_sve_mem32
if(op0==1 && op1&1 && !(op2&4))
return decode_iclass_sve_mem_32b_gld_sv_a(ctx, dec);
if(op0==2 && op1&1 && !(op2&4))
@@ -2160,15 +2199,15 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==3 && !(op1&2) && !op2 && !op3)
return decode_iclass_sve_mem_32b_pfill(ctx, dec);
if(op0==3 && !(op1&2) && !op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_364_sve_mem32
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_370_sve_mem32
if(op0==3 && !(op1&2) && op2==2)
return decode_iclass_sve_mem_32b_fill(ctx, dec);
if(op0==3 && !(op1&2) && (op2&5)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_362_sve_mem32
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_367_sve_mem32
if(op0==3 && (op1&2)==2 && !(op2&4) && !op3)
return decode_iclass_sve_mem_prfm_si(ctx, dec);
if(op0==3 && (op1&2)==2 && !(op2&4) && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_363_sve_mem32
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_368_sve_mem32
if(!op1 && (op2&6)==4)
return decode_iclass_sve_mem_32b_gldnt_vs(ctx, dec);
if(!op1 && op2==6 && !op3)
@@ -2176,7 +2215,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op1 && op2==7 && !op3)
return decode_iclass_sve_mem_32b_prfm_vi(ctx, dec);
if(!op1 && (op2&6)==6 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_365_sve_mem32
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_369_sve_mem32
if(op1==1 && (op2&4)==4)
return decode_iclass_sve_mem_32b_gld_vi(ctx, dec);
if((op1&2)==2 && (op2&4)==4)
@@ -2203,7 +2242,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==1 && op2==4)
return decode_iclass_sve_mem_eldq_ss(ctx, dec);
if((op0&2)==2 && op2==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_366_sve_memcld
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_371_sve_memcld
if(!op1 && op2==1)
return decode_iclass_sve_mem_ldqr_si(ctx, dec);
if(!op1 && op2==5)
@@ -2219,9 +2258,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0 && !op1 && op2==7)
return decode_iclass_sve_mem_eld_si(ctx, dec);
if(op0 && op1 && op2==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_367_sve_memcld
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_372_sve_memcld
if(op0 && op1 && op2==7)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_368_sve_memcld
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_373_sve_memcld
if(op0 && op2==6)
return decode_iclass_sve_mem_eld_ss(ctx, dec);
UNMATCHED;
@@ -2235,17 +2274,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(!op0 && !op1 && op2==5)
return decode_iclass_sve_mem_64b_gldq_vs(ctx, dec);
if(!op0 && op1==1 && !(op2&4) && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_370_sve_mem64
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_375_sve_mem64
if(!op0 && op1==3 && (op2&4)==4 && !op3)
return decode_iclass_sve_mem_64b_prfm_sv2(ctx, dec);
if(!op0 && op1==3 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_369_sve_mem64
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_374_sve_mem64
if(!op0 && op1&1 && !(op2&4) && !op3)
return decode_iclass_sve_mem_64b_prfm_sv(ctx, dec);
if(!op1 && op2==7 && !op3)
return decode_iclass_sve_mem_64b_prfm_vi(ctx, dec);
if(!op1 && op2==7 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_372_sve_mem64
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_377_sve_mem64
if(!op1 && (op2&5)==4)
return decode_iclass_sve_mem_64b_gldnt_vs(ctx, dec);
if(op1==1 && (op2&4)==4)
@@ -2255,7 +2294,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op1&1) && !(op2&4))
return decode_iclass_sve_mem_64b_gld_vs(ctx, dec);
if(op0 && !op1 && op2==5)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_371_sve_mem64
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_376_sve_mem64
if(op0 && op1==3 && (op2&4)==4)
return decode_iclass_sve_mem_64b_gld_sv2(ctx, dec);
if(op0 && op1&1 && !(op2&4))
@@ -2273,7 +2312,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0&1 && !op1)
return decode_iclass_sve_mem_sstnt_32b_vs(ctx, dec);
if(op0 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_373_sve_memsst_nt
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_378_sve_memsst_nt
UNMATCHED;
}
if(op0==7 && (op2&0x38)==0x18) {
@@ -2294,19 +2333,19 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&4) && !op1 && !op2)
return decode_iclass_sve_mem_estq_si(ctx, dec);
if(!(op0&4) && op1==1 && !op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_377_sve_memst_cs
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_380_sve_memst_cs
if(!(op0&4) && (op1&2)==2 && !op2)
return decode_iclass_sve_mem_estq_ss(ctx, dec);
if((op0&6)==4 && !op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_374_sve_memst_cs
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_379_sve_memst_cs
if(op0==6 && !op2 && !op3)
return decode_iclass_sve_mem_pspill(ctx, dec);
if(op0==6 && !op2 && op3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_376_sve_memst_cs
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_382_sve_memst_cs
if(op0==6 && op2)
return decode_iclass_sve_mem_spill(ctx, dec);
if(op0==7 && !op2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_375_sve_memst_cs
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_381_sve_memst_cs
if(op0!=6 && op2)
return decode_iclass_sve_mem_cst_ss(ctx, dec);
UNMATCHED;
@@ -2381,6 +2420,8 @@ int decode_spec(context *ctx, Instruction *dec)
return decode_iclass_sve_intx_clamp(ctx, dec);
if(op0==2 && !(op1&0x90) && (op2&0x3d)==0x34)
return decode_iclass_sve_ptr_muladd_unpred(ctx, dec);
+ if(op0==2 && !(op1&0x90) && (op2&0x3d)==0x35)
+ return decode_iclass_sve_abal(ctx, dec);
if(op0==2 && !(op1&0x90) && (op2&0x38)==0x38)
return decode_iclass_sve_int_perm_binquads(ctx, dec);
if(op0==2 && (op1&0x90)==0x90 && (op2&0x38)==0x20)
@@ -2389,6 +2430,8 @@ int decode_spec(context *ctx, Instruction *dec)
return decode_iclass_sve_intx_histcnt(ctx, dec);
if(op0==3 && (op1&0xd0)==0x10 && op2==0x38)
return decode_iclass_sve_fp8_fmmla(ctx, dec);
+ if(op0==3 && (op1&0xd0)==0x50 && op2==0x38)
+ return decode_iclass_sve_fp_fmmla_nw(ctx, dec);
if(op0==3 && (op1&0xb0)==0x10 && (op2&0x3c)==0x14)
return decode_iclass_sve_fp8_fma_long_by_indexed_elem(ctx, dec);
if(op0==3 && !(op1&0x9f) && (op2&0x38)==0x20)
@@ -2461,53 +2504,53 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==3 && (op1&0x3008)==8)
return decode_iclass_compbranch_regs2(ctx, dec);
if((op0&6)==2 && (op1&0x2000)==0x2000)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_378_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_383_control
if(op0==6 && !(op1&0x3000))
return decode_iclass_exception(ctx, dec);
if(op0==6 && (op1&0x3fec)==0x1000)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_389_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_394_control
if(op0==6 && (op1&0x3ffc)==0x1020)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_390_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_396_control
if(op0==6 && op1==0x1030)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_391_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_397_control
if(op0==6 && op1==0x1031)
return decode_iclass_systeminstrswithreg(ctx, dec);
if(op0==6 && op1==0x1032 && op2==0x1f)
return decode_iclass_hints(ctx, dec);
if(op0==6 && op1==0x1032 && op2!=0x1f)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_392_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_398_control
if(op0==6 && op1==0x1033)
return decode_iclass_barriers(ctx, dec);
if(op0==6 && (op1&0x3fcc)==0x1040)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_388_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_392_control
if(op0==6 && (op1&0x3f8f)==0x1004)
return decode_iclass_pstate(ctx, dec);
if(op0==6 && (op1&0x3f8f)==0x1005)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_387_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_395_control
if(op0==6 && (op1&0x3f8e)==0x1006)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_386_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_393_control
if(op0==6 && (op1&0x3f88)==0x1008)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_385_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_391_control
if(op0==6 && (op1&0x3f80)==0x1200)
- return decode_iclass_systemresult(ctx, dec);
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_390_control
if(op0==6 && (op1&0x3d80)==0x1080)
return decode_iclass_systeminstrs(ctx, dec);
if(op0==6 && (op1&0x3d00)==0x1100)
return decode_iclass_systemmove(ctx, dec);
if(op0==6 && (op1&0x3d80)==0x1400)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_384_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_389_control
if(op0==6 && (op1&0x3d80)==0x1480)
return decode_iclass_syspairinstrs(ctx, dec);
if(op0==6 && (op1&0x3d00)==0x1500)
return decode_iclass_systemmovepr(ctx, dec);
if(op0==6 && (op1&0x3800)==0x1800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_383_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_386_control
if(op0==6 && (op1&0x2000)==0x2000)
return decode_iclass_branch_reg(ctx, dec);
if(op0==7 && (op1&0x3008)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_382_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_387_control
if(op0==7 && (op1&0x2000)==0x2000)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_379_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_384_control
if(!(op0&3))
return decode_iclass_branch_imm(ctx, dec);
if((op0&3)==1 && !(op1&0x2000))
@@ -2517,11 +2560,11 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&3)==3 && !(op1&0x300c))
return decode_iclass_compbranch_regs(ctx, dec);
if((op0&3)==3 && (op1&0x300c)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_381_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_388_control
if((op0&3)==3 && (op1&0x3004)==0x1000)
return decode_iclass_compbranch_imm(ctx, dec);
if((op0&3)==3 && (op1&0x3004)==0x1004)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_380_control
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_385_control
UNMATCHED;
}
if((op1&7)==5) {
@@ -2545,23 +2588,23 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1 && !op2 && (op3&0x38)==8)
return decode_iclass_addsub_pt(ctx, dec);
if(op1 && !op2 && (op3&0x38)==0x18)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_395_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_401_dpreg
if(op1 && !op2 && op3==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_399_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_406_dpreg
if(op1 && !op2 && (op3&0x28)==0x28)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_394_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_400_dpreg
if(op1 && !op2 && (op3&0x1f)==1)
return decode_iclass_rmif(ctx, dec);
if(op1 && !op2 && (op3&0x1e)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_398_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_404_dpreg
if(op1 && !op2 && (op3&0x1a)==0x10)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_396_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_402_dpreg
if(op1 && !op2 && (op3&15)==2)
return decode_iclass_setf(ctx, dec);
if(op1 && !op2 && (op3&15)==3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_400_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_405_dpreg
if(op1 && !op2 && (op3&14)==6)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_397_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_403_dpreg
if(op1 && op2==2 && !(op3&2))
return decode_iclass_condcmp_reg(ctx, dec);
if(op1 && op2==2 && (op3&2)==2)
@@ -2569,7 +2612,7 @@ int decode_spec(context *ctx, Instruction *dec)
if(op1 && op2==4)
return decode_iclass_condsel(ctx, dec);
if(op1 && (op2&9)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_393_dpreg
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_399_dpreg
if(op1 && (op2&8)==8)
return decode_iclass_dp_3src(ctx, dec);
UNMATCHED;
@@ -2583,31 +2626,31 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&13) && !(op1&2) && (op2&7)==5 && (op3&0x183)==2)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_432_simd_dp
if(!(op0&13) && op1==3 && op3&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_407_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_412_simd_dp
if(op0==4 && !(op1&2) && (op2&7)==5 && (op3&0x183)==2)
return decode_iclass_cryptoaes(ctx, dec);
if(op0==5 && !(op1&2) && !(op2&4) && !(op3&0x23))
return decode_iclass_cryptosha3(ctx, dec);
if(op0==5 && !(op1&2) && !(op2&4) && (op3&0x23)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_424_simd_dp
- if(op0==5 && !(op1&2) && !(op2&4) && (op3&0x21)==0x20)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_423_simd_dp
+ if(op0==5 && !(op1&2) && !(op2&4) && (op3&0x21)==0x20)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_417_simd_dp
if(op0==5 && !(op1&2) && (op2&7)==5 && (op3&0x183)==2)
return decode_iclass_cryptosha2(ctx, dec);
if(op0==7 && !(op1&2) && !(op2&4) && !(op3&1))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_422_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_414_simd_dp
if((op0&14)==6 && !(op1&2) && (op2&7)==5 && (op3&0x183)==2)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_433_simd_dp
if((op0&13)==5 && !op1 && !(op2&12) && (op3&0x21)==1)
return decode_iclass_asisdone(ctx, dec);
if((op0&13)==5 && op1==1 && !(op2&12) && (op3&0x21)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_430_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_424_simd_dp
if((op0&13)==5 && !(op1&2) && op2==7 && (op3&0x183)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_434_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_437_simd_dp
if((op0&13)==5 && !(op1&2) && (op2&12)==8 && (op3&0x31)==1)
return decode_iclass_asisdsamefp16(ctx, dec);
if((op0&13)==5 && !(op1&2) && (op2&12)==8 && (op3&0x31)==0x11)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_435_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_425_simd_dp
if((op0&13)==5 && !(op1&2) && op2==15 && (op3&0x183)==2)
return decode_iclass_asisdmiscfp16(ctx, dec);
if((op0&13)==5 && !(op1&2) && !(op2&4) && (op3&0x21)==0x21)
@@ -2619,7 +2662,7 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&13)==5 && !(op1&2) && (op2&4)==4 && (op3&0x183)==0x82)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_426_simd_dp
if((op0&13)==5 && !(op1&2) && (op2&4)==4 && (op3&0x103)==0x102)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_425_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_418_simd_dp
if((op0&13)==5 && !(op1&2) && (op2&4)==4 && !(op3&3))
return decode_iclass_asisddiff(ctx, dec);
if((op0&13)==5 && !(op1&2) && (op2&4)==4 && op3&1)
@@ -2629,7 +2672,7 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&13)==5 && (op1&2)==2 && !(op3&1))
return decode_iclass_asisdelem(ctx, dec);
if((op0&12)==4 && op1==3 && op3&1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_406_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_410_simd_dp
if(!(op0&11) && !(op1&2) && !(op2&4) && !(op3&0x23))
return decode_iclass_asimdtbl(ctx, dec);
if(!(op0&11) && !(op1&2) && !(op2&4) && (op3&0x23)==2)
@@ -2639,17 +2682,17 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&9) && !op1 && !(op2&12) && (op3&0x21)==1)
return decode_iclass_asimdins(ctx, dec);
if(!(op0&9) && op1==1 && !(op2&12) && (op3&0x21)==1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_429_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_419_simd_dp
if(!(op0&9) && !(op1&2) && op2==7 && (op3&0x183)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_436_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_434_simd_dp
if(!(op0&9) && !(op1&2) && (op2&12)==8 && (op3&0x31)==1)
return decode_iclass_asimdsamefp16(ctx, dec);
if(!(op0&9) && !(op1&2) && (op2&12)==8 && (op3&0x31)==0x11)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_431_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_420_simd_dp
if(!(op0&9) && !(op1&2) && op2==15 && (op3&0x183)==2)
return decode_iclass_asimdmiscfp16(ctx, dec);
if(!(op0&9) && !(op1&2) && !(op2&4) && (op3&0x21)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_419_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_413_simd_dp
if(!(op0&9) && !(op1&2) && !(op2&4) && (op3&0x21)==0x21)
return decode_iclass_asimdsame2(ctx, dec);
if(!(op0&9) && !(op1&2) && (op2&7)==4 && (op3&0x183)==2)
@@ -2657,9 +2700,9 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&9) && !(op1&2) && (op2&7)==6 && (op3&0x183)==2)
return decode_iclass_asimdall(ctx, dec);
if(!(op0&9) && !(op1&2) && (op2&4)==4 && (op3&0x183)==0x82)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_428_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_421_simd_dp
if(!(op0&9) && !(op1&2) && (op2&4)==4 && (op3&0x103)==0x102)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_427_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_415_simd_dp
if(!(op0&9) && !(op1&2) && (op2&4)==4 && !(op3&3))
return decode_iclass_asimddiff(ctx, dec);
if(!(op0&9) && !(op1&2) && (op2&4)==4 && op3&1)
@@ -2671,57 +2714,57 @@ int decode_spec(context *ctx, Instruction *dec)
if(!(op0&9) && (op1&2)==2 && !(op3&1))
return decode_iclass_asimdelem(ctx, dec);
if((op0&13)==8)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_401_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_407_simd_dp
if(op0==12 && !op1 && !(op2&8) && (op3&0x20)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_408_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_422_simd_dp
if(op0==12 && !op1 && (op2&12)==8 && (op3&0x30)==0x20)
return decode_iclass_crypto3_imm2(ctx, dec);
if(op0==12 && !op1 && (op2&12)==8 && (op3&0x30)==0x30)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_420_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_428_simd_dp
if(op0==12 && !op1 && (op2&12)==12 && (op3&0x2c)==0x20)
return decode_iclass_cryptosha512_3(ctx, dec);
if(op0==12 && !op1 && (op2&12)==12 && (op3&0x2c)==0x24)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_418_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_435_simd_dp
if(op0==12 && !op1 && (op2&12)==12 && (op3&0x28)==0x28)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_417_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_429_simd_dp
if(op0==12 && !op1 && !(op3&0x20))
return decode_iclass_crypto4(ctx, dec);
if(op0==12 && op1==1 && !(op2&12))
return decode_iclass_crypto3_imm6(ctx, dec);
if(op0==12 && op1==1 && op2==8 && !(op3&0x1e0))
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_414_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_440_simd_dp
if(op0==12 && op1==1 && op2==8 && (op3&0x1fc)==0x20)
return decode_iclass_cryptosha512_2(ctx, dec);
if(op0==12 && op1==1 && op2==8 && (op3&0x1fc)==0x30)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_421_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_443_simd_dp
if(op0==12 && op1==1 && op2==8 && (op3&0x1ec)==0x24)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_416_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_442_simd_dp
if(op0==12 && op1==1 && op2==8 && (op3&0x1e8)==0x28)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_415_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_441_simd_dp
if(op0==12 && op1==1 && op2==8 && (op3&0x1c0)==0x40)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_413_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_439_simd_dp
if(op0==12 && op1==1 && op2==8 && (op3&0x180)==0x80)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_412_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_438_simd_dp
if(op0==12 && op1==1 && op2==8 && (op3&0x100)==0x100)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_411_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_436_simd_dp
if(op0==12 && op1==1 && op2==9)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_410_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_430_simd_dp
if(op0==12 && op1==1 && (op2&14)==10)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_409_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_427_simd_dp
if(op0==12 && op1==1 && (op2&4)==4)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_405_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_416_simd_dp
if(op0==12 && (op1&2)==2)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_404_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_411_simd_dp
if(op0==14)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_403_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_409_simd_dp
if((op0&13)==13)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_402_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_408_simd_dp
if((op0&5)==1 && !(op1&2) && !(op2&4))
return decode_iclass_float2fix(ctx, dec);
if((op0&5)==1 && !(op1&2) && (op2&4)==4 && !(op3&0x3f))
return decode_iclass_float2int(ctx, dec);
if((op0&5)==1 && !(op1&2) && (op2&4)==4 && (op3&0x3f)==0x20)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_437_simd_dp
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_431_simd_dp
if((op0&5)==1 && !(op1&2) && (op2&4)==4 && (op3&0x1f)==0x10)
return decode_iclass_floatdp1(ctx, dec);
if((op0&5)==1 && !(op1&2) && (op2&4)==4 && (op3&15)==8)
@@ -2744,43 +2787,43 @@ int decode_spec(context *ctx, Instruction *dec)
op1 = (INSWORD>>26)&1;
op2 = (INSWORD>>10)&0x7fff;
if(!op0 && !op1 && (op2&0x4800)==0x4800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_442_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_449_ldst
if(op0==1 && op1 && (op2&0x4800)==0x4800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_453_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_450_ldst
if(!(op0&11) && !op1 && (op2&0x6800)==0x800)
return decode_iclass_comswappr(ctx, dec);
if(!(op0&11) && !op1 && (op2&0x6800)==0x4000)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_454_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_451_ldst
if(!(op0&11) && !op1 && (op2&0x6800)==0x6000)
return decode_iclass_comswappr_unpriv(ctx, dec);
if(!(op0&11) && op1 && !(op2&0x6fc0))
return decode_iclass_asisdlse(ctx, dec);
if(!(op0&11) && op1 && (op2&0x6fc0)==0x40)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_455_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_474_ldst
if(!(op0&11) && op1 && (op2&0x6800)==0x2000)
return decode_iclass_asisdlsep(ctx, dec);
if(!(op0&11) && op1 && (op2&0x4800)==0x800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_443_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_445_ldst
if(!(op0&11) && op1 && (op2&0x6f80)==0x4880)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_451_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_470_ldst
if(!(op0&11) && op1 && (op2&0x6f00)==0x4900)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_449_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_465_ldst
if(!(op0&11) && op1 && (op2&0x6e00)==0x4a00)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_447_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_460_ldst
if(!(op0&11) && op1 && (op2&0x6c00)==0x4c00)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_445_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_456_ldst
if(!(op0&11) && op1 && (op2&0x6780)==0x4000)
return decode_iclass_asisdlso(ctx, dec);
if(!(op0&11) && op1 && (op2&0x6000)==0x6000)
return decode_iclass_asisdlsop(ctx, dec);
if(!(op0&11) && op1 && (op2&0x2f80)==0x80)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_450_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_466_ldst
if(!(op0&11) && op1 && (op2&0x2f00)==0x100)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_448_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_461_ldst
if(!(op0&11) && op1 && (op2&0x2e00)==0x200)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_446_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_457_ldst
if(!(op0&11) && op1 && (op2&0x2c00)==0x400)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_444_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_452_ldst
if((op0&11)==1 && !op1 && (op2&0x4803)==0x4003)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_458_ldst
if((op0&11)==1 && !op1 && (op2&0x483f)==0x4802)
@@ -2788,11 +2831,11 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&11)==1 && !op1 && (op2&0x483f)==0x4803)
return decode_iclass_rcwcomswappr(ctx, dec);
if((op0&11)==1 && !op1 && (op2&0x483e)==0x4806)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_462_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_471_ldst
if((op0&11)==1 && !op1 && (op2&0x483a)==0x480a)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_461_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_467_ldst
if((op0&11)==1 && !op1 && (op2&0x4832)==0x4812)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_460_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_462_ldst
if((op0&11)==1 && !op1 && (op2&0x4822)==0x4822)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_459_ldst
if((op0&11)==1 && !op1 && (op2&0x4803)==0x4800)
@@ -2802,27 +2845,27 @@ int decode_spec(context *ctx, Instruction *dec)
if(op0==9 && !op1 && (op2&0x4803)==0x4003)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_463_ldst
if(op0==9 && op1 && (op2&0x4800)==0x4800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_440_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_453_ldst
if((op0&14)==8 && !op1 && (op2&0x4800)==0x4800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_439_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_446_ldst
if(op0==13 && !op1 && (op2&0x7fe3)==0x47c3)
return decode_iclass_ldst_gcs(ctx, dec);
if(op0==13 && !op1 && (op2&0x7fe3)==0x67c3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_472_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_485_ldst
if(op0==13 && !op1 && (op2&0x5c03)==0x4003)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_465_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_472_ldst
if(op0==13 && !op1 && (op2&0x5e03)==0x4403)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_466_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_475_ldst
if(op0==13 && !op1 && (op2&0x5f03)==0x4603)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_467_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_477_ldst
if(op0==13 && !op1 && (op2&0x5f83)==0x4703)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_468_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_479_ldst
if(op0==13 && !op1 && (op2&0x5fc3)==0x4783)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_469_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_481_ldst
if(op0==13 && !op1 && (op2&0x5fe3)==0x47e3)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_470_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_483_ldst
if(op0==13 && !op1 && (op2&0x5803)==0x5003)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_464_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_468_ldst
if(op0==13 && !op1 && (op2&0x4800)==0x4800)
return decode_iclass_ldsttags(ctx, dec);
if((op0&11)==8 && !op1 && (op2&0x6800)==0x800)
@@ -2832,11 +2875,11 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&11)==8 && !op1 && (op2&0x6800)==0x6000)
return decode_iclass_comswap_unpriv(ctx, dec);
if((op0&11)==8 && op1)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_438_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_444_ldst
if((op0&7)==4 && !op1 && (op2&0x4800)==0x4800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_441_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_447_ldst
if((op0&7)==5 && op1 && (op2&0x4800)==0x4800)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_452_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_448_ldst
if(!(op0&3) && !op1 && !(op2&0x6800))
return decode_iclass_ldstexclr(ctx, dec);
if(!(op0&3) && !op1 && (op2&0x6800)==0x2000)
@@ -2848,31 +2891,31 @@ int decode_spec(context *ctx, Instruction *dec)
if((op0&3)==1 && !op1 && (op2&0x6fff)==0x6002)
return decode_iclass_ldapstl_writeback(ctx, dec);
if((op0&3)==1 && !op1 && (op2&0x6fff)==0x6006)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_480_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_486_ldst
if((op0&3)==1 && !op1 && (op2&0x6ffb)==0x600a)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_479_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_484_ldst
if((op0&3)==1 && !op1 && (op2&0x6ff3)==0x6012)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_478_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_482_ldst
if((op0&3)==1 && !op1 && (op2&0x6fe3)==0x6022)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_477_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_480_ldst
if((op0&3)==1 && !op1 && (op2&0x6fc3)==0x6042)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_476_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_478_ldst
if((op0&3)==1 && !op1 && (op2&0x6f83)==0x6082)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_475_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_476_ldst
if((op0&3)==1 && !op1 && (op2&0x6f03)==0x6102)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_474_ldst
- if((op0&3)==1 && !op1 && (op2&0x6e03)==0x6202)
UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_473_ldst
+ if((op0&3)==1 && !op1 && (op2&0x6e03)==0x6202)
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_469_ldst
if((op0&3)==1 && !op1 && (op2&0x6c03)==0x6402)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_471_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_464_ldst
if((op0&3)==1 && !op1 && (op2&0x4803)==0x4000)
return decode_iclass_ldapstl_unscaled(ctx, dec);
if((op0&3)==1 && op1 && (op2&0x4803)==0x4000)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_456_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_454_ldst
if((op0&3)==1 && op1 && (op2&0x4803)==0x4002)
return decode_iclass_ldapstl_simd(ctx, dec);
if((op0&3)==1 && op1 && (op2&0x4803)==0x4003)
- UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_457_ldst
+ UNALLOCATED(ENC_UNKNOWN); // iclass: UNALLOCATED_455_ldst
if((op0&3)==1 && !(op2&0x4000))
return decode_iclass_loadlit(ctx, dec);
if((op0&3)==1 && (op2&0x4803)==0x4001)