Support generic expansion of ordered vector reduction (PR36732)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 9 Apr 2018 15:44:20 +0000 (15:44 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Mon, 9 Apr 2018 15:44:20 +0000 (15:44 +0000)
commit23c2182c2bfcd145b2c33cf5ca831a7348e6adce
tree539213fa47e89fc0f31e62c647aceda93c205cb5
parentbec8a66454882285db4c98311ba430adec2c8dac
Support generic expansion of ordered vector reduction (PR36732)

Without the fast math flags, the llvm.experimental.vector.reduce.fadd/fmul intrinsic expansions must be expanded in order.

This patch scalarizes the reduction, applying the accumulator at the start of the sequence: ((((Acc + Scl[0]) + Scl[1]) + Scl[2]) + ) ... + Scl[NumElts-1]

Differential Revision: https://reviews.llvm.org/D45366

llvm-svn: 329585
llvm/include/llvm/Transforms/Utils/LoopUtils.h
llvm/lib/CodeGen/ExpandReductions.cpp
llvm/lib/Transforms/Utils/LoopUtils.cpp
llvm/test/CodeGen/Generic/expand-experimental-reductions.ll