MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / FCVT_float

Function FCVT_float

arch/arm64/disassembler/decode2.c:7790–7834  ·  view source on GitHub ↗

fcvt_float.xml */

Source from the content-addressed store, hash-verified

7788
7789/* fcvt_float.xml */
7790int 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 */
7837int FDIV_advsimd(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp1Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected