sqdmull_advsimd_elt.xml */
| 22453 | |
| 22454 | /* sqdmull_advsimd_elt.xml */ |
| 22455 | int SQDMULL_advsimd_elt(context *ctx, Instruction *instr) |
| 22456 | { |
| 22457 | int rc = DECODE_STATUS_UNMATCHED; |
| 22458 | /* class iclass_2reg_scalar */ |
| 22459 | /* 01|U=0|11111|size=xx|L=x|M=x|Rm=xxxx|opcode=1011|H=x|0|Rn=xxxxx|Rd=xxxxx */ |
| 22460 | if((INSWORD & 0xFF00F400)==0x5F00B000) { |
| 22461 | decode_fields32(ENC_SQDMULL_ASISDELEM_L, ctx, instr); |
| 22462 | ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40; |
| 22463 | if(ctx->size==1) { |
| 22464 | ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M)); |
| 22465 | ctx->Rmhi = 0; |
| 22466 | } |
| 22467 | else if(ctx->size==2) { |
| 22468 | ctx->index = UINT(((ctx->H<<1)|ctx->L)); |
| 22469 | ctx->Rmhi = ctx->M; |
| 22470 | } |
| 22471 | else { |
| 22472 | UNDEFINED; |
| 22473 | } |
| 22474 | ctx->d = UINT(ctx->Rd); |
| 22475 | ctx->n = UINT(ctx->Rn); |
| 22476 | ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm)); |
| 22477 | ctx->esize = (8) << (UINT(ctx->size)); |
| 22478 | ctx->datasize = ctx->esize; |
| 22479 | ctx->elements = 1; |
| 22480 | ctx->part = 0; |
| 22481 | OK(ENC_SQDMULL_ASISDELEM_L); |
| 22482 | } |
| 22483 | /* class iclass_2reg_element */ |
| 22484 | /* 0|Q=x|U=0|01111|size=xx|L=x|M=x|Rm=xxxx|opcode=1011|H=x|0|Rn=xxxxx|Rd=xxxxx */ |
| 22485 | if((INSWORD & 0xBF00F400)==0xF00B000) { |
| 22486 | decode_fields32(ENC_SQDMULL_ASIMDELEM_L, ctx, instr); |
| 22487 | ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40; |
| 22488 | if(ctx->size==1) { |
| 22489 | ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M)); |
| 22490 | ctx->Rmhi = 0; |
| 22491 | } |
| 22492 | else if(ctx->size==2) { |
| 22493 | ctx->index = UINT(((ctx->H<<1)|ctx->L)); |
| 22494 | ctx->Rmhi = ctx->M; |
| 22495 | } |
| 22496 | else { |
| 22497 | UNDEFINED; |
| 22498 | } |
| 22499 | ctx->d = UINT(ctx->Rd); |
| 22500 | ctx->n = UINT(ctx->Rn); |
| 22501 | ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm)); |
| 22502 | ctx->esize = (8) << (UINT(ctx->size)); |
| 22503 | ctx->datasize = 0x40; |
| 22504 | ctx->part = UINT(ctx->Q); |
| 22505 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 22506 | OK(ENC_SQDMULL_ASIMDELEM_L); |
| 22507 | } |
| 22508 | return rc; |
| 22509 | } |
| 22510 | |
| 22511 | /* sqdmull_advsimd_vec.xml */ |
| 22512 | int SQDMULL_advsimd_vec(context *ctx, Instruction *instr) |
no test coverage detected