smov_advsimd.xml */
| 21916 | |
| 21917 | /* smov_advsimd.xml */ |
| 21918 | int 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 */ |
| 21950 | int SMSTART_MSR_imm(context *ctx, Instruction *instr) |
no test coverage detected