fccmp_float.xml */
| 4750 | |
| 4751 | /* fccmp_float.xml */ |
| 4752 | int FCCMP_float(context *ctx, Instruction *instr) |
| 4753 | { |
| 4754 | int rc = DECODE_STATUS_UNMATCHED; |
| 4755 | /* class iclass_float */ |
| 4756 | /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|cond=xxxx|01|Rn=xxxxx|op=0|nzcv=xxxx */ |
| 4757 | if((INSWORD & 0xFF200C10)==0x1E200400) { |
| 4758 | decode_fields32(ENC_FCCMP_H_FLOATCCMP, ctx, instr); |
| 4759 | ctx->n = UINT(ctx->Rn); |
| 4760 | ctx->m = UINT(ctx->Rm); |
| 4761 | if(!ctx->ftype) { |
| 4762 | ctx->datasize = 0x20; |
| 4763 | } |
| 4764 | else if(ctx->ftype==1) { |
| 4765 | ctx->datasize = 0x40; |
| 4766 | } |
| 4767 | else if(ctx->ftype==2) { |
| 4768 | UNDEFINED; |
| 4769 | } |
| 4770 | else if(ctx->ftype==3) { |
| 4771 | if(HaveFP16Ext()) { |
| 4772 | ctx->datasize = 0x10; |
| 4773 | } |
| 4774 | else { |
| 4775 | UNDEFINED; |
| 4776 | } |
| 4777 | } |
| 4778 | ctx->signal_all_nans = (ctx->op==1); |
| 4779 | ctx->condition = ctx->cond; |
| 4780 | ctx->flags = ctx->nzcv; |
| 4781 | if(ctx->ftype==3) OK(ENC_FCCMP_H_FLOATCCMP); |
| 4782 | if(ctx->ftype==0) OK(ENC_FCCMP_S_FLOATCCMP); |
| 4783 | if(ctx->ftype==1) OK(ENC_FCCMP_D_FLOATCCMP); |
| 4784 | } |
| 4785 | /* relevant operational pcode */ |
| 4786 | instr->setflags = FLAGEFFECT_SETS_FLOAT; |
| 4787 | return rc; |
| 4788 | } |
| 4789 | |
| 4790 | /* fcmeq_advsimd_reg.xml */ |
| 4791 | int FCMEQ_advsimd_reg(context *ctx, Instruction *instr) |
no test coverage detected