fminp_advsimd_vec.xml */
| 8672 | |
| 8673 | /* fminp_advsimd_vec.xml */ |
| 8674 | int FMINP_advsimd_vec(context *ctx, Instruction *instr) |
| 8675 | { |
| 8676 | int rc = DECODE_STATUS_UNMATCHED; |
| 8677 | /* class iclass_half */ |
| 8678 | /* 0|Q=x|U=1|01110|o1=1|10|Rm=xxxxx|00|opcode=110|1|Rn=xxxxx|Rd=xxxxx */ |
| 8679 | if((INSWORD & 0xBFE0FC00)==0x2EC03400) { |
| 8680 | decode_fields32(ENC_FMINP_ASIMDSAMEFP16_ONLY, ctx, instr); |
| 8681 | if(!HaveFP16Ext()) { |
| 8682 | UNDEFINED; |
| 8683 | } |
| 8684 | ctx->d = UINT(ctx->Rd); |
| 8685 | ctx->n = UINT(ctx->Rn); |
| 8686 | ctx->m = UINT(ctx->Rm); |
| 8687 | ctx->esize = 0x10; |
| 8688 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 8689 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 8690 | ctx->pair = (ctx->U==1); |
| 8691 | ctx->minimum = (ctx->o1==1); |
| 8692 | OK(ENC_FMINP_ASIMDSAMEFP16_ONLY); |
| 8693 | } |
| 8694 | /* class iclass_single_and_double */ |
| 8695 | /* 0|Q=x|U=1|01110|o1=1|sz=x|1|Rm=xxxxx|opcode=11110|1|Rn=xxxxx|Rd=xxxxx */ |
| 8696 | if((INSWORD & 0xBFA0FC00)==0x2EA0F400) { |
| 8697 | decode_fields32(ENC_FMINP_ASIMDSAME_ONLY, ctx, instr); |
| 8698 | ctx->d = UINT(ctx->Rd); |
| 8699 | ctx->n = UINT(ctx->Rn); |
| 8700 | ctx->m = UINT(ctx->Rm); |
| 8701 | if(((ctx->sz<<1)|ctx->Q)==2) { |
| 8702 | UNDEFINED; |
| 8703 | } |
| 8704 | ctx->esize = (0x20) << (UINT(ctx->sz)); |
| 8705 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 8706 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 8707 | ctx->pair = (ctx->U==1); |
| 8708 | ctx->minimum = (ctx->o1==1); |
| 8709 | OK(ENC_FMINP_ASIMDSAME_ONLY); |
| 8710 | } |
| 8711 | return rc; |
| 8712 | } |
| 8713 | |
| 8714 | /* fminv_advsimd.xml */ |
| 8715 | int FMINV_advsimd(context *ctx, Instruction *instr) |
no test coverage detected