sqdmlsl_advsimd_elt.xml */
| 22257 | |
| 22258 | /* sqdmlsl_advsimd_elt.xml */ |
| 22259 | int SQDMLSL_advsimd_elt(context *ctx, Instruction *instr) |
| 22260 | { |
| 22261 | int rc = DECODE_STATUS_UNMATCHED; |
| 22262 | /* class iclass_2reg_scalar */ |
| 22263 | /* 01|U=0|11111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=1|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */ |
| 22264 | if((INSWORD & 0xFF00F400)==0x5F007000) { |
| 22265 | decode_fields32(ENC_SQDMLSL_ASISDELEM_L, ctx, instr); |
| 22266 | ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40; |
| 22267 | if(ctx->size==1) { |
| 22268 | ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M)); |
| 22269 | ctx->Rmhi = 0; |
| 22270 | } |
| 22271 | else if(ctx->size==2) { |
| 22272 | ctx->index = UINT(((ctx->H<<1)|ctx->L)); |
| 22273 | ctx->Rmhi = ctx->M; |
| 22274 | } |
| 22275 | else { |
| 22276 | UNDEFINED; |
| 22277 | } |
| 22278 | ctx->d = UINT(ctx->Rd); |
| 22279 | ctx->n = UINT(ctx->Rn); |
| 22280 | ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm)); |
| 22281 | ctx->esize = (8) << (UINT(ctx->size)); |
| 22282 | ctx->datasize = ctx->esize; |
| 22283 | ctx->elements = 1; |
| 22284 | ctx->part = 0; |
| 22285 | ctx->sub_op = (ctx->o2==1); |
| 22286 | OK(ENC_SQDMLSL_ASISDELEM_L); |
| 22287 | } |
| 22288 | /* class iclass_2reg_element */ |
| 22289 | /* 0|Q=x|U=0|01111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=1|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */ |
| 22290 | if((INSWORD & 0xBF00F400)==0xF007000) { |
| 22291 | decode_fields32(ENC_SQDMLSL_ASIMDELEM_L, ctx, instr); |
| 22292 | ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40; |
| 22293 | if(ctx->size==1) { |
| 22294 | ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M)); |
| 22295 | ctx->Rmhi = 0; |
| 22296 | } |
| 22297 | else if(ctx->size==2) { |
| 22298 | ctx->index = UINT(((ctx->H<<1)|ctx->L)); |
| 22299 | ctx->Rmhi = ctx->M; |
| 22300 | } |
| 22301 | else { |
| 22302 | UNDEFINED; |
| 22303 | } |
| 22304 | ctx->d = UINT(ctx->Rd); |
| 22305 | ctx->n = UINT(ctx->Rn); |
| 22306 | ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm)); |
| 22307 | ctx->esize = (8) << (UINT(ctx->size)); |
| 22308 | ctx->datasize = 0x40; |
| 22309 | ctx->part = UINT(ctx->Q); |
| 22310 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 22311 | ctx->sub_op = (ctx->o2==1); |
| 22312 | OK(ENC_SQDMLSL_ASIMDELEM_L); |
| 22313 | } |
| 22314 | return rc; |
| 22315 | } |
| 22316 |
no test coverage detected