@@ -75,3 +75,36 @@ define void @test1(double %0, <4 x double> %v) {
75
75
%13 = fcmp olt double %12 , 0 .000000e+00
76
76
br label %2
77
77
}
78
+
79
+ define void @test2 (double %0 ) {
80
+ ; CHECK-LABEL: define void @test2(
81
+ ; CHECK-SAME: double [[TMP0:%.*]]) {
82
+ ; CHECK-NEXT: [[TMP2:%.*]] = insertelement <2 x double> poison, double [[TMP0]], i32 0
83
+ ; CHECK-NEXT: [[TMP3:%.*]] = shufflevector <2 x double> [[TMP2]], <2 x double> poison, <2 x i32> zeroinitializer
84
+ ; CHECK-NEXT: br label [[TMP4:%.*]]
85
+ ; CHECK: 4:
86
+ ; CHECK-NEXT: [[TMP5:%.*]] = fsub double 1.000000e+00, [[TMP0]]
87
+ ; CHECK-NEXT: [[TMP6:%.*]] = fsub <2 x double> <double 3.000000e+00, double 2.000000e+00>, [[TMP3]]
88
+ ; CHECK-NEXT: br label [[DOTBACKEDGE:%.*]]
89
+ ; CHECK: .backedge:
90
+ ; CHECK-NEXT: [[TMP7:%.*]] = insertelement <2 x double> [[TMP6]], double [[TMP5]], i32 1
91
+ ; CHECK-NEXT: [[TMP8:%.*]] = fmul <2 x double> [[TMP6]], [[TMP7]]
92
+ ; CHECK-NEXT: [[TMP9:%.*]] = fcmp olt <2 x double> [[TMP8]], zeroinitializer
93
+ ; CHECK-NEXT: br label [[TMP4]]
94
+ ;
95
+ br label %2
96
+
97
+ 2 :
98
+ %3 = fsub double 1 .000000e+00 , %0
99
+ %4 = fsub double 2 .000000e+00 , %0
100
+ %5 = fsub double 3 .000000e+00 , %0
101
+ br label %.backedge
102
+
103
+ .backedge:
104
+ %6 = fmul double %4 , %3
105
+ %7 = fcmp olt double %6 , 0 .000000e+00
106
+ %8 = fmul double %5 , %5
107
+ %9 = fcmp olt double %8 , 0 .000000e+00
108
+ br label %2
109
+ }
110
+
0 commit comments