mul_z_zzi.xml */
| 42443 | |
| 42444 | /* mul_z_zzi.xml */ |
| 42445 | int mul_z_zzi(context *ctx, Instruction *instr) |
| 42446 | { |
| 42447 | int rc = DECODE_STATUS_UNMATCHED; |
| 42448 | /* class iclass_of_halfwords */ |
| 42449 | /* 01000100|0|i3h=x|1|i3l=xx|Zm=xxx|111110|Zn=xxxxx|Zd=xxxxx */ |
| 42450 | if((INSWORD & 0xFFA0FC00)==0x4420F800) { |
| 42451 | decode_fields32(ENC_MUL_Z_ZZI_H, ctx, instr); |
| 42452 | if(!HaveSVE2() && !HaveSME()) { |
| 42453 | UNDEFINED; |
| 42454 | } |
| 42455 | ctx->esize = 0x10; |
| 42456 | ctx->index = UINT(((ctx->i3h<<2)|ctx->i3l)); |
| 42457 | ctx->n = UINT(ctx->Zn); |
| 42458 | ctx->m = UINT(ctx->Zm); |
| 42459 | ctx->d = UINT(ctx->Zd); |
| 42460 | OK(ENC_MUL_Z_ZZI_H); |
| 42461 | } |
| 42462 | /* class iclass_of_words */ |
| 42463 | /* 01000100|size=10|1|i2=xx|Zm=xxx|111110|Zn=xxxxx|Zd=xxxxx */ |
| 42464 | if((INSWORD & 0xFFE0FC00)==0x44A0F800) { |
| 42465 | decode_fields32(ENC_MUL_Z_ZZI_S, ctx, instr); |
| 42466 | if(!HaveSVE2() && !HaveSME()) { |
| 42467 | UNDEFINED; |
| 42468 | } |
| 42469 | ctx->esize = 0x20; |
| 42470 | ctx->index = UINT(ctx->i2); |
| 42471 | ctx->n = UINT(ctx->Zn); |
| 42472 | ctx->m = UINT(ctx->Zm); |
| 42473 | ctx->d = UINT(ctx->Zd); |
| 42474 | OK(ENC_MUL_Z_ZZI_S); |
| 42475 | } |
| 42476 | /* class iclass_of_doublewords */ |
| 42477 | /* 01000100|size=11|1|i1=x|Zm=xxxx|111110|Zn=xxxxx|Zd=xxxxx */ |
| 42478 | if((INSWORD & 0xFFE0FC00)==0x44E0F800) { |
| 42479 | decode_fields32(ENC_MUL_Z_ZZI_D, ctx, instr); |
| 42480 | if(!HaveSVE2() && !HaveSME()) { |
| 42481 | UNDEFINED; |
| 42482 | } |
| 42483 | ctx->esize = 0x40; |
| 42484 | ctx->index = UINT(ctx->i1); |
| 42485 | ctx->n = UINT(ctx->Zn); |
| 42486 | ctx->m = UINT(ctx->Zm); |
| 42487 | ctx->d = UINT(ctx->Zd); |
| 42488 | OK(ENC_MUL_Z_ZZI_D); |
| 42489 | } |
| 42490 | return rc; |
| 42491 | } |
| 42492 | |
| 42493 | /* nand_p_p_pp.xml */ |
| 42494 | int nand_p_p_pp(context *ctx, Instruction *instr) |
no test coverage detected