fminnm_advsimd.xml */
| 8547 | |
| 8548 | /* fminnm_advsimd.xml */ |
| 8549 | int FMINNM_advsimd(context *ctx, Instruction *instr) |
| 8550 | { |
| 8551 | int rc = DECODE_STATUS_UNMATCHED; |
| 8552 | /* class iclass_half */ |
| 8553 | /* 0|Q=x|U=0|01110|a=1|10|Rm=xxxxx|00|Op3=000|1|Rn=xxxxx|Rd=xxxxx */ |
| 8554 | if((INSWORD & 0xBFE0FC00)==0xEC00400) { |
| 8555 | decode_fields32(ENC_FMINNM_ASIMDSAMEFP16_ONLY, ctx, instr); |
| 8556 | if(!HaveFP16Ext()) { |
| 8557 | UNDEFINED; |
| 8558 | } |
| 8559 | ctx->d = UINT(ctx->Rd); |
| 8560 | ctx->n = UINT(ctx->Rn); |
| 8561 | ctx->m = UINT(ctx->Rm); |
| 8562 | ctx->esize = 0x10; |
| 8563 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 8564 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 8565 | ctx->pair = (ctx->U==1); |
| 8566 | ctx->minimum = (ctx->a==1); |
| 8567 | OK(ENC_FMINNM_ASIMDSAMEFP16_ONLY); |
| 8568 | } |
| 8569 | /* class iclass_single_and_double */ |
| 8570 | /* 0|Q=x|U=0|01110|o1=1|sz=x|1|Rm=xxxxx|opcode=11000|1|Rn=xxxxx|Rd=xxxxx */ |
| 8571 | if((INSWORD & 0xBFA0FC00)==0xEA0C400) { |
| 8572 | decode_fields32(ENC_FMINNM_ASIMDSAME_ONLY, ctx, instr); |
| 8573 | ctx->d = UINT(ctx->Rd); |
| 8574 | ctx->n = UINT(ctx->Rn); |
| 8575 | ctx->m = UINT(ctx->Rm); |
| 8576 | if(((ctx->sz<<1)|ctx->Q)==2) { |
| 8577 | UNDEFINED; |
| 8578 | } |
| 8579 | ctx->esize = (0x20) << (UINT(ctx->sz)); |
| 8580 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 8581 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 8582 | ctx->pair = (ctx->U==1); |
| 8583 | ctx->minimum = (ctx->o1==1); |
| 8584 | OK(ENC_FMINNM_ASIMDSAME_ONLY); |
| 8585 | } |
| 8586 | return rc; |
| 8587 | } |
| 8588 | |
| 8589 | /* fminnm_float.xml */ |
| 8590 | int FMINNM_float(context *ctx, Instruction *instr) |
no test coverage detected