static inline bool inheritsFrom()

in llvm/utils/TableGen/X86DisassemblerTables.cpp [75:569]


static inline bool inheritsFrom(InstructionContext child,
                                InstructionContext parent, bool noPrefix = true,
                                bool VEX_LIG = false, bool VEX_WIG = false,
                                bool AdSize64 = false) {
  if (child == parent)
    return true;

  switch (parent) {
  case IC:
    return(inheritsFrom(child, IC_64BIT, AdSize64) ||
           (noPrefix && inheritsFrom(child, IC_OPSIZE, noPrefix)) ||
           inheritsFrom(child, IC_ADSIZE) ||
           (noPrefix && inheritsFrom(child, IC_XD, noPrefix)) ||
           (noPrefix && inheritsFrom(child, IC_XS, noPrefix)));
  case IC_64BIT:
    return(inheritsFrom(child, IC_64BIT_REXW)   ||
           (noPrefix && inheritsFrom(child, IC_64BIT_OPSIZE, noPrefix)) ||
           (!AdSize64 && inheritsFrom(child, IC_64BIT_ADSIZE)) ||
           (noPrefix && inheritsFrom(child, IC_64BIT_XD, noPrefix))     ||
           (noPrefix && inheritsFrom(child, IC_64BIT_XS, noPrefix)));
  case IC_OPSIZE:
    return inheritsFrom(child, IC_64BIT_OPSIZE) ||
           inheritsFrom(child, IC_OPSIZE_ADSIZE);
  case IC_ADSIZE:
    return (noPrefix && inheritsFrom(child, IC_OPSIZE_ADSIZE, noPrefix));
  case IC_OPSIZE_ADSIZE:
    return false;
  case IC_64BIT_ADSIZE:
    return (noPrefix && inheritsFrom(child, IC_64BIT_OPSIZE_ADSIZE, noPrefix));
  case IC_64BIT_OPSIZE_ADSIZE:
    return (noPrefix &&
            inheritsFrom(child, IC_64BIT_VEX_OPSIZE_ADSIZE, noPrefix));
  case IC_XD:
    return inheritsFrom(child, IC_64BIT_XD);
  case IC_XS:
    return inheritsFrom(child, IC_64BIT_XS);
  case IC_XD_OPSIZE:
    return inheritsFrom(child, IC_64BIT_XD_OPSIZE);
  case IC_XS_OPSIZE:
    return inheritsFrom(child, IC_64BIT_XS_OPSIZE);
  case IC_XD_ADSIZE:
    return inheritsFrom(child, IC_64BIT_XD_ADSIZE);
  case IC_XS_ADSIZE:
    return inheritsFrom(child, IC_64BIT_XS_ADSIZE);
  case IC_64BIT_REXW:
    return((noPrefix && inheritsFrom(child, IC_64BIT_REXW_XS, noPrefix)) ||
           (noPrefix && inheritsFrom(child, IC_64BIT_REXW_XD, noPrefix)) ||
           (noPrefix && inheritsFrom(child, IC_64BIT_REXW_OPSIZE, noPrefix)) ||
           (!AdSize64 && inheritsFrom(child, IC_64BIT_REXW_ADSIZE)));
  case IC_64BIT_OPSIZE:
    return inheritsFrom(child, IC_64BIT_REXW_OPSIZE) ||
           (!AdSize64 && inheritsFrom(child, IC_64BIT_OPSIZE_ADSIZE)) ||
           (!AdSize64 && inheritsFrom(child, IC_64BIT_REXW_ADSIZE)) ||
           (!AdSize64 && inheritsFrom(child, IC_64BIT_VEX_OPSIZE_ADSIZE));
  case IC_64BIT_XD:
    return (inheritsFrom(child, IC_64BIT_REXW_XD) ||
            (!AdSize64 && inheritsFrom(child, IC_64BIT_XD_ADSIZE)));
  case IC_64BIT_XS:
    return(inheritsFrom(child, IC_64BIT_REXW_XS) ||
           (!AdSize64 && inheritsFrom(child, IC_64BIT_XS_ADSIZE)));
  case IC_64BIT_XD_OPSIZE:
  case IC_64BIT_XS_OPSIZE:
    return false;
  case IC_64BIT_XD_ADSIZE:
  case IC_64BIT_XS_ADSIZE:
    return false;
  case IC_64BIT_REXW_XD:
  case IC_64BIT_REXW_XS:
  case IC_64BIT_REXW_OPSIZE:
  case IC_64BIT_REXW_ADSIZE:
    return false;
  case IC_VEX:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_VEX_L_W)) ||
           (VEX_WIG && inheritsFrom(child, IC_VEX_W)) ||
           (VEX_LIG && inheritsFrom(child, IC_VEX_L));
  case IC_VEX_XS:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_VEX_L_W_XS)) ||
           (VEX_WIG && inheritsFrom(child, IC_VEX_W_XS)) ||
           (VEX_LIG && inheritsFrom(child, IC_VEX_L_XS));
  case IC_VEX_XD:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_VEX_L_W_XD)) ||
           (VEX_WIG && inheritsFrom(child, IC_VEX_W_XD)) ||
           (VEX_LIG && inheritsFrom(child, IC_VEX_L_XD));
  case IC_VEX_OPSIZE:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_VEX_L_W_OPSIZE)) ||
           (VEX_WIG && inheritsFrom(child, IC_VEX_W_OPSIZE)) ||
           (VEX_LIG && inheritsFrom(child, IC_VEX_L_OPSIZE)) ||
           inheritsFrom(child, IC_64BIT_VEX_OPSIZE);
  case IC_64BIT_VEX_OPSIZE:
    return inheritsFrom(child, IC_64BIT_VEX_OPSIZE_ADSIZE);
  case IC_64BIT_VEX_OPSIZE_ADSIZE:
    return false;
  case IC_VEX_W:
    return VEX_LIG && inheritsFrom(child, IC_VEX_L_W);
  case IC_VEX_W_XS:
    return VEX_LIG && inheritsFrom(child, IC_VEX_L_W_XS);
  case IC_VEX_W_XD:
    return VEX_LIG && inheritsFrom(child, IC_VEX_L_W_XD);
  case IC_VEX_W_OPSIZE:
    return VEX_LIG && inheritsFrom(child, IC_VEX_L_W_OPSIZE);
  case IC_VEX_L:
    return VEX_WIG && inheritsFrom(child, IC_VEX_L_W);
  case IC_VEX_L_XS:
    return VEX_WIG && inheritsFrom(child, IC_VEX_L_W_XS);
  case IC_VEX_L_XD:
    return VEX_WIG && inheritsFrom(child, IC_VEX_L_W_XD);
  case IC_VEX_L_OPSIZE:
    return VEX_WIG && inheritsFrom(child, IC_VEX_L_W_OPSIZE);
  case IC_VEX_L_W:
  case IC_VEX_L_W_XS:
  case IC_VEX_L_W_XD:
  case IC_VEX_L_W_OPSIZE:
    return false;
  case IC_EVEX:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2));
  case IC_EVEX_XS:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XS)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XS)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XS));
  case IC_EVEX_XD:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XD)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XD)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XD));
  case IC_EVEX_OPSIZE:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_OPSIZE)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_OPSIZE)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_OPSIZE));
  case IC_EVEX_K:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_K)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_K)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_K));
  case IC_EVEX_XS_K:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_K)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_K)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XS_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XS_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XS_K));
  case IC_EVEX_XD_K:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_K)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_K)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XD_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XD_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XD_K));
  case IC_EVEX_OPSIZE_K:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_K)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_K)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_OPSIZE_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_OPSIZE_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_OPSIZE_K));
  case IC_EVEX_KZ:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_KZ)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_KZ)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_KZ));
  case IC_EVEX_XS_KZ:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_KZ)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_KZ)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XS_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XS_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XS_KZ));
  case IC_EVEX_XD_KZ:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_KZ)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_KZ)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XD_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XD_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XD_KZ));
  case IC_EVEX_OPSIZE_KZ:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_KZ)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_KZ)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_OPSIZE_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_OPSIZE_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_OPSIZE_KZ));
  case IC_EVEX_W:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W));
  case IC_EVEX_W_XS:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XS)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XS));
  case IC_EVEX_W_XD:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XD)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XD));
  case IC_EVEX_W_OPSIZE:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE));
  case IC_EVEX_W_K:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_K));
  case IC_EVEX_W_XS_K:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XS_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XS_K));
  case IC_EVEX_W_XD_K:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XD_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XD_K));
  case IC_EVEX_W_OPSIZE_K:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_K)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_K));
  case IC_EVEX_W_KZ:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_KZ));
  case IC_EVEX_W_XS_KZ:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XS_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XS_KZ));
  case IC_EVEX_W_XD_KZ:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XD_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XD_KZ));
  case IC_EVEX_W_OPSIZE_KZ:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_KZ)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_KZ));
  case IC_EVEX_L:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W);
  case IC_EVEX_L_XS:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS);
  case IC_EVEX_L_XD:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD);
  case IC_EVEX_L_OPSIZE:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE);
  case IC_EVEX_L_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_K);
  case IC_EVEX_L_XS_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_K);
  case IC_EVEX_L_XD_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_K);
  case IC_EVEX_L_OPSIZE_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_K);
  case IC_EVEX_L_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_KZ);
  case IC_EVEX_L_XS_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_KZ);
  case IC_EVEX_L_XD_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_KZ);
  case IC_EVEX_L_OPSIZE_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_KZ);
  case IC_EVEX_L_W:
  case IC_EVEX_L_W_XS:
  case IC_EVEX_L_W_XD:
  case IC_EVEX_L_W_OPSIZE:
    return false;
  case IC_EVEX_L_W_K:
  case IC_EVEX_L_W_XS_K:
  case IC_EVEX_L_W_XD_K:
  case IC_EVEX_L_W_OPSIZE_K:
    return false;
  case IC_EVEX_L_W_KZ:
  case IC_EVEX_L_W_XS_KZ:
  case IC_EVEX_L_W_XD_KZ:
  case IC_EVEX_L_W_OPSIZE_KZ:
    return false;
  case IC_EVEX_L2:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W);
  case IC_EVEX_L2_XS:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS);
  case IC_EVEX_L2_XD:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD);
  case IC_EVEX_L2_OPSIZE:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE);
  case IC_EVEX_L2_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_K);
  case IC_EVEX_L2_XS_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_K);
  case IC_EVEX_L2_XD_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_K);
  case IC_EVEX_L2_OPSIZE_K:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_K);
  case IC_EVEX_L2_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_KZ);
  case IC_EVEX_L2_XS_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_KZ);
  case IC_EVEX_L2_XD_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_KZ);
  case IC_EVEX_L2_OPSIZE_KZ:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_KZ);
  case IC_EVEX_L2_W:
  case IC_EVEX_L2_W_XS:
  case IC_EVEX_L2_W_XD:
  case IC_EVEX_L2_W_OPSIZE:
    return false;
  case IC_EVEX_L2_W_K:
  case IC_EVEX_L2_W_XS_K:
  case IC_EVEX_L2_W_XD_K:
  case IC_EVEX_L2_W_OPSIZE_K:
    return false;
  case IC_EVEX_L2_W_KZ:
  case IC_EVEX_L2_W_XS_KZ:
  case IC_EVEX_L2_W_XD_KZ:
  case IC_EVEX_L2_W_OPSIZE_KZ:
    return false;
  case IC_EVEX_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_B));
  case IC_EVEX_XS_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XS_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XS_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XS_B));
  case IC_EVEX_XD_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XD_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XD_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XD_B));
  case IC_EVEX_OPSIZE_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_OPSIZE_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_OPSIZE_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_OPSIZE_B));
  case IC_EVEX_K_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_K_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_K_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_K_B));
  case IC_EVEX_XS_K_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_K_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_K_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XS_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XS_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XS_K_B));
  case IC_EVEX_XD_K_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_K_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_K_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XD_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XD_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XD_K_B));
  case IC_EVEX_OPSIZE_K_B:
    return (VEX_LIG && VEX_WIG &&
            inheritsFrom(child, IC_EVEX_L_W_OPSIZE_K_B)) ||
           (VEX_LIG && VEX_WIG &&
            inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_K_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_OPSIZE_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_OPSIZE_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_OPSIZE_K_B));
  case IC_EVEX_KZ_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_KZ_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_KZ_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_KZ_B));
  case IC_EVEX_XS_KZ_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_KZ_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_KZ_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XS_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XS_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XS_KZ_B));
  case IC_EVEX_XD_KZ_B:
    return (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_KZ_B)) ||
           (VEX_LIG && VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_KZ_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_XD_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_XD_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_XD_KZ_B));
  case IC_EVEX_OPSIZE_KZ_B:
    return (VEX_LIG && VEX_WIG &&
            inheritsFrom(child, IC_EVEX_L_W_OPSIZE_KZ_B)) ||
           (VEX_LIG && VEX_WIG &&
            inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_KZ_B)) ||
           (VEX_WIG && inheritsFrom(child, IC_EVEX_W_OPSIZE_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L_OPSIZE_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_OPSIZE_KZ_B));
  case IC_EVEX_W_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_B));
  case IC_EVEX_W_XS_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XS_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XS_B));
  case IC_EVEX_W_XD_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XD_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XD_B));
  case IC_EVEX_W_OPSIZE_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_B));
  case IC_EVEX_W_K_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_K_B));
  case IC_EVEX_W_XS_K_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XS_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XS_K_B));
  case IC_EVEX_W_XD_K_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XD_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XD_K_B));
  case IC_EVEX_W_OPSIZE_K_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_K_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_K_B));
  case IC_EVEX_W_KZ_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_KZ_B));
  case IC_EVEX_W_XS_KZ_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XS_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XS_KZ_B));
  case IC_EVEX_W_XD_KZ_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_XD_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_XD_KZ_B));
  case IC_EVEX_W_OPSIZE_KZ_B:
    return (VEX_LIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_KZ_B)) ||
           (VEX_LIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_KZ_B));
  case IC_EVEX_L_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_B);
  case IC_EVEX_L_XS_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_B);
  case IC_EVEX_L_XD_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_B);
  case IC_EVEX_L_OPSIZE_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_B);
  case IC_EVEX_L_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_K_B);
  case IC_EVEX_L_XS_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_K_B);
  case IC_EVEX_L_XD_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_K_B);
  case IC_EVEX_L_OPSIZE_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_K_B);
  case IC_EVEX_L_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_KZ_B);
  case IC_EVEX_L_XS_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XS_KZ_B);
  case IC_EVEX_L_XD_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_XD_KZ_B);
  case IC_EVEX_L_OPSIZE_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L_W_OPSIZE_KZ_B);
  case IC_EVEX_L_W_B:
  case IC_EVEX_L_W_XS_B:
  case IC_EVEX_L_W_XD_B:
  case IC_EVEX_L_W_OPSIZE_B:
    return false;
  case IC_EVEX_L_W_K_B:
  case IC_EVEX_L_W_XS_K_B:
  case IC_EVEX_L_W_XD_K_B:
  case IC_EVEX_L_W_OPSIZE_K_B:
    return false;
  case IC_EVEX_L_W_KZ_B:
  case IC_EVEX_L_W_XS_KZ_B:
  case IC_EVEX_L_W_XD_KZ_B:
  case IC_EVEX_L_W_OPSIZE_KZ_B:
    return false;
  case IC_EVEX_L2_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_B);
  case IC_EVEX_L2_XS_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_B);
  case IC_EVEX_L2_XD_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_B);
  case IC_EVEX_L2_OPSIZE_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_B);
  case IC_EVEX_L2_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_K_B);
  case IC_EVEX_L2_XS_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_K_B);
  case IC_EVEX_L2_XD_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_K_B);
  case IC_EVEX_L2_OPSIZE_K_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_K_B);
  case IC_EVEX_L2_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_KZ_B);
  case IC_EVEX_L2_XS_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XS_KZ_B);
  case IC_EVEX_L2_XD_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_XD_KZ_B);
  case IC_EVEX_L2_OPSIZE_KZ_B:
    return VEX_WIG && inheritsFrom(child, IC_EVEX_L2_W_OPSIZE_KZ_B);
  case IC_EVEX_L2_W_B:
  case IC_EVEX_L2_W_XS_B:
  case IC_EVEX_L2_W_XD_B:
  case IC_EVEX_L2_W_OPSIZE_B:
    return false;
  case IC_EVEX_L2_W_K_B:
  case IC_EVEX_L2_W_XS_K_B:
  case IC_EVEX_L2_W_XD_K_B:
  case IC_EVEX_L2_W_OPSIZE_K_B:
    return false;
  case IC_EVEX_L2_W_KZ_B:
  case IC_EVEX_L2_W_XS_KZ_B:
  case IC_EVEX_L2_W_XD_KZ_B:
  case IC_EVEX_L2_W_OPSIZE_KZ_B:
    return false;
  default:
    errs() << "Unknown instruction class: " <<
      stringForContext((InstructionContext)parent) << "\n";
    llvm_unreachable("Unknown instruction class");
  }
}