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

Function SMOV_advsimd

arch/arm64/disassembler/decode2.c:21918–21947  ·  view source on GitHub ↗

smov_advsimd.xml */

Source from the content-addressed store, hash-verified

21916
21917/* smov_advsimd.xml */
21918int SMOV_advsimd(context *ctx, Instruction *instr)
21919{
21920 int rc = DECODE_STATUS_UNMATCHED;
21921 /* class iclass_advsimd */
21922 /* 0|Q=x|op=0|01110000|imm5=xxxxx|0|imm4[3:2]=01|imm4[1]=0|imm4[0]=1|1|Rn=xxxxx|Rd=xxxxx */
21923 if((INSWORD & 0xBFE0FC00)==0xE002C00) {
21924 decode_fields32(ENC_SMOV_ASIMDINS_W_W, ctx, instr);
21925 ctx->d = UINT(ctx->Rd);
21926 ctx->n = UINT(ctx->Rn);
21927 if(((ctx->Q<<5)|ctx->imm5)&1) {
21928 ctx->size = 0;
21929 }
21930 else if((((ctx->Q<<5)|ctx->imm5)&3)==2) {
21931 ctx->size = 1;
21932 }
21933 else if((((ctx->Q<<5)|ctx->imm5)&0x27)==0x24) {
21934 ctx->size = 2;
21935 }
21936 else {
21937 UNDEFINED;
21938 }
21939 ctx->idxdsize = (SLICE(ctx->imm5,4,4)==1) ? 0x80 : 0x40;
21940 ctx->index = UINT(SLICE(ctx->imm5,4,ctx->size+1));
21941 ctx->esize = (8) << (ctx->size);
21942 ctx->datasize = (ctx->Q==1) ? 0x40 : 0x20;
21943 if(ctx->Q==0) OK(ENC_SMOV_ASIMDINS_W_W);
21944 if(ctx->Q==1) OK(ENC_SMOV_ASIMDINS_X_X);
21945 }
21946 return rc;
21947}
21948
21949/* smstart_msr_imm.xml */
21950int SMSTART_MSR_imm(context *ctx, Instruction *instr)

Callers 1

decode_iclass_asimdinsFunction · 0.85

Calls 1

decode_fields32Function · 0.85

Tested by

no test coverage detected