[PATCH] Add ISD::FROUND for libm round()

Nadav Rotem nrotem at apple.com
Tue Jul 23 17:07:30 PDT 2013


LGTM. 

On Jul 23, 2013, at 4:05 PM, Hal Finkel <hfinkel at anl.gov> wrote:

> Ping.
> 
> -Hal
> 
> ----- Original Message -----
>> ----- Original Message -----
>>> Hi Hal,
>>> 
>>> 
>>> I think that the round intrinsic should support all of the popular
>>> rounding mode, and not only nearest integer.
>> 
>> I agree, and we do currently, except for the round-away-from-zero
>> mode of round(). In libm, the different rounding modes have
>> different function calls, and we currently support (have the ability
>> to custom lower):
>>      FCEIL, FTRUNC, FRINT, FNEARBYINT, FFLOOR,
>> 
>> which correspond to:
>>  ceil - smallest integral value not less than
>>  trunc - round to integer, towards zero
>>  floor - largest integral value not greater than
>>  rint/nearbyint - round to nearest integer using the current
>>  rounding mode (which is normally ties-to-even)
>> 
>> and now I'd like to add the remaining one:
>>  round - round to nearest integer, away from zero
>> 
>> Thanks again,
>> Hal
>> 
>>> 
>>> 
>>> Thanks,
>>> Nadav
>>> 
>>> 
>>> 
>>> On Jul 7, 2013, at 9:04 PM, Hal Finkel < hfinkel at anl.gov > wrote:
>>> 
>>> 
>>> 
>>> Hello!
>>> 
>>> round() has been feeling a little left out; all of its friends
>>> (like
>>> rint() and nearbyint()) have their own ISD nodes, and round()
>>> doesn't. Recent PowerPC cores have an instruction for round(), and
>>> so I'd like to correct this injustice and add ISD::FROUND.
>>> 
>>> For the most part, this is extremely straightforward. I've added an
>>> intrinsic and matching ISD node just like those for nearbyint() and
>>> friends. The SelectionDAG pattern I've named frnd (because
>>> ISD::FP_ROUND has already claimed fround); obviously we can use a
>>> different name if someone has a better suggestion. Please review.
>>> 
>>> Thanks again,
>>> Hal
>>> 
>>> --
>>> Hal Finkel
>>> Assistant Computational Scientist
>>> Leadership Computing Facility
>>> Argonne National Laboratory
>>> <isd_round.patch> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>> 
>> 
>> --
>> Hal Finkel
>> Assistant Computational Scientist
>> Leadership Computing Facility
>> Argonne National Laboratory
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>> 
> 
> -- 
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130723/1712ddf7/attachment.html>


More information about the llvm-commits mailing list