From c1738fdadd1c969f13bbf09fe9c36fff56ccd709 Mon Sep 17 00:00:00 2001 From: Arnold Schwaighofer Date: Sun, 5 May 2013 01:54:42 +0000 Subject: LoopVectorize: We don't need an identity element for min/max reductions We can just use the initial element that feeds the reduction. max(max(x, y), z) == max(max(x,y), max(x,z)) radar://13723044 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181141 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Transforms/LoopVectorize/minmax_reduction.ll | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'test/Transforms/LoopVectorize') diff --git a/test/Transforms/LoopVectorize/minmax_reduction.ll b/test/Transforms/LoopVectorize/minmax_reduction.ll index 99dd09386f..36a8758e2c 100644 --- a/test/Transforms/LoopVectorize/minmax_reduction.ll +++ b/test/Transforms/LoopVectorize/minmax_reduction.ll @@ -6,8 +6,11 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 ; Signed tests. -; Turn this into a max reduction. +; Turn this into a max reduction. Make sure we use a splat to initialize the +; vector for the reduction. ; CHECK: @max_red +; CHECK: %[[VAR:.*]] = insertelement <2 x i32> undef, i32 %max, i32 0 +; CHECK: {{.*}} = shufflevector <2 x i32> %[[VAR]], <2 x i32> undef, <2 x i32> zeroinitializer ; CHECK: icmp sgt <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block -- cgit v1.2.3-70-g09d2