fmul_float.xml */
| 9919 | |
| 9920 | /* fmul_float.xml */ |
| 9921 | int FMUL_float(context *ctx, Instruction *instr) |
| 9922 | { |
| 9923 | int rc = DECODE_STATUS_UNMATCHED; |
| 9924 | /* class iclass_float */ |
| 9925 | /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|op=0|opcode[2:0]=000|10|Rn=xxxxx|Rd=xxxxx */ |
| 9926 | if((INSWORD & 0xFF20FC00)==0x1E200800) { |
| 9927 | decode_fields32(ENC_FMUL_H_FLOATDP2, ctx, instr); |
| 9928 | ctx->d = UINT(ctx->Rd); |
| 9929 | ctx->n = UINT(ctx->Rn); |
| 9930 | ctx->m = UINT(ctx->Rm); |
| 9931 | if(!ctx->ftype) { |
| 9932 | ctx->esize = 0x20; |
| 9933 | } |
| 9934 | else if(ctx->ftype==1) { |
| 9935 | ctx->esize = 0x40; |
| 9936 | } |
| 9937 | else if(ctx->ftype==2) { |
| 9938 | UNDEFINED; |
| 9939 | } |
| 9940 | else if(ctx->ftype==3) { |
| 9941 | if(HaveFP16Ext()) { |
| 9942 | ctx->esize = 0x10; |
| 9943 | } |
| 9944 | else { |
| 9945 | UNDEFINED; |
| 9946 | } |
| 9947 | } |
| 9948 | ctx->negated = (ctx->op==1); |
| 9949 | if(ctx->ftype==3) OK(ENC_FMUL_H_FLOATDP2); |
| 9950 | if(ctx->ftype==0) OK(ENC_FMUL_S_FLOATDP2); |
| 9951 | if(ctx->ftype==1) OK(ENC_FMUL_D_FLOATDP2); |
| 9952 | } |
| 9953 | return rc; |
| 9954 | } |
| 9955 | |
| 9956 | /* fneg_advsimd.xml */ |
| 9957 | int FNEG_advsimd(context *ctx, Instruction *instr) |
no test coverage detected