bics.xml */
| 1196 | |
| 1197 | /* bics.xml */ |
| 1198 | int BICS(context *ctx, Instruction *instr) |
| 1199 | { |
| 1200 | int rc = DECODE_STATUS_UNMATCHED; |
| 1201 | /* class iclass_s */ |
| 1202 | /* sf=x|opc=11|01010|shift=xx|N=1|Rm=xxxxx|imm6=xxxxxx|Rn=xxxxx|Rd=xxxxx */ |
| 1203 | if((INSWORD & 0x7F200000)==0x6A200000) { |
| 1204 | decode_fields32(ENC_BICS_32_LOG_SHIFT, ctx, instr); |
| 1205 | ctx->d = UINT(ctx->Rd); |
| 1206 | ctx->n = UINT(ctx->Rn); |
| 1207 | ctx->m = UINT(ctx->Rm); |
| 1208 | ctx->datasize = (ctx->sf==1) ? 0x40 : 0x20; |
| 1209 | if(!ctx->opc) { |
| 1210 | ctx->op = LogicalOp_AND; |
| 1211 | ctx->setflags = FALSE; |
| 1212 | instr->setflags = FLAGEFFECT_NONE; |
| 1213 | } |
| 1214 | else if(ctx->opc==1) { |
| 1215 | ctx->op = LogicalOp_ORR; |
| 1216 | ctx->setflags = FALSE; |
| 1217 | instr->setflags = FLAGEFFECT_NONE; |
| 1218 | } |
| 1219 | else if(ctx->opc==2) { |
| 1220 | ctx->op = LogicalOp_EOR; |
| 1221 | ctx->setflags = FALSE; |
| 1222 | instr->setflags = FLAGEFFECT_NONE; |
| 1223 | } |
| 1224 | else if(ctx->opc==3) { |
| 1225 | ctx->op = LogicalOp_AND; |
| 1226 | ctx->setflags = TRUE; |
| 1227 | instr->setflags = FLAGEFFECT_SETS; |
| 1228 | } |
| 1229 | if(ctx->sf==0 && SLICE(ctx->imm6,5,5)==1) { |
| 1230 | UNDEFINED; |
| 1231 | } |
| 1232 | ctx->shift_type = DecodeShift(ctx->shift); |
| 1233 | ctx->shift_amount = UINT(ctx->imm6); |
| 1234 | ctx->invert = (ctx->N==1); |
| 1235 | if(ctx->sf==0) OK(ENC_BICS_32_LOG_SHIFT); |
| 1236 | if(ctx->sf==1) OK(ENC_BICS_64_LOG_SHIFT); |
| 1237 | } |
| 1238 | return rc; |
| 1239 | } |
| 1240 | |
| 1241 | /* bic_advsimd_imm.xml */ |
| 1242 | int BIC_advsimd_imm(context *ctx, Instruction *instr) |
no test coverage detected