[PATCH] D67017: [X86] Add initial support for unfolding broadcast loads from arithmetic instructions to enable LICM hoisting of the load

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 30 13:10:35 PDT 2019


craig.topper marked 3 inline comments as done.
craig.topper added inline comments.


================
Comment at: llvm/lib/Target/X86/X86InstrFoldTables.h:28
   TB_INDEX_4    = 4,
-  TB_INDEX_MASK = 0xf,
+  TB_INDEX_MASK = 0x7,
 
----------------
This was done to get a free bit for the TB_FOLDED_BCAST flag


================
Comment at: llvm/lib/Target/X86/X86InstrFoldTables.h:44
   // Minimum alignment required for load/store.
-  // Used for RegOp->MemOp conversion.
-  // (stored in bits 8 - 15)
+  // Used for RegOp->MemOp conversion. Encoded as Log2(Align) + 1 to allow 0
+  // to mean align of 0.
----------------
I re-encoded these to get room for the broadcast type. I can pre-commit this.


================
Comment at: llvm/lib/Target/X86/X86InstrInfo.cpp:4808
     unsigned MinAlign = (I->Flags & TB_ALIGN_MASK) >> TB_ALIGN_SHIFT;
+    MinAlign = MinAlign ? 1 << (MinAlign - 1) : 0;
     if (Align < MinAlign)
----------------
Part of the re-encoding of the alignment field.


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

https://reviews.llvm.org/D67017





More information about the llvm-commits mailing list