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

Function FABS_float

arch/arm64/disassembler/decode2.c:4147–4190  ·  view source on GitHub ↗

fabs_float.xml */

Source from the content-addressed store, hash-verified

4145
4146/* fabs_float.xml */
4147int FABS_float(context *ctx, Instruction *instr)
4148{
4149 int rc = DECODE_STATUS_UNMATCHED;
4150 /* class iclass_float */
4151 /* M=0|0|S=0|11110|ftype=xx|1|opcode[5:2]=0000|opc=01|10000|Rn=xxxxx|Rd=xxxxx */
4152 if((INSWORD & 0xFF3FFC00)==0x1E20C000) {
4153 decode_fields32(ENC_FABS_H_FLOATDP1, ctx, instr);
4154 ctx->d = UINT(ctx->Rd);
4155 ctx->n = UINT(ctx->Rn);
4156 if(!ctx->ftype) {
4157 ctx->esize = 0x20;
4158 }
4159 else if(ctx->ftype==1) {
4160 ctx->esize = 0x40;
4161 }
4162 else if(ctx->ftype==2) {
4163 UNDEFINED;
4164 }
4165 else if(ctx->ftype==3) {
4166 if(HaveFP16Ext()) {
4167 ctx->esize = 0x10;
4168 }
4169 else {
4170 UNDEFINED;
4171 }
4172 }
4173 if(!ctx->opc) {
4174 ctx->fpop = FPUnaryOp_MOV;
4175 }
4176 else if(ctx->opc==1) {
4177 ctx->fpop = FPUnaryOp_ABS;
4178 }
4179 else if(ctx->opc==2) {
4180 ctx->fpop = FPUnaryOp_NEG;
4181 }
4182 else if(ctx->opc==3) {
4183 ctx->fpop = FPUnaryOp_SQRT;
4184 }
4185 if(ctx->ftype==3) OK(ENC_FABS_H_FLOATDP1);
4186 if(ctx->ftype==0) OK(ENC_FABS_S_FLOATDP1);
4187 if(ctx->ftype==1) OK(ENC_FABS_D_FLOATDP1);
4188 }
4189 return rc;
4190}
4191
4192/* facge_advsimd.xml */
4193int FACGE_advsimd(context *ctx, Instruction *instr)

Callers 1

decode_iclass_floatdp1Function · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected