frint32x_float.xml */
| 10328 | |
| 10329 | /* frint32x_float.xml */ |
| 10330 | int FRINT32X_float(context *ctx, Instruction *instr) |
| 10331 | { |
| 10332 | int rc = DECODE_STATUS_UNMATCHED; |
| 10333 | /* class iclass_float */ |
| 10334 | /* M=0|0|S=0|11110|ftype=0x|1|0100|op=01|10000|Rn=xxxxx|Rd=xxxxx */ |
| 10335 | if((INSWORD & 0xFFBFFC00)==0x1E28C000) { |
| 10336 | decode_fields32(ENC_FRINT32X_S_FLOATDP1, ctx, instr); |
| 10337 | if(!HaveFrintExt()) { |
| 10338 | UNDEFINED; |
| 10339 | } |
| 10340 | ctx->d = UINT(ctx->Rd); |
| 10341 | ctx->n = UINT(ctx->Rn); |
| 10342 | if(!ctx->ftype) { |
| 10343 | ctx->esize = 0x20; |
| 10344 | } |
| 10345 | else if(ctx->ftype==1) { |
| 10346 | ctx->esize = 0x40; |
| 10347 | } |
| 10348 | else if((ctx->ftype&2)==2) { |
| 10349 | UNDEFINED; |
| 10350 | } |
| 10351 | ctx->intsize = (SLICE(ctx->op,1,1)==0) ? 0x20 : 0x40; |
| 10352 | ctx->rounding = (SLICE(ctx->op,0,0)==0) ? FPRounding_ZERO : FPRoundingMode(ctx->FPCR); |
| 10353 | if(ctx->ftype==0) OK(ENC_FRINT32X_S_FLOATDP1); |
| 10354 | if(ctx->ftype==1) OK(ENC_FRINT32X_D_FLOATDP1); |
| 10355 | } |
| 10356 | return rc; |
| 10357 | } |
| 10358 | |
| 10359 | /* frint32z_advsimd.xml */ |
| 10360 | int FRINT32Z_advsimd(context *ctx, Instruction *instr) |
no test coverage detected