| 1238 | } |
| 1239 | |
| 1240 | int decode_iclass_addsub_ext(context *ctx, Instruction *dec) |
| 1241 | { |
| 1242 | uint32_t sf=INSWORD>>31, op=(INSWORD>>30)&1, S=(INSWORD>>29)&1, opt=(INSWORD>>22)&3, imm3=(INSWORD>>10)&7; |
| 1243 | if(!sf && !op && !S && !opt) return ADD_addsub_ext(ctx, dec); // -> ADD_32_addsub_ext |
| 1244 | if(!sf && !op && S && !opt) return ADDS_addsub_ext(ctx, dec); // -> ADDS_32S_addsub_ext |
| 1245 | if(!sf && op && !S && !opt) return SUB_addsub_ext(ctx, dec); // -> SUB_32_addsub_ext |
| 1246 | if(!sf && op && S && !opt) return SUBS_addsub_ext(ctx, dec); // -> SUBS_32S_addsub_ext |
| 1247 | if(sf && !op && !S && !opt) return ADD_addsub_ext(ctx, dec); // -> ADD_64_addsub_ext |
| 1248 | if(sf && !op && S && !opt) return ADDS_addsub_ext(ctx, dec); // -> ADDS_64S_addsub_ext |
| 1249 | if(sf && op && !S && !opt) return SUB_addsub_ext(ctx, dec); // -> SUB_64_addsub_ext |
| 1250 | if(sf && op && S && !opt) return SUBS_addsub_ext(ctx, dec); // -> SUBS_64S_addsub_ext |
| 1251 | if((imm3&5)==5) UNALLOCATED(ENC_UNALLOCATED_12_ADDSUB_EXT); |
| 1252 | if((imm3&6)==6) UNALLOCATED(ENC_UNALLOCATED_13_ADDSUB_EXT); |
| 1253 | if(opt&1) UNALLOCATED(ENC_UNALLOCATED_11_ADDSUB_EXT); |
| 1254 | if((opt&2)==2) UNALLOCATED(ENC_UNALLOCATED_10_ADDSUB_EXT); |
| 1255 | UNMATCHED; |
| 1256 | } |
| 1257 | |
| 1258 | int decode_iclass_addsub_shift(context *ctx, Instruction *dec) |
| 1259 | { |
no test coverage detected