TEST_GEN_PROGS := group_constraint_pmc56_test group_pmc56_exclude_constraints_test group_constraint_pmc_count_test \
        group_constraint_repeat_test group_constraint_radix_scope_qual_test reserved_bits_mmcra_sample_elig_mode_test \
        group_constraint_mmcra_sample_test invalid_event_code_test reserved_bits_mmcra_thresh_ctl_test \
-       blacklisted_events_test event_alternatives_tests_p9 event_alternatives_tests_p10 generic_events_valid_test
+       blacklisted_events_test event_alternatives_tests_p9 event_alternatives_tests_p10 generic_events_valid_test \
+       group_constraint_l2l3_sel_test
 
 top_srcdir = ../../../../../..
 include ../../../lib.mk
 
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Copyright 2022, Kajol Jain, IBM Corp.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "../event.h"
+#include "utils.h"
+#include "../sampling_tests/misc.h"
+
+/* All successful D-side store dispatches for this thread */
+#define EventCode_1 0x010000046080
+/* All successful D-side store dispatches for this thread that were L2 Miss */
+#define EventCode_2 0x26880
+/* All successful D-side store dispatches for this thread that were L2 Miss */
+#define EventCode_3 0x010000026880
+
+/*
+ * Testcase for group constraint check of l2l3_sel bits which is
+ * used to program l2l3 select field in Monitor Mode Control Register 0
+ * (MMCR0: 56-60).
+ * All events in the group should match l2l3_sel bits otherwise
+ * event_open for the group should fail.
+ */
+static int group_constraint_l2l3_sel(void)
+{
+       struct event event, leader;
+
+       /*
+        * Check for platform support for the test.
+        * This test is only aplicable on power10
+        */
+       SKIP_IF(platform_check_for_tests());
+       SKIP_IF(!have_hwcap2(PPC_FEATURE2_ARCH_3_1));
+
+       /* Init the events for the group contraint check for l2l3_sel bits */
+       event_init(&leader, EventCode_1);
+       FAIL_IF(event_open(&leader));
+
+       event_init(&event, EventCode_2);
+
+       /* Expected to fail as sibling event doesn't request same l2l3_sel bits as leader */
+       FAIL_IF(!event_open_with_group(&event, leader.fd));
+
+       event_close(&event);
+
+       /* Init the event for the group contraint l2l3_sel test */
+       event_init(&event, EventCode_3);
+
+       /* Expected to succeed as sibling event request same l2l3_sel bits as leader */
+       FAIL_IF(event_open_with_group(&event, leader.fd));
+
+       event_close(&leader);
+       event_close(&event);
+
+       return 0;
+}
+
+int main(void)
+{
+       return test_harness(group_constraint_l2l3_sel, "group_constraint_l2l3_sel");
+}