Skip to content

Commit 52519ae

Browse files
[X86][NFC] Added/Updated SINCOS function testcases
1 parent 7b4d2a0 commit 52519ae

File tree

2 files changed

+326
-147
lines changed

2 files changed

+326
-147
lines changed

llvm/test/CodeGen/X86/llvm.sincos.ll

Lines changed: 223 additions & 147 deletions
Original file line numberDiff line numberDiff line change
@@ -1,157 +1,233 @@
1-
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --no_x86_scrub_sp --version 5
2-
; RUN: llc < %s -mtriple=i386-unknown-linux-gnu | FileCheck %s
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2+
; RUN: llc < %s -mtriple=i686-linux-gnu -fast-isel | FileCheck %s --check-prefixes=X86,FASTISEL-X86
3+
; RUN: llc < %s -mtriple=x86_64-linux-gnu -fast-isel | FileCheck %s --check-prefixes=X64,FASTISEL-X64
4+
; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 -fast-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X86
5+
; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel=0 -fast-isel=0 | FileCheck %s --check-prefixes=X64,SDAG-X64
6+
; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel=1 -global-isel-abort=2 | FileCheck %s --check-prefixes=X64,GISEL-X64
37

4-
define void @test_sincos_v4f32(<4 x float> %x, ptr noalias %out_sin, ptr noalias %out_cos) {
5-
; CHECK-LABEL: test_sincos_v4f32:
6-
; CHECK: # %bb.0:
7-
; CHECK-NEXT: pushl %edi
8-
; CHECK-NEXT: .cfi_def_cfa_offset 8
9-
; CHECK-NEXT: pushl %esi
10-
; CHECK-NEXT: .cfi_def_cfa_offset 12
11-
; CHECK-NEXT: subl $52, %esp
12-
; CHECK-NEXT: .cfi_def_cfa_offset 64
13-
; CHECK-NEXT: .cfi_offset %esi, -12
14-
; CHECK-NEXT: .cfi_offset %edi, -8
15-
; CHECK-NEXT: movl 84(%esp), %esi
16-
; CHECK-NEXT: flds 76(%esp)
17-
; CHECK-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
18-
; CHECK-NEXT: flds 64(%esp)
19-
; CHECK-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
20-
; CHECK-NEXT: flds 72(%esp)
21-
; CHECK-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
22-
; CHECK-NEXT: flds 68(%esp)
23-
; CHECK-NEXT: movl 80(%esp), %edi
24-
; CHECK-NEXT: leal 40(%esp), %eax
25-
; CHECK-NEXT: movl %eax, 8(%esp)
26-
; CHECK-NEXT: leal 4(%edi), %eax
27-
; CHECK-NEXT: movl %eax, 4(%esp)
28-
; CHECK-NEXT: fstps (%esp)
29-
; CHECK-NEXT: calll sincosf
30-
; CHECK-NEXT: leal 44(%esp), %eax
31-
; CHECK-NEXT: movl %eax, 8(%esp)
32-
; CHECK-NEXT: leal 8(%edi), %eax
33-
; CHECK-NEXT: movl %eax, 4(%esp)
34-
; CHECK-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
35-
; CHECK-NEXT: fstps (%esp)
36-
; CHECK-NEXT: calll sincosf
37-
; CHECK-NEXT: leal 36(%esp), %eax
38-
; CHECK-NEXT: movl %eax, 8(%esp)
39-
; CHECK-NEXT: movl %edi, 4(%esp)
40-
; CHECK-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
41-
; CHECK-NEXT: fstps (%esp)
42-
; CHECK-NEXT: calll sincosf
43-
; CHECK-NEXT: leal 48(%esp), %eax
44-
; CHECK-NEXT: movl %eax, 8(%esp)
45-
; CHECK-NEXT: addl $12, %edi
46-
; CHECK-NEXT: movl %edi, 4(%esp)
47-
; CHECK-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
48-
; CHECK-NEXT: fstps (%esp)
49-
; CHECK-NEXT: calll sincosf
50-
; CHECK-NEXT: flds 36(%esp)
51-
; CHECK-NEXT: flds 40(%esp)
52-
; CHECK-NEXT: flds 44(%esp)
53-
; CHECK-NEXT: flds 48(%esp)
54-
; CHECK-NEXT: fstps 12(%esi)
55-
; CHECK-NEXT: fstps 8(%esi)
56-
; CHECK-NEXT: fstps 4(%esi)
57-
; CHECK-NEXT: fstps (%esi)
58-
; CHECK-NEXT: addl $52, %esp
59-
; CHECK-NEXT: .cfi_def_cfa_offset 12
60-
; CHECK-NEXT: popl %esi
61-
; CHECK-NEXT: .cfi_def_cfa_offset 8
62-
; CHECK-NEXT: popl %edi
63-
; CHECK-NEXT: .cfi_def_cfa_offset 4
64-
; CHECK-NEXT: retl
65-
%result = call { <4 x float>, <4 x float> } @llvm.sincos.v4f32(<4 x float> %x)
66-
%result.0 = extractvalue { <4 x float>, <4 x float> } %result, 0
67-
%result.1 = extractvalue { <4 x float>, <4 x float> } %result, 1
68-
store <4 x float> %result.0, ptr %out_sin, align 4
69-
store <4 x float> %result.1, ptr %out_cos, align 4
70-
ret void
8+
define { float, float } @test_sincos_f32(float %Val) nounwind {
9+
; X86-LABEL: test_sincos_f32:
10+
; X86: # %bb.0:
11+
; X86-NEXT: subl $28, %esp
12+
; X86-NEXT: flds {{[0-9]+}}(%esp)
13+
; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
14+
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
15+
; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
16+
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
17+
; X86-NEXT: fstps (%esp)
18+
; X86-NEXT: calll sincosf
19+
; X86-NEXT: flds {{[0-9]+}}(%esp)
20+
; X86-NEXT: flds {{[0-9]+}}(%esp)
21+
; X86-NEXT: addl $28, %esp
22+
; X86-NEXT: retl
23+
;
24+
; X64-LABEL: test_sincos_f32:
25+
; X64: # %bb.0:
26+
; X64-NEXT: pushq %rax
27+
; X64-NEXT: leaq {{[0-9]+}}(%rsp), %rdi
28+
; X64-NEXT: movq %rsp, %rsi
29+
; X64-NEXT: callq sincosf@PLT
30+
; X64-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
31+
; X64-NEXT: movss {{.*#+}} xmm1 = mem[0],zero,zero,zero
32+
; X64-NEXT: popq %rax
33+
; X64-NEXT: retq
34+
%res = call { float, float } @llvm.sincos.f32(float %Val)
35+
ret { float, float } %res
7136
}
7237

73-
define void @test_sincos_v2f64(<2 x double> %x, ptr noalias %out_sin, ptr noalias %out_cos) {
74-
; CHECK-LABEL: test_sincos_v2f64:
75-
; CHECK: # %bb.0:
76-
; CHECK-NEXT: pushl %edi
77-
; CHECK-NEXT: .cfi_def_cfa_offset 8
78-
; CHECK-NEXT: pushl %esi
79-
; CHECK-NEXT: .cfi_def_cfa_offset 12
80-
; CHECK-NEXT: subl $52, %esp
81-
; CHECK-NEXT: .cfi_def_cfa_offset 64
82-
; CHECK-NEXT: .cfi_offset %esi, -12
83-
; CHECK-NEXT: .cfi_offset %edi, -8
84-
; CHECK-NEXT: movl 84(%esp), %esi
85-
; CHECK-NEXT: fldl 72(%esp)
86-
; CHECK-NEXT: fstpl {{[-0-9]+}}(%e{{[sb]}}p) # 8-byte Folded Spill
87-
; CHECK-NEXT: fldl 64(%esp)
88-
; CHECK-NEXT: movl 80(%esp), %edi
89-
; CHECK-NEXT: leal 24(%esp), %eax
90-
; CHECK-NEXT: movl %eax, 12(%esp)
91-
; CHECK-NEXT: movl %edi, 8(%esp)
92-
; CHECK-NEXT: fstpl (%esp)
93-
; CHECK-NEXT: calll sincos
94-
; CHECK-NEXT: leal 32(%esp), %eax
95-
; CHECK-NEXT: movl %eax, 12(%esp)
96-
; CHECK-NEXT: addl $8, %edi
97-
; CHECK-NEXT: movl %edi, 8(%esp)
98-
; CHECK-NEXT: fldl {{[-0-9]+}}(%e{{[sb]}}p) # 8-byte Folded Reload
99-
; CHECK-NEXT: fstpl (%esp)
100-
; CHECK-NEXT: calll sincos
101-
; CHECK-NEXT: fldl 24(%esp)
102-
; CHECK-NEXT: fldl 32(%esp)
103-
; CHECK-NEXT: fstpl 8(%esi)
104-
; CHECK-NEXT: fstpl (%esi)
105-
; CHECK-NEXT: addl $52, %esp
106-
; CHECK-NEXT: .cfi_def_cfa_offset 12
107-
; CHECK-NEXT: popl %esi
108-
; CHECK-NEXT: .cfi_def_cfa_offset 8
109-
; CHECK-NEXT: popl %edi
110-
; CHECK-NEXT: .cfi_def_cfa_offset 4
111-
; CHECK-NEXT: retl
112-
%result = call { <2 x double>, <2 x double> } @llvm.sincos.v2f64(<2 x double> %x)
113-
%result.0 = extractvalue { <2 x double>, <2 x double> } %result, 0
114-
%result.1 = extractvalue { <2 x double>, <2 x double> } %result, 1
115-
store <2 x double> %result.0, ptr %out_sin, align 8
116-
store <2 x double> %result.1, ptr %out_cos, align 8
117-
ret void
38+
define { double, double } @test_sincos_f64(double %Val) nounwind {
39+
; X86-LABEL: test_sincos_f64:
40+
; X86: # %bb.0:
41+
; X86-NEXT: subl $44, %esp
42+
; X86-NEXT: fldl {{[0-9]+}}(%esp)
43+
; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
44+
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
45+
; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
46+
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
47+
; X86-NEXT: fstpl (%esp)
48+
; X86-NEXT: calll sincos
49+
; X86-NEXT: fldl {{[0-9]+}}(%esp)
50+
; X86-NEXT: fldl {{[0-9]+}}(%esp)
51+
; X86-NEXT: addl $44, %esp
52+
; X86-NEXT: retl
53+
;
54+
; X64-LABEL: test_sincos_f64:
55+
; X64: # %bb.0:
56+
; X64-NEXT: subq $24, %rsp
57+
; X64-NEXT: leaq {{[0-9]+}}(%rsp), %rdi
58+
; X64-NEXT: leaq {{[0-9]+}}(%rsp), %rsi
59+
; X64-NEXT: callq sincos@PLT
60+
; X64-NEXT: movsd {{.*#+}} xmm0 = mem[0],zero
61+
; X64-NEXT: movsd {{.*#+}} xmm1 = mem[0],zero
62+
; X64-NEXT: addq $24, %rsp
63+
; X64-NEXT: retq
64+
%res = call { double, double } @llvm.sincos.f64(double %Val)
65+
ret { double, double } %res
66+
}
67+
68+
define { x86_fp80, x86_fp80 } @test_sincos_f80(x86_fp80 %Val) nounwind {
69+
; X86-LABEL: test_sincos_f80:
70+
; X86: # %bb.0:
71+
; X86-NEXT: subl $44, %esp
72+
; X86-NEXT: fldt {{[0-9]+}}(%esp)
73+
; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
74+
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
75+
; X86-NEXT: leal {{[0-9]+}}(%esp), %eax
76+
; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
77+
; X86-NEXT: fstpt (%esp)
78+
; X86-NEXT: calll sincosl
79+
; X86-NEXT: fldt {{[0-9]+}}(%esp)
80+
; X86-NEXT: fldt {{[0-9]+}}(%esp)
81+
; X86-NEXT: addl $44, %esp
82+
; X86-NEXT: retl
83+
;
84+
; X64-LABEL: test_sincos_f80:
85+
; X64: # %bb.0:
86+
; X64-NEXT: subq $56, %rsp
87+
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
88+
; X64-NEXT: fstpt (%rsp)
89+
; X64-NEXT: leaq {{[0-9]+}}(%rsp), %rdi
90+
; X64-NEXT: leaq {{[0-9]+}}(%rsp), %rsi
91+
; X64-NEXT: callq sincosl@PLT
92+
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
93+
; X64-NEXT: fldt {{[0-9]+}}(%rsp)
94+
; X64-NEXT: addq $56, %rsp
95+
; X64-NEXT: retq
96+
%res = call { x86_fp80, x86_fp80 } @llvm.sincos.f80(x86_fp80 %Val)
97+
ret { x86_fp80, x86_fp80 } %res
11898
}
11999

120100
declare void @foo(ptr, ptr)
121101

122-
define void @can_fold_with_call_in_chain(float %x, ptr noalias %a, ptr noalias %b) {
123-
; CHECK-LABEL: can_fold_with_call_in_chain:
124-
; CHECK: # %bb.0: # %entry
125-
; CHECK-NEXT: pushl %edi
126-
; CHECK-NEXT: .cfi_def_cfa_offset 8
127-
; CHECK-NEXT: pushl %esi
128-
; CHECK-NEXT: .cfi_def_cfa_offset 12
129-
; CHECK-NEXT: subl $20, %esp
130-
; CHECK-NEXT: .cfi_def_cfa_offset 32
131-
; CHECK-NEXT: .cfi_offset %esi, -12
132-
; CHECK-NEXT: .cfi_offset %edi, -8
133-
; CHECK-NEXT: flds 32(%esp)
134-
; CHECK-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
135-
; CHECK-NEXT: movl 36(%esp), %edi
136-
; CHECK-NEXT: movl 40(%esp), %esi
137-
; CHECK-NEXT: movl %esi, 4(%esp)
138-
; CHECK-NEXT: movl %edi, (%esp)
139-
; CHECK-NEXT: calll foo@PLT
140-
; CHECK-NEXT: leal 16(%esp), %eax
141-
; CHECK-NEXT: movl %eax, 8(%esp)
142-
; CHECK-NEXT: movl %edi, 4(%esp)
143-
; CHECK-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
144-
; CHECK-NEXT: fstps (%esp)
145-
; CHECK-NEXT: calll sincosf
146-
; CHECK-NEXT: flds 16(%esp)
147-
; CHECK-NEXT: fstps (%esi)
148-
; CHECK-NEXT: addl $20, %esp
149-
; CHECK-NEXT: .cfi_def_cfa_offset 12
150-
; CHECK-NEXT: popl %esi
151-
; CHECK-NEXT: .cfi_def_cfa_offset 8
152-
; CHECK-NEXT: popl %edi
153-
; CHECK-NEXT: .cfi_def_cfa_offset 4
154-
; CHECK-NEXT: retl
102+
define void @can_fold_with_call_in_chain(float %x, ptr noalias %a, ptr noalias %b) nounwind {
103+
; FASTISEL-X86-LABEL: can_fold_with_call_in_chain:
104+
; FASTISEL-X86: # %bb.0: # %entry
105+
; FASTISEL-X86-NEXT: pushl %edi
106+
; FASTISEL-X86-NEXT: pushl %esi
107+
; FASTISEL-X86-NEXT: subl $20, %esp
108+
; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %esi
109+
; FASTISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %edi
110+
; FASTISEL-X86-NEXT: flds {{[0-9]+}}(%esp)
111+
; FASTISEL-X86-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
112+
; FASTISEL-X86-NEXT: movl %esi, {{[0-9]+}}(%esp)
113+
; FASTISEL-X86-NEXT: movl %edi, (%esp)
114+
; FASTISEL-X86-NEXT: calll foo@PLT
115+
; FASTISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax
116+
; FASTISEL-X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
117+
; FASTISEL-X86-NEXT: movl %edi, {{[0-9]+}}(%esp)
118+
; FASTISEL-X86-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
119+
; FASTISEL-X86-NEXT: fstps (%esp)
120+
; FASTISEL-X86-NEXT: calll sincosf
121+
; FASTISEL-X86-NEXT: flds {{[0-9]+}}(%esp)
122+
; FASTISEL-X86-NEXT: fstps (%esi)
123+
; FASTISEL-X86-NEXT: addl $20, %esp
124+
; FASTISEL-X86-NEXT: popl %esi
125+
; FASTISEL-X86-NEXT: popl %edi
126+
; FASTISEL-X86-NEXT: retl
127+
;
128+
; FASTISEL-X64-LABEL: can_fold_with_call_in_chain:
129+
; FASTISEL-X64: # %bb.0: # %entry
130+
; FASTISEL-X64-NEXT: pushq %r14
131+
; FASTISEL-X64-NEXT: pushq %rbx
132+
; FASTISEL-X64-NEXT: pushq %rax
133+
; FASTISEL-X64-NEXT: movq %rsi, %rbx
134+
; FASTISEL-X64-NEXT: movq %rdi, %r14
135+
; FASTISEL-X64-NEXT: movss %xmm0, (%rsp) # 4-byte Spill
136+
; FASTISEL-X64-NEXT: callq sinf@PLT
137+
; FASTISEL-X64-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
138+
; FASTISEL-X64-NEXT: movss (%rsp), %xmm0 # 4-byte Reload
139+
; FASTISEL-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
140+
; FASTISEL-X64-NEXT: callq cosf@PLT
141+
; FASTISEL-X64-NEXT: movss %xmm0, (%rsp) # 4-byte Spill
142+
; FASTISEL-X64-NEXT: movq %r14, %rdi
143+
; FASTISEL-X64-NEXT: movq %rbx, %rsi
144+
; FASTISEL-X64-NEXT: callq foo@PLT
145+
; FASTISEL-X64-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
146+
; FASTISEL-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
147+
; FASTISEL-X64-NEXT: movss %xmm0, (%r14)
148+
; FASTISEL-X64-NEXT: movss (%rsp), %xmm0 # 4-byte Reload
149+
; FASTISEL-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
150+
; FASTISEL-X64-NEXT: movss %xmm0, (%rbx)
151+
; FASTISEL-X64-NEXT: addq $8, %rsp
152+
; FASTISEL-X64-NEXT: popq %rbx
153+
; FASTISEL-X64-NEXT: popq %r14
154+
; FASTISEL-X64-NEXT: retq
155+
;
156+
; SDAG-X86-LABEL: can_fold_with_call_in_chain:
157+
; SDAG-X86: # %bb.0: # %entry
158+
; SDAG-X86-NEXT: pushl %edi
159+
; SDAG-X86-NEXT: pushl %esi
160+
; SDAG-X86-NEXT: subl $20, %esp
161+
; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp)
162+
; SDAG-X86-NEXT: fstps {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
163+
; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %edi
164+
; SDAG-X86-NEXT: movl {{[0-9]+}}(%esp), %esi
165+
; SDAG-X86-NEXT: movl %esi, {{[0-9]+}}(%esp)
166+
; SDAG-X86-NEXT: movl %edi, (%esp)
167+
; SDAG-X86-NEXT: calll foo@PLT
168+
; SDAG-X86-NEXT: leal {{[0-9]+}}(%esp), %eax
169+
; SDAG-X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
170+
; SDAG-X86-NEXT: movl %edi, {{[0-9]+}}(%esp)
171+
; SDAG-X86-NEXT: flds {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
172+
; SDAG-X86-NEXT: fstps (%esp)
173+
; SDAG-X86-NEXT: calll sincosf
174+
; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp)
175+
; SDAG-X86-NEXT: fstps (%esi)
176+
; SDAG-X86-NEXT: addl $20, %esp
177+
; SDAG-X86-NEXT: popl %esi
178+
; SDAG-X86-NEXT: popl %edi
179+
; SDAG-X86-NEXT: retl
180+
;
181+
; SDAG-X64-LABEL: can_fold_with_call_in_chain:
182+
; SDAG-X64: # %bb.0: # %entry
183+
; SDAG-X64-NEXT: pushq %r14
184+
; SDAG-X64-NEXT: pushq %rbx
185+
; SDAG-X64-NEXT: pushq %rax
186+
; SDAG-X64-NEXT: movq %rsi, %rbx
187+
; SDAG-X64-NEXT: movq %rdi, %r14
188+
; SDAG-X64-NEXT: movss %xmm0, (%rsp) # 4-byte Spill
189+
; SDAG-X64-NEXT: callq foo@PLT
190+
; SDAG-X64-NEXT: leaq {{[0-9]+}}(%rsp), %rsi
191+
; SDAG-X64-NEXT: movss (%rsp), %xmm0 # 4-byte Reload
192+
; SDAG-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
193+
; SDAG-X64-NEXT: movq %r14, %rdi
194+
; SDAG-X64-NEXT: callq sincosf@PLT
195+
; SDAG-X64-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
196+
; SDAG-X64-NEXT: movss %xmm0, (%rbx)
197+
; SDAG-X64-NEXT: addq $8, %rsp
198+
; SDAG-X64-NEXT: popq %rbx
199+
; SDAG-X64-NEXT: popq %r14
200+
; SDAG-X64-NEXT: retq
201+
;
202+
; GISEL-X64-LABEL: can_fold_with_call_in_chain:
203+
; GISEL-X64: # %bb.0: # %entry
204+
; GISEL-X64-NEXT: pushq %r14
205+
; GISEL-X64-NEXT: pushq %rbx
206+
; GISEL-X64-NEXT: pushq %rax
207+
; GISEL-X64-NEXT: movss %xmm0, (%rsp) # 4-byte Spill
208+
; GISEL-X64-NEXT: movq %rdi, %rbx
209+
; GISEL-X64-NEXT: movq %rsi, %r14
210+
; GISEL-X64-NEXT: callq sinf
211+
; GISEL-X64-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
212+
; GISEL-X64-NEXT: movss (%rsp), %xmm0 # 4-byte Reload
213+
; GISEL-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
214+
; GISEL-X64-NEXT: callq cosf
215+
; GISEL-X64-NEXT: movss %xmm0, (%rsp) # 4-byte Spill
216+
; GISEL-X64-NEXT: movq %rbx, %rdi
217+
; GISEL-X64-NEXT: movq %r14, %rsi
218+
; GISEL-X64-NEXT: callq foo
219+
; GISEL-X64-NEXT: movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Folded Reload
220+
; GISEL-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
221+
; GISEL-X64-NEXT: movd %xmm0, %eax
222+
; GISEL-X64-NEXT: movl %eax, (%rbx)
223+
; GISEL-X64-NEXT: movd (%rsp), %xmm0 # 4-byte Folded Reload
224+
; GISEL-X64-NEXT: # xmm0 = mem[0],zero,zero,zero
225+
; GISEL-X64-NEXT: movd %xmm0, %eax
226+
; GISEL-X64-NEXT: movl %eax, (%r14)
227+
; GISEL-X64-NEXT: addq $8, %rsp
228+
; GISEL-X64-NEXT: popq %rbx
229+
; GISEL-X64-NEXT: popq %r14
230+
; GISEL-X64-NEXT: retq
155231
entry:
156232
%sin = tail call float @llvm.sin.f32(float %x)
157233
%cos = tail call float @llvm.cos.f32(float %x)

0 commit comments

Comments
 (0)