Skip to content

Commit

Permalink
[X86][mem-fold] Use the generated memory folding table
Browse files Browse the repository at this point in the history
Reviewed By: yubing

Differential Revision: https://reviews.llvm.org/D147527
  • Loading branch information
KanRobert committed Apr 6, 2023
1 parent 63df77d commit f3d9abf
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 18 deletions.
5 changes: 1 addition & 4 deletions llvm/lib/Target/X86/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
13 changes: 1 addition & 12 deletions llvm/lib/Target/X86/X86InstrFoldTables.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
Expand Down
File renamed without changes.
7 changes: 7 additions & 0 deletions llvm/test/TableGen/x86-fold-tables.td
Original file line number Diff line number Diff line change
@@ -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
2 changes: 0 additions & 2 deletions llvm/test/TableGen/x86-memory-folding.td

This file was deleted.

0 comments on commit f3d9abf

Please sign in to comment.