while ((pmu = perf_pmu__scan(pmu)) != NULL) {
                struct perf_pmu_alias *alias;
+               bool auto_merge_stats;
 
                if (parse_events__filter_pmu(parse_state, pmu))
                        continue;
 
+               auto_merge_stats = perf_pmu__auto_merge_stats(pmu);
+
                list_for_each_entry(alias, &pmu->aliases, list) {
                        if (!strcasecmp(alias->name, str)) {
                                parse_events_copy_term_list(head, &orig_head);
                                if (!parse_events_add_pmu(parse_state, list,
                                                          pmu->name, orig_head,
-                                                         /*auto_merge_stats=*/true)) {
+                                                         auto_merge_stats)) {
                                        pr_debug("%s -> %s/%s/\n", str,
                                                 pmu->name, alias->str);
                                        ok++;
 
                                name += 7;
                        if (!perf_pmu__match(pattern, name, $1) ||
                            !perf_pmu__match(pattern, pmu->alias_name, $1)) {
+                               bool auto_merge_stats = perf_pmu__auto_merge_stats(pmu);
+
                                if (parse_events_copy_term_list(orig_terms, &terms))
                                        CLEANUP_YYABORT;
                                if (!parse_events_add_pmu(parse_state, list, pmu->name, terms,
-                                                         /*auto_merge_stats=*/true)) {
+                                                         auto_merge_stats)) {
                                        ok++;
                                        parse_state->wild_card_pmus = true;
                                }
 
        return is_pmu_core(pmu->name) || perf_pmu__is_hybrid(pmu->name);
 }
 
+bool perf_pmu__auto_merge_stats(const struct perf_pmu *pmu)
+{
+       return !perf_pmu__is_hybrid(pmu->name);
+}
+
 static bool pmu_alias_is_duplicate(struct sevent *alias_a,
                                   struct sevent *alias_b)
 {
 
 bool is_pmu_core(const char *name);
 bool perf_pmu__supports_legacy_cache(const struct perf_pmu *pmu);
 bool perf_pmu__supports_wildcard_numeric(const struct perf_pmu *pmu);
+bool perf_pmu__auto_merge_stats(const struct perf_pmu *pmu);
 void print_pmu_events(const struct print_callbacks *print_cb, void *print_state);
 bool pmu_have_event(const char *pname, const char *name);