Lines Matching full:max
11 ; Turn this into a max reduction. Make sure we use a splat to initialize the
14 ; CHECK: %[[VAR:.*]] = insertelement <2 x i32> poison, i32 %max, i64 0
21 define i32 @max_red(i32 %max) {
27 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
30 %cmp3 = icmp sgt i32 %0, %max.red.08
31 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
38 ret i32 %max.red.0
41 ; Turn this into a max reduction. The select has its inputs reversed therefore
42 ; this is a max reduction.
49 define i32 @max_red_inverse_select(i32 %max) {
55 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
58 %cmp3 = icmp slt i32 %max.red.08, %0
59 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
66 ret i32 %max.red.0
76 define i32 @min_red(i32 %max) {
82 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
85 %cmp3 = icmp slt i32 %0, %max.red.08
86 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
93 ret i32 %max.red.0
104 define i32 @min_red_inverse_select(i32 %max) {
110 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
113 %cmp3 = icmp sgt i32 %max.red.08, %0
114 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
121 ret i32 %max.red.0
126 ; Turn this into a max reduction.
133 define i32 @umax_red(i32 %max) {
139 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
142 %cmp3 = icmp ugt i32 %0, %max.red.08
143 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
150 ret i32 %max.red.0
153 ; Turn this into a max reduction. The select has its inputs reversed therefore
154 ; this is a max reduction.
161 define i32 @umax_red_inverse_select(i32 %max) {
167 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
170 %cmp3 = icmp ult i32 %max.red.08, %0
171 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
178 ret i32 %max.red.0
188 define i32 @umin_red(i32 %max) {
194 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
197 %cmp3 = icmp ult i32 %0, %max.red.08
198 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
205 ret i32 %max.red.0
216 define i32 @umin_red_inverse_select(i32 %max) {
222 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
225 %cmp3 = icmp ugt i32 %max.red.08, %0
226 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
233 ret i32 %max.red.0
244 define i32 @sge_min_red(i32 %max) {
250 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
253 %cmp3 = icmp sge i32 %0, %max.red.08
254 %max.red.0 = select i1 %cmp3, i32 %max.red.08, i32 %0
261 ret i32 %max.red.0
265 ; Turn this into a max reduction (select inputs are reversed).
272 define i32 @sle_min_red(i32 %max) {
278 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
281 %cmp3 = icmp sle i32 %0, %max.red.08
282 %max.red.0 = select i1 %cmp3, i32 %max.red.08, i32 %0
289 ret i32 %max.red.0
300 define i32 @uge_min_red(i32 %max) {
306 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
309 %cmp3 = icmp uge i32 %0, %max.red.08
310 %max.red.0 = select i1 %cmp3, i32 %max.red.08, i32 %0
317 ret i32 %max.red.0
321 ; Turn this into a max reduction (select inputs are reversed).
328 define i32 @ule_min_red(i32 %max) {
334 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
337 %cmp3 = icmp ule i32 %0, %max.red.08
338 %max.red.0 = select i1 %cmp3, i32 %max.red.08, i32 %0
345 ret i32 %max.red.0
351 define i32 @no_red_1(i32 %max) {
357 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
363 %max.red.0 = select i1 %cmp3, i32 %0, i32 %max.red.08
370 ret i32 %max.red.0
375 define i32 @no_red_2(i32 %max) {
381 %max.red.08 = phi i32 [ %max, %entry ], [ %max.red.0, %for.body ]
386 %cmp3 = icmp sgt i32 %0, %max.red.08
387 %max.red.0 = select i1 %cmp3, i32 %0, i32 %1
394 ret i32 %max.red.0
401 ; Turn this into a max reduction in the presence of a no-nans-fp-math attribute.
408 define float @max_red_float(float %max) #0 {
414 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
417 %cmp3 = fcmp fast ogt float %0, %max.red.08
418 %max.red.0 = select i1 %cmp3, float %0, float %max.red.08
424 ret float %max.red.0
433 define float @max_red_float_ge(float %max) #0 {
439 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
442 %cmp3 = fcmp fast oge float %0, %max.red.08
443 %max.red.0 = select i1 %cmp3, float %0, float %max.red.08
449 ret float %max.red.0
458 define float @inverted_max_red_float(float %max) #0 {
464 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
467 %cmp3 = fcmp fast olt float %0, %max.red.08
468 %max.red.0 = select i1 %cmp3, float %max.red.08, float %0
474 ret float %max.red.0
483 define float @inverted_max_red_float_le(float %max) #0 {
489 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
492 %cmp3 = fcmp fast ole float %0, %max.red.08
493 %max.red.0 = select i1 %cmp3, float %max.red.08, float %0
499 ret float %max.red.0
508 define float @unordered_max_red_float(float %max) #0 {
514 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
517 %cmp3 = fcmp fast ugt float %0, %max.red.08
518 %max.red.0 = select i1 %cmp3, float %0, float %max.red.08
524 ret float %max.red.0
533 define float @unordered_max_red_float_ge(float %max) #0 {
539 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
542 %cmp3 = fcmp fast uge float %0, %max.red.08
543 %max.red.0 = select i1 %cmp3, float %0, float %max.red.08
549 ret float %max.red.0
558 define float @inverted_unordered_max_red_float(float %max) #0 {
564 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
567 %cmp3 = fcmp fast ult float %0, %max.red.08
568 %max.red.0 = select i1 %cmp3, float %max.red.08, float %0
574 ret float %max.red.0
583 define float @inverted_unordered_max_red_float_le(float %max) #0 {
589 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
592 %cmp3 = fcmp fast ule float %0, %max.red.08
593 %max.red.0 = select i1 %cmp3, float %max.red.08, float %0
599 ret float %max.red.0
832 ; Don't this into a max reduction. The no-nans-fp-math attribute is missing
836 define float @max_red_float_nans(float %max) {
842 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
845 %cmp3 = fcmp fast ogt float %0, %max.red.08
846 %max.red.0 = select i1 %cmp3, float %0, float %max.red.08
852 ret float %max.red.0
859 define float @max_red_float_nsz(float %max) #1 {
865 %max.red.08 = phi float [ %max, %entry ], [ %max.red.0, %for.body ]
868 %cmp3 = fcmp fast ogt float %0, %max.red.08
869 %max.red.0 = select i1 %cmp3, float %0, float %max.red.08
875 ret float %max.red.0
1045 ; Min and max intrinsics - don't vectorize