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

Function FMAXNMP_advsimd_vec

arch/arm64/disassembler/decode2.c:8065–8103  ·  view source on GitHub ↗

fmaxnmp_advsimd_vec.xml */

Source from the content-addressed store, hash-verified

8063
8064/* fmaxnmp_advsimd_vec.xml */
8065int FMAXNMP_advsimd_vec(context *ctx, Instruction *instr)
8066{
8067 int rc = DECODE_STATUS_UNMATCHED;
8068 /* class iclass_half */
8069 /* 0|Q=x|U=1|01110|a=0|10|Rm=xxxxx|00|Op3=000|1|Rn=xxxxx|Rd=xxxxx */
8070 if((INSWORD & 0xBFE0FC00)==0x2E400400) {
8071 decode_fields32(ENC_FMAXNMP_ASIMDSAMEFP16_ONLY, ctx, instr);
8072 if(!HaveFP16Ext()) {
8073 UNDEFINED;
8074 }
8075 ctx->d = UINT(ctx->Rd);
8076 ctx->n = UINT(ctx->Rn);
8077 ctx->m = UINT(ctx->Rm);
8078 ctx->esize = 0x10;
8079 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8080 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8081 ctx->pair = (ctx->U==1);
8082 ctx->minimum = (ctx->a==1);
8083 OK(ENC_FMAXNMP_ASIMDSAMEFP16_ONLY);
8084 }
8085 /* class iclass_single_and_double */
8086 /* 0|Q=x|U=1|01110|o1=0|sz=x|1|Rm=xxxxx|opcode=11000|1|Rn=xxxxx|Rd=xxxxx */
8087 if((INSWORD & 0xBFA0FC00)==0x2E20C400) {
8088 decode_fields32(ENC_FMAXNMP_ASIMDSAME_ONLY, ctx, instr);
8089 ctx->d = UINT(ctx->Rd);
8090 ctx->n = UINT(ctx->Rn);
8091 ctx->m = UINT(ctx->Rm);
8092 if(((ctx->sz<<1)|ctx->Q)==2) {
8093 UNDEFINED;
8094 }
8095 ctx->esize = (0x20) << (UINT(ctx->sz));
8096 ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40;
8097 ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0);
8098 ctx->pair = (ctx->U==1);
8099 ctx->minimum = (ctx->o1==1);
8100 OK(ENC_FMAXNMP_ASIMDSAME_ONLY);
8101 }
8102 return rc;
8103}
8104
8105/* fmaxnmv_advsimd.xml */
8106int FMAXNMV_advsimd(context *ctx, Instruction *instr)

Callers 2

decode_iclass_asimdsameFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected