[X86] Fix a bug in handling GRXX subclasses in Domain Reassignment pass

When trying to determine the correct Mask register class corresponding
to a GPR register class, not all register classes were handled.
This caused an assertion to be raised on some scenarios.

Differential Revision:
https://reviews.llvm.org/D40290

llvm-svn: 319745
diff --git a/llvm/lib/Target/X86/X86DomainReassignment.cpp b/llvm/lib/Target/X86/X86DomainReassignment.cpp
index f205d3e..573b7ca 100644
--- a/llvm/lib/Target/X86/X86DomainReassignment.cpp
+++ b/llvm/lib/Target/X86/X86DomainReassignment.cpp
@@ -70,13 +70,13 @@
 static const TargetRegisterClass *getDstRC(const TargetRegisterClass *SrcRC,
                                            RegDomain Domain) {
   assert(Domain == MaskDomain && "add domain");
-  if (SrcRC == &X86::GR8RegClass)
+  if (X86::GR8RegClass.hasSubClassEq(SrcRC))
     return &X86::VK8RegClass;
-  if (SrcRC == &X86::GR16RegClass)
+  if (X86::GR16RegClass.hasSubClassEq(SrcRC))
     return &X86::VK16RegClass;
-  if (SrcRC == &X86::GR32RegClass)
+  if (X86::GR32RegClass.hasSubClassEq(SrcRC))
     return &X86::VK32RegClass;
-  if (SrcRC == &X86::GR64RegClass)
+  if (X86::GR64RegClass.hasSubClassEq(SrcRC))
     return &X86::VK64RegClass;
   llvm_unreachable("add register class");
   return nullptr;