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

Function FMAX_advsimd

arch/arm64/disassembler/decode2.c:8346–8384  ·  view source on GitHub ↗

fmax_advsimd.xml */

Source from the content-addressed store, hash-verified

8344
8345/* fmax_advsimd.xml */
8346int FMAX_advsimd(context *ctx, Instruction *instr)
8347{
8348 int rc = DECODE_STATUS_UNMATCHED;
8349 /* class iclass_half */
8350 /* 0|Q=x|U=0|01110|o1=0|10|Rm=xxxxx|00|opcode=110|1|Rn=xxxxx|Rd=xxxxx */
8351 if((INSWORD & 0xBFE0FC00)==0xE403400) {
8352 decode_fields32(ENC_FMAX_ASIMDSAMEFP16_ONLY, ctx, instr);
8353 if(!HaveFP16Ext()) {
8354 UNDEFINED;
8355 }
8356 ctx->d = UINT(ctx->Rd);
8357 ctx->n = UINT(ctx->Rn);
8358 ctx->m = UINT(ctx->Rm);
8359 ctx->esize = 0x10;
8360 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8361 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8362 ctx->pair = (ctx->U==1);
8363 ctx->minimum = (ctx->o1==1);
8364 OK(ENC_FMAX_ASIMDSAMEFP16_ONLY);
8365 }
8366 /* class iclass_single_and_double */
8367 /* 0|Q=x|U=0|01110|o1=0|sz=x|1|Rm=xxxxx|opcode=11110|1|Rn=xxxxx|Rd=xxxxx */
8368 if((INSWORD & 0xBFA0FC00)==0xE20F400) {
8369 decode_fields32(ENC_FMAX_ASIMDSAME_ONLY, ctx, instr);
8370 ctx->d = UINT(ctx->Rd);
8371 ctx->n = UINT(ctx->Rn);
8372 ctx->m = UINT(ctx->Rm);
8373 if(((ctx->sz<<1)|ctx->Q)==2) {
8374 UNDEFINED;
8375 }
8376 ctx->esize = (0x20) << (UINT(ctx->sz));
8377 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8378 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8379 ctx->pair = (ctx->U==1);
8380 ctx->minimum = (ctx->o1==1);
8381 OK(ENC_FMAX_ASIMDSAME_ONLY);
8382 }
8383 return rc;
8384}
8385
8386/* fmax_float.xml */
8387int FMAX_float(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected