Skip to content
  1. Jun 29, 2013
  2. Jun 19, 2013
  3. May 05, 2013
    • Arnold Schwaighofer's avatar
      Add missing PatternMatch.cpp to CMakeLists.txt · eb4f2d63
      Arnold Schwaighofer authored
      llvm-svn: 181147
      eb4f2d63
    • Arnold Schwaighofer's avatar
      PatternMatch: Matcher for (un)ordered floating point min/max · e972d03f
      Arnold Schwaighofer authored
      Add support for matching 'ordered' and 'unordered' floating point min/max
      constructs.
      
      In LLVM we can express min/max functions as a combination of compare and select.
      We have support for matching such constructs for integers but not for floating
      point. In floating point math there is no total order because of the presence of
      'NaN'. Therefore, we have to be careful to preserve the original fcmp semantics
      when interpreting floating point compare select combinations as a minimum or
      maximum function. The resulting 'ordered/unordered' floating point maximum
      function has to select the same value as the select/fcmp combination it is based
      on.
      
       ordered_max(x,y)   = max(x,y) iff x and y are not NaN, y otherwise
       unordered_max(x,y) = max(x,y) iff x and y are not NaN, x otherwise
       ordered_min(x,y)   = min(x,y) iff x and y are not NaN, y otherwise
       unordered_min(x,y) = min(x,y) iff x and y are not NaN, x otherwise
      
      This matches the behavior of the underlying select(fcmp(olt/ult/.., L, R), L, R)
      construct.
      
      Any code using this predicate has to preserve this semantics.
      
      A follow-up patch will use this to implement floating point min/max reductions
      in the vectorizer.
      
      radar://13723044
      
      llvm-svn: 181143
      e972d03f
  4. Apr 12, 2013
  5. Jan 31, 2013
  6. Jan 27, 2013
  7. Jan 23, 2013
  8. Jan 16, 2013
  9. Jan 14, 2013
  10. Jan 12, 2013
  11. Jan 07, 2013
Loading