Home | History | Annotate | Download | only in riscv

Lines Matching refs:subset

33 #include "config/riscv/riscv-subset.h"
282 multi_letter_subset_rank (const std::string &subset)
284 gcc_assert (subset.length () >= 2);
288 char multiletter_class = subset[0];
312 low_order = single_letter_subset_rank (subset[1]);
319 /* subset compare
324 0 A and B are same subset.
370 /* Add new subset to list. */
373 riscv_subset_list::add (const char *subset, int major_version,
377 riscv_subset_t *ext = lookup (subset);
394 subset);
405 s->name = subset;
419 gcc_assert (subset[0] != 'e'
420 && subset[0] != 'i'
421 && subset[0] != 'g');
433 /* Subset list must in canonical order, but implied subset won't
479 /* Add new subset to list, but using default version from ISA spec version. */
482 riscv_subset_list::add (const char *subset, bool implied_p)
486 get_default_version (subset, &major_version, &minor_version);
488 add (subset, major_version, minor_version, false, implied_p);
491 /* Convert subset info to string with explicit version info,
501 riscv_subset_t *subset;
515 for (subset = m_head; subset != NULL; subset = subset->next)
516 if (subset->name == "i")
518 i2p0 = subset->major_version == 2 && subset->minor_version == 0;
532 for (subset = m_head; subset != NULL; subset = subset->next)
534 if (((subset->implied_p && skip_zifencei) || i2p0) &&
535 subset->name == "zifencei")
538 if (((subset->implied_p && skip_zicsr) || i2p0) &&
539 subset->name == "zicsr")
546 || subset->explicit_version_p
547 || subset->name.length() > 1))
551 oss << subset->name;
554 if ((version_p || subset->explicit_version_p) &&
555 (subset->major_version != 0 || subset->minor_version != 0))
556 oss << subset->major_version
558 << subset->minor_version;
564 /* Find subset in list with version checking, return NULL if not found.
569 riscv_subset_list::lookup (const char *subset, int major_version,
575 if (strcasecmp (s->name.c_str (), subset) == 0)
600 /* Parsing subset version.
614 `explicit_version_p`: True if this subset is not using default version. */
747 error_at (m_loc, "%<-march=%s%>: first ISA subset must be %<e%>, "
754 char subset[2] = {0, 0};
774 error_at (m_loc, "%<-march=%s%>: unsupported ISA subset %<%c%>",
786 subset[0] = std_ext;
788 p = parsing_subset_version (subset, p, &major_version, &minor_version,
791 add (subset, major_version, minor_version, explicit_version_p, false);
904 char *subset = xstrdup (p);
905 char *q = subset;
921 len = q - subset;
928 if (ISDIGIT (subset[i]))
936 if (subset[i] == 'p' &&
938 found_any_number && ISDIGIT (subset[i-1]))
948 backup = subset[end_of_version_pos];
949 subset[end_of_version_pos] = '\0';
950 ext = xstrdup (subset);
951 subset[end_of_version_pos] = backup;
954 = parsing_subset_version (ext, subset + end_of_version_pos, &major_version, &minor_version,
961 subset[end_of_version_pos] = '\0';
963 if (strlen (subset) == 1)
967 free (subset);
971 add (subset, major_version, minor_version, explicit_version_p, false);
972 p += end_of_version - subset;
973 free (subset);
986 /* Parsing arch string to subset list, return NULL if parsing failed. */