@@ -18,6 +18,7 @@ declare double @llvm.pow.f64(double, double)
18
18
declare double @llvm.powi.f64.i32 (double , i32 )
19
19
declare double @llvm.log.f64 (double )
20
20
declare double @llvm.exp.f64 (double )
21
+ declare double @llvm.exp10.f64 (double )
21
22
declare double @llvm.ldexp.f64.i32 (double , i32 )
22
23
declare {double , i32 } @llvm.frexp.f64.i32 (double )
23
24
declare i32 @llvm.lround (double )
@@ -239,38 +240,39 @@ define double @f64libcalls(double %x, double %y, i32 %z) {
239
240
; CHECK: .functype f64libcalls (f64, f64, i32) -> (f64)
240
241
; CHECK-NEXT: .local i32
241
242
; CHECK-NEXT: # %bb.0:
242
- ; CHECK-NEXT: global.get $push10 =, __stack_pointer
243
- ; CHECK-NEXT: i32.const $push11 =, 16
244
- ; CHECK-NEXT: i32.sub $push17 =, $pop10 , $pop11
245
- ; CHECK-NEXT: local.tee $push16 =, 3, $pop17
246
- ; CHECK-NEXT: global.set __stack_pointer, $pop16
247
- ; CHECK-NEXT: local.get $push21 =, 0
248
- ; CHECK-NEXT: local.get $push18 =, 0
249
- ; CHECK-NEXT: call $push0=, cos, $pop18
243
+ ; CHECK-NEXT: global.get $push11 =, __stack_pointer
244
+ ; CHECK-NEXT: i32.const $push12 =, 16
245
+ ; CHECK-NEXT: i32.sub $push18 =, $pop11 , $pop12
246
+ ; CHECK-NEXT: local.tee $push17 =, 3, $pop18
247
+ ; CHECK-NEXT: global.set __stack_pointer, $pop17
248
+ ; CHECK-NEXT: local.get $push22 =, 0
249
+ ; CHECK-NEXT: local.get $push19 =, 0
250
+ ; CHECK-NEXT: call $push0=, cos, $pop19
250
251
; CHECK-NEXT: call $push1=, log10, $pop0
251
- ; CHECK-NEXT: local.get $push19 =, 1
252
- ; CHECK-NEXT: call $push2=, pow, $pop1, $pop19
253
- ; CHECK-NEXT: local.get $push20 =, 2
254
- ; CHECK-NEXT: call $push3=, __powidf2, $pop2, $pop20
252
+ ; CHECK-NEXT: local.get $push20 =, 1
253
+ ; CHECK-NEXT: call $push2=, pow, $pop1, $pop20
254
+ ; CHECK-NEXT: local.get $push21 =, 2
255
+ ; CHECK-NEXT: call $push3=, __powidf2, $pop2, $pop21
255
256
; CHECK-NEXT: call $push4=, log, $pop3
256
257
; CHECK-NEXT: call $push5=, exp, $pop4
257
- ; CHECK-NEXT: call $push6=, cbrt, $pop5
258
- ; CHECK-NEXT: call $push7=, lround, $pop6
259
- ; CHECK-NEXT: call $push8=, ldexp, $pop21, $pop7
260
- ; CHECK-NEXT: local.get $push22=, 3
261
- ; CHECK-NEXT: i32.const $push14=, 12
262
- ; CHECK-NEXT: i32.add $push15=, $pop22, $pop14
263
- ; CHECK-NEXT: call $push23=, frexp, $pop8, $pop15
264
- ; CHECK-NEXT: local.set 0, $pop23
265
- ; CHECK-NEXT: local.get $push24=, 3
266
- ; CHECK-NEXT: i32.load $push9=, 12($pop24)
267
- ; CHECK-NEXT: call escape_value, $pop9
258
+ ; CHECK-NEXT: call $push6=, exp10, $pop5
259
+ ; CHECK-NEXT: call $push7=, cbrt, $pop6
260
+ ; CHECK-NEXT: call $push8=, lround, $pop7
261
+ ; CHECK-NEXT: call $push9=, ldexp, $pop22, $pop8
262
+ ; CHECK-NEXT: local.get $push23=, 3
263
+ ; CHECK-NEXT: i32.const $push15=, 12
264
+ ; CHECK-NEXT: i32.add $push16=, $pop23, $pop15
265
+ ; CHECK-NEXT: call $push24=, frexp, $pop9, $pop16
266
+ ; CHECK-NEXT: local.set 0, $pop24
268
267
; CHECK-NEXT: local.get $push25=, 3
269
- ; CHECK-NEXT: i32.const $push12=, 16
270
- ; CHECK-NEXT: i32.add $push13=, $pop25, $pop12
271
- ; CHECK-NEXT: global.set __stack_pointer, $pop13
272
- ; CHECK-NEXT: local.get $push26=, 0
273
- ; CHECK-NEXT: return $pop26
268
+ ; CHECK-NEXT: i32.load $push10=, 12($pop25)
269
+ ; CHECK-NEXT: call escape_value, $pop10
270
+ ; CHECK-NEXT: local.get $push26=, 3
271
+ ; CHECK-NEXT: i32.const $push13=, 16
272
+ ; CHECK-NEXT: i32.add $push14=, $pop26, $pop13
273
+ ; CHECK-NEXT: global.set __stack_pointer, $pop14
274
+ ; CHECK-NEXT: local.get $push27=, 0
275
+ ; CHECK-NEXT: return $pop27
274
276
275
277
276
278
%a = call double @llvm.cos.f64 (double %x )
@@ -279,10 +281,11 @@ define double @f64libcalls(double %x, double %y, i32 %z) {
279
281
%d = call double @llvm.powi.f64.i32 (double %c , i32 %z )
280
282
%e = call double @llvm.log.f64 (double %d )
281
283
%f = call double @llvm.exp.f64 (double %e )
282
- %g = call fast double @llvm.pow.f64 (double %f , double 0x3FD5555555555555 )
283
- %h = call i32 @llvm.lround (double %g )
284
- %i = call double @llvm.ldexp.f64.i32 (double %x , i32 %h );
285
- %result = call {double , i32 } @llvm.frexp.f64.i32 (double %i )
284
+ %g = call double @llvm.exp10.f64 (double %f )
285
+ %h = call fast double @llvm.pow.f64 (double %g , double 0x3FD5555555555555 )
286
+ %i = call i32 @llvm.lround (double %h )
287
+ %j = call double @llvm.ldexp.f64.i32 (double %x , i32 %i );
288
+ %result = call {double , i32 } @llvm.frexp.f64.i32 (double %j )
286
289
%result.0 = extractvalue { double , i32 } %result , 0
287
290
%result.1 = extractvalue { double , i32 } %result , 1
288
291
call void @escape_value (i32 %result.1 )
0 commit comments