diff options
author | Jun Bum Lim <junbuml@codeaurora.org> | 2015-09-14 16:19:52 +0000 |
---|---|---|
committer | Jun Bum Lim <junbuml@codeaurora.org> | 2015-09-14 16:19:52 +0000 |
commit | 34b9bd0435a1e8f97bf97e08a2da37d8c01e80ec (patch) | |
tree | 5151aba4e563c5cd02743ea5c39d743d184edd63 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 11282dcac637499e15ae1e58208d895515f3e8bf (diff) | |
download | llvm-34b9bd0435a1e8f97bf97e08a2da37d8c01e80ec.zip llvm-34b9bd0435a1e8f97bf97e08a2da37d8c01e80ec.tar.gz llvm-34b9bd0435a1e8f97bf97e08a2da37d8c01e80ec.tar.bz2 |
Improve ISel using across lane min/max reduction
In vectorized integer min/max reduction code, the final "reduce" step
is sub-optimal. In AArch64, this change wll combine :
%svn0 = vector_shuffle %0, undef<2,3,u,u>
%smax0 = smax %0, svn0
%svn3 = vector_shuffle %smax0, undef<1,u,u,u>
%sc = setcc %smax0, %svn3, gt
%n0 = extract_vector_elt %sc, #0
%n1 = extract_vector_elt %smax0, #0
%n2 = extract_vector_elt $smax0, #1
%result = select %n0, %n1, n2
becomes :
%1 = smaxv %0
%result = extract_vector_elt %1, 0
This change extends r246790.
llvm-svn: 247575
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions