1 ; RUN: opt < %s -passes=libcalls-shrinkwrap -S | FileCheck %s
3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
4 target triple = "x86_64-unknown-linux-gnu"
6 define void @test_range_error(x86_fp80 %value) {
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]]:
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]]:
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]]:
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]]:
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]]:
59 define void @test_range_error_strictfp(x86_fp80 %value) strictfp {
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]]:
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]]:
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]]:
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]]:
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]]:
112 declare x86_fp80 @coshl(x86_fp80)
113 declare x86_fp80 @expl(x86_fp80)
114 declare x86_fp80 @exp10l(x86_fp80)
115 declare x86_fp80 @exp2l(x86_fp80)
116 declare x86_fp80 @sinhl(x86_fp80)
117 declare x86_fp80 @expm1l(x86_fp80)
119 define void @test_domain_error(x86_fp80 %value) {
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
230 define void @test_domain_error_strictfp(x86_fp80 %value) strictfp {
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
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]]:
341 declare x86_fp80 @acosl(x86_fp80)
342 declare x86_fp80 @asinl(x86_fp80)
343 declare x86_fp80 @cosl(x86_fp80)
344 declare x86_fp80 @sinl(x86_fp80)
345 declare x86_fp80 @acoshl(x86_fp80)
346 declare x86_fp80 @sqrtl(x86_fp80)
347 declare x86_fp80 @atanhl(x86_fp80)
348 declare x86_fp80 @logl(x86_fp80)
349 declare x86_fp80 @log10l(x86_fp80)
350 declare x86_fp80 @log2l(x86_fp80)
351 declare x86_fp80 @logbl(x86_fp80)
352 declare x86_fp80 @log1pl(x86_fp80)
354 ; CHECK: ![[BRANCH_WEIGHT]] = !{!"branch_weights", i32 1, i32 1048575}