st2_advsimd_mult.xml */
| 24066 | |
| 24067 | /* st2_advsimd_mult.xml */ |
| 24068 | int ST2_advsimd_mult(context *ctx, Instruction *instr) |
| 24069 | { |
| 24070 | int rc = DECODE_STATUS_UNMATCHED; |
| 24071 | /* class iclass_as_no_post_index */ |
| 24072 | /* 0|Q=x|0011000|L=0|000000|opcode=1000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 24073 | if((INSWORD & 0xBFFFF000)==0xC008000) { |
| 24074 | decode_fields32(ENC_ST2_ASISDLSE_R2, ctx, instr); |
| 24075 | ctx->t = UINT(ctx->Rt); |
| 24076 | ctx->n = UINT(ctx->Rn); |
| 24077 | ctx->m = 0; |
| 24078 | ctx->wback = FALSE; |
| 24079 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 24080 | OK(ENC_ST2_ASISDLSE_R2); |
| 24081 | } |
| 24082 | /* class iclass_as_post_index */ |
| 24083 | /* 0|Q=x|0011001|L=0|0|Rm=xxxxx|opcode=1000|size=xx|Rn=xxxxx|Rt=xxxxx */ |
| 24084 | if((INSWORD & 0xBFE0F000)==0xC808000) { |
| 24085 | decode_fields32(ENC_ST2_ASISDLSEP_I2_I, ctx, instr); |
| 24086 | ctx->t = UINT(ctx->Rt); |
| 24087 | ctx->n = UINT(ctx->Rn); |
| 24088 | ctx->m = UINT(ctx->Rm); |
| 24089 | ctx->wback = TRUE; |
| 24090 | ctx->tag_checked = ctx->wback || ctx->n!=0x1f; |
| 24091 | if(ctx->Rm==0x1f) OK(ENC_ST2_ASISDLSEP_I2_I); |
| 24092 | if(ctx->Rm!=0x1f) OK(ENC_ST2_ASISDLSEP_R2_R); |
| 24093 | } |
| 24094 | /* post-decode pcode */ |
| 24095 | ctx->memop = (ctx->L==1) ? MemOp_LOAD : MemOp_STORE; |
| 24096 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 24097 | ctx->esize = (8) << (UINT(ctx->size)); |
| 24098 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 24099 | if(!ctx->opcode) { |
| 24100 | ctx->rpt = 1; |
| 24101 | ctx->selem = 4; |
| 24102 | } |
| 24103 | else if(ctx->opcode==2) { |
| 24104 | ctx->rpt = 4; |
| 24105 | ctx->selem = 1; |
| 24106 | } |
| 24107 | else if(ctx->opcode==4) { |
| 24108 | ctx->rpt = 1; |
| 24109 | ctx->selem = 3; |
| 24110 | } |
| 24111 | else if(ctx->opcode==6) { |
| 24112 | ctx->rpt = 3; |
| 24113 | ctx->selem = 1; |
| 24114 | } |
| 24115 | else if(ctx->opcode==7) { |
| 24116 | ctx->rpt = 1; |
| 24117 | ctx->selem = 1; |
| 24118 | } |
| 24119 | else if(ctx->opcode==8) { |
| 24120 | ctx->rpt = 1; |
| 24121 | ctx->selem = 2; |
| 24122 | } |
| 24123 | else if(ctx->opcode==10) { |
| 24124 | ctx->rpt = 2; |
| 24125 | ctx->selem = 1; |
no test coverage detected