[PATCH] D126112: [BOLT] Increase coverage of shrink wrapping [2/5]

Rafael Auler via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 25 17:13:20 PDT 2022


rafauler updated this revision to Diff 432156.
rafauler added a comment.

Rebase


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D126112

Files:
  bolt/lib/Target/X86/X86MCPlusBuilder.cpp


Index: bolt/lib/Target/X86/X86MCPlusBuilder.cpp
===================================================================
--- bolt/lib/Target/X86/X86MCPlusBuilder.cpp
+++ bolt/lib/Target/X86/X86MCPlusBuilder.cpp
@@ -1073,14 +1073,59 @@
       I = {Sz, IsLoad, IsStore, false, false};
       break;
     }
+    // TODO: Find a way to encode this info into tablegen somehow / fetch via MC
+    // We need to query how wide, in bytes, is the memory access of a given inst
+    case X86::MOV8rm: I = {1, true, false, false, true}; break;
     case X86::MOV16rm: I = {2, true, false, false, true}; break;
     case X86::MOV32rm: I = {4, true, false, false, true}; break;
     case X86::MOV64rm: I = {8, true, false, false, true}; break;
+    case X86::MOVZX32rm8: I = {1, true, false, false, false}; break;
+    case X86::MOVZX32rm16: I = {2, true, false, false, false}; break;
+    case X86::FNSTCW16m: I = {2, true, false, false, false}; break;
+    case X86::ILD_F32m: I = {4, true, false, false, false}; break;
+    case X86::ILD_F64m: I = {8, true, false, false, false}; break;
+    case X86::LD_F32m: I = {4, true, false, false, false}; break;
+    case X86::LD_F64m: I = {8, true, false, false, false}; break;
+    case X86::LD_F80m: I = {10, true, false, false, false}; break;
+    case X86::MOV8mr: I = {1, false, true, true, true};  break;
     case X86::MOV16mr: I = {2, false, true, true, true};  break;
     case X86::MOV32mr: I = {4, false, true, true, true};  break;
     case X86::MOV64mr: I = {8, false, true, true, true};  break;
+    case X86::ST_FP32m: I = {4, false, true, false, false};  break;
+    case X86::ST_FP64m: I = {8, false, true, false, false};  break;
+    case X86::ST_FP80m: I = {10, false, true, false, false};  break;
+    case X86::SETCCm: I = {1, false, true, false, false}; break;
+    case X86::MOV8mi: I = {1, false, true, false, true}; break;
     case X86::MOV16mi: I = {2, false, true, false, true}; break;
     case X86::MOV32mi: I = {4, false, true, false, true}; break;
+    case X86::INC32m: I = {4, true, true, false, false}; break;
+    case X86::INC64m: I = {8, true, true, false, false}; break;
+    case X86::DEC32m: I = {4, true, true, false, false}; break;
+    case X86::DEC64m: I = {8, true, true, false, false}; break;
+    case X86::OR8mi: I = {1, true, true, false, false}; break;
+    case X86::OR16mi: I = {2, true, true, false, false}; break;
+    case X86::OR32mi: I = {4, true, true, false, false}; break;
+    case X86::AND8mi: I = {1, true, true, false, false}; break;
+    case X86::AND16mi: I = {2, true, true, false, false}; break;
+    case X86::AND32mi: I = {4, true, true, false, false}; break;
+    case X86::DIV64m: I = {8, true, false, false, false}; break;
+    case X86::IMUL64m: I = {8, true, false, false, false}; break;
+    case X86::SUB32mi8: I = {4, true, true, false, false}; break;
+    case X86::SUB64mi8: I = {8, true, true, false, false}; break;
+    case X86::SUB64mi32: I = {8, true, true, false, false}; break;
+    case X86::SHL64mi: I = {8, true, true, false, false}; break;
+    case X86::SAR64mi: I = {8, true, true, false, false}; break;
+    case X86::ADD32mi8: I = {4, true, true, false, false}; break;
+    case X86::ADD64mi8: I = {8, true, true, false, false}; break;
+    case X86::ADD64mi32: I = {8, true, true, false, false}; break;
+    case X86::CMP16mi8: I = {2, true, false, false, false}; break;
+    case X86::CMP32mi8: I = {4, true, false, false, false}; break;
+    case X86::CMP32mi: I = {4, true, false, false, false}; break;
+    case X86::CMP64mi8: I = {8, true, false, false, false}; break;
+    case X86::TEST8mi: I = {1, true, false, false, false}; break;
+    case X86::TEST64mi32: I = {8, true, false, false, false}; break;
+    case X86::CMP8mi: I = {1, true, false, false, false}; break;
+    case X86::MOV64mi32: I = {8, true, false, false, false}; break;
     } // end switch (Inst.getOpcode())
 
     unsigned BaseRegNum;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D126112.432156.patch
Type: text/x-patch
Size: 3939 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220526/37f9be89/attachment.bin>


More information about the llvm-commits mailing list