rev16_int.xml */
| 19766 | |
| 19767 | /* rev16_int.xml */ |
| 19768 | int REV16_int(context *ctx, Instruction *instr) |
| 19769 | { |
| 19770 | int rc = DECODE_STATUS_UNMATCHED; |
| 19771 | /* class iclass_general */ |
| 19772 | /* sf=x|1|S=0|11010110|opcode2=00000|opcode[5:2]=0000|opc=01|Rn=xxxxx|Rd=xxxxx */ |
| 19773 | if((INSWORD & 0x7FFFFC00)==0x5AC00400) { |
| 19774 | decode_fields32(ENC_REV16_32_DP_1SRC, ctx, instr); |
| 19775 | ctx->d = UINT(ctx->Rd); |
| 19776 | ctx->n = UINT(ctx->Rn); |
| 19777 | ctx->datasize = (ctx->sf==1) ? 0x40 : 0x20; |
| 19778 | if(!ctx->opc) { |
| 19779 | ENDOFINSTRUCTION; |
| 19780 | } |
| 19781 | else if(ctx->opc==1) { |
| 19782 | ctx->container_size = 0x10; |
| 19783 | } |
| 19784 | else if(ctx->opc==2) { |
| 19785 | ctx->container_size = 0x20; |
| 19786 | } |
| 19787 | else if(ctx->opc==3) { |
| 19788 | if(ctx->sf==0) { |
| 19789 | UNDEFINED; |
| 19790 | } |
| 19791 | ctx->container_size = 0x40; |
| 19792 | } |
| 19793 | if(ctx->sf==0) OK(ENC_REV16_32_DP_1SRC); |
| 19794 | if(ctx->sf==1) OK(ENC_REV16_64_DP_1SRC); |
| 19795 | } |
| 19796 | return rc; |
| 19797 | } |
| 19798 | |
| 19799 | /* rev32_advsimd.xml */ |
| 19800 | int REV32_advsimd(context *ctx, Instruction *instr) |
no test coverage detected