fdiv_advsimd.xml */
| 7835 | |
| 7836 | /* fdiv_advsimd.xml */ |
| 7837 | int FDIV_advsimd(context *ctx, Instruction *instr) |
| 7838 | { |
| 7839 | int rc = DECODE_STATUS_UNMATCHED; |
| 7840 | /* class iclass_half */ |
| 7841 | /* 0|Q=x|U=1|01110|a=0|10|Rm=xxxxx|00|opcode=111|1|Rn=xxxxx|Rd=xxxxx */ |
| 7842 | if((INSWORD & 0xBFE0FC00)==0x2E403C00) { |
| 7843 | decode_fields32(ENC_FDIV_ASIMDSAMEFP16_ONLY, ctx, instr); |
| 7844 | if(!HaveFP16Ext()) { |
| 7845 | UNDEFINED; |
| 7846 | } |
| 7847 | ctx->d = UINT(ctx->Rd); |
| 7848 | ctx->n = UINT(ctx->Rn); |
| 7849 | ctx->m = UINT(ctx->Rm); |
| 7850 | ctx->esize = 0x10; |
| 7851 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 7852 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 7853 | OK(ENC_FDIV_ASIMDSAMEFP16_ONLY); |
| 7854 | } |
| 7855 | /* class iclass_single_and_double */ |
| 7856 | /* 0|Q=x|U=1|01110|size[1]=0|sz=x|1|Rm=xxxxx|opcode=11111|1|Rn=xxxxx|Rd=xxxxx */ |
| 7857 | if((INSWORD & 0xBFA0FC00)==0x2E20FC00) { |
| 7858 | decode_fields32(ENC_FDIV_ASIMDSAME_ONLY, ctx, instr); |
| 7859 | ctx->d = UINT(ctx->Rd); |
| 7860 | ctx->n = UINT(ctx->Rn); |
| 7861 | ctx->m = UINT(ctx->Rm); |
| 7862 | if(((ctx->sz<<1)|ctx->Q)==2) { |
| 7863 | UNDEFINED; |
| 7864 | } |
| 7865 | ctx->esize = (0x20) << (UINT(ctx->sz)); |
| 7866 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 7867 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 7868 | OK(ENC_FDIV_ASIMDSAME_ONLY); |
| 7869 | } |
| 7870 | return rc; |
| 7871 | } |
| 7872 | |
| 7873 | /* fdiv_float.xml */ |
| 7874 | int FDIV_float(context *ctx, Instruction *instr) |
no test coverage detected