sri_advsimd.xml */
| 23456 | |
| 23457 | /* sri_advsimd.xml */ |
| 23458 | int SRI_advsimd(context *ctx, Instruction *instr) |
| 23459 | { |
| 23460 | int rc = DECODE_STATUS_UNMATCHED; |
| 23461 | /* class iclass_sisd */ |
| 23462 | /* 01|U=1|111110|immh!=0000|immb=xxx|opcode=01000|1|Rn=xxxxx|Rd=xxxxx */ |
| 23463 | if((INSWORD & 0xFF80FC00)==0x7F004400 && (INSWORD & 0x780000)!=0x0) { |
| 23464 | decode_fields32(ENC_SRI_ASISDSHF_R, ctx, instr); |
| 23465 | ctx->d = UINT(ctx->Rd); |
| 23466 | ctx->n = UINT(ctx->Rn); |
| 23467 | if(SLICE(ctx->immh,3,3)!=1) { |
| 23468 | UNDEFINED; |
| 23469 | } |
| 23470 | ctx->esize = (8) << (3); |
| 23471 | ctx->datasize = ctx->esize; |
| 23472 | ctx->elements = 1; |
| 23473 | ctx->shift = ((ctx->esize) * (2))-UINT(((ctx->immh<<3)|ctx->immb)); |
| 23474 | OK(ENC_SRI_ASISDSHF_R); |
| 23475 | } |
| 23476 | /* class iclass_simd */ |
| 23477 | /* 0|Q=x|U=1|011110|immh!=0000|immb=xxx|opcode=01000|1|Rn=xxxxx|Rd=xxxxx */ |
| 23478 | if((INSWORD & 0xBF80FC00)==0x2F004400 && (INSWORD & 0x780000)!=0x0) { |
| 23479 | decode_fields32(ENC_SRI_ASIMDSHF_R, ctx, instr); |
| 23480 | ctx->d = UINT(ctx->Rd); |
| 23481 | ctx->n = UINT(ctx->Rn); |
| 23482 | if(ctx->immh==0) { |
| 23483 | SEE /* asimdimm */; |
| 23484 | } |
| 23485 | if(((SLICE(ctx->immh,3,3)<<1)|ctx->Q)==2) { |
| 23486 | UNDEFINED; |
| 23487 | } |
| 23488 | ctx->esize = (8) << (HighestSetBit(ctx->immh)); |
| 23489 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 23490 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 23491 | ctx->shift = ((ctx->esize) * (2))-UINT(((ctx->immh<<3)|ctx->immb)); |
| 23492 | OK(ENC_SRI_ASIMDSHF_R); |
| 23493 | } |
| 23494 | return rc; |
| 23495 | } |
| 23496 | |
| 23497 | /* srshl_advsimd.xml */ |
| 23498 | int SRSHL_advsimd(context *ctx, Instruction *instr) |
no test coverage detected