add new API cs_group_name() to return group name in string, given the group id
diff --git a/arch/AArch64/AArch64Mapping.c b/arch/AArch64/AArch64Mapping.c
index 411f775..765af53 100644
--- a/arch/AArch64/AArch64Mapping.c
+++ b/arch/AArch64/AArch64Mapping.c
@@ -17034,6 +17034,29 @@
 #endif
 }
 
+#ifndef CAPSTONE_DIET
+static name_map group_name_maps[] = {
+	{ ARM64_GRP_INVALID, NULL },
+	{ ARM64_GRP_CRYPTO, "crypto" },
+	{ ARM64_GRP_FPARMV8, "fparmv8" },
+	{ ARM64_GRP_NEON, "neon" },
+
+	{ ARM64_GRP_JUMP, "jump" },
+};
+#endif
+
+const char *AArch64_group_name(csh handle, unsigned int id)
+{
+#ifndef CAPSTONE_DIET
+	if (id >= ARM64_GRP_MAX)
+		return NULL;
+
+	return group_name_maps[id].name;
+#else
+	return NULL;
+#endif
+}
+
 // map instruction name to public instruction ID
 arm64_reg AArch64_map_insn(const char *name)
 {
diff --git a/arch/AArch64/AArch64Mapping.h b/arch/AArch64/AArch64Mapping.h
index 2bbdd35..1aaf31f 100644
--- a/arch/AArch64/AArch64Mapping.h
+++ b/arch/AArch64/AArch64Mapping.h
@@ -14,6 +14,8 @@
 
 const char *AArch64_insn_name(csh handle, unsigned int id);
 
+const char *AArch64_group_name(csh handle, unsigned int id);
+
 // map instruction name to public instruction ID
 arm64_reg AArch64_map_insn(const char *name);
 
diff --git a/arch/AArch64/AArch64Module.c b/arch/AArch64/AArch64Module.c
index 22d0fd8..f7fa97f 100644
--- a/arch/AArch64/AArch64Module.c
+++ b/arch/AArch64/AArch64Module.c
@@ -27,6 +27,7 @@
 	ud->reg_name = AArch64_reg_name;
 	ud->insn_id = AArch64_get_insn_id;
 	ud->insn_name = AArch64_insn_name;
+	ud->group_name = AArch64_group_name;
 	ud->post_printer = AArch64_post_printer;
 
 	return CS_ERR_OK;