On Oct 25, 2006, at 9:57 PM, Reid Spencer wrote: >> This code is a bit simpler as: >> >> >> // (X / C1) / C2 -> X / (C1*C2) >> if (BinaryOperator *LHS = dyn_cast<BinaryOperator>(Op0)) >> if (LHS->getOpcode() == I.getOpcode()) >> > > Didn't apply this because it causes a compiler warning about > signed/unsigned comparison.
Ok. >> // udiv X, (Select Cond, C1, C2) --> Select Cond, (shr X, C1), (shr >> X, C2) >> // where C1&C2 are powers of two. >> ... >> X = InsertNewInstBefore( >> new CastInst(X, X->getType()->getUnsignedVersion >> ()), >> I); >> >> >> This (and similar cases) is easier/cleaner with InsertCastBefore. > > Yes, I agree. I changed the ones in my code but there are actually > dozens (hundreds) of instances in the file (not related to my > changes). > I'm going to commit the DIV patch first, then I'll come back and clean > up the others in a separate patch (tested, of course). Ok, sounds good. > Thanks for your excellent reviews, Chris. I know it takes a lot of > your > time and I appreciate that you so willingly give it. I'll apply what I > learned from DIV to the REM patch which I'm reviewing for Sheng soon. > Hopefully REM will fare better than DIV did. Sounds good, I'm sure it will get more smooth as it goes on. Thanks for the great improvements Reid! -Chris _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits