fmls_advsimd_vec.xml */
| 9257 | |
| 9258 | /* fmls_advsimd_vec.xml */ |
| 9259 | int FMLS_advsimd_vec(context *ctx, Instruction *instr) |
| 9260 | { |
| 9261 | int rc = DECODE_STATUS_UNMATCHED; |
| 9262 | /* class iclass_half */ |
| 9263 | /* 0|Q=x|U=0|01110|a=1|10|Rm=xxxxx|00|opcode=001|1|Rn=xxxxx|Rd=xxxxx */ |
| 9264 | if((INSWORD & 0xBFE0FC00)==0xEC00C00) { |
| 9265 | decode_fields32(ENC_FMLS_ASIMDSAMEFP16_ONLY, ctx, instr); |
| 9266 | if(!HaveFP16Ext()) { |
| 9267 | UNDEFINED; |
| 9268 | } |
| 9269 | ctx->d = UINT(ctx->Rd); |
| 9270 | ctx->n = UINT(ctx->Rn); |
| 9271 | ctx->m = UINT(ctx->Rm); |
| 9272 | ctx->esize = 0x10; |
| 9273 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 9274 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 9275 | ctx->sub_op = (ctx->a==1); |
| 9276 | OK(ENC_FMLS_ASIMDSAMEFP16_ONLY); |
| 9277 | } |
| 9278 | /* class iclass_single_and_double */ |
| 9279 | /* 0|Q=x|U=0|01110|op=1|sz=x|1|Rm=xxxxx|opcode=11001|1|Rn=xxxxx|Rd=xxxxx */ |
| 9280 | if((INSWORD & 0xBFA0FC00)==0xEA0CC00) { |
| 9281 | decode_fields32(ENC_FMLS_ASIMDSAME_ONLY, ctx, instr); |
| 9282 | ctx->d = UINT(ctx->Rd); |
| 9283 | ctx->n = UINT(ctx->Rn); |
| 9284 | ctx->m = UINT(ctx->Rm); |
| 9285 | if(((ctx->sz<<1)|ctx->Q)==2) { |
| 9286 | UNDEFINED; |
| 9287 | } |
| 9288 | ctx->esize = (0x20) << (UINT(ctx->sz)); |
| 9289 | ctx->datasize = (ctx->Q==1) ? 0x80 : 0x40; |
| 9290 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 9291 | ctx->sub_op = (ctx->op==1); |
| 9292 | OK(ENC_FMLS_ASIMDSAME_ONLY); |
| 9293 | } |
| 9294 | return rc; |
| 9295 | } |
| 9296 | |
| 9297 | /* fmov_advsimd.xml */ |
| 9298 | int FMOV_advsimd(context *ctx, Instruction *instr) |
no test coverage detected