@@ -84,20 +84,20 @@ define double @sumIfVector(ptr nocapture readonly %arr) {
8484; SSE-NEXT: [[WIDE_LOAD2:%.*]] = load <2 x double>, ptr [[TMP5]], align 8
8585; SSE-NEXT: [[TMP6:%.*]] = fcmp fast une <2 x double> [[WIDE_LOAD]], <double 4.200000e+01, double 4.200000e+01>
8686; SSE-NEXT: [[TMP7:%.*]] = fcmp fast une <2 x double> [[WIDE_LOAD2]], <double 4.200000e+01, double 4.200000e+01>
87- ; SSE-NEXT: [[TMP10 :%.*]] = fadd fast <2 x double> [[VEC_PHI]], [[WIDE_LOAD]]
88- ; SSE-NEXT: [[TMP11 :%.*]] = fadd fast <2 x double> [[VEC_PHI1]], [[WIDE_LOAD2]]
89- ; SSE-NEXT: [[PREDPHI]] = select <2 x i1> [[TMP6]], <2 x double> [[TMP10 ]], <2 x double> [[VEC_PHI]]
90- ; SSE-NEXT: [[PREDPHI3]] = select <2 x i1> [[TMP7]], <2 x double> [[TMP11 ]], <2 x double> [[VEC_PHI1]]
87+ ; SSE-NEXT: [[TMP8 :%.*]] = fadd fast <2 x double> [[VEC_PHI]], [[WIDE_LOAD]]
88+ ; SSE-NEXT: [[TMP9 :%.*]] = fadd fast <2 x double> [[VEC_PHI1]], [[WIDE_LOAD2]]
89+ ; SSE-NEXT: [[PREDPHI]] = select <2 x i1> [[TMP6]], <2 x double> [[TMP8 ]], <2 x double> [[VEC_PHI]]
90+ ; SSE-NEXT: [[PREDPHI3]] = select <2 x i1> [[TMP7]], <2 x double> [[TMP9 ]], <2 x double> [[VEC_PHI1]]
9191; SSE-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
92- ; SSE-NEXT: [[TMP12 :%.*]] = icmp eq i32 [[INDEX_NEXT]], 32
93- ; SSE-NEXT: br i1 [[TMP12 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
92+ ; SSE-NEXT: [[TMP10 :%.*]] = icmp eq i32 [[INDEX_NEXT]], 32
93+ ; SSE-NEXT: br i1 [[TMP10 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
9494; SSE: middle.block:
9595; SSE-NEXT: [[BIN_RDX:%.*]] = fadd fast <2 x double> [[PREDPHI3]], [[PREDPHI]]
96- ; SSE-NEXT: [[TMP13 :%.*]] = call fast double @llvm.vector.reduce.fadd.v2f64(double -0.000000e+00, <2 x double> [[BIN_RDX]])
96+ ; SSE-NEXT: [[TMP11 :%.*]] = call fast double @llvm.vector.reduce.fadd.v2f64(double -0.000000e+00, <2 x double> [[BIN_RDX]])
9797; SSE-NEXT: br i1 true, label [[DONE:%.*]], label [[SCALAR_PH]]
9898; SSE: scalar.ph:
9999; SSE-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ 32, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
100- ; SSE-NEXT: [[BC_MERGE_RDX:%.*]] = phi double [ [[TMP13 ]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY]] ]
100+ ; SSE-NEXT: [[BC_MERGE_RDX:%.*]] = phi double [ [[TMP11 ]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY]] ]
101101; SSE-NEXT: br label [[LOOP:%.*]]
102102; SSE: loop:
103103; SSE-NEXT: [[I:%.*]] = phi i32 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[I_NEXT:%.*]], [[NEXT_ITER:%.*]] ]
@@ -117,7 +117,7 @@ define double @sumIfVector(ptr nocapture readonly %arr) {
117117; SSE-NEXT: [[AGAIN:%.*]] = icmp ult i32 [[I_NEXT]], 32
118118; SSE-NEXT: br i1 [[AGAIN]], label [[LOOP]], label [[DONE]], !llvm.loop [[LOOP3:![0-9]+]]
119119; SSE: done:
120- ; SSE-NEXT: [[TOT_NEXT_LCSSA:%.*]] = phi double [ [[TOT_NEXT]], [[NEXT_ITER]] ], [ [[TMP13 ]], [[MIDDLE_BLOCK]] ]
120+ ; SSE-NEXT: [[TOT_NEXT_LCSSA:%.*]] = phi double [ [[TOT_NEXT]], [[NEXT_ITER]] ], [ [[TMP11 ]], [[MIDDLE_BLOCK]] ]
121121; SSE-NEXT: ret double [[TOT_NEXT_LCSSA]]
122122;
123123; AVX-LABEL: @sumIfVector(
@@ -151,26 +151,26 @@ define double @sumIfVector(ptr nocapture readonly %arr) {
151151; AVX-NEXT: [[TMP13:%.*]] = fcmp fast une <4 x double> [[WIDE_LOAD4]], <double 4.200000e+01, double 4.200000e+01, double 4.200000e+01, double 4.200000e+01>
152152; AVX-NEXT: [[TMP14:%.*]] = fcmp fast une <4 x double> [[WIDE_LOAD5]], <double 4.200000e+01, double 4.200000e+01, double 4.200000e+01, double 4.200000e+01>
153153; AVX-NEXT: [[TMP15:%.*]] = fcmp fast une <4 x double> [[WIDE_LOAD6]], <double 4.200000e+01, double 4.200000e+01, double 4.200000e+01, double 4.200000e+01>
154- ; AVX-NEXT: [[TMP20 :%.*]] = fadd fast <4 x double> [[VEC_PHI]], [[WIDE_LOAD]]
155- ; AVX-NEXT: [[TMP21 :%.*]] = fadd fast <4 x double> [[VEC_PHI1]], [[WIDE_LOAD4]]
156- ; AVX-NEXT: [[TMP22 :%.*]] = fadd fast <4 x double> [[VEC_PHI2]], [[WIDE_LOAD5]]
157- ; AVX-NEXT: [[TMP23 :%.*]] = fadd fast <4 x double> [[VEC_PHI3]], [[WIDE_LOAD6]]
158- ; AVX-NEXT: [[PREDPHI]] = select <4 x i1> [[TMP12]], <4 x double> [[TMP20 ]], <4 x double> [[VEC_PHI]]
159- ; AVX-NEXT: [[PREDPHI7]] = select <4 x i1> [[TMP13]], <4 x double> [[TMP21 ]], <4 x double> [[VEC_PHI1]]
160- ; AVX-NEXT: [[PREDPHI8]] = select <4 x i1> [[TMP14]], <4 x double> [[TMP22 ]], <4 x double> [[VEC_PHI2]]
161- ; AVX-NEXT: [[PREDPHI9]] = select <4 x i1> [[TMP15]], <4 x double> [[TMP23 ]], <4 x double> [[VEC_PHI3]]
154+ ; AVX-NEXT: [[TMP16 :%.*]] = fadd fast <4 x double> [[VEC_PHI]], [[WIDE_LOAD]]
155+ ; AVX-NEXT: [[TMP17 :%.*]] = fadd fast <4 x double> [[VEC_PHI1]], [[WIDE_LOAD4]]
156+ ; AVX-NEXT: [[TMP18 :%.*]] = fadd fast <4 x double> [[VEC_PHI2]], [[WIDE_LOAD5]]
157+ ; AVX-NEXT: [[TMP19 :%.*]] = fadd fast <4 x double> [[VEC_PHI3]], [[WIDE_LOAD6]]
158+ ; AVX-NEXT: [[PREDPHI]] = select <4 x i1> [[TMP12]], <4 x double> [[TMP16 ]], <4 x double> [[VEC_PHI]]
159+ ; AVX-NEXT: [[PREDPHI7]] = select <4 x i1> [[TMP13]], <4 x double> [[TMP17 ]], <4 x double> [[VEC_PHI1]]
160+ ; AVX-NEXT: [[PREDPHI8]] = select <4 x i1> [[TMP14]], <4 x double> [[TMP18 ]], <4 x double> [[VEC_PHI2]]
161+ ; AVX-NEXT: [[PREDPHI9]] = select <4 x i1> [[TMP15]], <4 x double> [[TMP19 ]], <4 x double> [[VEC_PHI3]]
162162; AVX-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 16
163- ; AVX-NEXT: [[TMP24 :%.*]] = icmp eq i32 [[INDEX_NEXT]], 32
164- ; AVX-NEXT: br i1 [[TMP24 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
163+ ; AVX-NEXT: [[TMP20 :%.*]] = icmp eq i32 [[INDEX_NEXT]], 32
164+ ; AVX-NEXT: br i1 [[TMP20 ]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
165165; AVX: middle.block:
166166; AVX-NEXT: [[BIN_RDX:%.*]] = fadd fast <4 x double> [[PREDPHI7]], [[PREDPHI]]
167167; AVX-NEXT: [[BIN_RDX10:%.*]] = fadd fast <4 x double> [[PREDPHI8]], [[BIN_RDX]]
168168; AVX-NEXT: [[BIN_RDX11:%.*]] = fadd fast <4 x double> [[PREDPHI9]], [[BIN_RDX10]]
169- ; AVX-NEXT: [[TMP25 :%.*]] = call fast double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> [[BIN_RDX11]])
169+ ; AVX-NEXT: [[TMP21 :%.*]] = call fast double @llvm.vector.reduce.fadd.v4f64(double -0.000000e+00, <4 x double> [[BIN_RDX11]])
170170; AVX-NEXT: br i1 true, label [[DONE:%.*]], label [[SCALAR_PH]]
171171; AVX: scalar.ph:
172172; AVX-NEXT: [[BC_RESUME_VAL:%.*]] = phi i32 [ 32, [[MIDDLE_BLOCK]] ], [ 0, [[ENTRY:%.*]] ]
173- ; AVX-NEXT: [[BC_MERGE_RDX:%.*]] = phi double [ [[TMP25 ]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY]] ]
173+ ; AVX-NEXT: [[BC_MERGE_RDX:%.*]] = phi double [ [[TMP21 ]], [[MIDDLE_BLOCK]] ], [ 0.000000e+00, [[ENTRY]] ]
174174; AVX-NEXT: br label [[LOOP:%.*]]
175175; AVX: loop:
176176; AVX-NEXT: [[I:%.*]] = phi i32 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[I_NEXT:%.*]], [[NEXT_ITER:%.*]] ]
@@ -190,7 +190,7 @@ define double @sumIfVector(ptr nocapture readonly %arr) {
190190; AVX-NEXT: [[AGAIN:%.*]] = icmp ult i32 [[I_NEXT]], 32
191191; AVX-NEXT: br i1 [[AGAIN]], label [[LOOP]], label [[DONE]], !llvm.loop [[LOOP3:![0-9]+]]
192192; AVX: done:
193- ; AVX-NEXT: [[TOT_NEXT_LCSSA:%.*]] = phi double [ [[TOT_NEXT]], [[NEXT_ITER]] ], [ [[TMP25 ]], [[MIDDLE_BLOCK]] ]
193+ ; AVX-NEXT: [[TOT_NEXT_LCSSA:%.*]] = phi double [ [[TOT_NEXT]], [[NEXT_ITER]] ], [ [[TMP21 ]], [[MIDDLE_BLOCK]] ]
194194; AVX-NEXT: ret double [[TOT_NEXT_LCSSA]]
195195;
196196entry:
0 commit comments