cmtst_advsimd.xml */
| 2863 | |
| 2864 | /* cmtst_advsimd.xml */ |
| 2865 | int CMTST_advsimd(context *ctx, Instruction *instr) |
| 2866 | { |
| 2867 | int rc = DECODE_STATUS_UNMATCHED; |
| 2868 | /* class iclass_sisd */ |
| 2869 | /* 01|U=0|11110|size=xx|1|Rm=xxxxx|opcode=10001|1|Rn=xxxxx|Rd=xxxxx */ |
| 2870 | if((INSWORD & 0xFF20FC00)==0x5E208C00) { |
| 2871 | decode_fields32(ENC_CMTST_ASISDSAME_ONLY, ctx, instr); |
| 2872 | ctx->d = UINT(ctx->Rd); |
| 2873 | ctx->n = UINT(ctx->Rn); |
| 2874 | ctx->m = UINT(ctx->Rm); |
| 2875 | if(ctx->size!=3) { |
| 2876 | UNDEFINED; |
| 2877 | } |
| 2878 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2879 | ctx->datasize = ctx->esize; |
| 2880 | ctx->elements = 1; |
| 2881 | ctx->and_test = (ctx->U==0); |
| 2882 | OK(ENC_CMTST_ASISDSAME_ONLY); |
| 2883 | } |
| 2884 | /* class iclass_simd */ |
| 2885 | /* 0|Q=x|U=0|01110|size=xx|1|Rm=xxxxx|opcode=10001|1|Rn=xxxxx|Rd=xxxxx */ |
| 2886 | if((INSWORD & 0xBF20FC00)==0xE208C00) { |
| 2887 | decode_fields32(ENC_CMTST_ASIMDSAME_ONLY, ctx, instr); |
| 2888 | ctx->d = UINT(ctx->Rd); |
| 2889 | ctx->n = UINT(ctx->Rn); |
| 2890 | ctx->m = UINT(ctx->Rm); |
| 2891 | if(((ctx->size<<1)|ctx->Q)==6) { |
| 2892 | UNDEFINED; |
| 2893 | } |
| 2894 | ctx->esize = (8) << (UINT(ctx->size)); |
| 2895 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 2896 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 2897 | ctx->and_test = (ctx->U==0); |
| 2898 | OK(ENC_CMTST_ASIMDSAME_ONLY); |
| 2899 | } |
| 2900 | return rc; |
| 2901 | } |
| 2902 | |
| 2903 | /* cneg_csneg.xml */ |
| 2904 | int CNEG_CSNEG(context *ctx, Instruction *instr) |
no test coverage detected