diff options
author | Ayman Musa <ayman.musa@intel.com> | 2017-03-07 08:11:19 +0000 |
---|---|---|
committer | Ayman Musa <ayman.musa@intel.com> | 2017-03-07 08:11:19 +0000 |
commit | 850fc977c807984bcc583e1dede4b9113f1657c3 (patch) | |
tree | 505434c15a722dc53875500f702e18af6c76eeae /llvm/utils/TableGen/TableGen.cpp | |
parent | ac5a2c43af283fba87887de67f05c547c9fd1778 (diff) | |
download | bcm5719-llvm-850fc977c807984bcc583e1dede4b9113f1657c3.tar.gz bcm5719-llvm-850fc977c807984bcc583e1dede4b9113f1657c3.zip |
[X86][AVX512] Adding new LLVM TableGen backend which generates the EVEX2VEX compressing tables.
X86EvexToVex machine instruction pass compresses EVEX encoded instructions by replacing them with their identical VEX encoded instructions when possible.
It uses manually supported 2 large tables that map the EVEX instructions to their VEX ideticals.
This TableGen backend replaces the tables by automatically generating them.
Differential Revision: https://reviews.llvm.org/D30451
llvm-svn: 297127
Diffstat (limited to 'llvm/utils/TableGen/TableGen.cpp')
-rw-r--r-- | llvm/utils/TableGen/TableGen.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/utils/TableGen/TableGen.cpp b/llvm/utils/TableGen/TableGen.cpp index 6937f20b441..aa1aefd5e4a 100644 --- a/llvm/utils/TableGen/TableGen.cpp +++ b/llvm/utils/TableGen/TableGen.cpp @@ -46,6 +46,7 @@ enum ActionType { GenAttributes, GenSearchableTables, GenGlobalISel, + GenX86EVEX2VEXTables, GenRegisterBank, }; @@ -96,6 +97,8 @@ namespace { "Generate generic binary-searchable table"), clEnumValN(GenGlobalISel, "gen-global-isel", "Generate GlobalISel selector"), + clEnumValN(GenX86EVEX2VEXTables, "gen-x86-EVEX2VEX-tables", + "Generate X86 EVEX to VEX compress tables"), clEnumValN(GenRegisterBank, "gen-register-bank", "Generate registers bank descriptions"))); @@ -189,6 +192,9 @@ bool LLVMTableGenMain(raw_ostream &OS, RecordKeeper &Records) { case GenRegisterBank: EmitRegisterBank(Records, OS); break; + case GenX86EVEX2VEXTables: + EmitX86EVEX2VEXTables(Records, OS); + break; } return false; |