Lines Matching refs:qualifier
41 vector_qualifier_p (enum aarch64_opnd_qualifier qualifier)
43 return ((qualifier >= AARCH64_OPND_QLF_V_8B
44 && qualifier <= AARCH64_OPND_QLF_V_1Q) ? TRUE
49 fp_qualifier_p (enum aarch64_opnd_qualifier qualifier)
51 return ((qualifier >= AARCH64_OPND_QLF_S_B
52 && qualifier <= AARCH64_OPND_QLF_S_Q) ? TRUE
444 OPERAND->TYPE and been qualified by OPERAND->QUALIFIER can be also
445 qualified by the qualifier TARGET. */
451 switch (operand->qualifier)
478 /* Given qualifier sequence list QSEQ_LIST and the known qualifier KNOWN_QLF
479 for operand KNOWN_IDX, return the expected qualifier for operand IDX.
493 When the known qualifier is NIL, we have to assume that there is only
494 one qualifier sequence in the *QSEQ_LIST and return the corresponding
495 qualifier directly. One scenario is that for instruction
497 which has only one possible valid qualifier sequence
502 Because the qualifier NIL has dual roles in the qualifier sequence:
503 it can mean no qualifier for the operand, or the qualifer sequence is
535 /* Operand qualifier description. */
538 /* The usage of the three data fields depends on the qualifier kind. */
548 /* Indexed by the operand qualifier enumerators. */
600 operand_variant_qualifier_p (aarch64_opnd_qualifier_t qualifier)
602 return (aarch64_opnd_qualifiers[qualifier].kind == OQK_OPD_VARIANT)
607 qualifier_value_in_range_constraint_p (aarch64_opnd_qualifier_t qualifier)
609 return (aarch64_opnd_qualifiers[qualifier].kind == OQK_VALUE_IN_RANGE)
614 aarch64_get_qualifier_name (aarch64_opnd_qualifier_t qualifier)
616 return aarch64_opnd_qualifiers[qualifier].desc;
619 /* Given an operand qualifier, return the expected data element size
622 aarch64_get_qualifier_esize (aarch64_opnd_qualifier_t qualifier)
624 assert (operand_variant_qualifier_p (qualifier) == TRUE);
625 return aarch64_opnd_qualifiers[qualifier].data0;
629 aarch64_get_qualifier_nelem (aarch64_opnd_qualifier_t qualifier)
631 assert (operand_variant_qualifier_p (qualifier) == TRUE);
632 return aarch64_opnd_qualifiers[qualifier].data1;
636 aarch64_get_qualifier_standard_value (aarch64_opnd_qualifier_t qualifier)
638 assert (operand_variant_qualifier_p (qualifier) == TRUE);
639 return aarch64_opnd_qualifiers[qualifier].data2;
643 get_lower_bound (aarch64_opnd_qualifier_t qualifier)
645 assert (qualifier_value_in_range_constraint_p (qualifier) == TRUE);
646 return aarch64_opnd_qualifiers[qualifier].data0;
650 get_upper_bound (aarch64_opnd_qualifier_t qualifier)
652 assert (qualifier_value_in_range_constraint_p (qualifier) == TRUE);
653 return aarch64_opnd_qualifiers[qualifier].data1;
669 dump_qualifier_sequence (const aarch64_opnd_qualifier_t *qualifier)
673 for (i = 0; i < AARCH64_MAX_OPND_NUM; ++i, ++qualifier)
674 printf ("%s,", aarch64_get_qualifier_name (*qualifier));
680 const aarch64_opnd_qualifier_t *qualifier)
687 curr[i] = opnd[i].qualifier;
690 dump_qualifier_sequence (qualifier);
709 /* Find the best matched qualifier sequence in *QUALIFIERS_LIST for INST.
716 the qualifier sequence for operands before and including the operand
766 First NIL qualifier indicates the end in the list. */
769 DEBUG_TRACE_IF (i == 0, "SUCCEED: empty qualifier list");
777 if (inst->operands[j].qualifier == AARCH64_OPND_QLF_NIL)
779 /* Either the operand does not have qualifier, or the qualifier
780 for the operand needs to be deduced from the qualifier
783 the obtained qualifier should be done later in
787 else if (*qualifiers != inst->operands[j].qualifier)
789 /* Unless the target qualifier can also qualify the operand
790 (which has already had a non-nil qualifier), non-equal
834 /* Operand qualifier matching and resolving.
836 Return 1 if the operand qualifier(s) in *INST match one of the qualifier
839 if UPDATE_P == TRUE, update the qualifier(s) in *INST after the matching
861 DEBUG_TRACE_IF (inst->operands[i].qualifier != qualifiers[i],
863 aarch64_get_qualifier_name (inst->operands[i].qualifier),
865 inst->operands[i].qualifier = qualifiers[i];
1253 aarch64_opnd_qualifier_t qualifier = opnd->qualifier;
1295 switch (qualifier)
1358 size = aarch64_get_qualifier_esize (opnd->qualifier);
1383 size = aarch64_get_qualifier_esize (qualifier);
1416 * aarch64_get_qualifier_esize (prev->qualifier);
1419 * aarch64_get_qualifier_esize (prev->qualifier)
1420 * aarch64_get_qualifier_nelem (prev->qualifier);
1434 size = aarch64_get_qualifier_esize (opnd->qualifier);
1463 size = aarch64_get_qualifier_esize (qualifier);
1545 if (qualifier_value_in_range_constraint_p (qualifier)
1546 && !value_in_range_p (imm, get_lower_bound (qualifier),
1547 get_upper_bound (qualifier)))
1550 get_lower_bound (qualifier),
1551 get_upper_bound (qualifier));
1586 size = aarch64_get_qualifier_esize (opnds[0].qualifier);
1615 int is32 = aarch64_get_qualifier_esize (opnds[0].qualifier) == 4;
1666 size = get_upper_bound (qualifier);
1678 int is32 = opnds[0].qualifier == AARCH64_OPND_QLF_W;
1703 size = 8 * aarch64_get_qualifier_esize (opnds[idx - 1].qualifier);
1713 size = aarch64_get_qualifier_esize (qualifier);
1723 size = aarch64_get_qualifier_esize (qualifier);
1733 /* Qualifier check. */
1734 switch (qualifier)
1766 if (aarch64_get_qualifier_esize (opnds[0].qualifier) != 8)
1788 size = aarch64_get_qualifier_esize (opnds[0].qualifier);
1885 num = 16 / aarch64_get_qualifier_esize (qualifier) - 1;
1900 if (type == AARCH64_OPND_Em && qualifier == AARCH64_OPND_QLF_S_H
1952 if (qualifier == AARCH64_OPND_QLF_X
1978 num = qualifier == AARCH64_OPND_QLF_W ? 31 : 63;
2017 /* Match operands' qualifier.
2018 *INST has already had qualifier establish for some, if not all, of
2020 qualifiers match one of the qualifier sequence in
2022 with the corresponding qualifier in such a sequence.
2029 DEBUG_TRACE ("FAIL on operand qualifier matching");
2032 /* Return an error type to indicate that it is the qualifier
2072 doing this, it helps the qualifier matching facilities work
2140 get_int_reg_name (int regno, aarch64_opnd_qualifier_t qualifier, int sp_reg_p)
2143 const int is_64 = aarch64_get_qualifier_esize (qualifier) == 4 ? 0 : 1;
2215 const char *qlf_name = aarch64_get_qualifier_name (opnd->qualifier);
2285 if (!opnd->shifter.amount && (opnd->qualifier != AARCH64_OPND_QLF_S_B
2363 assert (opnd->qualifier == AARCH64_OPND_QLF_W
2364 || opnd->qualifier == AARCH64_OPND_QLF_X);
2366 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0));
2371 assert (opnd->qualifier == AARCH64_OPND_QLF_W
2372 || opnd->qualifier == AARCH64_OPND_QLF_WSP
2373 || opnd->qualifier == AARCH64_OPND_QLF_X
2374 || opnd->qualifier == AARCH64_OPND_QLF_SP);
2376 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 1));
2384 && ((opnd->qualifier == AARCH64_OPND_QLF_W
2385 && opnds[0].qualifier == AARCH64_OPND_QLF_W
2387 || (opnd->qualifier == AARCH64_OPND_QLF_X
2396 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0));
2402 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0),
2407 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0),
2412 assert (opnd->qualifier == AARCH64_OPND_QLF_W
2413 || opnd->qualifier == AARCH64_OPND_QLF_X);
2416 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0));
2419 get_int_reg_name (opnd->reg.regno, opnd->qualifier, 0),
2433 snprintf (buf, size, "%s%d", aarch64_get_qualifier_name (opnd->qualifier),
2441 aarch64_get_qualifier_name (opnd->qualifier));
2448 aarch64_get_qualifier_name (opnd->qualifier),
2486 switch (aarch64_get_qualifier_esize (opnds[0].qualifier))
2529 switch (aarch64_get_qualifier_esize (opnds[0].qualifier))