[PATCH] D57041: [ARM][CGP] Check trunc value size before replacing

Sjoerd Meijer via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 22 02:59:08 PST 2019


SjoerdMeijer added a comment.

Was just getting up to speed with this again; just a first round of nits before I start looking at the actual functional change.



================
Comment at: lib/Target/ARM/ARMCodeGenPrepare.cpp:188
   return V->getType()->getScalarSizeInBits() <= ARMCodeGenPrepare::TypeSize;
 }
----------------
There's not enough context to show the class definition:

  namespace {
  class IRPromoter {
    SmallPtrSet<Value*, 8> NewInsts;
    SmallPtrSet<Instruction*, 4> InstsToRemove;
    DenseMap<Value*, SmallVector<Type*, 4>> TruncTysMap;
    SmallPtrSet<Value*, 8> Promoted;
    Module *M = nullptr;
    LLVMContext &Ctx;
    IntegerType *ExtTy = nullptr;
    IntegerType *OrigTy = nullptr;
    SmallPtrSetImpl<Value*> *Visited;
    SmallPtrSetImpl<Value*> *Sources;
    SmallPtrSetImpl<Instruction*> *Sinks;
    SmallPtrSetImpl<Instruction*> *SafeToPromote;
    ...

But I started looking at where `ExtTy` was defined again, because it was mentioned in the comments of this change. It is quite a crucial aspect of the IRPromoter, so perhaps you can spend a few comments on what it is and does.



================
Comment at: lib/Target/ARM/ARMCodeGenPrepare.cpp:329
   // To demonstrate why we can't handle increasing values:
   // 
   // %add = add i8 %a, 2
----------------
nit: trailing whitespace


================
Comment at: lib/Target/ARM/ARMCodeGenPrepare.cpp:607
       continue;
   
     assert(EnableDSP && "DSP intrinisc insertion not enabled!");
----------------
nit: trailing whitespace here


================
Comment at: lib/Target/ARM/ARMCodeGenPrepare.cpp:703
 
-    // For any truncs that we insert to handle zexts, we can replace the
-    // result of the zext with the input to the trunc.
-    if (NewInsts.count(Src) && isa<ZExtInst>(V) && isa<TruncInst>(Src)) {
+    // Unless they produce a value that is narrower than ExtTy, we can
+    // we can replace the result of the zext with the input of a newly
----------------
typo: "we can we can"


================
Comment at: lib/Target/ARM/ARMCodeGenPrepare.cpp:703
 
-    // For any truncs that we insert to handle zexts, we can replace the
-    // result of the zext with the input to the trunc.
-    if (NewInsts.count(Src) && isa<ZExtInst>(V) && isa<TruncInst>(Src)) {
+    // Unless they produce a value that is narrower than ExtTy, we can
+    // we can replace the result of the zext with the input of a newly
----------------
SjoerdMeijer wrote:
> typo: "we can we can"
nit: they = zexts?


================
Comment at: lib/Target/ARM/ARMCodeGenPrepare.cpp:705
+    // we can replace the result of the zext with the input of a newly
+    // inserted the trunc.
+    if (NewInsts.count(Src) && isa<TruncInst>(Src) && EqualTypeSize(Src)) {
----------------
typo: remove "the"?


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

https://reviews.llvm.org/D57041





More information about the llvm-commits mailing list