summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/X86DisassemblerTables.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/TableGen/X86DisassemblerTables.cpp')
-rw-r--r--llvm/utils/TableGen/X86DisassemblerTables.cpp242
1 files changed, 168 insertions, 74 deletions
diff --git a/llvm/utils/TableGen/X86DisassemblerTables.cpp b/llvm/utils/TableGen/X86DisassemblerTables.cpp
index d4ba4f7cd8f..8c69dfb01a2 100644
--- a/llvm/utils/TableGen/X86DisassemblerTables.cpp
+++ b/llvm/utils/TableGen/X86DisassemblerTables.cpp
@@ -171,180 +171,274 @@ static inline bool inheritsFrom(InstructionContext child,
case IC_VEX_L_W_OPSIZE:
return false;
case IC_EVEX:
- return inheritsFrom(child, IC_EVEX_W) ||
- inheritsFrom(child, IC_EVEX_L_W);
+ 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 inheritsFrom(child, IC_EVEX_W_XS) ||
- inheritsFrom(child, IC_EVEX_L_W_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 inheritsFrom(child, IC_EVEX_W_XD) ||
- inheritsFrom(child, IC_EVEX_L_W_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 inheritsFrom(child, IC_EVEX_W_OPSIZE) ||
- inheritsFrom(child, IC_EVEX_L_W_OPSIZE);
- case IC_EVEX_B:
- return false;
+ 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 false;
+ 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:
- case IC_EVEX_L_K_B:
- case IC_EVEX_L_KZ_B:
- case IC_EVEX_L_B:
+ 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 false;
+ 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 false;
+ 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_K:
- return inheritsFrom(child, IC_EVEX_W_K) ||
- inheritsFrom(child, IC_EVEX_L_W_K);
- case IC_EVEX_XS_K:
+ 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 false;
+ case IC_EVEX_L_K_B:
+ case IC_EVEX_L_KZ_B:
+ case IC_EVEX_L_B:
+ return false;
case IC_EVEX_XS_K_B:
case IC_EVEX_XS_KZ_B:
- return inheritsFrom(child, IC_EVEX_W_XS_K) ||
- inheritsFrom(child, IC_EVEX_L_W_XS_K);
- case IC_EVEX_XD_K:
+ return false;
case IC_EVEX_XD_K_B:
case IC_EVEX_XD_KZ_B:
- return inheritsFrom(child, IC_EVEX_W_XD_K) ||
- inheritsFrom(child, IC_EVEX_L_W_XD_K);
+ return false;
case IC_EVEX_XS_B:
case IC_EVEX_XD_B:
case IC_EVEX_K_B:
- case IC_EVEX_KZ:
return false;
- case IC_EVEX_XS_KZ:
- return inheritsFrom(child, IC_EVEX_W_XS_KZ) ||
- inheritsFrom(child, IC_EVEX_L_W_XS_KZ);
- case IC_EVEX_XD_KZ:
- return inheritsFrom(child, IC_EVEX_W_XD_KZ) ||
- inheritsFrom(child, IC_EVEX_L_W_XD_KZ);
case IC_EVEX_KZ_B:
- case IC_EVEX_OPSIZE_K:
case IC_EVEX_OPSIZE_B:
case IC_EVEX_OPSIZE_K_B:
- case IC_EVEX_OPSIZE_KZ:
case IC_EVEX_OPSIZE_KZ_B:
return false;
- case IC_EVEX_W_K:
case IC_EVEX_W_B:
case IC_EVEX_W_K_B:
case IC_EVEX_W_KZ_B:
- case IC_EVEX_W_XS_K:
- case IC_EVEX_W_XD_K:
- case IC_EVEX_W_OPSIZE_K:
case IC_EVEX_W_OPSIZE_B:
case IC_EVEX_W_OPSIZE_K_B:
return false;
- case IC_EVEX_L_K:
- case IC_EVEX_L_XS_K:
- case IC_EVEX_L_XD_K:
case IC_EVEX_L_XD_B:
case IC_EVEX_L_XD_K_B:
- case IC_EVEX_L_OPSIZE_K:
case IC_EVEX_L_OPSIZE_B:
case IC_EVEX_L_OPSIZE_K_B:
return false;
- case IC_EVEX_W_KZ:
- case IC_EVEX_W_XS_KZ:
- case IC_EVEX_W_XD_KZ:
case IC_EVEX_W_XS_B:
case IC_EVEX_W_XD_B:
case IC_EVEX_W_XS_K_B:
case IC_EVEX_W_XD_K_B:
case IC_EVEX_W_XS_KZ_B:
case IC_EVEX_W_XD_KZ_B:
- case IC_EVEX_W_OPSIZE_KZ:
case IC_EVEX_W_OPSIZE_KZ_B:
return false;
- case IC_EVEX_L_KZ:
- case IC_EVEX_L_XS_KZ:
case IC_EVEX_L_XS_B:
case IC_EVEX_L_XS_K_B:
case IC_EVEX_L_XS_KZ_B:
- case IC_EVEX_L_XD_KZ:
case IC_EVEX_L_XD_KZ_B:
- case IC_EVEX_L_OPSIZE_KZ:
case IC_EVEX_L_OPSIZE_KZ_B:
return false;
- case IC_EVEX_L_W_K:
case IC_EVEX_L_W_B:
case IC_EVEX_L_W_K_B:
- case IC_EVEX_L_W_XS_K:
case IC_EVEX_L_W_XS_B:
case IC_EVEX_L_W_XS_K_B:
- case IC_EVEX_L_W_XS_KZ:
case IC_EVEX_L_W_XS_KZ_B:
- case IC_EVEX_L_W_OPSIZE_K:
case IC_EVEX_L_W_OPSIZE_B:
case IC_EVEX_L_W_OPSIZE_K_B:
- case IC_EVEX_L_W_KZ:
case IC_EVEX_L_W_KZ_B:
- case IC_EVEX_L_W_XD_K:
case IC_EVEX_L_W_XD_B:
case IC_EVEX_L_W_XD_K_B:
- case IC_EVEX_L_W_XD_KZ:
case IC_EVEX_L_W_XD_KZ_B:
- case IC_EVEX_L_W_OPSIZE_KZ:
case IC_EVEX_L_W_OPSIZE_KZ_B:
return false;
- case IC_EVEX_L2_K:
case IC_EVEX_L2_B:
case IC_EVEX_L2_K_B:
case IC_EVEX_L2_KZ_B:
- case IC_EVEX_L2_XS_K:
case IC_EVEX_L2_XS_K_B:
case IC_EVEX_L2_XS_B:
case IC_EVEX_L2_XD_B:
- case IC_EVEX_L2_XD_K:
case IC_EVEX_L2_XD_K_B:
- case IC_EVEX_L2_OPSIZE_K:
case IC_EVEX_L2_OPSIZE_B:
case IC_EVEX_L2_OPSIZE_K_B:
- case IC_EVEX_L2_KZ:
- case IC_EVEX_L2_XS_KZ:
case IC_EVEX_L2_XS_KZ_B:
- case IC_EVEX_L2_XD_KZ:
case IC_EVEX_L2_XD_KZ_B:
- case IC_EVEX_L2_OPSIZE_KZ:
case IC_EVEX_L2_OPSIZE_KZ_B:
return false;
- case IC_EVEX_L2_W_K:
case IC_EVEX_L2_W_B:
case IC_EVEX_L2_W_K_B:
case IC_EVEX_L2_W_KZ_B:
- case IC_EVEX_L2_W_XS_K:
case IC_EVEX_L2_W_XS_B:
case IC_EVEX_L2_W_XS_K_B:
- case IC_EVEX_L2_W_XD_K:
case IC_EVEX_L2_W_XD_B:
- case IC_EVEX_L2_W_OPSIZE_K:
case IC_EVEX_L2_W_OPSIZE_B:
case IC_EVEX_L2_W_OPSIZE_K_B:
- case IC_EVEX_L2_W_KZ:
- case IC_EVEX_L2_W_XS_KZ:
case IC_EVEX_L2_W_XS_KZ_B:
- case IC_EVEX_L2_W_XD_KZ:
case IC_EVEX_L2_W_XD_K_B:
case IC_EVEX_L2_W_XD_KZ_B:
- case IC_EVEX_L2_W_OPSIZE_KZ:
case IC_EVEX_L2_W_OPSIZE_KZ_B:
return false;
default:
OpenPOWER on IntegriCloud