msub.xml */
| 18203 | |
| 18204 | /* msub.xml */ |
| 18205 | int MSUB(context *ctx, Instruction *instr) |
| 18206 | { |
| 18207 | int rc = DECODE_STATUS_UNMATCHED; |
| 18208 | /* class iclass_general */ |
| 18209 | /* sf=x|op54=00|11011|op31=000|Rm=xxxxx|o0=1|Ra=xxxxx|Rn=xxxxx|Rd=xxxxx */ |
| 18210 | if((INSWORD & 0x7FE08000)==0x1B008000) { |
| 18211 | decode_fields32(ENC_MSUB_32A_DP_3SRC, ctx, instr); |
| 18212 | ctx->d = UINT(ctx->Rd); |
| 18213 | ctx->n = UINT(ctx->Rn); |
| 18214 | ctx->m = UINT(ctx->Rm); |
| 18215 | ctx->a = UINT(ctx->Ra); |
| 18216 | ctx->destsize = (ctx->sf==1) ? 0x40 : 0x20; |
| 18217 | ctx->datasize = ctx->destsize; |
| 18218 | ctx->sub_op = (ctx->o0==1); |
| 18219 | /* regular aliases */ |
| 18220 | if(ctx->Ra==0x1f) return MNEG_MSUB(ctx, instr); |
| 18221 | if(ctx->sf==0) OK(ENC_MSUB_32A_DP_3SRC); |
| 18222 | if(ctx->sf==1) OK(ENC_MSUB_64A_DP_3SRC); |
| 18223 | } |
| 18224 | return rc; |
| 18225 | } |
| 18226 | |
| 18227 | /* mul_madd.xml */ |
| 18228 | int MUL_MADD(context *ctx, Instruction *instr) |
no test coverage detected