@@ -3073,16 +3073,17 @@ define void @pcp_rotate(i32 noundef %0, i32 noundef %1, ptr nocapture noundef %2
3073
3073
%67 = insertelement <2 x double > poison, double %sqrt , i64 0
3074
3074
%68 = shufflevector <2 x double > %67 , <2 x double > poison, <2 x i32 > zeroinitializer
3075
3075
%69 = fdiv <2 x double > %66 , %68
3076
- br i1 %44 , label %.lr.ph125.preheader , label %._crit_edge126
3076
+ br i1 %44 , label %.lr.ph125.lver.check , label %._crit_edge126
3077
3077
3078
- .lr.ph125.preheader: ; preds = %64
3078
+ .lr.ph125.lver.check: ; preds = %64
3079
3079
%70 = sext i32 %1 to i64
3080
3080
%wide.trip.count171 = zext nneg i32 %0 to i64
3081
- br label %.lr.ph125
3081
+ %ident.check.not = icmp eq i32 %1 , 1
3082
+ br i1 %ident.check.not , label %.lr.ph125.ph , label %.lr.ph125.lver.orig
3082
3083
3083
- .lr.ph125: ; preds = %.lr.ph125.preheader , %.lr.ph125
3084
- %indvars.iv168 = phi i64 [ 0 , %.lr.ph125.preheader ], [ %indvars.iv.next169 , %.lr.ph125 ]
3085
- %71 = mul nsw i64 %indvars.iv168 , %70
3084
+ .lr.ph125.lver.orig : ; preds = %.lr.ph125.lver.check , %.lr.ph125.lver.orig
3085
+ %indvars.iv168.lver.orig = phi i64 [ %indvars.iv.next169.lver.orig , %.lr.ph125.lver.orig ], [ 0 , %.lr.ph125.lver.check ]
3086
+ %71 = mul nsw i64 %indvars.iv168.lver.orig , %70
3086
3087
%72 = getelementptr inbounds double , ptr %2 , i64 %71
3087
3088
%73 = load double , ptr %72 , align 8
3088
3089
%74 = getelementptr i8 , ptr %72 , i64 8
@@ -3096,11 +3097,36 @@ define void @pcp_rotate(i32 noundef %0, i32 noundef %1, ptr nocapture noundef %2
3096
3097
%82 = insertelement <2 x double > %81 , double %76 , i64 1
3097
3098
%83 = tail call <2 x double > @llvm.fmuladd.v2f64 (<2 x double > %82 , <2 x double > %69 , <2 x double > %80 )
3098
3099
store <2 x double > %83 , ptr %72 , align 8
3100
+ %indvars.iv.next169.lver.orig = add nuw nsw i64 %indvars.iv168.lver.orig , 1
3101
+ %exitcond172.not.lver.orig = icmp eq i64 %indvars.iv.next169.lver.orig , %wide.trip.count171
3102
+ br i1 %exitcond172.not.lver.orig , label %._crit_edge126 , label %.lr.ph125.lver.orig
3103
+
3104
+ .lr.ph125.ph: ; preds = %.lr.ph125.lver.check
3105
+ %load_initial = load double , ptr %2 , align 8
3106
+ br label %.lr.ph125
3107
+
3108
+ .lr.ph125: ; preds = %.lr.ph125.ph, %.lr.ph125
3109
+ %store_forwarded = phi double [ %load_initial , %.lr.ph125.ph ], [ %96 , %.lr.ph125 ]
3110
+ %indvars.iv168 = phi i64 [ 0 , %.lr.ph125.ph ], [ %indvars.iv.next169 , %.lr.ph125 ]
3111
+ %84 = mul nuw nsw i64 %indvars.iv168 , %70
3112
+ %85 = getelementptr inbounds double , ptr %2 , i64 %84
3113
+ %86 = getelementptr i8 , ptr %85 , i64 8
3114
+ %87 = load double , ptr %86 , align 8
3115
+ %88 = fneg double %store_forwarded
3116
+ %89 = insertelement <2 x double > poison, double %87 , i64 0
3117
+ %90 = shufflevector <2 x double > %89 , <2 x double > poison, <2 x i32 > zeroinitializer
3118
+ %91 = fmul <2 x double > %69 , %90
3119
+ %92 = shufflevector <2 x double > %91 , <2 x double > poison, <2 x i32 > <i32 1 , i32 0 >
3120
+ %93 = insertelement <2 x double > poison, double %store_forwarded , i64 0
3121
+ %94 = insertelement <2 x double > %93 , double %88 , i64 1
3122
+ %95 = tail call <2 x double > @llvm.fmuladd.v2f64 (<2 x double > %94 , <2 x double > %69 , <2 x double > %92 )
3123
+ store <2 x double > %95 , ptr %85 , align 8
3099
3124
%indvars.iv.next169 = add nuw nsw i64 %indvars.iv168 , 1
3100
3125
%exitcond172.not = icmp eq i64 %indvars.iv.next169 , %wide.trip.count171
3126
+ %96 = extractelement <2 x double > %95 , i64 1
3101
3127
br i1 %exitcond172.not , label %._crit_edge126 , label %.lr.ph125
3102
3128
3103
- ._crit_edge126: ; preds = %.lr.ph125, %64
3129
+ ._crit_edge126: ; preds = %.lr.ph125.lver.orig, %.lr.ph125 , %64
3104
3130
ret void
3105
3131
}
3106
3132
@@ -3112,15 +3138,15 @@ define void @multilevel_spring_electrical_embedding(i32 noundef %0, ptr noundef
3112
3138
call void @llvm.memcpy.p0.p0.i64 (ptr noundef nonnull align 8 dereferenceable (136 ) %10 , ptr noundef nonnull align 8 dereferenceable (136 ) %2 , i64 136 , i1 false )
3113
3139
store i32 0 , ptr %7 , align 4
3114
3140
%.not = icmp eq ptr %1 , null
3115
- br i1 %.not , label %718 , label %12
3141
+ br i1 %.not , label %733 , label %12
3116
3142
3117
3143
12 : ; preds = %8
3118
3144
%13 = getelementptr inbounds i8 , ptr %1 , i64 4
3119
3145
%14 = load i32 , ptr %13 , align 4
3120
3146
%15 = icmp slt i32 %14 , 1
3121
3147
%16 = icmp slt i32 %0 , 1
3122
3148
%or.cond = or i1 %16 , %15
3123
- br i1 %or.cond , label %718 , label %17
3149
+ br i1 %or.cond , label %733 , label %17
3124
3150
3125
3151
17 : ; preds = %12
3126
3152
%18 = tail call zeroext i1 @SparseMatrix_is_symmetric (ptr noundef nonnull %1 , i1 noundef zeroext false ) #23
@@ -3748,11 +3774,11 @@ attach_edge_label_coordinates.exit: ; preds = %._crit_edge121.i.lo
3748
3774
tail call void @SparseMatrix_delete (ptr noundef %202 ) #23
3749
3775
tail call void @free (ptr noundef %38 ) #23
3750
3776
%.not157 = icmp eq ptr %.0 , %1
3751
- br i1 %.not157 , label %718 , label %281
3777
+ br i1 %.not157 , label %733 , label %281
3752
3778
3753
3779
281 : ; preds = %attach_edge_label_coordinates.exit
3754
3780
tail call void @SparseMatrix_delete (ptr noundef nonnull %.0 ) #23
3755
- br label %718
3781
+ br label %733
3756
3782
3757
3783
282 : ; preds = %33, %30
3758
3784
call void @Multilevel_control_new (ptr dead_on_unwind nonnull writable sret (%struct.Multilevel_control ) align 8 %11 ) #23
@@ -4426,7 +4452,7 @@ spring_electrical_embedding_slow.exit: ; preds = %543, %365, %349, %5
4426
4452
4427
4453
563 : ; preds = %561
4428
4454
call void @free (ptr noundef %.1 ) #23
4429
- br label %715
4455
+ br label %730
4430
4456
4431
4457
564 : ; preds = %561
4432
4458
%565 = getelementptr inbounds i8 , ptr %.0140 , i64 16
@@ -4645,14 +4671,14 @@ prolongate.exit: ; preds = %.loopexit30.us.i, %
4645
4671
%663 = getelementptr inbounds i8 , ptr %2 , i64 120
4646
4672
%664 = load double , ptr %663 , align 8
4647
4673
%665 = fcmp une double %664 , 0 .000000e+00
4648
- br i1 %665 , label %669 , label %706
4674
+ br i1 %665 , label %669 , label %721
4649
4675
4650
4676
.thread209: ; preds = %660
4651
4677
call void @pcp_rotate (i32 noundef %14 , i32 noundef 2 , ptr noundef %4 )
4652
4678
%666 = getelementptr inbounds i8 , ptr %2 , i64 120
4653
4679
%667 = load double , ptr %666 , align 8
4654
4680
%668 = fcmp une double %667 , 0 .000000e+00
4655
- br i1 %668 , label %.thread210 , label %706
4681
+ br i1 %668 , label %.thread210 , label %721
4656
4682
4657
4683
.thread210: ; preds = %.thread209
4658
4684
call void @llvm.lifetime.start.p0 (i64 16 , ptr nonnull %9 )
@@ -4716,7 +4742,7 @@ prolongate.exit: ; preds = %.loopexit30.us.i, %
4716
4742
._crit_edge.us81.i: ; preds = %679
4717
4743
%indvars.iv.next104.i = add nuw nsw i64 %indvars.iv103.i , 1
4718
4744
%exitcond107.not.i = icmp eq i64 %indvars.iv.next104.i , %wide.trip.count91.i
4719
- br i1 %exitcond107.not.i , label %._crit_edge80.i , label %.preheader.us.i199
4745
+ br i1 %exitcond107.not.i , label %.lr.ph83.i.lver.check , label %.preheader.us.i199
4720
4746
4721
4747
684 : ; preds = %684, %.lr.ph76.i
4722
4748
%indvars.iv93.i = phi i64 [ 0 , %.lr.ph76.i ], [ %indvars.iv.next94.i , %684 ]
@@ -4728,18 +4754,22 @@ prolongate.exit: ; preds = %.loopexit30.us.i, %
4728
4754
%exitcond97.not.i = icmp eq i64 %indvars.iv.next94.i , %345
4729
4755
br i1 %exitcond97.not.i , label %.preheader.us.i199 , label %684
4730
4756
4731
- ._crit_edge80.i: ; preds = %._crit_edge.us81.i
4757
+ .lr.ph83.i.lver.check: ; preds = %._crit_edge.us81.i
4732
4758
%688 = fmul double %670 , 0xBF91DF45A50DE270
4733
4759
%689 = call double @cos (double noundef %688 ) #23
4734
4760
%690 = call double @sin (double noundef %688 ) #23
4761
+ %ident.check.not = icmp eq i32 %0 , 1
4762
+ br i1 %ident.check.not , label %.lr.ph83.i.ph , label %.lr.ph83.i.lver.orig.preheader
4763
+
4764
+ .lr.ph83.i.lver.orig.preheader: ; preds = %.lr.ph83.i.lver.check
4735
4765
%691 = insertelement <2 x double > poison, double %690 , i64 0
4736
4766
%692 = insertelement <2 x double > %691 , double %689 , i64 1
4737
4767
%693 = shufflevector <2 x double > %692 , <2 x double > poison, <2 x i32 > <i32 1 , i32 0 >
4738
- br label %.lr.ph83.i
4768
+ br label %.lr.ph83.i.lver.orig
4739
4769
4740
- .lr.ph83.i: ; preds = %.lr.ph83.i, %._crit_edge80.i
4741
- %indvars.iv108.i = phi i64 [ 0 , %._crit_edge80.i ], [ %indvars.iv.next109.i , %.lr.ph83.i ]
4742
- %694 = mul nuw nsw i64 %indvars.iv108.i , %345
4770
+ .lr.ph83.i.lver.orig : ; preds = %.lr.ph83.i.lver.orig.preheader , %.lr.ph83.i.lver.orig
4771
+ %indvars.iv108.i.lver.orig = phi i64 [ %indvars.iv.next109.i.lver.orig , %.lr.ph83.i.lver.orig ], [ 0 , %.lr.ph83.i.lver.orig.preheader ]
4772
+ %694 = mul nuw nsw i64 %indvars.iv108.i.lver.orig , %345
4743
4773
%695 = getelementptr inbounds double , ptr %4 , i64 %694
4744
4774
%696 = load double , ptr %695 , align 8
4745
4775
%697 = getelementptr i8 , ptr %695 , i64 8
@@ -4752,40 +4782,67 @@ prolongate.exit: ; preds = %.loopexit30.us.i, %
4752
4782
%704 = insertelement <2 x double > %703 , double %699 , i64 1
4753
4783
%705 = call <2 x double > @llvm.fmuladd.v2f64 (<2 x double > %704 , <2 x double > %693 , <2 x double > %702 )
4754
4784
store <2 x double > %705 , ptr %695 , align 8
4785
+ %indvars.iv.next109.i.lver.orig = add nuw nsw i64 %indvars.iv108.i.lver.orig , 1
4786
+ %exitcond112.not.i.lver.orig = icmp eq i64 %indvars.iv.next109.i.lver.orig , %wide.trip.count91.i
4787
+ br i1 %exitcond112.not.i.lver.orig , label %rotate.exit , label %.lr.ph83.i.lver.orig
4788
+
4789
+ .lr.ph83.i.ph: ; preds = %.lr.ph83.i.lver.check
4790
+ %load_initial = load double , ptr %4 , align 8
4791
+ %706 = insertelement <2 x double > poison, double %690 , i64 0
4792
+ %707 = insertelement <2 x double > %706 , double %689 , i64 1
4793
+ %708 = shufflevector <2 x double > %707 , <2 x double > poison, <2 x i32 > <i32 1 , i32 0 >
4794
+ br label %.lr.ph83.i
4795
+
4796
+ .lr.ph83.i: ; preds = %.lr.ph83.i, %.lr.ph83.i.ph
4797
+ %store_forwarded = phi double [ %load_initial , %.lr.ph83.i.ph ], [ %720 , %.lr.ph83.i ]
4798
+ %indvars.iv108.i = phi i64 [ 0 , %.lr.ph83.i.ph ], [ %indvars.iv.next109.i , %.lr.ph83.i ]
4799
+ %709 = mul nuw nsw i64 %indvars.iv108.i , %345
4800
+ %710 = getelementptr inbounds double , ptr %4 , i64 %709
4801
+ %711 = getelementptr i8 , ptr %710 , i64 8
4802
+ %712 = load double , ptr %711 , align 8
4803
+ %713 = fneg double %store_forwarded
4804
+ %714 = insertelement <2 x double > poison, double %712 , i64 0
4805
+ %715 = shufflevector <2 x double > %714 , <2 x double > poison, <2 x i32 > zeroinitializer
4806
+ %716 = fmul <2 x double > %707 , %715
4807
+ %717 = insertelement <2 x double > poison, double %store_forwarded , i64 0
4808
+ %718 = insertelement <2 x double > %717 , double %713 , i64 1
4809
+ %719 = call <2 x double > @llvm.fmuladd.v2f64 (<2 x double > %718 , <2 x double > %708 , <2 x double > %716 )
4810
+ store <2 x double > %719 , ptr %710 , align 8
4755
4811
%indvars.iv.next109.i = add nuw nsw i64 %indvars.iv108.i , 1
4756
4812
%exitcond112.not.i = icmp eq i64 %indvars.iv.next109.i , %wide.trip.count91.i
4813
+ %720 = extractelement <2 x double > %719 , i64 1
4757
4814
br i1 %exitcond112.not.i , label %rotate.exit , label %.lr.ph83.i
4758
4815
4759
- rotate.exit: ; preds = %.lr.ph83.i
4816
+ rotate.exit: ; preds = %.lr.ph83.i.lver.orig, %.lr.ph83.i
4760
4817
call void @llvm.lifetime.end.p0 (i64 16 , ptr nonnull %9 )
4761
- br label %706
4762
-
4763
- 706 : ; preds = %.thread209, %rotate.exit, %662
4764
- %707 = getelementptr inbounds i8 , ptr %2 , i64 100
4765
- %708 = load i32 , ptr %707 , align 4
4766
- %709 = getelementptr inbounds i8 , ptr %2 , i64 112
4767
- %710 = load double , ptr %709 , align 8
4768
- %711 = load i32 , ptr %27 , align 8
4769
- %712 = getelementptr inbounds i8 , ptr %2 , i64 104
4770
- %713 = load i8 , ptr %712 , align 8
4771
- %714 = trunc i8 %713 to i1
4772
- call void @remove_overlap (i32 noundef %0 , ptr noundef nonnull %.0 , ptr noundef %4 , ptr noundef %3 , i32 noundef %708 , double noundef %710 , i32 noundef %711 , i32 noundef %5 , ptr noundef %6 , ptr noundef nonnull %.0 , i1 noundef zeroext %714 ) #23
4773
- br label %715
4774
-
4775
- 715 : ; preds = %706 , %563
4818
+ br label %721
4819
+
4820
+ 721 : ; preds = %.thread209, %rotate.exit, %662
4821
+ %722 = getelementptr inbounds i8 , ptr %2 , i64 100
4822
+ %723 = load i32 , ptr %722 , align 4
4823
+ %724 = getelementptr inbounds i8 , ptr %2 , i64 112
4824
+ %725 = load double , ptr %724 , align 8
4825
+ %726 = load i32 , ptr %27 , align 8
4826
+ %727 = getelementptr inbounds i8 , ptr %2 , i64 104
4827
+ %728 = load i8 , ptr %727 , align 8
4828
+ %729 = trunc i8 %728 to i1
4829
+ call void @remove_overlap (i32 noundef %0 , ptr noundef nonnull %.0 , ptr noundef %4 , ptr noundef %3 , i32 noundef %723 , double noundef %725 , i32 noundef %726 , i32 noundef %5 , ptr noundef %6 , ptr noundef nonnull %.0 , i1 noundef zeroext %729 ) #23
4830
+ br label %730
4831
+
4832
+ 730 : ; preds = %721 , %563
4776
4833
call void @llvm.memcpy.p0.p0.i64 (ptr noundef nonnull align 8 dereferenceable (136 ) %2 , ptr noundef nonnull align 8 dereferenceable (136 ) %10 , i64 136 , i1 false )
4777
4834
%.not156 = icmp eq ptr %.0 , %1
4778
- br i1 %.not156 , label %717 , label %716
4835
+ br i1 %.not156 , label %732 , label %731
4779
4836
4780
- 716 : ; preds = %715
4837
+ 731 : ; preds = %730
4781
4838
call void @SparseMatrix_delete (ptr noundef nonnull %.0 ) #23
4782
- br label %717
4839
+ br label %732
4783
4840
4784
- 717 : ; preds = %716 , %715
4841
+ 732 : ; preds = %731 , %730
4785
4842
call void @Multilevel_delete (ptr noundef %286 ) #23
4786
- br label %718
4843
+ br label %733
4787
4844
4788
- 718 : ; preds = %attach_edge_label_coordinates.exit, %281, %12, %8, %717
4845
+ 733 : ; preds = %attach_edge_label_coordinates.exit, %281, %12, %8, %732
4789
4846
ret void
4790
4847
}
4791
4848
0 commit comments