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

Function FRINT32X_float

arch/arm64/disassembler/decode2.c:10330–10357  ·  view source on GitHub ↗

frint32x_float.xml */

Source from the content-addressed store, hash-verified

10328
10329/* frint32x_float.xml */
10330int FRINT32X_float(context *ctx, Instruction *instr)
10331{
10332 int rc = DECODE_STATUS_UNMATCHED;
10333 /* class iclass_float */
10334 /* M=0|0|S=0|11110|ftype=0x|1|0100|op=01|10000|Rn=xxxxx|Rd=xxxxx */
10335 if((INSWORD & 0xFFBFFC00)==0x1E28C000) {
10336 decode_fields32(ENC_FRINT32X_S_FLOATDP1, ctx, instr);
10337 if(!HaveFrintExt()) {
10338 UNDEFINED;
10339 }
10340 ctx->d = UINT(ctx->Rd);
10341 ctx->n = UINT(ctx->Rn);
10342 if(!ctx->ftype) {
10343 ctx->esize = 0x20;
10344 }
10345 else if(ctx->ftype==1) {
10346 ctx->esize = 0x40;
10347 }
10348 else if((ctx->ftype&2)==2) {
10349 UNDEFINED;
10350 }
10351 ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40;
10352 ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR);
10353 if(ctx->ftype==0) OK(ENC_FRINT32X_S_FLOATDP1);
10354 if(ctx->ftype==1) OK(ENC_FRINT32X_D_FLOATDP1);
10355 }
10356 return rc;
10357}
10358
10359/* frint32z_advsimd.xml */
10360int FRINT32Z_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