Lines Matching refs:qualifier
130 vector_qualifier_p (enum aarch64_opnd_qualifier qualifier)
132 return (qualifier >= AARCH64_OPND_QLF_V_8B
133 && qualifier <= AARCH64_OPND_QLF_V_1Q);
137 fp_qualifier_p (enum aarch64_opnd_qualifier qualifier)
139 return (qualifier >= AARCH64_OPND_QLF_S_B
140 && qualifier <= AARCH64_OPND_QLF_S_Q);
277 { 22, 1 }, /* SME_tszh: immediate and qualifier field, bit 22. */
278 { 18, 3 }, /* SME_tszl: immediate and qualifier field, bits [20:18]. */
714 OPERAND->TYPE and been qualified by OPERAND->QUALIFIER can be also
715 qualified by the qualifier TARGET. */
721 switch (operand->qualifier)
748 /* Given qualifier sequence list QSEQ_LIST and the known qualifier KNOWN_QLF
749 for operand KNOWN_IDX, return the expected qualifier for operand IDX.
763 When the known qualifier is NIL, we have to assume that there is only
764 one qualifier sequence in the *QSEQ_LIST and return the corresponding
765 qualifier directly. One scenario is that for instruction
767 which has only one possible valid qualifier sequence
772 Because the qualifier NIL has dual roles in the qualifier sequence:
773 it can mean no qualifier for the operand, or the qualifer sequence is
805 /* Operand qualifier description. */
808 /* The usage of the three data fields depends on the qualifier kind. */
818 /* Indexed by the operand qualifier enumerators. */
856 /* Qualifier for scaled immediate for Tag granule (stg,st2g,etc). */
882 operand_variant_qualifier_p (aarch64_opnd_qualifier_t qualifier)
884 return aarch64_opnd_qualifiers[qualifier].kind == OQK_OPD_VARIANT;
888 qualifier_value_in_range_constraint_p (aarch64_opnd_qualifier_t qualifier)
890 return aarch64_opnd_qualifiers[qualifier].kind == OQK_VALUE_IN_RANGE;
894 aarch64_get_qualifier_name (aarch64_opnd_qualifier_t qualifier)
896 return aarch64_opnd_qualifiers[qualifier].desc;
899 /* Given an operand qualifier, return the expected data element size
902 aarch64_get_qualifier_esize (aarch64_opnd_qualifier_t qualifier)
904 assert (operand_variant_qualifier_p (qualifier));
905 return aarch64_opnd_qualifiers[qualifier].data0;
909 aarch64_get_qualifier_nelem (aarch64_opnd_qualifier_t qualifier)
911 assert (operand_variant_qualifier_p (qualifier));
912 return aarch64_opnd_qualifiers[qualifier].data1;
916 aarch64_get_qualifier_standard_value (aarch64_opnd_qualifier_t qualifier)
918 assert (operand_variant_qualifier_p (qualifier));
919 return aarch64_opnd_qualifiers[qualifier].data2;
923 get_lower_bound (aarch64_opnd_qualifier_t qualifier)
925 assert (qualifier_value_in_range_constraint_p (qualifier));
926 return aarch64_opnd_qualifiers[qualifier].data0;
930 get_upper_bound (aarch64_opnd_qualifier_t qualifier)
932 assert (qualifier_value_in_range_constraint_p (qualifier));
933 return aarch64_opnd_qualifiers[qualifier].data1;
949 dump_qualifier_sequence (const aarch64_opnd_qualifier_t *qualifier)
953 for (i = 0; i < AARCH64_MAX_OPND_NUM; ++i, ++qualifier)
954 printf ("%s,", aarch64_get_qualifier_name (*qualifier));
960 const aarch64_opnd_qualifier_t *qualifier)
967 curr[i] = opnd[i].qualifier;
970 dump_qualifier_sequence (qualifier);
1008 /* Find the best matched qualifier sequence in *QUALIFIERS_LIST for INST.
1018 the qualifier sequence for operands before and including the operand
1070 qualifier sequence. (This matters for strict testing.) In other
1077 if (inst->operands[j].qualifier == AARCH64_OPND_QLF_NIL
1080 /* Either the operand does not have qualifier, or the qualifier
1081 for the operand needs to be deduced from the qualifier
1084 the obtained qualifier should be done later in
1088 else if (*qualifiers != inst->operands[j].qualifier)
1090 /* Unless the target qualifier can also qualify the operand
1091 (which has already had a non-nil qualifier), non-equal
1136 /* Operand qualifier matching and resolving.
1138 Return 1 if the operand qualifier(s) in *INST match one of the qualifier
1144 if UPDATE_P, update the qualifier(s) in *INST after the matching
1167 DEBUG_TRACE_IF (inst->operands[i].qualifier != qualifiers[i],
1169 aarch64_get_qualifier_name (inst->operands[i].qualifier),
1171 inst->operands[i].qualifier = qualifiers[i];
1756 cumulative sum of qualifier sizes preceding the address operand in the
1771 num_bytes += aarch64_get_qualifier_esize (opnds[i].qualifier);
1804 aarch64_opnd_qualifier_t qualifier = opnd->qualifier;
1863 switch (qualifier)
1911 size = aarch64_get_qualifier_esize (opnd->qualifier);
1918 size = aarch64_get_qualifier_esize (opnd->qualifier);
1980 size = aarch64_get_qualifier_esize (opnd->qualifier);
2049 size = aarch64_get_qualifier_esize (opnd->qualifier);
2159 size = aarch64_get_qualifier_esize (opnd->qualifier);
2265 size = aarch64_get_qualifier_esize (opnd->qualifier);
2291 size = aarch64_get_qualifier_esize (qualifier);
2368 * aarch64_get_qualifier_esize (prev->qualifier);
2371 * aarch64_get_qualifier_esize (prev->qualifier)
2372 * aarch64_get_qualifier_nelem (prev->qualifier);
2386 size = aarch64_get_qualifier_esize (opnd->qualifier);
2415 size = aarch64_get_qualifier_esize (qualifier);
2673 num = 16 / aarch64_get_qualifier_esize (qualifier) - 1;
2718 if (qualifier_value_in_range_constraint_p (qualifier)
2719 && !value_in_range_p (imm, get_lower_bound (qualifier),
2720 get_upper_bound (qualifier)))
2723 get_lower_bound (qualifier),
2724 get_upper_bound (qualifier));
2759 size = aarch64_get_qualifier_esize (opnds[0].qualifier);
2788 int esize = aarch64_get_qualifier_esize (opnds[0].qualifier);
2880 size = get_upper_bound (qualifier);
2893 int esize = aarch64_get_qualifier_esize (opnds[0].qualifier);
2943 size = 8 * aarch64_get_qualifier_esize (opnds[idx - 1].qualifier);
2953 size = aarch64_get_qualifier_esize (qualifier);
2963 size = aarch64_get_qualifier_esize (qualifier);
2973 /* Qualifier check. */
2974 switch (qualifier)
3006 if (aarch64_get_qualifier_esize (opnds[0].qualifier) != 8)
3028 size = aarch64_get_qualifier_esize (opnds[0].qualifier);
3092 size = aarch64_get_qualifier_esize (opnds[0].qualifier);
3172 int esize = aarch64_get_qualifier_esize (opnds[0].qualifier);
3185 int esize = aarch64_get_qualifier_esize (opnds[0].qualifier);
3214 size = aarch64_get_qualifier_esize (opnds[idx - 1].qualifier);
3237 size = aarch64_get_qualifier_esize (opnds[idx - num].qualifier);
3307 num = aarch64_get_qualifier_nelem (opnds[0].qualifier)
3308 * aarch64_get_qualifier_esize (opnds[0].qualifier) / 2;
3319 num = num / aarch64_get_qualifier_esize (qualifier) - 1;
3320 assert (aarch64_get_qualifier_nelem (qualifier) == 1);
3337 && (qualifier == AARCH64_OPND_QLF_S_H
3338 || qualifier == AARCH64_OPND_QLF_S_2B)
3396 if (qualifier == AARCH64_OPND_QLF_X
3422 num = qualifier == AARCH64_OPND_QLF_W ? 31 : 63;
3533 /* Match operands' qualifier.
3534 *INST has already had qualifier establish for some, if not all, of
3536 qualifiers match one of the qualifier sequence in
3538 with the corresponding qualifier in such a sequence.
3547 DEBUG_TRACE ("FAIL on operand qualifier matching");
3550 /* Return an error type to indicate that it is the qualifier
3591 doing this, it helps the qualifier matching facilities work
3663 get_int_reg_name (int regno, aarch64_opnd_qualifier_t qualifier, int sp_reg_p)
3666 const int is_64 = aarch64_get_qualifier_esize (qualifier) == 4 ? 0 : 1;
3701 qualifier to decide whether the suffix should be .S or .D. */
3704 get_addr_sve_reg_name (int regno, aarch64_opnd_qualifier_t qualifier)
3706 assert (qualifier == AARCH64_OPND_QLF_S_S
3707 || qualifier == AARCH64_OPND_QLF_S_D);
3708 return sve_reg[qualifier == AARCH64_OPND_QLF_S_D][regno];
3847 const char *qlf_name = aarch64_get_qualifier_name (opnd->qualifier);
3865 if (opnd->qualifier == AARCH64_OPND_QLF_NIL)
3982 if (!opnd->shifter.amount && (opnd->qualifier != AARCH64_OPND_QLF_S_B
4135 assert (opnd->qualifier == AARCH64_OPND_QLF_W
4136 || opnd->qualifier == AARCH64_OPND_QLF_X);
4139 opnd->qualifier, 0)));
4147 assert (opnd->qualifier == AARCH64_OPND_QLF_W
4148 || opnd->qualifier == AARCH64_OPND_QLF_WSP
4149 || opnd->qualifier == AARCH64_OPND_QLF_X
4150 || opnd->qualifier == AARCH64_OPND_QLF_SP);
4153 opnd->qualifier, 1)));
4161 && ((opnd->qualifier == AARCH64_OPND_QLF_W
4162 && opnds[0].qualifier == AARCH64_OPND_QLF_W
4164 || (opnd->qualifier == AARCH64_OPND_QLF_X
4175 opnd->qualifier, 0)));
4181 style_reg (styler, get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0)),
4186 style_reg (styler, get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0)),
4191 assert (opnd->qualifier == AARCH64_OPND_QLF_W
4192 || opnd->qualifier == AARCH64_OPND_QLF_X);
4196 opnd->qualifier, 0)));
4199 style_reg (styler, get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0)),
4205 assert (opnd->qualifier == AARCH64_OPND_QLF_X);
4210 opnd->qualifier, 0)));
4213 style_reg (styler, get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0)),
4233 aarch64_get_qualifier_name (opnd->qualifier),
4243 aarch64_get_qualifier_name (opnd->qualifier)));
4254 aarch64_get_qualifier_name (opnd->qualifier)),
4290 if (opnd->qualifier == AARCH64_OPND_QLF_NIL)
4293 else if (opnd->qualifier == AARCH64_OPND_QLF_P_Z
4294 || opnd->qualifier == AARCH64_OPND_QLF_P_M)
4297 aarch64_get_qualifier_name (opnd->qualifier)));
4301 aarch64_get_qualifier_name (opnd->qualifier)));
4311 if (opnd->qualifier == AARCH64_OPND_QLF_NIL)
4314 else if (opnd->qualifier == AARCH64_OPND_QLF_P_Z
4315 || opnd->qualifier == AARCH64_OPND_QLF_P_M)
4318 aarch64_get_qualifier_name (opnd->qualifier)));
4322 aarch64_get_qualifier_name (opnd->qualifier)));
4346 if (opnd->qualifier == AARCH64_OPND_QLF_NIL)
4351 aarch64_get_qualifier_name (opnd->qualifier)));
4399 (opnd->qualifier == AARCH64_OPND_QLF_NIL
4402 aarch64_get_qualifier_name (opnd->qualifier))),
4427 aarch64_get_qualifier_name (opnd->qualifier)));
4440 aarch64_get_qualifier_name (opnd->qualifier)),
4470 opnd->qualifier == AARCH64_OPND_QLF_NIL ? "" : ".",
4471 (opnd->qualifier == AARCH64_OPND_QLF_NIL
4473 : aarch64_get_qualifier_name (opnd->qualifier))),
4502 opnd->qualifier == AARCH64_OPND_QLF_NIL ? "" : ".",
4503 (opnd->qualifier == AARCH64_OPND_QLF_NIL
4505 : aarch64_get_qualifier_name (opnd->qualifier))),
4522 aarch64_get_qualifier_name (opnd->qualifier)),
4656 switch (aarch64_get_qualifier_esize (opnds[0].qualifier))
4725 switch (aarch64_get_qualifier_esize (opnds[0].qualifier))
4861 get_addr_sve_reg_name (opnd->addr.base_regno, opnd->qualifier),
4879 get_addr_sve_reg_name (opnd->addr.offset.regno, opnd->qualifier),
4919 get_addr_sve_reg_name (opnd->addr.base_regno, opnd->qualifier),
4928 get_addr_sve_reg_name (opnd->addr.base_regno, opnd->qualifier),
4929 get_addr_sve_reg_name (opnd->addr.offset.regno, opnd->qualifier),
5808 = aarch64_get_qualifier_esize (inst_op.qualifier);
5836 : aarch64_get_qualifier_esize (inst_dest.qualifier);
5854 if (inst_pred.qualifier != AARCH64_OPND_QLF_P_M)
5923 if (inst_dest.qualifier
5924 && blk_dest.qualifier
5926 != aarch64_get_qualifier_esize (blk_dest.qualifier))
5990 && inst->operands[0].qualifier == AARCH64_OPND_QLF_S_D
5995 && inst->operands[0].qualifier == AARCH64_OPND_QLF_S_D