| 1187 | } |
| 1188 | |
| 1189 | int decode_iclass_extract(context *ctx, Instruction *dec) |
| 1190 | { |
| 1191 | uint32_t sf=INSWORD>>31, op21=(INSWORD>>29)&3, N=(INSWORD>>22)&1, o0=(INSWORD>>21)&1, imms=(INSWORD>>10)&0x3f; |
| 1192 | if(!sf && !op21 && !N && !o0 && !(imms&0x20)) return EXTR(ctx, dec); // -> EXTR_32_extract |
| 1193 | if(sf && !op21 && N && !o0) return EXTR(ctx, dec); // -> EXTR_64_extract |
| 1194 | if(!op21 && o0) UNALLOCATED(ENC_UNALLOCATED_16_EXTRACT); |
| 1195 | if(!sf && (imms&0x20)==0x20) UNALLOCATED(ENC_UNALLOCATED_13_EXTRACT); |
| 1196 | if(!sf && N) UNALLOCATED(ENC_UNALLOCATED_12_EXTRACT); |
| 1197 | if(sf && !N) UNALLOCATED(ENC_UNALLOCATED_11_EXTRACT); |
| 1198 | if(op21&1) UNALLOCATED(ENC_UNALLOCATED_17_EXTRACT); |
| 1199 | if((op21&2)==2) UNALLOCATED(ENC_UNALLOCATED_18_EXTRACT); |
| 1200 | UNMATCHED; |
| 1201 | } |
| 1202 | |
| 1203 | int decode_iclass_log_imm(context *ctx, Instruction *dec) |
| 1204 | { |