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