frint32z_float.xml */
| 10384 | |
| 10385 | /* frint32z_float.xml */ |
| 10386 | int FRINT32Z_float(context *ctx, Instruction *instr) |
| 10387 | { |
| 10388 | int rc = DECODE_STATUS_UNMATCHED; |
| 10389 | /* class iclass_float */ |
| 10390 | /* M=0|0|S=0|11110|ftype=0x|1|0100|op=00|10000|Rn=xxxxx|Rd=xxxxx */ |
| 10391 | if((INSWORD & 0xFFBFFC00)==0x1E284000) { |
| 10392 | decode_fields32(ENC_FRINT32Z_S_FLOATDP1, ctx, instr); |
| 10393 | if(!HaveFrintExt()) { |
| 10394 | UNDEFINED; |
| 10395 | } |
| 10396 | ctx->d = UINT(ctx->Rd); |
| 10397 | ctx->n = UINT(ctx->Rn); |
| 10398 | if(!ctx->ftype) { |
| 10399 | ctx->esize = 0x20; |
| 10400 | } |
| 10401 | else if(ctx->ftype==1) { |
| 10402 | ctx->esize = 0x40; |
| 10403 | } |
| 10404 | else if((ctx->ftype&2)==2) { |
| 10405 | UNDEFINED; |
| 10406 | } |
| 10407 | ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40; |
| 10408 | ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR); |
| 10409 | if(ctx->ftype==0) OK(ENC_FRINT32Z_S_FLOATDP1); |
| 10410 | if(ctx->ftype==1) OK(ENC_FRINT32Z_D_FLOATDP1); |
| 10411 | } |
| 10412 | return rc; |
| 10413 | } |
| 10414 | |
| 10415 | /* frint64x_advsimd.xml */ |
| 10416 | int FRINT64X_advsimd(context *ctx, Instruction *instr) |
no test coverage detected