Skip to content
  • Sander de Smalen's avatar
    Improve reduction intrinsics by overloading result value. · 51c2fa0e
    Sander de Smalen authored
    This patch uses the mechanism from D62995 to strengthen the
    definitions of the reduction intrinsics by letting the scalar
    result/accumulator type be overloaded from the vector element type.
    
    For example:
    
      ; The LLVM LangRef specifies that the scalar result must equal the
      ; vector element type, but this is not checked/enforced by LLVM.
      declare i32 @llvm.experimental.vector.reduce.or.i32.v4i32(<4 x i32> %a)
    
    This patch changes that into:
    
      declare i32 @llvm.experimental.vector.reduce.or.v4i32(<4 x i32> %a)
    
    Which has the type-constraint more explicit and causes LLVM to check
    the result type with the vector element type.
    
    Reviewers: RKSimon, arsenm, rnk, greened, aemerson
    
    Reviewed By: arsenm
    
    Differential Revision: https://reviews.llvm.org/D62996
    
    llvm-svn: 363240
    51c2fa0e