fccmpe_float.xml */
| 4711 | |
| 4712 | /* fccmpe_float.xml */ |
| 4713 | int FCCMPE_float(context *ctx, Instruction *instr) |
| 4714 | { |
| 4715 | int rc = DECODE_STATUS_UNMATCHED; |
| 4716 | /* class iclass_float */ |
| 4717 | /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|cond=xxxx|01|Rn=xxxxx|op=1|nzcv=xxxx */ |
| 4718 | if((INSWORD & 0xFF200C10)==0x1E200410) { |
| 4719 | decode_fields32(ENC_FCCMPE_H_FLOATCCMP, ctx, instr); |
| 4720 | ctx->n = UINT(ctx->Rn); |
| 4721 | ctx->m = UINT(ctx->Rm); |
| 4722 | if(!ctx->ftype) { |
| 4723 | ctx->datasize = 0x20; |
| 4724 | } |
| 4725 | else if(ctx->ftype==1) { |
| 4726 | ctx->datasize = 0x40; |
| 4727 | } |
| 4728 | else if(ctx->ftype==2) { |
| 4729 | UNDEFINED; |
| 4730 | } |
| 4731 | else if(ctx->ftype==3) { |
| 4732 | if(HaveFP16Ext()) { |
| 4733 | ctx->datasize = 0x10; |
| 4734 | } |
| 4735 | else { |
| 4736 | UNDEFINED; |
| 4737 | } |
| 4738 | } |
| 4739 | ctx->signal_all_nans = (ctx->op==1); |
| 4740 | ctx->condition = ctx->cond; |
| 4741 | ctx->flags = ctx->nzcv; |
| 4742 | if(ctx->ftype==3) OK(ENC_FCCMPE_H_FLOATCCMP); |
| 4743 | if(ctx->ftype==0) OK(ENC_FCCMPE_S_FLOATCCMP); |
| 4744 | if(ctx->ftype==1) OK(ENC_FCCMPE_D_FLOATCCMP); |
| 4745 | } |
| 4746 | /* relevant operational pcode */ |
| 4747 | instr->setflags = FLAGEFFECT_SETS_FLOAT; |
| 4748 | return rc; |
| 4749 | } |
| 4750 | |
| 4751 | /* fccmp_float.xml */ |
| 4752 | int FCCMP_float(context *ctx, Instruction *instr) |
no test coverage detected