fmov_float_imm.xml */
| 9558 | |
| 9559 | /* fmov_float_imm.xml */ |
| 9560 | int FMOV_float_imm(context *ctx, Instruction *instr) |
| 9561 | { |
| 9562 | int rc = DECODE_STATUS_UNMATCHED; |
| 9563 | /* class iclass_imm8f */ |
| 9564 | /* M=0|0|S=0|11110|ftype=xx|1|imm8=xxxxxxxx|100|imm5=00000|Rd=xxxxx */ |
| 9565 | if((INSWORD & 0xFF201FE0)==0x1E201000) { |
| 9566 | decode_fields32(ENC_FMOV_H_FLOATIMM, ctx, instr); |
| 9567 | ctx->d = UINT(ctx->Rd); |
| 9568 | if(!ctx->ftype) { |
| 9569 | ctx->datasize = 0x20; |
| 9570 | } |
| 9571 | else if(ctx->ftype==1) { |
| 9572 | ctx->datasize = 0x40; |
| 9573 | } |
| 9574 | else if(ctx->ftype==2) { |
| 9575 | UNDEFINED; |
| 9576 | } |
| 9577 | else if(ctx->ftype==3) { |
| 9578 | if(HaveFP16Ext()) { |
| 9579 | ctx->datasize = 0x10; |
| 9580 | } |
| 9581 | else { |
| 9582 | UNDEFINED; |
| 9583 | } |
| 9584 | } |
| 9585 | ctx->imm = VFPExpandImm(ctx->imm8,8); |
| 9586 | if(ctx->ftype==3) OK(ENC_FMOV_H_FLOATIMM); |
| 9587 | if(ctx->ftype==0) OK(ENC_FMOV_S_FLOATIMM); |
| 9588 | if(ctx->ftype==1) OK(ENC_FMOV_D_FLOATIMM); |
| 9589 | } |
| 9590 | return rc; |
| 9591 | } |
| 9592 | |
| 9593 | /* fmsub_float.xml */ |
| 9594 | int FMSUB_float(context *ctx, Instruction *instr) |
no test coverage detected