fmax_advsimd.xml */
| 8344 | |
| 8345 | /* fmax_advsimd.xml */ |
| 8346 | int FMAX_advsimd(context *ctx, Instruction *instr) |
| 8347 | { |
| 8348 | int rc = DECODE_STATUS_UNMATCHED; |
| 8349 | /* class iclass_half */ |
| 8350 | /* 0|Q=x|U=0|01110|o1=0|10|Rm=xxxxx|00|opcode=110|1|Rn=xxxxx|Rd=xxxxx */ |
| 8351 | if((INSWORD & 0xBFE0FC00)==0xE403400) { |
| 8352 | decode_fields32(ENC_FMAX_ASIMDSAMEFP16_ONLY, ctx, instr); |
| 8353 | if(!HaveFP16Ext()) { |
| 8354 | UNDEFINED; |
| 8355 | } |
| 8356 | ctx->d = UINT(ctx->Rd); |
| 8357 | ctx->n = UINT(ctx->Rn); |
| 8358 | ctx->m = UINT(ctx->Rm); |
| 8359 | ctx->esize = 0x10; |
| 8360 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 8361 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 8362 | ctx->pair = (ctx->U==1); |
| 8363 | ctx->minimum = (ctx->o1==1); |
| 8364 | OK(ENC_FMAX_ASIMDSAMEFP16_ONLY); |
| 8365 | } |
| 8366 | /* class iclass_single_and_double */ |
| 8367 | /* 0|Q=x|U=0|01110|o1=0|sz=x|1|Rm=xxxxx|opcode=11110|1|Rn=xxxxx|Rd=xxxxx */ |
| 8368 | if((INSWORD & 0xBFA0FC00)==0xE20F400) { |
| 8369 | decode_fields32(ENC_FMAX_ASIMDSAME_ONLY, ctx, instr); |
| 8370 | ctx->d = UINT(ctx->Rd); |
| 8371 | ctx->n = UINT(ctx->Rn); |
| 8372 | ctx->m = UINT(ctx->Rm); |
| 8373 | if(((ctx->sz<<1)|ctx->Q)==2) { |
| 8374 | UNDEFINED; |
| 8375 | } |
| 8376 | ctx->esize = (0x20) << (UINT(ctx->sz)); |
| 8377 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 8378 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 8379 | ctx->pair = (ctx->U==1); |
| 8380 | ctx->minimum = (ctx->o1==1); |
| 8381 | OK(ENC_FMAX_ASIMDSAME_ONLY); |
| 8382 | } |
| 8383 | return rc; |
| 8384 | } |
| 8385 | |
| 8386 | /* fmax_float.xml */ |
| 8387 | int FMAX_float(context *ctx, Instruction *instr) |
no test coverage detected