[X86][mem-fold] Use the generated memory folding table
Reviewed By: yubing Differential Revision: https://reviews.llvm.org/D147527
This commit is contained in:
@@ -18,10 +18,7 @@ tablegen(LLVM X86GenMnemonicTables.inc -gen-x86-mnemonic-tables -asmwriternum=1)
|
||||
tablegen(LLVM X86GenRegisterBank.inc -gen-register-bank)
|
||||
tablegen(LLVM X86GenRegisterInfo.inc -gen-register-info)
|
||||
tablegen(LLVM X86GenSubtargetInfo.inc -gen-subtarget)
|
||||
|
||||
if (X86_GEN_FOLD_TABLES)
|
||||
tablegen(LLVM X86GenFoldTables.inc -gen-x86-fold-tables -asmwriternum=1)
|
||||
endif()
|
||||
tablegen(LLVM X86GenFoldTables.inc -gen-x86-fold-tables -asmwriternum=1)
|
||||
|
||||
add_public_tablegen_target(X86CommonTableGen)
|
||||
|
||||
|
||||
@@ -22,18 +22,7 @@ using namespace llvm;
|
||||
// searched at runtime without the need for additional storage. The enum values
|
||||
// are currently emitted in X86GenInstrInfo.inc in alphabetical order. Which
|
||||
// makes sorting these tables a simple matter of alphabetizing the table.
|
||||
//
|
||||
// We also have a tablegen emitter that tries to autogenerate these tables
|
||||
// by comparing encoding information. This can be enabled by passing
|
||||
// X86_GEN_FOLD_TABLES=ON to cmake which fill produce X86GenFoldTables.inc
|
||||
// in the build area. There are currently some bugs in the autogenerated table
|
||||
// that require a manual review to copy them from the autogenerated table into
|
||||
// this table. It is unclear if we will ever be able to fully automate this
|
||||
// because as new instruction are added into holes in the X86 opcode map they
|
||||
// potentially pair up with old instructions and create new entries in the
|
||||
// tables that would be incorrect. The manual review process allows us a chance
|
||||
// to catch these before they become observable bugs.
|
||||
#include "X86MemFoldTables.inc"
|
||||
#include "X86GenFoldTables.inc"
|
||||
static const X86MemoryFoldTableEntry BroadcastFoldTable2[] = {
|
||||
{ X86::VADDPDZ128rr, X86::VADDPDZ128rmb, TB_BCAST_SD },
|
||||
{ X86::VADDPDZ256rr, X86::VADDPDZ256rmb, TB_BCAST_SD },
|
||||
|
||||
7
llvm/test/TableGen/x86-fold-tables.td
Normal file
7
llvm/test/TableGen/x86-fold-tables.td
Normal file
@@ -0,0 +1,7 @@
|
||||
// Steps to fix this test if it fails:
|
||||
// 1. Update X86ManualFoldTables.def to manually correct the entries in fold tables, or
|
||||
// fix the vulnerable rules in X86FoldTablesEmitter.cpp until the diff is reasonable
|
||||
// 2. cp <generated_file> x86-fold-tables.inc
|
||||
|
||||
// RUN: llvm-tblgen -gen-x86-fold-tables -asmwriternum=1 %p/../../lib/Target/X86/X86.td -I %p/../../lib/Target/X86 -I %p/../../include -o %t
|
||||
// RUN: diff %p/x86-fold-tables.inc %t
|
||||
@@ -1,2 +0,0 @@
|
||||
// RUN: llvm-tblgen -gen-x86-fold-tables -asmwriternum=1 %p/../../lib/Target/X86/X86.td -I %p/../../lib/Target/X86 -I %p/../../include -o %t1
|
||||
// RUN: cmp %p/../../lib/Target/X86/X86MemFoldTables.inc %t1
|
||||
Reference in New Issue
Block a user