xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/avx-brcond.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1; RUN: llc < %s -mtriple=i386-apple-darwin10 -mcpu=corei7-avx -mattr=+avx | FileCheck %s
2
3declare i32 @llvm.x86.avx.ptestz.256(<4 x i64> %p1, <4 x i64> %p2) nounwind
4declare i32 @llvm.x86.avx.ptestc.256(<4 x i64> %p1, <4 x i64> %p2) nounwind
5
6define <4 x float> @test1(<4 x i64> %a, <4 x float> %b) nounwind {
7entry:
8; CHECK-LABEL: test1:
9; CHECK: vptest
10; CHECK-NEXT:	jne
11; CHECK: ret
12
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
16
17bb1:
18  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
19  br label %return
20
21bb2:
22	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
23	br label %return
24
25return:
26  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
27  ret <4 x float> %e
28}
29
30define <4 x float> @test3(<4 x i64> %a, <4 x float> %b) nounwind {
31entry:
32; CHECK-LABEL: test3:
33; CHECK: vptest
34; CHECK-NEXT:	jne
35; CHECK: ret
36
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
40
41bb1:
42  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
43  br label %return
44
45bb2:
46	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
47	br label %return
48
49return:
50  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
51  ret <4 x float> %e
52}
53
54define <4 x float> @test4(<4 x i64> %a, <4 x float> %b) nounwind {
55entry:
56; CHECK-LABEL: test4:
57; CHECK: vptest
58; CHECK-NEXT:	jae
59; CHECK: ret
60
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
64
65bb1:
66  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
67  br label %return
68
69bb2:
70	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
71	br label %return
72
73return:
74  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
75  ret <4 x float> %e
76}
77
78define <4 x float> @test6(<4 x i64> %a, <4 x float> %b) nounwind {
79entry:
80; CHECK-LABEL: test6:
81; CHECK: vptest
82; CHECK-NEXT:	jae
83; CHECK: ret
84
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
88
89bb1:
90  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
91  br label %return
92
93bb2:
94	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
95	br label %return
96
97return:
98  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
99  ret <4 x float> %e
100}
101
102define <4 x float> @test7(<4 x i64> %a, <4 x float> %b) nounwind {
103entry:
104; CHECK-LABEL: test7:
105; CHECK: vptest
106; CHECK-NEXT:	jne
107; CHECK: ret
108
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
112
113bb1:
114  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
115  br label %return
116
117bb2:
118	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
119	br label %return
120
121return:
122  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
123  ret <4 x float> %e
124}
125
126define <4 x float> @test8(<4 x i64> %a, <4 x float> %b) nounwind {
127entry:
128; CHECK-LABEL: test8:
129; CHECK: vptest
130; CHECK-NEXT:	je
131; CHECK: ret
132
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
136
137bb1:
138  %c = fadd <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
139  br label %return
140
141bb2:
142	%d = fdiv <4 x float> %b, < float 1.000000e+002, float 2.000000e+002, float 3.000000e+002, float 4.000000e+002 >
143	br label %return
144
145return:
146  %e = phi <4 x float> [%c, %bb1], [%d, %bb2]
147  ret <4 x float> %e
148}
149
150
151