diff options
Diffstat (limited to 'test/Transforms/LoopVectorize/minmax_reduction.ll')
-rw-r--r-- | test/Transforms/LoopVectorize/minmax_reduction.ll | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/test/Transforms/LoopVectorize/minmax_reduction.ll b/test/Transforms/LoopVectorize/minmax_reduction.ll index 502fd8b9383b1..0e47260984f22 100644 --- a/test/Transforms/LoopVectorize/minmax_reduction.ll +++ b/test/Transforms/LoopVectorize/minmax_reduction.ll @@ -10,14 +10,14 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 ; Turn this into a max reduction. Make sure we use a splat to initialize the ; vector for the reduction. -; CHECK: @max_red +; CHECK-LABEL: @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 ; CHECK: icmp sgt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @max_red(i32 %max) { entry: @@ -41,12 +41,12 @@ for.end: ; Turn this into a max reduction. The select has its inputs reversed therefore ; this is a max reduction. -; CHECK: @max_red_inverse_select +; CHECK-LABEL: @max_red_inverse_select( ; CHECK: icmp slt <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp sgt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @max_red_inverse_select(i32 %max) { entry: @@ -69,12 +69,12 @@ for.end: } ; Turn this into a min reduction. -; CHECK: @min_red +; CHECK-LABEL: @min_red( ; CHECK: icmp slt <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp slt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @min_red(i32 %max) { entry: @@ -98,12 +98,12 @@ for.end: ; Turn this into a min reduction. The select has its inputs reversed therefore ; this is a min reduction. -; CHECK: @min_red_inverse_select +; CHECK-LABEL: @min_red_inverse_select( ; CHECK: icmp sgt <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp slt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @min_red_inverse_select(i32 %max) { entry: @@ -128,12 +128,12 @@ for.end: ; Unsigned tests. ; Turn this into a max reduction. -; CHECK: @umax_red +; CHECK-LABEL: @umax_red( ; CHECK: icmp ugt <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp ugt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @umax_red(i32 %max) { entry: @@ -157,12 +157,12 @@ for.end: ; Turn this into a max reduction. The select has its inputs reversed therefore ; this is a max reduction. -; CHECK: @umax_red_inverse_select +; CHECK-LABEL: @umax_red_inverse_select( ; CHECK: icmp ult <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp ugt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @umax_red_inverse_select(i32 %max) { entry: @@ -185,12 +185,12 @@ for.end: } ; Turn this into a min reduction. -; CHECK: @umin_red +; CHECK-LABEL: @umin_red( ; CHECK: icmp ult <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp ult <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @umin_red(i32 %max) { entry: @@ -214,12 +214,12 @@ for.end: ; Turn this into a min reduction. The select has its inputs reversed therefore ; this is a min reduction. -; CHECK: @umin_red_inverse_select +; CHECK-LABEL: @umin_red_inverse_select( ; CHECK: icmp ugt <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp ult <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @umin_red_inverse_select(i32 %max) { entry: @@ -243,12 +243,12 @@ for.end: ; SGE -> SLT ; Turn this into a min reduction (select inputs are reversed). -; CHECK: @sge_min_red +; CHECK-LABEL: @sge_min_red( ; CHECK: icmp sge <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp slt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @sge_min_red(i32 %max) { entry: @@ -272,12 +272,12 @@ for.end: ; SLE -> SGT ; Turn this into a max reduction (select inputs are reversed). -; CHECK: @sle_min_red +; CHECK-LABEL: @sle_min_red( ; CHECK: icmp sle <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp sgt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @sle_min_red(i32 %max) { entry: @@ -301,12 +301,12 @@ for.end: ; UGE -> ULT ; Turn this into a min reduction (select inputs are reversed). -; CHECK: @uge_min_red +; CHECK-LABEL: @uge_min_red( ; CHECK: icmp uge <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp ult <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @uge_min_red(i32 %max) { entry: @@ -330,12 +330,12 @@ for.end: ; ULE -> UGT ; Turn this into a max reduction (select inputs are reversed). -; CHECK: @ule_min_red +; CHECK-LABEL: @ule_min_red( ; CHECK: icmp ule <2 x i32> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: icmp ugt <2 x i32> -; CHECK: select <2 x i1> +; CHECK: select i1 define i32 @ule_min_red(i32 %max) { entry: @@ -358,7 +358,7 @@ for.end: } ; No reduction. -; CHECK: @no_red_1 +; CHECK-LABEL: @no_red_1( ; CHECK-NOT: icmp <2 x i32> define i32 @no_red_1(i32 %max) { entry: @@ -382,7 +382,7 @@ for.end: ret i32 %max.red.0 } -; CHECK: @no_red_2 +; CHECK-LABEL: @no_red_2( ; CHECK-NOT: icmp <2 x i32> define i32 @no_red_2(i32 %max) { entry: @@ -411,12 +411,12 @@ for.end: ; Maximum. ; Turn this into a max reduction in the presence of a no-nans-fp-math attribute. -; CHECK: @max_red_float +; CHECK-LABEL: @max_red_float( ; CHECK: fcmp ogt <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @max_red_float(float %max) #0 { entry: @@ -437,12 +437,12 @@ for.end: ret float %max.red.0 } -; CHECK: @max_red_float_ge +; CHECK-LABEL: @max_red_float_ge( ; CHECK: fcmp oge <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @max_red_float_ge(float %max) #0 { entry: @@ -463,12 +463,12 @@ for.end: ret float %max.red.0 } -; CHECK: @inverted_max_red_float +; CHECK-LABEL: @inverted_max_red_float( ; CHECK: fcmp olt <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_max_red_float(float %max) #0 { entry: @@ -489,12 +489,12 @@ for.end: ret float %max.red.0 } -; CHECK: @inverted_max_red_float_le +; CHECK-LABEL: @inverted_max_red_float_le( ; CHECK: fcmp ole <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_max_red_float_le(float %max) #0 { entry: @@ -515,12 +515,12 @@ for.end: ret float %max.red.0 } -; CHECK: @unordered_max_red +; CHECK-LABEL: @unordered_max_red_float( ; CHECK: fcmp ugt <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @unordered_max_red_float(float %max) #0 { entry: @@ -541,12 +541,12 @@ for.end: ret float %max.red.0 } -; CHECK: @unordered_max_red_float_ge +; CHECK-LABEL: @unordered_max_red_float_ge( ; CHECK: fcmp uge <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @unordered_max_red_float_ge(float %max) #0 { entry: @@ -567,12 +567,12 @@ for.end: ret float %max.red.0 } -; CHECK: @inverted_unordered_max_red +; CHECK-LABEL: @inverted_unordered_max_red_float( ; CHECK: fcmp ult <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_unordered_max_red_float(float %max) #0 { entry: @@ -593,12 +593,12 @@ for.end: ret float %max.red.0 } -; CHECK: @inverted_unordered_max_red_float_le +; CHECK-LABEL: @inverted_unordered_max_red_float_le( ; CHECK: fcmp ule <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp ogt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_unordered_max_red_float_le(float %max) #0 { entry: @@ -622,12 +622,12 @@ for.end: ; Minimum. ; Turn this into a min reduction in the presence of a no-nans-fp-math attribute. -; CHECK: @min_red_float +; CHECK-LABEL: @min_red_float( ; CHECK: fcmp olt <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @min_red_float(float %min) #0 { entry: @@ -648,12 +648,12 @@ for.end: ret float %min.red.0 } -; CHECK: @min_red_float_le +; CHECK-LABEL: @min_red_float_le( ; CHECK: fcmp ole <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @min_red_float_le(float %min) #0 { entry: @@ -674,12 +674,12 @@ for.end: ret float %min.red.0 } -; CHECK: @inverted_min_red_float +; CHECK-LABEL: @inverted_min_red_float( ; CHECK: fcmp ogt <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_min_red_float(float %min) #0 { entry: @@ -700,12 +700,12 @@ for.end: ret float %min.red.0 } -; CHECK: @inverted_min_red_float_ge +; CHECK-LABEL: @inverted_min_red_float_ge( ; CHECK: fcmp oge <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_min_red_float_ge(float %min) #0 { entry: @@ -726,12 +726,12 @@ for.end: ret float %min.red.0 } -; CHECK: @unordered_min_red +; CHECK-LABEL: @unordered_min_red_float( ; CHECK: fcmp ult <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @unordered_min_red_float(float %min) #0 { entry: @@ -752,12 +752,12 @@ for.end: ret float %min.red.0 } -; CHECK: @unordered_min_red_float_le +; CHECK-LABEL: @unordered_min_red_float_le( ; CHECK: fcmp ule <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @unordered_min_red_float_le(float %min) #0 { entry: @@ -778,12 +778,12 @@ for.end: ret float %min.red.0 } -; CHECK: @inverted_unordered_min_red +; CHECK-LABEL: @inverted_unordered_min_red_float( ; CHECK: fcmp ugt <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_unordered_min_red_float(float %min) #0 { entry: @@ -804,12 +804,12 @@ for.end: ret float %min.red.0 } -; CHECK: @inverted_unordered_min_red_float_ge +; CHECK-LABEL: @inverted_unordered_min_red_float_ge( ; CHECK: fcmp uge <2 x float> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x float> -; CHECK: select <2 x i1> +; CHECK: select i1 define float @inverted_unordered_min_red_float_ge(float %min) #0 { entry: @@ -831,12 +831,12 @@ for.end: } ; Make sure we handle doubles, too. -; CHECK: @min_red_double +; CHECK-LABEL: @min_red_double( ; CHECK: fcmp olt <2 x double> ; CHECK: select <2 x i1> ; CHECK: middle.block ; CHECK: fcmp olt <2 x double> -; CHECK: select <2 x i1> +; CHECK: select i1 define double @min_red_double(double %min) #0 { entry: @@ -859,7 +859,7 @@ for.end: ; Don't this into a max reduction. The no-nans-fp-math attribute is missing -; CHECK: @max_red_float_nans +; CHECK-LABEL: @max_red_float_nans( ; CHECK-NOT: <2 x float> define float @max_red_float_nans(float %max) { @@ -882,4 +882,4 @@ for.end: } -attributes #0 = { "no-nans-fp-math"="true" } +attributes #0 = { "no-nans-fp-math"="true" } |