srshl_advsimd.xml */
| 23496 | |
| 23497 | /* srshl_advsimd.xml */ |
| 23498 | int SRSHL_advsimd(context *ctx, Instruction *instr) |
| 23499 | { |
| 23500 | int rc = DECODE_STATUS_UNMATCHED; |
| 23501 | /* class iclass_sisd */ |
| 23502 | /* 01|U=0|11110|size=xx|1|Rm=xxxxx|opcode[4:2]=010|R=1|S=0|1|Rn=xxxxx|Rd=xxxxx */ |
| 23503 | if((INSWORD & 0xFF20FC00)==0x5E205400) { |
| 23504 | decode_fields32(ENC_SRSHL_ASISDSAME_ONLY, ctx, instr); |
| 23505 | ctx->d = UINT(ctx->Rd); |
| 23506 | ctx->n = UINT(ctx->Rn); |
| 23507 | ctx->m = UINT(ctx->Rm); |
| 23508 | ctx->esize = (8) << (UINT(ctx->size)); |
| 23509 | ctx->datasize = ctx->esize; |
| 23510 | ctx->elements = 1; |
| 23511 | ctx->unsigned_ = (ctx->U==1); |
| 23512 | ctx->rounding = (ctx->R==1); |
| 23513 | ctx->saturating = (ctx->S==1); |
| 23514 | if(ctx->S==0 && ctx->size!=3) { |
| 23515 | UNDEFINED; |
| 23516 | } |
| 23517 | OK(ENC_SRSHL_ASISDSAME_ONLY); |
| 23518 | } |
| 23519 | /* class iclass_simd */ |
| 23520 | /* 0|Q=x|U=0|01110|size=xx|1|Rm=xxxxx|opcode[4:2]=010|R=1|S=0|1|Rn=xxxxx|Rd=xxxxx */ |
| 23521 | if((INSWORD & 0xBF20FC00)==0xE205400) { |
| 23522 | decode_fields32(ENC_SRSHL_ASIMDSAME_ONLY, ctx, instr); |
| 23523 | ctx->d = UINT(ctx->Rd); |
| 23524 | ctx->n = UINT(ctx->Rn); |
| 23525 | ctx->m = UINT(ctx->Rm); |
| 23526 | if(((ctx->size<<1)|ctx->Q)==6) { |
| 23527 | UNDEFINED; |
| 23528 | } |
| 23529 | ctx->esize = (8) << (UINT(ctx->size)); |
| 23530 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 23531 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 23532 | ctx->unsigned_ = (ctx->U==1); |
| 23533 | ctx->rounding = (ctx->R==1); |
| 23534 | ctx->saturating = (ctx->S==1); |
| 23535 | OK(ENC_SRSHL_ASIMDSAME_ONLY); |
| 23536 | } |
| 23537 | return rc; |
| 23538 | } |
| 23539 | |
| 23540 | /* srshr_advsimd.xml */ |
| 23541 | int SRSHR_advsimd(context *ctx, Instruction *instr) |
no test coverage detected