[PATCH] D18701: [ARM] Adding IEEE-754 SIMD detection to loop vectorizer

Matt via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 6 11:07:02 PDT 2016


mmasten added a subscriber: mmasten.
mmasten added a comment.

Hello,

I currently have an RFC for translating vector math intrinsics to svml calls. This proposal includes the user specifying the desired precision requirements via several flags (supported by the Intel compiler currently). The plan is to attach this information in the form of function attributes at the calls sites of the math intrinsics. In turn, these attributes drive the selection of the appropriate svml function variant. Would this be helpful in this particular case? I've included a description of the flags below.

-fimf-absolute-error=value[:funclist]

         define the maximum allowable absolute error for math library
         function results
           value    - a positive, floating-point number conforming to the
                      format [digits][.digits][{e|E}[sign]digits]
           funclist - optional comma separated list of one or more math
                      library functions to which the attribute should be
                      applied
  
  -fimf-accuracy-bits=bits[:funclist]
         define the relative error, measured by the number of correct bits,
         for math library function results
           bits     - a positive, floating-point number
           funclist - optional comma separated list of one or more math
                      library functions to which the attribute should be
                      applied
  
  -fimf-arch-consistency=value[:funclist]
         ensures that the math library functions produce consistent results
         across different implementations of the same architecture
           value    - true or false
           funclist - optional comma separated list of one or more math
                      library functions to which the attribute should be
                      applied
  
  -fimf-max-error=ulps[:funclist]
         defines the maximum allowable relative error, measured in ulps, for
         math library function results
           ulps     - a positive, floating-point number conforming to the
                      format [digits][.digits][{e|E}[sign]digits]
           funclist - optional comma separated list of one or more math
                      library functions to which the attribute should be
                      applied
  
  -fimf-precision=value[:funclist]
         defines the accuracy (precision) for math library functions
           value    - defined as one of the following values
                      high   - equivalent to max-error = 0.6
                      medium - equivalent to max-error = 4 (DEFAULT)
                      low    - equivalent to accuracy-bits = 11 (single
                               precision); accuracy-bits = 26 (double
                               precision)
           funclist - optional comma separated list of one or more math
                      library functions to which the attribute should be
                      applied
  
  -fimf-domain-exclusion=classlist[:funclist]
         indicates the input arguments domain on which math functions
         must provide correct results.
          classlist - defined as one of the following values
                        nans, infinities, denormals, zeros
                        all, none, common
          funclist - optional list of one or more math library
                     functions to which the attribute should be applied.


http://reviews.llvm.org/D18701





More information about the llvm-commits mailing list