[PATCH] D147527: [X86][mem-fold] Use the generated memory folding table

Kan Shengchen via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 6 04:50:01 PDT 2023


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGf3d9abf1f87c: [X86][mem-fold] Use the generated memory folding table (authored by skan).

Changed prior to commit:
  https://reviews.llvm.org/D147527?vs=511368&id=511372#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D147527/new/

https://reviews.llvm.org/D147527

Files:
  llvm/lib/Target/X86/CMakeLists.txt
  llvm/lib/Target/X86/X86InstrFoldTables.cpp
  llvm/lib/Target/X86/X86MemFoldTables.inc
  llvm/test/TableGen/x86-fold-tables.inc
  llvm/test/TableGen/x86-fold-tables.td
  llvm/test/TableGen/x86-memory-folding.td


Index: llvm/test/TableGen/x86-memory-folding.td
===================================================================
--- llvm/test/TableGen/x86-memory-folding.td
+++ /dev/null
@@ -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
Index: llvm/test/TableGen/x86-fold-tables.td
===================================================================
--- /dev/null
+++ llvm/test/TableGen/x86-fold-tables.td
@@ -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
Index: llvm/lib/Target/X86/X86InstrFoldTables.cpp
===================================================================
--- llvm/lib/Target/X86/X86InstrFoldTables.cpp
+++ llvm/lib/Target/X86/X86InstrFoldTables.cpp
@@ -22,18 +22,7 @@
 // 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 },
Index: llvm/lib/Target/X86/CMakeLists.txt
===================================================================
--- llvm/lib/Target/X86/CMakeLists.txt
+++ llvm/lib/Target/X86/CMakeLists.txt
@@ -18,10 +18,7 @@
 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)
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147527.511372.patch
Type: text/x-patch
Size: 3127 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230406/3b8026f1/attachment.bin>


More information about the llvm-commits mailing list