frint64x_float.xml */
| 10440 | |
| 10441 | /* frint64x_float.xml */ |
| 10442 | int FRINT64X_float(context *ctx, Instruction *instr) |
| 10443 | { |
| 10444 | int rc = DECODE_STATUS_UNMATCHED; |
| 10445 | /* class iclass_float */ |
| 10446 | /* M=0|0|S=0|11110|ftype=0x|1|0100|op=11|10000|Rn=xxxxx|Rd=xxxxx */ |
| 10447 | if((INSWORD & 0xFFBFFC00)==0x1E29C000) { |
| 10448 | decode_fields32(ENC_FRINT64X_S_FLOATDP1, ctx, instr); |
| 10449 | if(!HaveFrintExt()) { |
| 10450 | UNDEFINED; |
| 10451 | } |
| 10452 | ctx->d = UINT(ctx->Rd); |
| 10453 | ctx->n = UINT(ctx->Rn); |
| 10454 | if(!ctx->ftype) { |
| 10455 | ctx->esize = 0x20; |
| 10456 | } |
| 10457 | else if(ctx->ftype==1) { |
| 10458 | ctx->esize = 0x40; |
| 10459 | } |
| 10460 | else if((ctx->ftype&2)==2) { |
| 10461 | UNDEFINED; |
| 10462 | } |
| 10463 | ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40; |
| 10464 | ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR); |
| 10465 | if(ctx->ftype==0) OK(ENC_FRINT64X_S_FLOATDP1); |
| 10466 | if(ctx->ftype==1) OK(ENC_FRINT64X_D_FLOATDP1); |
| 10467 | } |
| 10468 | return rc; |
| 10469 | } |
| 10470 | |
| 10471 | /* frint64z_advsimd.xml */ |
| 10472 | int FRINT64Z_advsimd(context *ctx, Instruction *instr) |
no test coverage detected