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

Function FRINT64X_float

arch/arm64/disassembler/decode2.c:10442–10469  ·  view source on GitHub ↗

frint64x_float.xml */

Source from the content-addressed store, hash-verified

10440
10441/* frint64x_float.xml */
10442int FRINT64X_float(context *ctx, Instruction *instr)
10443{
10444 int rc = DECODE_STATUS_UNMATCHED;
10445 /* class iclass_float */
10446 /* M=0|0|S=0|11110|ftype=0x|1|0100|op=11|10000|Rn=xxxxx|Rd=xxxxx */
10447 if((INSWORD & 0xFFBFFC00)==0x1E29C000) {
10448 decode_fields32(ENC_FRINT64X_S_FLOATDP1, ctx, instr);
10449 if(!HaveFrintExt()) {
10450 UNDEFINED;
10451 }
10452 ctx->d = UINT(ctx->Rd);
10453 ctx->n = UINT(ctx->Rn);
10454 if(!ctx->ftype) {
10455 ctx->esize = 0x20;
10456 }
10457 else if(ctx->ftype==1) {
10458 ctx->esize = 0x40;
10459 }
10460 else if((ctx->ftype&2)==2) {
10461 UNDEFINED;
10462 }
10463 ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40;
10464 ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR);
10465 if(ctx->ftype==0) OK(ENC_FRINT64X_S_FLOATDP1);
10466 if(ctx->ftype==1) OK(ENC_FRINT64X_D_FLOATDP1);
10467 }
10468 return rc;
10469}
10470
10471/* frint64z_advsimd.xml */
10472int FRINT64Z_advsimd(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp1Function · 0.85

Calls 2

decode_fields32Function · 0.85
FPRoundingModeFunction · 0.85

Tested by

no test coverage detected