[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