cmhs_advsimd.xml */
| 2577 | |
| 2578 | /* cmhs_advsimd.xml */ |
| 2579 | int CMHS_advsimd(context *ctx, Instruction *instr) |
| 2580 | { |
| 2581 | int rc = DECODE_STATUS_UNMATCHED; |
| 2582 | /* class iclass_sisd */ |
| 2583 | /* 01|U=1|11110|size=xx|1|Rm=xxxxx|opcode[4:1]=0011|eq=1|1|Rn=xxxxx|Rd=xxxxx */ |
| 2584 | if((INSWORD & 0xFF20FC00)==0x7E203C00) { |
| 2585 | decode_fields32(ENC_CMHS_ASISDSAME_ONLY, ctx, instr); |
| 2586 | ctx->d = UINT(ctx->Rd); |
| 2587 | ctx->n = UINT(ctx->Rn); |
| 2588 | ctx->m = UINT(ctx->Rm); |
| 2589 | if(ctx->size!=3) { |
| 2590 | UNDEFINED; |
| 2591 | } |
| 2592 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2593 | ctx->datasize = ctx->esize; |
| 2594 | ctx->elements = 1; |
| 2595 | ctx->unsigned_ = (ctx->U==1); |
| 2596 | ctx->cmp_eq = (ctx->eq==1); |
| 2597 | OK(ENC_CMHS_ASISDSAME_ONLY); |
| 2598 | } |
| 2599 | /* class iclass_simd */ |
| 2600 | /* 0|Q=x|U=1|01110|size=xx|1|Rm=xxxxx|opcode[4:1]=0011|eq=1|1|Rn=xxxxx|Rd=xxxxx */ |
| 2601 | if((INSWORD & 0xBF20FC00)==0x2E203C00) { |
| 2602 | decode_fields32(ENC_CMHS_ASIMDSAME_ONLY, ctx, instr); |
| 2603 | ctx->d = UINT(ctx->Rd); |
| 2604 | ctx->n = UINT(ctx->Rn); |
| 2605 | ctx->m = UINT(ctx->Rm); |
| 2606 | if(((ctx->size<<1)|ctx->Q)==6) { |
| 2607 | UNDEFINED; |
| 2608 | } |
| 2609 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2610 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 2611 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 2612 | ctx->unsigned_ = (ctx->U==1); |
| 2613 | ctx->cmp_eq = (ctx->eq==1); |
| 2614 | OK(ENC_CMHS_ASIMDSAME_ONLY); |
| 2615 | } |
| 2616 | return rc; |
| 2617 | } |
| 2618 | |
| 2619 | /* cmle_advsimd.xml */ |
| 2620 | int CMLE_advsimd(context *ctx, Instruction *instr) |
no test coverage detected