Skip to content

Commit 093dd26

Browse files
committed
Add tail call test
1 parent cccc09d commit 093dd26

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

llvm/test/CodeGen/PowerPC/llvm.sincos.ll

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,49 @@ define { ppc_fp128, ppc_fp128 } @test_sincospi_ppcf128(ppc_fp128 %a) {
4949
%result = call { ppc_fp128, ppc_fp128 } @llvm.sincospi.ppcf128(ppc_fp128 %a)
5050
ret { ppc_fp128, ppc_fp128 } %result
5151
}
52+
53+
; FIXME: Recognise this as a tail call and omit the stack frame:
54+
define void @test_sincos_ppcf128_tail_call(ppc_fp128 %a, ptr noalias %out_sin, ptr noalias %out_cos) {
55+
; CHECK-LABEL: test_sincos_ppcf128_tail_call:
56+
; CHECK: # %bb.0:
57+
; CHECK-NEXT: mflr r0
58+
; CHECK-NEXT: stdu r1, -32(r1)
59+
; CHECK-NEXT: std r0, 48(r1)
60+
; CHECK-NEXT: .cfi_def_cfa_offset 32
61+
; CHECK-NEXT: .cfi_offset lr, 16
62+
; CHECK-NEXT: bl sincosl
63+
; CHECK-NEXT: nop
64+
; CHECK-NEXT: addi r1, r1, 32
65+
; CHECK-NEXT: ld r0, 16(r1)
66+
; CHECK-NEXT: mtlr r0
67+
; CHECK-NEXT: blr
68+
%result = tail call { ppc_fp128, ppc_fp128 } @llvm.sincos.ppcf128(ppc_fp128 %a)
69+
%result.0 = extractvalue { ppc_fp128, ppc_fp128 } %result, 0
70+
%result.1 = extractvalue { ppc_fp128, ppc_fp128 } %result, 1
71+
store ppc_fp128 %result.0, ptr %out_sin, align 16
72+
store ppc_fp128 %result.1, ptr %out_cos, align 16
73+
ret void
74+
}
75+
76+
; FIXME: Recognise this as a tail call and omit the stack frame:
77+
define void @test_sincospi_ppcf128_tail_call(ppc_fp128 %a, ptr noalias %out_sin, ptr noalias %out_cos) {
78+
; CHECK-LABEL: test_sincospi_ppcf128_tail_call:
79+
; CHECK: # %bb.0:
80+
; CHECK-NEXT: mflr r0
81+
; CHECK-NEXT: stdu r1, -32(r1)
82+
; CHECK-NEXT: std r0, 48(r1)
83+
; CHECK-NEXT: .cfi_def_cfa_offset 32
84+
; CHECK-NEXT: .cfi_offset lr, 16
85+
; CHECK-NEXT: bl sincospil
86+
; CHECK-NEXT: nop
87+
; CHECK-NEXT: addi r1, r1, 32
88+
; CHECK-NEXT: ld r0, 16(r1)
89+
; CHECK-NEXT: mtlr r0
90+
; CHECK-NEXT: blr
91+
%result = tail call { ppc_fp128, ppc_fp128 } @llvm.sincospi.ppcf128(ppc_fp128 %a)
92+
%result.0 = extractvalue { ppc_fp128, ppc_fp128 } %result, 0
93+
%result.1 = extractvalue { ppc_fp128, ppc_fp128 } %result, 1
94+
store ppc_fp128 %result.0, ptr %out_sin, align 16
95+
store ppc_fp128 %result.1, ptr %out_cos, align 16
96+
ret void
97+
}

0 commit comments

Comments
 (0)