sqdmlal_advsimd_elt.xml */
| 22157 | |
| 22158 | /* sqdmlal_advsimd_elt.xml */ |
| 22159 | int SQDMLAL_advsimd_elt(context *ctx, Instruction *instr) |
| 22160 | { |
| 22161 | int rc = DECODE_STATUS_UNMATCHED; |
| 22162 | /* class iclass_2reg_scalar */ |
| 22163 | /* 01|U=0|11111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=0|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */ |
| 22164 | if((INSWORD & 0xFF00F400)==0x5F003000) { |
| 22165 | decode_fields32(ENC_SQDMLAL_ASISDELEM_L, ctx, instr); |
| 22166 | ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40; |
| 22167 | if(ctx->size==1) { |
| 22168 | ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M)); |
| 22169 | ctx->Rmhi = 0; |
| 22170 | } |
| 22171 | else if(ctx->size==2) { |
| 22172 | ctx->index = UINT(((ctx->H<<1)|ctx->L)); |
| 22173 | ctx->Rmhi = ctx->M; |
| 22174 | } |
| 22175 | else { |
| 22176 | UNDEFINED; |
| 22177 | } |
| 22178 | ctx->d = UINT(ctx->Rd); |
| 22179 | ctx->n = UINT(ctx->Rn); |
| 22180 | ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm)); |
| 22181 | ctx->esize = (8) << (UINT(ctx->size)); |
| 22182 | ctx->datasize = ctx->esize; |
| 22183 | ctx->elements = 1; |
| 22184 | ctx->part = 0; |
| 22185 | ctx->sub_op = (ctx->o2==1); |
| 22186 | OK(ENC_SQDMLAL_ASISDELEM_L); |
| 22187 | } |
| 22188 | /* class iclass_2reg_element */ |
| 22189 | /* 0|Q=x|U=0|01111|size=xx|L=x|M=x|Rm=xxxx|opcode[3]=0|o2=0|opcode[1:0]=11|H=x|0|Rn=xxxxx|Rd=xxxxx */ |
| 22190 | if((INSWORD & 0xBF00F400)==0xF003000) { |
| 22191 | decode_fields32(ENC_SQDMLAL_ASIMDELEM_L, ctx, instr); |
| 22192 | ctx->idxdsize = (ctx->H==1) ? 0x80 : 0x40; |
| 22193 | if(ctx->size==1) { |
| 22194 | ctx->index = UINT(((ctx->H<<2)|(ctx->L<<1)|ctx->M)); |
| 22195 | ctx->Rmhi = 0; |
| 22196 | } |
| 22197 | else if(ctx->size==2) { |
| 22198 | ctx->index = UINT(((ctx->H<<1)|ctx->L)); |
| 22199 | ctx->Rmhi = ctx->M; |
| 22200 | } |
| 22201 | else { |
| 22202 | UNDEFINED; |
| 22203 | } |
| 22204 | ctx->d = UINT(ctx->Rd); |
| 22205 | ctx->n = UINT(ctx->Rn); |
| 22206 | ctx->m = UINT(((ctx->Rmhi<<4)|ctx->Rm)); |
| 22207 | ctx->esize = (8) << (UINT(ctx->size)); |
| 22208 | ctx->datasize = 0x40; |
| 22209 | ctx->part = UINT(ctx->Q); |
| 22210 | ctx->elements = ((ctx->esize) ? ((ctx->datasize) / (ctx->esize)) : 0); |
| 22211 | ctx->sub_op = (ctx->o2==1); |
| 22212 | OK(ENC_SQDMLAL_ASIMDELEM_L); |
| 22213 | } |
| 22214 | return rc; |
| 22215 | } |
| 22216 |
no test coverage detected