fmsub_float.xml */
| 9592 | |
| 9593 | /* fmsub_float.xml */ |
| 9594 | int FMSUB_float(context *ctx, Instruction *instr) |
| 9595 | { |
| 9596 | int rc = DECODE_STATUS_UNMATCHED; |
| 9597 | /* class iclass_float */ |
| 9598 | /* M=0|0|S=0|11111|ftype=xx|o1=0|Rm=xxxxx|o0=1|Ra=xxxxx|Rn=xxxxx|Rd=xxxxx */ |
| 9599 | if((INSWORD & 0xFF208000)==0x1F008000) { |
| 9600 | decode_fields32(ENC_FMSUB_H_FLOATDP3, ctx, instr); |
| 9601 | ctx->d = UINT(ctx->Rd); |
| 9602 | ctx->a = UINT(ctx->Ra); |
| 9603 | ctx->n = UINT(ctx->Rn); |
| 9604 | ctx->m = UINT(ctx->Rm); |
| 9605 | if(!ctx->ftype) { |
| 9606 | ctx->esize = 0x20; |
| 9607 | } |
| 9608 | else if(ctx->ftype==1) { |
| 9609 | ctx->esize = 0x40; |
| 9610 | } |
| 9611 | else if(ctx->ftype==2) { |
| 9612 | UNDEFINED; |
| 9613 | } |
| 9614 | else if(ctx->ftype==3) { |
| 9615 | if(HaveFP16Ext()) { |
| 9616 | ctx->esize = 0x10; |
| 9617 | } |
| 9618 | else { |
| 9619 | UNDEFINED; |
| 9620 | } |
| 9621 | } |
| 9622 | ctx->opa_neg = (ctx->o1==1); |
| 9623 | ctx->op1_neg = (ctx->o0!=ctx->o1); |
| 9624 | if(ctx->ftype==3) OK(ENC_FMSUB_H_FLOATDP3); |
| 9625 | if(ctx->ftype==0) OK(ENC_FMSUB_S_FLOATDP3); |
| 9626 | if(ctx->ftype==1) OK(ENC_FMSUB_D_FLOATDP3); |
| 9627 | } |
| 9628 | return rc; |
| 9629 | } |
| 9630 | |
| 9631 | /* fmulx_advsimd_elt.xml */ |
| 9632 | int FMULX_advsimd_elt(context *ctx, Instruction *instr) |
no test coverage detected