fcvt_float.xml */
| 7788 | |
| 7789 | /* fcvt_float.xml */ |
| 7790 | int FCVT_float(context *ctx, Instruction *instr) |
| 7791 | { |
| 7792 | int rc = DECODE_STATUS_UNMATCHED; |
| 7793 | /* class iclass_float */ |
| 7794 | /* M=0|0|S=0|11110|ftype=xx|1|opcode[5:2]=0001|opc=xx|10000|Rn=xxxxx|Rd=xxxxx */ |
| 7795 | if((INSWORD & 0xFF3E7C00)==0x1E224000) { |
| 7796 | decode_fields32(ENC_FCVT_SH_FLOATDP1, ctx, instr); |
| 7797 | ctx->d = UINT(ctx->Rd); |
| 7798 | ctx->n = UINT(ctx->Rn); |
| 7799 | if(ctx->ftype==ctx->opc) { |
| 7800 | UNDEFINED; |
| 7801 | } |
| 7802 | if(!ctx->ftype) { |
| 7803 | ctx->srcsize = 0x20; |
| 7804 | } |
| 7805 | else if(ctx->ftype==1) { |
| 7806 | ctx->srcsize = 0x40; |
| 7807 | } |
| 7808 | else if(ctx->ftype==2) { |
| 7809 | UNDEFINED; |
| 7810 | } |
| 7811 | else if(ctx->ftype==3) { |
| 7812 | ctx->srcsize = 0x10; |
| 7813 | } |
| 7814 | if(!ctx->opc) { |
| 7815 | ctx->dstsize = 0x20; |
| 7816 | } |
| 7817 | else if(ctx->opc==1) { |
| 7818 | ctx->dstsize = 0x40; |
| 7819 | } |
| 7820 | else if(ctx->opc==2) { |
| 7821 | UNDEFINED; |
| 7822 | } |
| 7823 | else if(ctx->opc==3) { |
| 7824 | ctx->dstsize = 0x10; |
| 7825 | } |
| 7826 | if(ctx->ftype==3 && ctx->opc==0) OK(ENC_FCVT_SH_FLOATDP1); |
| 7827 | if(ctx->ftype==3 && ctx->opc==1) OK(ENC_FCVT_DH_FLOATDP1); |
| 7828 | if(ctx->ftype==0 && ctx->opc==3) OK(ENC_FCVT_HS_FLOATDP1); |
| 7829 | if(ctx->ftype==0 && ctx->opc==1) OK(ENC_FCVT_DS_FLOATDP1); |
| 7830 | if(ctx->ftype==1 && ctx->opc==3) OK(ENC_FCVT_HD_FLOATDP1); |
| 7831 | if(ctx->ftype==1 && ctx->opc==0) OK(ENC_FCVT_SD_FLOATDP1); |
| 7832 | } |
| 7833 | return rc; |
| 7834 | } |
| 7835 | |
| 7836 | /* fdiv_advsimd.xml */ |
| 7837 | int FDIV_advsimd(context *ctx, Instruction *instr) |
no test coverage detected