[PATCH] D105161: [GlobalISel] Handle more types in narrowScalar for eq/ne G_ICMP

Jessica Paquette via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 30 10:26:42 PDT 2021


paquette added inline comments.


================
Comment at: llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp:1109
+        // to extend them to the desired size.
+        Parts.push_back(MIRBuilder.buildZExt(NarrowTy, XorH).getReg(0));
+      }
----------------
paquette wrote:
> arsenm wrote:
> > Could you instead use extractGCDParts/buildLCMMergePieces with zext padding?
> I ran into some weird behaviour with s65 when I tried this and ended up with a really large testcase.
> 
> Maybe I'm doing something wrong?
> 
> ```
>         SmallVector<Register, 4> WidenedXors;
>         ...
>         LLT GCDTy = extractGCDType(WidenedXors, NarrowTy, LeftoverTy, Xor);
>         buildLCMMergePieces(LeftoverTy, NarrowTy, GCDTy, WidenedXors,
>                             /* PadStrategy = */ TargetOpcode::G_ZEXT);
>         Parts.insert(Parts.end(), WidenedXors.begin(), WidenedXors.end());
> ```
> 
> It seemed to do the right thing with every other type.
Actually, scratch that, it's horrible with just a plain zext too.


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

https://reviews.llvm.org/D105161



More information about the llvm-commits mailing list