ushr_advsimd.xml */
| 29750 | |
| 29751 | /* ushr_advsimd.xml */ |
| 29752 | int USHR_advsimd(context *ctx, Instruction *instr) |
| 29753 | { |
| 29754 | int rc = DECODE_STATUS_UNMATCHED; |
| 29755 | /* class iclass_sisd */ |
| 29756 | /* 01|U=1|111110|immh!=0000|immb=xxx|opcode[4:3]=00|o1=0|o0=0|opcode[0]=0|1|Rn=xxxxx|Rd=xxxxx */ |
| 29757 | if((INSWORD & 0xFF80FC00)==0x7F000400 && (INSWORD & 0x780000)!=0x0) { |
| 29758 | decode_fields32(ENC_USHR_ASISDSHF_R, ctx, instr); |
| 29759 | ctx->d = UINT(ctx->Rd); |
| 29760 | ctx->n = UINT(ctx->Rn); |
| 29761 | if(SLICE(ctx->immh,3,3)!=1) { |
| 29762 | UNDEFINED; |
| 29763 | } |
| 29764 | ctx->esize = (8) << (3); |
| 29765 | ctx->datasize = ctx->esize; |
| 29766 | ctx->elements = 1; |
| 29767 | ctx->shift = ((ctx->esize) * (2))-UINT(((ctx->immh<<3)|ctx->immb)); |
| 29768 | ctx->unsigned_ = (ctx->U==1); |
| 29769 | ctx->round = (ctx->o1==1); |
| 29770 | ctx->accumulate = (ctx->o0==1); |
| 29771 | OK(ENC_USHR_ASISDSHF_R); |
| 29772 | } |
| 29773 | /* class iclass_simd */ |
| 29774 | /* 0|Q=x|U=1|011110|immh!=0000|immb=xxx|opcode[4:3]=00|o1=0|o0=0|opcode[0]=0|1|Rn=xxxxx|Rd=xxxxx */ |
| 29775 | if((INSWORD & 0xBF80FC00)==0x2F000400 && (INSWORD & 0x780000)!=0x0) { |
| 29776 | decode_fields32(ENC_USHR_ASIMDSHF_R, ctx, instr); |
| 29777 | ctx->d = UINT(ctx->Rd); |
| 29778 | ctx->n = UINT(ctx->Rn); |
| 29779 | if(ctx->immh==0) { |
| 29780 | SEE /* asimdimm */; |
| 29781 | } |
| 29782 | if(((SLICE(ctx->immh,3,3)<<1)|ctx->Q)==2) { |
| 29783 | UNDEFINED; |
| 29784 | } |
| 29785 | ctx->esize = (8) << (HighestSetBit(ctx->immh)); |
| 29786 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 29787 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 29788 | ctx->shift = ((ctx->esize) * (2))-UINT(((ctx->immh<<3)|ctx->immb)); |
| 29789 | ctx->unsigned_ = (ctx->U==1); |
| 29790 | ctx->round = (ctx->o1==1); |
| 29791 | ctx->accumulate = (ctx->o0==1); |
| 29792 | OK(ENC_USHR_ASIMDSHF_R); |
| 29793 | } |
| 29794 | return rc; |
| 29795 | } |
| 29796 | |
| 29797 | /* usmmla_advsimd_vec.xml */ |
| 29798 | int USMMLA_advsimd_vec(context *ctx, Instruction *instr) |
no test coverage detected