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

Function FMAXNM_float

arch/arm64/disassembler/decode2.c:8184–8228  ·  view source on GitHub ↗

fmaxnm_float.xml */

Source from the content-addressed store, hash-verified

8182
8183/* fmaxnm_float.xml */
8184int FMAXNM_float(context *ctx, Instruction *instr)
8185{
8186 int rc = DECODE_STATUS_UNMATCHED;
8187 /* class iclass_float */
8188 /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|opcode[3:2]=01|op=10|10|Rn=xxxxx|Rd=xxxxx */
8189 if((INSWORD & 0xFF20FC00)==0x1E206800) {
8190 decode_fields32(ENC_FMAXNM_H_FLOATDP2, ctx, instr);
8191 ctx->d = UINT(ctx->Rd);
8192 ctx->n = UINT(ctx->Rn);
8193 ctx->m = UINT(ctx->Rm);
8194 if(!ctx->ftype) {
8195 ctx->esize = 0x20;
8196 }
8197 else if(ctx->ftype==1) {
8198 ctx->esize = 0x40;
8199 }
8200 else if(ctx->ftype==2) {
8201 UNDEFINED;
8202 }
8203 else if(ctx->ftype==3) {
8204 if(HaveFP16Ext()) {
8205 ctx->esize = 0x10;
8206 }
8207 else {
8208 UNDEFINED;
8209 }
8210 }
8211 if(!ctx->op) {
8212 ctx->operation_ = FPMaxMinOp_MAX;
8213 }
8214 else if(ctx->op==1) {
8215 ctx->operation_ = FPMaxMinOp_MIN;
8216 }
8217 else if(ctx->op==2) {
8218 ctx->operation_ = FPMaxMinOp_MAXNUM;
8219 }
8220 else if(ctx->op==3) {
8221 ctx->operation_ = FPMaxMinOp_MINNUM;
8222 }
8223 if(ctx->ftype==3) OK(ENC_FMAXNM_H_FLOATDP2);
8224 if(ctx->ftype==0) OK(ENC_FMAXNM_S_FLOATDP2);
8225 if(ctx->ftype==1) OK(ENC_FMAXNM_D_FLOATDP2);
8226 }
8227 return rc;
8228}
8229
8230/* fmaxp_advsimd_pair.xml */
8231int FMAXP_advsimd_pair(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp2Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected