frint64z_float.xml */
| 10496 | |
| 10497 | /* frint64z_float.xml */ |
| 10498 | int FRINT64Z_float(context *ctx, Instruction *instr) |
| 10499 | { |
| 10500 | int rc = DECODE_STATUS_UNMATCHED; |
| 10501 | /* class iclass_float */ |
| 10502 | /* M=0|0|S=0|11110|ftype=0x|1|0100|op=10|10000|Rn=xxxxx|Rd=xxxxx */ |
| 10503 | if((INSWORD & 0xFFBFFC00)==0x1E294000) { |
| 10504 | decode_fields32(ENC_FRINT64Z_S_FLOATDP1, ctx, instr); |
| 10505 | if(!HaveFrintExt()) { |
| 10506 | UNDEFINED; |
| 10507 | } |
| 10508 | ctx->d = UINT(ctx->Rd); |
| 10509 | ctx->n = UINT(ctx->Rn); |
| 10510 | if(!ctx->ftype) { |
| 10511 | ctx->esize = 0x20; |
| 10512 | } |
| 10513 | else if(ctx->ftype==1) { |
| 10514 | ctx->esize = 0x40; |
| 10515 | } |
| 10516 | else if((ctx->ftype&2)==2) { |
| 10517 | UNDEFINED; |
| 10518 | } |
| 10519 | ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40; |
| 10520 | ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR); |
| 10521 | if(ctx->ftype==0) OK(ENC_FRINT64Z_S_FLOATDP1); |
| 10522 | if(ctx->ftype==1) OK(ENC_FRINT64Z_D_FLOATDP1); |
| 10523 | } |
| 10524 | return rc; |
| 10525 | } |
| 10526 | |
| 10527 | /* frinta_advsimd.xml */ |
| 10528 | int FRINTA_advsimd(context *ctx, Instruction *instr) |
no test coverage detected