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

Function FRINT32Z_float

arch/arm64/disassembler/decode2.c:10386–10413  ·  view source on GitHub ↗

frint32z_float.xml */

Source from the content-addressed store, hash-verified

10384
10385/* frint32z_float.xml */
10386int FRINT32Z_float(context *ctx, Instruction *instr)
10387{
10388 int rc = DECODE_STATUS_UNMATCHED;
10389 /* class iclass_float */
10390 /* M=0|0|S=0|11110|ftype=0x|1|0100|op=00|10000|Rn=xxxxx|Rd=xxxxx */
10391 if((INSWORD & 0xFFBFFC00)==0x1E284000) {
10392 decode_fields32(ENC_FRINT32Z_S_FLOATDP1, ctx, instr);
10393 if(!HaveFrintExt()) {
10394 UNDEFINED;
10395 }
10396 ctx->d = UINT(ctx->Rd);
10397 ctx->n = UINT(ctx->Rn);
10398 if(!ctx->ftype) {
10399 ctx->esize = 0x20;
10400 }
10401 else if(ctx->ftype==1) {
10402 ctx->esize = 0x40;
10403 }
10404 else if((ctx->ftype&2)==2) {
10405 UNDEFINED;
10406 }
10407 ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40;
10408 ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR);
10409 if(ctx->ftype==0) OK(ENC_FRINT32Z_S_FLOATDP1);
10410 if(ctx->ftype==1) OK(ENC_FRINT32Z_D_FLOATDP1);
10411 }
10412 return rc;
10413}
10414
10415/* frint64x_advsimd.xml */
10416int FRINT64X_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