fnmul_float.xml */
| 10114 | |
| 10115 | /* fnmul_float.xml */ |
| 10116 | int FNMUL_float(context *ctx, Instruction *instr) |
| 10117 | { |
| 10118 | int rc = DECODE_STATUS_UNMATCHED; |
| 10119 | /* class iclass_float */ |
| 10120 | /* M=0|0|S=0|11110|ftype=xx|1|Rm=xxxxx|op=1|opcode[2:0]=000|10|Rn=xxxxx|Rd=xxxxx */ |
| 10121 | if((INSWORD & 0xFF20FC00)==0x1E208800) { |
| 10122 | decode_fields32(ENC_FNMUL_H_FLOATDP2, ctx, instr); |
| 10123 | ctx->d = UINT(ctx->Rd); |
| 10124 | ctx->n = UINT(ctx->Rn); |
| 10125 | ctx->m = UINT(ctx->Rm); |
| 10126 | if(!ctx->ftype) { |
| 10127 | ctx->esize = 0x20; |
| 10128 | } |
| 10129 | else if(ctx->ftype==1) { |
| 10130 | ctx->esize = 0x40; |
| 10131 | } |
| 10132 | else if(ctx->ftype==2) { |
| 10133 | UNDEFINED; |
| 10134 | } |
| 10135 | else if(ctx->ftype==3) { |
| 10136 | if(HaveFP16Ext()) { |
| 10137 | ctx->esize = 0x10; |
| 10138 | } |
| 10139 | else { |
| 10140 | UNDEFINED; |
| 10141 | } |
| 10142 | } |
| 10143 | ctx->negated = (ctx->op==1); |
| 10144 | if(ctx->ftype==3) OK(ENC_FNMUL_H_FLOATDP2); |
| 10145 | if(ctx->ftype==0) OK(ENC_FNMUL_S_FLOATDP2); |
| 10146 | if(ctx->ftype==1) OK(ENC_FNMUL_D_FLOATDP2); |
| 10147 | } |
| 10148 | return rc; |
| 10149 | } |
| 10150 | |
| 10151 | /* frecpe_advsimd.xml */ |
| 10152 | int FRECPE_advsimd(context *ctx, Instruction *instr) |
no test coverage detected