1 ; RUN: llc < %s -mtriple=i386-apple-darwin10 -mcpu=corei7-avx -mattr=+avx | FileCheck %s
3 declare i32 @llvm.x86.avx.ptestz.256(<4 x i64> %p1, <4 x i64> %p2) nounwind
4 declare i32 @llvm.x86.avx.ptestc.256(<4 x i64> %p1, <4 x i64> %p2) nounwind
6 define <4 x float> @test1(<4 x i64> %a, <4 x float> %b) nounwind {
13 %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a, <4 x i64> %a) nounwind
14 %one = icmp ne i32 %res, 0
15 br i1 %one, label %bb1, label %bb2
18 %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
22 %d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
26 %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
30 define <4 x float> @test3(<4 x i64> %a, <4 x float> %b) nounwind {
37 %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a, <4 x i64> %a) nounwind
38 %one = trunc i32 %res to i1
39 br i1 %one, label %bb1, label %bb2
42 %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
46 %d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
50 %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
54 define <4 x float> @test4(<4 x i64> %a, <4 x float> %b) nounwind {
61 %res = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a, <4 x i64> %a) nounwind
62 %one = icmp ne i32 %res, 0
63 br i1 %one, label %bb1, label %bb2
66 %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
70 %d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
74 %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
78 define <4 x float> @test6(<4 x i64> %a, <4 x float> %b) nounwind {
85 %res = call i32 @llvm.x86.avx.ptestc.256(<4 x i64> %a, <4 x i64> %a) nounwind
86 %one = trunc i32 %res to i1
87 br i1 %one, label %bb1, label %bb2
90 %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
94 %d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
98 %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
102 define <4 x float> @test7(<4 x i64> %a, <4 x float> %b) nounwind {
104 ; CHECK-LABEL: test7:
109 %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a, <4 x i64> %a) nounwind
110 %one = icmp eq i32 %res, 1
111 br i1 %one, label %bb1, label %bb2
114 %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
118 %d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
122 %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
126 define <4 x float> @test8(<4 x i64> %a, <4 x float> %b) nounwind {
128 ; CHECK-LABEL: test8:
133 %res = call i32 @llvm.x86.avx.ptestz.256(<4 x i64> %a, <4 x i64> %a) nounwind
134 %one = icmp ne i32 %res, 1
135 br i1 %one, label %bb1, label %bb2
138 %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
142 %d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
146 %e = phi <4 x float> [%c, %bb1], [%d, %bb2]