xref: /llvm-project/llvm/test/Transforms/Util/libcalls-shrinkwrap-long-double.ll (revision d3c0ed387c478dc07daac575b2ec1216b8044b56)
1; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s
2
3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4target triple = "x86_64-unknown-linux-gnu"
5
6define void @test_range_error(x86_fp80 %value) {
7entry:
8  %call_0 = call x86_fp80 @coshl(x86_fp80 %value)
9; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB174000000000000
10; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB174000000000000
11; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
12; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]
13; CHECK: [[CALL_LABEL]]:
14; CHECK-NEXT: %call_0 = call x86_fp80 @coshl(x86_fp80 %value)
15; CHECK-NEXT: br label %[[END_LABEL]]
16; CHECK: [[END_LABEL]]:
17
18  %call_1 = call x86_fp80 @expl(x86_fp80 %value)
19; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB21C000000000000
20; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB170000000000000
21; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
22; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
23; CHECK: [[CALL_LABEL]]:
24; CHECK-NEXT: %call_1 = call x86_fp80 @expl(x86_fp80 %value)
25; CHECK-NEXT: br label %[[END_LABEL]]
26; CHECK: [[END_LABEL]]:
27
28  %call_3 = call x86_fp80 @exp2l(x86_fp80 %value)
29; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00D807A000000000000
30; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB1DC000000000000
31; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
32; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
33; CHECK: [[CALL_LABEL]]:
34; CHECK-NEXT: %call_3 = call x86_fp80 @exp2l(x86_fp80 %value)
35; CHECK-NEXT: br label %[[END_LABEL]]
36; CHECK: [[END_LABEL]]:
37
38  %call_4 = call x86_fp80 @sinhl(x86_fp80 %value)
39; CHECK: [[COND1:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKC00CB174000000000000
40; CHECK: [[COND2:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB174000000000000
41; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
42; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
43; CHECK: [[CALL_LABEL]]:
44; CHECK-NEXT: %call_4 = call x86_fp80 @sinhl(x86_fp80 %value)
45; CHECK-NEXT: br label %[[END_LABEL]]
46; CHECK: [[END_LABEL]]:
47
48  %call_5 = call x86_fp80 @expm1l(x86_fp80 %value)
49; CHECK: [[COND:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK400CB170000000000000
50; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
51; CHECK: [[CALL_LABEL]]:
52; CHECK-NEXT: %call_5 = call x86_fp80 @expm1l(x86_fp80 %value)
53; CHECK-NEXT: br label %[[END_LABEL]]
54; CHECK: [[END_LABEL]]:
55
56  ret void
57}
58
59define void @test_range_error_strictfp(x86_fp80 %value) strictfp {
60entry:
61  %call_0 = call x86_fp80 @coshl(x86_fp80 %value) strictfp
62; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE:%.*]], x86_fp80 0xKC00CB174000000000000, metadata !"olt", metadata !"fpexcept.strict")
63; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB174000000000000, metadata !"ogt", metadata !"fpexcept.strict")
64; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
65; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT:[0-9]+]]
66; CHECK: [[CALL_LABEL]]:
67; CHECK-NEXT: %call_0 = call x86_fp80 @coshl(x86_fp80 %value)
68; CHECK-NEXT: br label %[[END_LABEL]]
69; CHECK: [[END_LABEL]]:
70
71  %call_1 = call x86_fp80 @expl(x86_fp80 %value) strictfp
72; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKC00CB21C000000000000, metadata !"olt", metadata !"fpexcept.strict")
73; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB170000000000000, metadata !"ogt", metadata !"fpexcept.strict")
74; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
75; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
76; CHECK: [[CALL_LABEL]]:
77; CHECK-NEXT: %call_1 = call x86_fp80 @expl(x86_fp80 %value)
78; CHECK-NEXT: br label %[[END_LABEL]]
79; CHECK: [[END_LABEL]]:
80
81  %call_3 = call x86_fp80 @exp2l(x86_fp80 %value) strictfp
82; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKC00D807A000000000000, metadata !"olt", metadata !"fpexcept.strict")
83; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB1DC000000000000, metadata !"ogt", metadata !"fpexcept.strict")
84; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
85; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
86; CHECK: [[CALL_LABEL]]:
87; CHECK-NEXT: %call_3 = call x86_fp80 @exp2l(x86_fp80 %value)
88; CHECK-NEXT: br label %[[END_LABEL]]
89; CHECK: [[END_LABEL]]:
90
91  %call_4 = call x86_fp80 @sinhl(x86_fp80 %value) strictfp
92; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKC00CB174000000000000, metadata !"olt", metadata !"fpexcept.strict")
93; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB174000000000000, metadata !"ogt", metadata !"fpexcept.strict")
94; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
95; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
96; CHECK: [[CALL_LABEL]]:
97; CHECK-NEXT: %call_4 = call x86_fp80 @sinhl(x86_fp80 %value)
98; CHECK-NEXT: br label %[[END_LABEL]]
99; CHECK: [[END_LABEL]]:
100
101  %call_5 = call x86_fp80 @expm1l(x86_fp80 %value) strictfp
102; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK400CB170000000000000, metadata !"ogt", metadata !"fpexcept.strict")
103; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
104; CHECK: [[CALL_LABEL]]:
105; CHECK-NEXT: %call_5 = call x86_fp80 @expm1l(x86_fp80 %value)
106; CHECK-NEXT: br label %[[END_LABEL]]
107; CHECK: [[END_LABEL]]:
108
109  ret void
110}
111
112declare x86_fp80 @coshl(x86_fp80)
113declare x86_fp80 @expl(x86_fp80)
114declare x86_fp80 @exp10l(x86_fp80)
115declare x86_fp80 @exp2l(x86_fp80)
116declare x86_fp80 @sinhl(x86_fp80)
117declare x86_fp80 @expm1l(x86_fp80)
118
119define void @test_domain_error(x86_fp80 %value) {
120entry:
121  %call_00 = call x86_fp80 @acosl(x86_fp80 %value)
122; CHECK: [[COND1:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK3FFF8000000000000000
123; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000
124; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
125; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
126; CHECK: [[CALL_LABEL]]:
127; CHECK-NEXT: %call_00 = call x86_fp80 @acosl(x86_fp80 %value)
128; CHECK-NEXT: br label %[[END_LABEL]]
129; CHECK: [[END_LABEL]]:
130
131  %call_01 = call x86_fp80 @asinl(x86_fp80 %value)
132; CHECK: [[COND1:%[0-9]+]] = fcmp ogt x86_fp80 %value, 0xK3FFF8000000000000000
133; CHECK: [[COND2:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xKBFFF8000000000000000
134; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
135; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
136; CHECK: [[CALL_LABEL]]:
137; CHECK-NEXT: %call_01 = call x86_fp80 @asinl(x86_fp80 %value)
138; CHECK-NEXT: br label %[[END_LABEL]]
139; CHECK: [[END_LABEL]]:
140
141  %call_02 = call x86_fp80 @cosl(x86_fp80 %value)
142; CHECK: [[COND1:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xKFFFF8000000000000000
143; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000
144; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
145; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
146; CHECK: [[CALL_LABEL]]:
147; CHECK-NEXT: %call_02 = call x86_fp80 @cosl(x86_fp80 %value)
148; CHECK-NEXT: br label %[[END_LABEL]]
149; CHECK: [[END_LABEL]]:
150
151  %call_03 = call x86_fp80 @sinl(x86_fp80 %value)
152; CHECK: [[COND1:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xKFFFF8000000000000000
153; CHECK: [[COND2:%[0-9]+]] = fcmp oeq x86_fp80 %value, 0xK7FFF8000000000000000
154; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
155; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
156; CHECK: [[CALL_LABEL]]:
157; CHECK-NEXT: %call_03 = call x86_fp80 @sinl(x86_fp80 %value)
158; CHECK-NEXT: br label %[[END_LABEL]]
159; CHECK: [[END_LABEL]]:
160
161  %call_04 = call x86_fp80 @acoshl(x86_fp80 %value)
162; CHECK: [[COND:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xK3FFF8000000000000000
163; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
164; CHECK: [[CALL_LABEL]]:
165; CHECK-NEXT: %call_04 = call x86_fp80 @acoshl(x86_fp80 %value)
166; CHECK-NEXT: br label %[[END_LABEL]]
167; CHECK: [[END_LABEL]]:
168
169  %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value)
170; CHECK: [[COND:%[0-9]+]] = fcmp olt x86_fp80 %value, 0xK00000000000000000000
171; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
172; CHECK: [[CALL_LABEL]]:
173; CHECK-NEXT: %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value)
174; CHECK-NEXT: br label %[[END_LABEL]]
175; CHECK: [[END_LABEL]]:
176
177  %call_06 = call x86_fp80 @atanhl(x86_fp80 %value)
178; CHECK: [[COND1:%[0-9]+]] = fcmp oge x86_fp80 %value, 0xK3FFF8000000000000000
179; CHECK: [[COND2:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000
180; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
181; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
182; CHECK: [[CALL_LABEL]]:
183; CHECK-NEXT: %call_06 = call x86_fp80 @atanhl(x86_fp80 %value)
184; CHECK-NEXT: br label %[[END_LABEL]]
185; CHECK: [[END_LABEL]]:
186
187  %call_07 = call x86_fp80 @logl(x86_fp80 %value)
188; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
189; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
190; CHECK: [[CALL_LABEL]]:
191; CHECK-NEXT: %call_07 = call x86_fp80 @logl(x86_fp80 %value)
192; CHECK-NEXT: br label %[[END_LABEL]]
193; CHECK: [[END_LABEL]]:
194
195  %call_08 = call x86_fp80 @log10l(x86_fp80 %value)
196; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
197; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
198; CHECK: [[CALL_LABEL]]:
199; CHECK-NEXT: %call_08 = call x86_fp80 @log10l(x86_fp80 %value)
200; CHECK-NEXT: br label %[[END_LABEL]]
201; CHECK: [[END_LABEL]]:
202
203  %call_09 = call x86_fp80 @log2l(x86_fp80 %value)
204; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
205; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
206; CHECK: [[CALL_LABEL]]:
207; CHECK-NEXT: %call_09 = call x86_fp80 @log2l(x86_fp80 %value)
208; CHECK-NEXT: br label %[[END_LABEL]]
209; CHECK: [[END_LABEL]]:
210
211  %call_10 = call x86_fp80 @logbl(x86_fp80 %value)
212; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xK00000000000000000000
213; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
214; CHECK: [[CALL_LABEL]]:
215; CHECK-NEXT: %call_10 = call x86_fp80 @logbl(x86_fp80 %value)
216; CHECK-NEXT: br label %[[END_LABEL]]
217; CHECK: [[END_LABEL]]:
218
219  %call_11 = call x86_fp80 @log1pl(x86_fp80 %value)
220; CHECK: [[COND:%[0-9]+]] = fcmp ole x86_fp80 %value, 0xKBFFF8000000000000000
221; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
222; CHECK: [[CALL_LABEL]]:
223; CHECK-NEXT: %call_11 = call x86_fp80 @log1pl(x86_fp80 %value)
224; CHECK-NEXT: br label %[[END_LABEL]]
225; CHECK: [[END_LABEL]]:
226
227  ret void
228}
229
230define void @test_domain_error_strictfp(x86_fp80 %value) strictfp {
231entry:
232  %call_00 = call x86_fp80 @acosl(x86_fp80 %value) strictfp
233; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE:%.*]], x86_fp80 0xK3FFF8000000000000000, metadata !"ogt", metadata !"fpexcept.strict")
234; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, metadata !"olt", metadata !"fpexcept.strict")
235; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
236; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
237; CHECK: [[CALL_LABEL]]:
238; CHECK-NEXT: %call_00 = call x86_fp80 @acosl(x86_fp80 %value)
239; CHECK-NEXT: br label %[[END_LABEL]]
240; CHECK: [[END_LABEL]]:
241
242  %call_01 = call x86_fp80 @asinl(x86_fp80 %value) strictfp
243; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK3FFF8000000000000000, metadata !"ogt", metadata !"fpexcept.strict")
244; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, metadata !"olt", metadata !"fpexcept.strict")
245; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
246; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
247; CHECK: [[CALL_LABEL]]:
248; CHECK-NEXT: %call_01 = call x86_fp80 @asinl(x86_fp80 %value)
249; CHECK-NEXT: br label %[[END_LABEL]]
250; CHECK: [[END_LABEL]]:
251
252  %call_02 = call x86_fp80 @cosl(x86_fp80 %value) strictfp
253; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKFFFF8000000000000000, metadata !"oeq", metadata !"fpexcept.strict")
254; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK7FFF8000000000000000, metadata !"oeq", metadata !"fpexcept.strict")
255; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
256; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
257; CHECK: [[CALL_LABEL]]:
258; CHECK-NEXT: %call_02 = call x86_fp80 @cosl(x86_fp80 %value)
259; CHECK-NEXT: br label %[[END_LABEL]]
260; CHECK: [[END_LABEL]]:
261
262  %call_03 = call x86_fp80 @sinl(x86_fp80 %value) strictfp
263; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKFFFF8000000000000000, metadata !"oeq", metadata !"fpexcept.strict")
264; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK7FFF8000000000000000, metadata !"oeq", metadata !"fpexcept.strict")
265; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
266; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
267; CHECK: [[CALL_LABEL]]:
268; CHECK-NEXT: %call_03 = call x86_fp80 @sinl(x86_fp80 %value)
269; CHECK-NEXT: br label %[[END_LABEL]]
270; CHECK: [[END_LABEL]]:
271
272  %call_04 = call x86_fp80 @acoshl(x86_fp80 %value) strictfp
273; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK3FFF8000000000000000, metadata !"olt", metadata !"fpexcept.strict")
274; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
275; CHECK: [[CALL_LABEL]]:
276; CHECK-NEXT: %call_04 = call x86_fp80 @acoshl(x86_fp80 %value)
277; CHECK-NEXT: br label %[[END_LABEL]]
278; CHECK: [[END_LABEL]]:
279
280  %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value) strictfp
281; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, metadata !"olt", metadata !"fpexcept.strict")
282; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
283; CHECK: [[CALL_LABEL]]:
284; CHECK-NEXT: %call_05 = call x86_fp80 @sqrtl(x86_fp80 %value)
285; CHECK-NEXT: br label %[[END_LABEL]]
286; CHECK: [[END_LABEL]]:
287
288  %call_06 = call x86_fp80 @atanhl(x86_fp80 %value) strictfp
289; CHECK: [[COND1:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK3FFF8000000000000000, metadata !"oge", metadata !"fpexcept.strict")
290; CHECK: [[COND2:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, metadata !"ole", metadata !"fpexcept.strict")
291; CHECK: [[COND:%[0-9]+]] = or i1 [[COND2]], [[COND1]]
292; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
293; CHECK: [[CALL_LABEL]]:
294; CHECK-NEXT: %call_06 = call x86_fp80 @atanhl(x86_fp80 %value)
295; CHECK-NEXT: br label %[[END_LABEL]]
296; CHECK: [[END_LABEL]]:
297
298  %call_07 = call x86_fp80 @logl(x86_fp80 %value) strictfp
299; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, metadata !"ole", metadata !"fpexcept.strict")
300; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
301; CHECK: [[CALL_LABEL]]:
302; CHECK-NEXT: %call_07 = call x86_fp80 @logl(x86_fp80 %value)
303; CHECK-NEXT: br label %[[END_LABEL]]
304; CHECK: [[END_LABEL]]:
305
306  %call_08 = call x86_fp80 @log10l(x86_fp80 %value) strictfp
307; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, metadata !"ole", metadata !"fpexcept.strict")
308; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
309; CHECK: [[CALL_LABEL]]:
310; CHECK-NEXT: %call_08 = call x86_fp80 @log10l(x86_fp80 %value)
311; CHECK-NEXT: br label %[[END_LABEL]]
312; CHECK: [[END_LABEL]]:
313
314  %call_09 = call x86_fp80 @log2l(x86_fp80 %value) strictfp
315; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, metadata !"ole", metadata !"fpexcept.strict")
316; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
317; CHECK: [[CALL_LABEL]]:
318; CHECK-NEXT: %call_09 = call x86_fp80 @log2l(x86_fp80 %value)
319; CHECK-NEXT: br label %[[END_LABEL]]
320; CHECK: [[END_LABEL]]:
321
322  %call_10 = call x86_fp80 @logbl(x86_fp80 %value) strictfp
323; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xK00000000000000000000, metadata !"ole", metadata !"fpexcept.strict")
324; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
325; CHECK: [[CALL_LABEL]]:
326; CHECK-NEXT: %call_10 = call x86_fp80 @logbl(x86_fp80 %value)
327; CHECK-NEXT: br label %[[END_LABEL]]
328; CHECK: [[END_LABEL]]:
329
330  %call_11 = call x86_fp80 @log1pl(x86_fp80 %value) strictfp
331; CHECK: [[COND:%[0-9]+]] = call i1 @llvm.experimental.constrained.fcmp.f80(x86_fp80 [[VALUE]], x86_fp80 0xKBFFF8000000000000000, metadata !"ole", metadata !"fpexcept.strict")
332; CHECK: br i1 [[COND]], label %[[CALL_LABEL:cdce.call[0-9]*]], label %[[END_LABEL:cdce.end[0-9]*]], !prof ![[BRANCH_WEIGHT]]
333; CHECK: [[CALL_LABEL]]:
334; CHECK-NEXT: %call_11 = call x86_fp80 @log1pl(x86_fp80 %value)
335; CHECK-NEXT: br label %[[END_LABEL]]
336; CHECK: [[END_LABEL]]:
337
338  ret void
339}
340
341declare x86_fp80 @acosl(x86_fp80)
342declare x86_fp80 @asinl(x86_fp80)
343declare x86_fp80 @cosl(x86_fp80)
344declare x86_fp80 @sinl(x86_fp80)
345declare x86_fp80 @acoshl(x86_fp80)
346declare x86_fp80 @sqrtl(x86_fp80)
347declare x86_fp80 @atanhl(x86_fp80)
348declare x86_fp80 @logl(x86_fp80)
349declare x86_fp80 @log10l(x86_fp80)
350declare x86_fp80 @log2l(x86_fp80)
351declare x86_fp80 @logbl(x86_fp80)
352declare x86_fp80 @log1pl(x86_fp80)
353
354; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 1048575}
355