[llvm-commits] CVS: llvm/lib/Support/APInt.cpp

Reid Spencer rspencer at reidspencer.com
Sun May 13 16:57:22 PDT 2007


On Sun, 2007-05-13 at 16:49 -0700, Chris Lattner wrote:
> On May 13, 2007, at 4:45 PM, Reid Spencer wrote:
> 
> > +APInt APInt::rotl(uint32_t rotateAmt) const {
> > +  // Don't get too fancy, just use existing shift/or facilities
> > +  APInt hi(*this);
> > +  APInt lo(*this);
> > +  hi.shl(rotateAmt);
> > +  lo.lshr(BitWidth - rotateAmt);
> > +  return hi | lo;
> > +}
> > +
> > +APInt APInt::rotr(uint32_t rotateAmt) const {
> > +  // Don't get too fancy, just use existing shift/or facilities
> > +  APInt hi(*this);
> > +  APInt lo(*this);
> > +  lo.lshr(rotateAmt);
> > +  hi.shl(BitWidth - rotateAmt);
> > +  return hi | lo;
> > +}
> 
> Do these work for rotamt = 0 ?

Yes, but results are undefined (in our case value 0). This behavior is
implemented in lshr and shl.

Reid.

> 
> -Chris
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list