[llvm-commits] [PATCH][APFloat] add APFloat::isDenormal()
    Shuxin Yang 
    shuxin.llvm at gmail.com
       
    Wed Jan  2 10:45:29 PST 2013
    
    
  
Hi,
     The attached tiny patch is to add APFloat::isDenormal() to APFloat 
class.
Only the changes to APFloat.{cxx,h} are relevant, the rest are test to 
see if it works.
    As far as I can tell, a APFloat is a denormal if it satisfies 
following conditions:
   1. it is not zero/infinity/nan (i.e APFloat::isNormal() == ture)
   2. the exponent field take the minimal value
   3. the most-significant-bit of the mantissa bit is 0
   I think condition-3 implies 2). However, in my change I still test 
these three conditions.
The rationale is twofold: condition-2 is cheap to verify and testing 2) 
would likely yields
early-exist.
    The "test" is hard-coded in the InstCombineAddSub.cpp (this part is 
not going to be committed).
and the test is triggered by any *.ll having a fadd instruction.
    The "test" covers the tricky cases about 
single/double/quadruple-precision as well as Intel 80-bit
double-ext precision floating-point. I don't know how to test PPC FP. 
But I don't think it is necessary
to test PPC FP as APFloat is a arch-neutral representations of all these 
formats.
Thank you for code review!
Shuxin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: diff.patch
Type: text/x-patch
Size: 3254 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130102/090e7d88/attachment.bin>
    
    
More information about the llvm-commits
mailing list