cmle_advsimd.xml */
| 2618 | |
| 2619 | /* cmle_advsimd.xml */ |
| 2620 | int CMLE_advsimd(context *ctx, Instruction *instr) |
| 2621 | { |
| 2622 | int rc = DECODE_STATUS_UNMATCHED; |
| 2623 | /* class iclass_sisd */ |
| 2624 | /* 01|U=1|11110|size=xx|10000|opcode[4:1]=0100|op=1|10|Rn=xxxxx|Rd=xxxxx */ |
| 2625 | if((INSWORD & 0xFF3FFC00)==0x7E209800) { |
| 2626 | decode_fields32(ENC_CMLE_ASISDMISC_Z, ctx, instr); |
| 2627 | ctx->d = UINT(ctx->Rd); |
| 2628 | ctx->n = UINT(ctx->Rn); |
| 2629 | if(ctx->size!=3) { |
| 2630 | UNDEFINED; |
| 2631 | } |
| 2632 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2633 | ctx->datasize = ctx->esize; |
| 2634 | ctx->elements = 1; |
| 2635 | if(!((ctx->op<<1)|ctx->U)) { |
| 2636 | ctx->comparison = CompareOp_GT; |
| 2637 | } |
| 2638 | else if(((ctx->op<<1)|ctx->U)==1) { |
| 2639 | ctx->comparison = CompareOp_GE; |
| 2640 | } |
| 2641 | else if(((ctx->op<<1)|ctx->U)==2) { |
| 2642 | ctx->comparison = CompareOp_EQ; |
| 2643 | } |
| 2644 | else if(((ctx->op<<1)|ctx->U)==3) { |
| 2645 | ctx->comparison = CompareOp_LE; |
| 2646 | } |
| 2647 | OK(ENC_CMLE_ASISDMISC_Z); |
| 2648 | } |
| 2649 | /* class iclass_simd */ |
| 2650 | /* 0|Q=x|U=1|01110|size=xx|10000|opcode[4:1]=0100|op=1|10|Rn=xxxxx|Rd=xxxxx */ |
| 2651 | if((INSWORD & 0xBF3FFC00)==0x2E209800) { |
| 2652 | decode_fields32(ENC_CMLE_ASIMDMISC_Z, ctx, instr); |
| 2653 | ctx->d = UINT(ctx->Rd); |
| 2654 | ctx->n = UINT(ctx->Rn); |
| 2655 | if(((ctx->size<<1)|ctx->Q)==6) { |
| 2656 | UNDEFINED; |
| 2657 | } |
| 2658 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2659 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 2660 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 2661 | if(!((ctx->op<<1)|ctx->U)) { |
| 2662 | ctx->comparison = CompareOp_GT; |
| 2663 | } |
| 2664 | else if(((ctx->op<<1)|ctx->U)==1) { |
| 2665 | ctx->comparison = CompareOp_GE; |
| 2666 | } |
| 2667 | else if(((ctx->op<<1)|ctx->U)==2) { |
| 2668 | ctx->comparison = CompareOp_EQ; |
| 2669 | } |
| 2670 | else if(((ctx->op<<1)|ctx->U)==3) { |
| 2671 | ctx->comparison = CompareOp_LE; |
| 2672 | } |
| 2673 | OK(ENC_CMLE_ASIMDMISC_Z); |
| 2674 | } |
| 2675 | return rc; |
| 2676 | } |
| 2677 |
no test coverage detected