uqsub_advsimd.xml */
| 29358 | |
| 29359 | /* uqsub_advsimd.xml */ |
| 29360 | int UQSUB_advsimd(context *ctx, Instruction *instr) |
| 29361 | { |
| 29362 | int rc = DECODE_STATUS_UNMATCHED; |
| 29363 | /* class iclass_sisd */ |
| 29364 | /* 01|U=1|11110|size=xx|1|Rm=xxxxx|opcode=00101|1|Rn=xxxxx|Rd=xxxxx */ |
| 29365 | if((INSWORD & 0xFF20FC00)==0x7E202C00) { |
| 29366 | decode_fields32(ENC_UQSUB_ASISDSAME_ONLY, ctx, instr); |
| 29367 | ctx->d = UINT(ctx->Rd); |
| 29368 | ctx->n = UINT(ctx->Rn); |
| 29369 | ctx->m = UINT(ctx->Rm); |
| 29370 | ctx->esize = (8) << (UINT(ctx->size)); |
| 29371 | ctx->datasize = ctx->esize; |
| 29372 | ctx->elements = 1; |
| 29373 | ctx->unsigned_ = (ctx->U==1); |
| 29374 | OK(ENC_UQSUB_ASISDSAME_ONLY); |
| 29375 | } |
| 29376 | /* class iclass_simd */ |
| 29377 | /* 0|Q=x|U=1|01110|size=xx|1|Rm=xxxxx|opcode=00101|1|Rn=xxxxx|Rd=xxxxx */ |
| 29378 | if((INSWORD & 0xBF20FC00)==0x2E202C00) { |
| 29379 | decode_fields32(ENC_UQSUB_ASIMDSAME_ONLY, ctx, instr); |
| 29380 | ctx->d = UINT(ctx->Rd); |
| 29381 | ctx->n = UINT(ctx->Rn); |
| 29382 | ctx->m = UINT(ctx->Rm); |
| 29383 | if(((ctx->size<<1)|ctx->Q)==6) { |
| 29384 | UNDEFINED; |
| 29385 | } |
| 29386 | ctx->esize = (8) << (UINT(ctx->size)); |
| 29387 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 29388 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 29389 | ctx->unsigned_ = (ctx->U==1); |
| 29390 | OK(ENC_UQSUB_ASIMDSAME_ONLY); |
| 29391 | } |
| 29392 | return rc; |
| 29393 | } |
| 29394 | |
| 29395 | /* uqxtn_advsimd.xml */ |
| 29396 | int UQXTN_advsimd(context *ctx, Instruction *instr) |
no test coverage detected