fcsel_float.xml */
| 5933 | |
| 5934 | /* fcsel_float.xml */ |
| 5935 | int FCSEL_float(context *ctx, Instruction *instr) |
| 5936 | { |
| 5937 | int rc = DECODE_STATUS_UNMATCHED; |
| 5938 | /* class iclass_float */ |
| 5939 | /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|cond=xxxx|11|Rn=xxxxx|Rd=xxxxx */ |
| 5940 | if((INSWORD & 0xFF200C00)==0x1E200C00) { |
| 5941 | decode_fields32(ENC_FCSEL_H_FLOATSEL, ctx, instr); |
| 5942 | ctx->d = UINT(ctx->Rd); |
| 5943 | ctx->n = UINT(ctx->Rn); |
| 5944 | ctx->m = UINT(ctx->Rm); |
| 5945 | if(!ctx->ftype) { |
| 5946 | ctx->datasize = 0x20; |
| 5947 | } |
| 5948 | else if(ctx->ftype==1) { |
| 5949 | ctx->datasize = 0x40; |
| 5950 | } |
| 5951 | else if(ctx->ftype==2) { |
| 5952 | UNDEFINED; |
| 5953 | } |
| 5954 | else if(ctx->ftype==3) { |
| 5955 | if(HaveFP16Ext()) { |
| 5956 | ctx->datasize = 0x10; |
| 5957 | } |
| 5958 | else { |
| 5959 | UNDEFINED; |
| 5960 | } |
| 5961 | } |
| 5962 | ctx->condition = ctx->cond; |
| 5963 | if(ctx->ftype==3) OK(ENC_FCSEL_H_FLOATSEL); |
| 5964 | if(ctx->ftype==0) OK(ENC_FCSEL_S_FLOATSEL); |
| 5965 | if(ctx->ftype==1) OK(ENC_FCSEL_D_FLOATSEL); |
| 5966 | } |
| 5967 | return rc; |
| 5968 | } |
| 5969 | |
| 5970 | /* fcvtas_advsimd.xml */ |
| 5971 | int FCVTAS_advsimd(context *ctx, Instruction *instr) |
no test coverage detected