| 1537 | } |
| 1538 | |
| 1539 | int decode_iclass_asimdins(context *ctx, Instruction *dec) |
| 1540 | { |
| 1541 | uint32_t Q=(INSWORD>>30)&1, op=(INSWORD>>29)&1, imm5=(INSWORD>>16)&0x1f, imm4=(INSWORD>>11)&15; |
| 1542 | if(Q && !op && (imm5&15)==8 && imm4==7) return UMOV_advsimd(ctx, dec); // -> UMOV_asimdins_X_x |
| 1543 | if(!Q && !op && imm4==3) UNALLOCATED(ENC_UNALLOCATED_17_ASIMDINS); |
| 1544 | if(!Q && !op && imm4==5) return SMOV_advsimd(ctx, dec); // -> SMOV_asimdins_W_w |
| 1545 | if(!Q && !op && imm4==7) return UMOV_advsimd(ctx, dec); // -> UMOV_asimdins_W_w |
| 1546 | if(Q && !op && imm4==3) return INS_advsimd_gen(ctx, dec); // -> INS_asimdins_IR_r |
| 1547 | if(Q && !op && imm4==5) return SMOV_advsimd(ctx, dec); // -> SMOV_asimdins_X_x |
| 1548 | if(!op && !imm4) return DUP_advsimd_elt(ctx, dec); // -> DUP_asimdins_DV_v |
| 1549 | if(!op && imm4==1) return DUP_advsimd_gen(ctx, dec); // -> DUP_asimdins_DR_r |
| 1550 | if(!op && imm4==2) UNALLOCATED(ENC_UNALLOCATED_15_ASIMDINS); |
| 1551 | if(!op && imm4==4) UNALLOCATED(ENC_UNALLOCATED_18_ASIMDINS); |
| 1552 | if(!op && imm4==6) UNALLOCATED(ENC_UNALLOCATED_21_ASIMDINS); |
| 1553 | if(!(imm5&15)) UNALLOCATED(ENC_UNALLOCATED_11_ASIMDINS); |
| 1554 | if(!op && (imm4&8)==8) UNALLOCATED(ENC_UNALLOCATED_24_ASIMDINS); |
| 1555 | if(!Q && op) UNALLOCATED(ENC_UNALLOCATED_12_ASIMDINS); |
| 1556 | if(Q && op) return INS_advsimd_elt(ctx, dec); // -> INS_asimdins_IV_v |
| 1557 | UNMATCHED; |
| 1558 | } |
| 1559 | |
| 1560 | int decode_iclass_asimdext(context *ctx, Instruction *dec) |
| 1561 | { |
no test coverage detected