[X86][AVX512][Clang][Intrinsics][reduce] Adding missing reduce (Operators: +,*,&...
authorMichael Zuckerman <Michael.zuckerman@intel.com>
Mon, 24 Oct 2016 10:53:20 +0000 (10:53 +0000)
committerMichael Zuckerman <Michael.zuckerman@intel.com>
Mon, 24 Oct 2016 10:53:20 +0000 (10:53 +0000)
commit98cb041891b3b516aa74d39020e02b1846773793
treedb3170b85137df8fdb43a6643b6f4b72568d8f85
parent9c348548331a0ab783efddc113f474f545784f0e
[X86][AVX512][Clang][Intrinsics][reduce] Adding missing reduce (Operators: +,*,&&,||) intrinsics to Clang

Committed after LGTM and check-all

Vector-reduction arithmetic accepts vectors as inputs and produces scalars as outputs.
This class of vector operation forms the basis of many scientific computations.
In vector-reduction arithmetic, the evaluation off is independent of the order of the input elements of V.

Used bisection method. At each step, we partition the vector with previous
step in half, and the operation is performed on its two halves.
This takes log2(n) steps where n is the number of elements in the vector.

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

llvm-svn: 284963
clang/lib/Headers/avx512fintrin.h
clang/test/CodeGen/avx512-reduceIntrin.c [new file with mode: 0644]