@@ -82,3 +82,30 @@ entry:
82
82
store <4 x i32 > %4 , ptr %8 , align 4
83
83
ret void
84
84
}
85
+
86
+ define void @test4 (ptr %in ) {
87
+ entry:
88
+ br label %label0
89
+
90
+ label 0:
91
+ %0 = load <8 x float >, ptr %in , align 4
92
+ %1 = shufflevector <8 x float > %0 , <8 x float > zeroinitializer , <4 x i32 > <i32 0 , i32 1 , i32 2 , i32 3 >
93
+ %2 = shufflevector <8 x float > %0 , <8 x float > zeroinitializer , <4 x i32 > <i32 4 , i32 5 , i32 6 , i32 7 >
94
+ %3 = call <4 x float > @llvm.fma.v4f32 (<4 x float > %1 , <4 x float > zeroinitializer , <4 x float > zeroinitializer )
95
+ %4 = call <4 x float > @llvm.fma.v4f32 (<4 x float > %2 , <4 x float > zeroinitializer , <4 x float > zeroinitializer )
96
+ %5 = call <4 x float > @llvm.fma.v4f32 (<4 x float > %1 , <4 x float > zeroinitializer , <4 x float > zeroinitializer )
97
+ %6 = call <4 x float > @llvm.fma.v4f32 (<4 x float > %2 , <4 x float > zeroinitializer , <4 x float > zeroinitializer )
98
+ br label %label2
99
+
100
+ label 1:
101
+ br label %label2
102
+
103
+ label 2:
104
+ %7 = phi <4 x float > [ %3 , %label0 ], [ zeroinitializer , %label1 ]
105
+ %8 = phi <4 x float > [ %4 , %label0 ], [ zeroinitializer , %label1 ]
106
+ %9 = phi <4 x float > [ %5 , %label0 ], [ zeroinitializer , %label1 ]
107
+ %10 = phi <4 x float > [ %6 , %label0 ], [ zeroinitializer , %label1 ]
108
+ br label %label0
109
+ }
110
+
111
+ declare <4 x float > @llvm.fma.v4f32 (<4 x float >, <4 x float >, <4 x float >)
0 commit comments