RISC-V: Zvkh[a,b]: Remove individual instruction class

Currently we have three instruction classes defined for Zvkh[a,b]:
- INSN_CLASS_ZVKNHA
- INSN_CLASS_ZVKNHB
- INSN_CLASS_ZVKNHA_OR_ZVKNHB

The encodings of all instructions in Zvknh[a,b] are identical.
Therefore, we don't need the individual instruction classes
and can remove them.

This patch also adds the missing support of the combined instruction
class in riscv_multi_subset_supports_ext().

Fixes: 62edb233ef5 ("RISC-V: Add support for the Zvknh[a,b] ISA extensions")
Reported-By: Nelson Chu <nelson@rivosinc.com>
Signed-off-by: Christoph Müllner <christoph.muellner@vrull.eu>
diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c
index d6c8e04..bdfc0ef 100644
--- a/bfd/elfxx-riscv.c
+++ b/bfd/elfxx-riscv.c
@@ -2479,10 +2479,6 @@
       return riscv_subset_supports (rps, "zvkg");
     case INSN_CLASS_ZVKNED:
       return riscv_subset_supports (rps, "zvkned");
-    case INSN_CLASS_ZVKNHA:
-      return riscv_subset_supports (rps, "zvknha");
-    case INSN_CLASS_ZVKNHB:
-      return riscv_subset_supports (rps, "zvknhb");
     case INSN_CLASS_ZVKNHA_OR_ZVKNHB:
       return (riscv_subset_supports (rps, "zvknha")
 	      || riscv_subset_supports (rps, "zvknhb"));
@@ -2686,10 +2682,8 @@
       return _("zvkg");
     case INSN_CLASS_ZVKNED:
       return _("zvkned");
-    case INSN_CLASS_ZVKNHA:
-      return _("zvknha");
-    case INSN_CLASS_ZVKNHB:
-      return _("zvknhb");
+    case INSN_CLASS_ZVKNHA_OR_ZVKNHB:
+      return _("zvknha' or `zvknhb");
     case INSN_CLASS_ZVKSED:
       return _("zvksed");
     case INSN_CLASS_ZVKSH:
diff --git a/include/opcode/riscv.h b/include/opcode/riscv.h
index d859f44..739d6da 100644
--- a/include/opcode/riscv.h
+++ b/include/opcode/riscv.h
@@ -418,8 +418,6 @@
   INSN_CLASS_ZVBC,
   INSN_CLASS_ZVKG,
   INSN_CLASS_ZVKNED,
-  INSN_CLASS_ZVKNHA,
-  INSN_CLASS_ZVKNHB,
   INSN_CLASS_ZVKNHA_OR_ZVKNHB,
   INSN_CLASS_ZVKSED,
   INSN_CLASS_ZVKSH,