1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=x86_64-linux-gnu < %s  | FileCheck %s
3
4; Basic test coverage for FREM
5
6define void @frem_f16(half %a0, half %a1, ptr%p3) nounwind {
7; CHECK-LABEL: frem_f16:
8; CHECK:       # %bb.0:
9; CHECK-NEXT:    pushq %rbx
10; CHECK-NEXT:    subq $16, %rsp
11; CHECK-NEXT:    movq %rdi, %rbx
12; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
13; CHECK-NEXT:    movaps %xmm1, %xmm0
14; CHECK-NEXT:    callq __extendhfsf2@PLT
15; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
16; CHECK-NEXT:    movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Folded Reload
17; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
18; CHECK-NEXT:    callq __extendhfsf2@PLT
19; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
20; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
21; CHECK-NEXT:    callq fmodf@PLT
22; CHECK-NEXT:    callq __truncsfhf2@PLT
23; CHECK-NEXT:    pextrw $0, %xmm0, %eax
24; CHECK-NEXT:    movw %ax, (%rbx)
25; CHECK-NEXT:    addq $16, %rsp
26; CHECK-NEXT:    popq %rbx
27; CHECK-NEXT:    retq
28  %frem = frem half %a0, %a1
29  store half %frem, ptr%p3
30  ret void
31}
32
33define void @frem_f32(float %a0, float %a1, ptr%p3) nounwind {
34; CHECK-LABEL: frem_f32:
35; CHECK:       # %bb.0:
36; CHECK-NEXT:    pushq %rbx
37; CHECK-NEXT:    movq %rdi, %rbx
38; CHECK-NEXT:    callq fmodf@PLT
39; CHECK-NEXT:    movss %xmm0, (%rbx)
40; CHECK-NEXT:    popq %rbx
41; CHECK-NEXT:    retq
42  %frem = frem float %a0, %a1
43  store float %frem, ptr%p3
44  ret void
45}
46
47define void @frem_f64(double %a0, double %a1, ptr%p3) nounwind {
48; CHECK-LABEL: frem_f64:
49; CHECK:       # %bb.0:
50; CHECK-NEXT:    pushq %rbx
51; CHECK-NEXT:    movq %rdi, %rbx
52; CHECK-NEXT:    callq fmod@PLT
53; CHECK-NEXT:    movsd %xmm0, (%rbx)
54; CHECK-NEXT:    popq %rbx
55; CHECK-NEXT:    retq
56  %frem = frem double %a0, %a1
57  store double %frem, ptr%p3
58  ret void
59}
60
61define void @frem_f80(x86_fp80 %a0, x86_fp80 %a1, ptr%p3) nounwind {
62; CHECK-LABEL: frem_f80:
63; CHECK:       # %bb.0:
64; CHECK-NEXT:    pushq %rbx
65; CHECK-NEXT:    subq $32, %rsp
66; CHECK-NEXT:    movq %rdi, %rbx
67; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
68; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
69; CHECK-NEXT:    fstpt {{[0-9]+}}(%rsp)
70; CHECK-NEXT:    fstpt (%rsp)
71; CHECK-NEXT:    callq fmodl@PLT
72; CHECK-NEXT:    fstpt (%rbx)
73; CHECK-NEXT:    addq $32, %rsp
74; CHECK-NEXT:    popq %rbx
75; CHECK-NEXT:    retq
76  %frem = frem x86_fp80 %a0, %a1
77  store x86_fp80 %frem, ptr%p3
78  ret void
79}
80
81define void @frem_f128(fp128 %a0, fp128 %a1, ptr%p3) nounwind {
82; CHECK-LABEL: frem_f128:
83; CHECK:       # %bb.0:
84; CHECK-NEXT:    pushq %rbx
85; CHECK-NEXT:    movq %rdi, %rbx
86; CHECK-NEXT:    callq fmodl@PLT
87; CHECK-NEXT:    movaps %xmm0, (%rbx)
88; CHECK-NEXT:    popq %rbx
89; CHECK-NEXT:    retq
90  %frem = frem fp128 %a0, %a1
91  store fp128 %frem, ptr%p3
92  ret void
93}
94
95define void @frem_v16f32(<16 x float> %a0, <16 x float> %a1, ptr%p3) nounwind {
96; CHECK-LABEL: frem_v16f32:
97; CHECK:       # %bb.0:
98; CHECK-NEXT:    pushq %rbx
99; CHECK-NEXT:    subq $160, %rsp
100; CHECK-NEXT:    movq %rdi, %rbx
101; CHECK-NEXT:    movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
102; CHECK-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
103; CHECK-NEXT:    movaps %xmm5, (%rsp) # 16-byte Spill
104; CHECK-NEXT:    movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
105; CHECK-NEXT:    movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
106; CHECK-NEXT:    movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
107; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
108; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
109; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
110; CHECK-NEXT:    movaps %xmm4, %xmm1
111; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3],xmm4[3,3]
112; CHECK-NEXT:    callq fmodf@PLT
113; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
114; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
115; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
116; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
117; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
118; CHECK-NEXT:    callq fmodf@PLT
119; CHECK-NEXT:    unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
120; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
121; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
122; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
123; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
124; CHECK-NEXT:    callq fmodf@PLT
125; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
126; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
127; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
128; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
129; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
130; CHECK-NEXT:    callq fmodf@PLT
131; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
132; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
133; CHECK-NEXT:    unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
134; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
135; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
136; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
137; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
138; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
139; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
140; CHECK-NEXT:    callq fmodf@PLT
141; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
142; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
143; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
144; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
145; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
146; CHECK-NEXT:    callq fmodf@PLT
147; CHECK-NEXT:    unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
148; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
149; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
150; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
151; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
152; CHECK-NEXT:    callq fmodf@PLT
153; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
154; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
155; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
156; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
157; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
158; CHECK-NEXT:    callq fmodf@PLT
159; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
160; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
161; CHECK-NEXT:    unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
162; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
163; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
164; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
165; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
166; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
167; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
168; CHECK-NEXT:    callq fmodf@PLT
169; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
170; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
171; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
172; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
173; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
174; CHECK-NEXT:    callq fmodf@PLT
175; CHECK-NEXT:    unpcklps (%rsp), %xmm0 # 16-byte Folded Reload
176; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
177; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
178; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
179; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
180; CHECK-NEXT:    callq fmodf@PLT
181; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
182; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
183; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
184; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
185; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
186; CHECK-NEXT:    callq fmodf@PLT
187; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
188; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
189; CHECK-NEXT:    unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
190; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
191; CHECK-NEXT:    movaps %xmm1, (%rsp) # 16-byte Spill
192; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
193; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
194; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
195; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
196; CHECK-NEXT:    callq fmodf@PLT
197; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
198; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
199; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
200; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
201; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
202; CHECK-NEXT:    callq fmodf@PLT
203; CHECK-NEXT:    unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
204; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
205; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
206; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
207; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
208; CHECK-NEXT:    callq fmodf@PLT
209; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
210; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
211; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
212; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
213; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
214; CHECK-NEXT:    callq fmodf@PLT
215; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
216; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
217; CHECK-NEXT:    unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
218; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
219; CHECK-NEXT:    movaps %xmm1, 48(%rbx)
220; CHECK-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
221; CHECK-NEXT:    movaps %xmm0, 32(%rbx)
222; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
223; CHECK-NEXT:    movaps %xmm0, 16(%rbx)
224; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
225; CHECK-NEXT:    movaps %xmm0, (%rbx)
226; CHECK-NEXT:    addq $160, %rsp
227; CHECK-NEXT:    popq %rbx
228; CHECK-NEXT:    retq
229  %frem = frem <16 x float> %a0, %a1
230  store <16 x float> %frem, ptr%p3
231  ret void
232}
233
234define void @frem_v8f32(<8 x float> %a0, <8 x float> %a1, ptr%p3) nounwind {
235; CHECK-LABEL: frem_v8f32:
236; CHECK:       # %bb.0:
237; CHECK-NEXT:    pushq %rbx
238; CHECK-NEXT:    subq $96, %rsp
239; CHECK-NEXT:    movq %rdi, %rbx
240; CHECK-NEXT:    movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
241; CHECK-NEXT:    movaps %xmm2, (%rsp) # 16-byte Spill
242; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
243; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
244; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
245; CHECK-NEXT:    movaps %xmm2, %xmm1
246; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3],xmm2[3,3]
247; CHECK-NEXT:    callq fmodf@PLT
248; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
249; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
250; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
251; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
252; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
253; CHECK-NEXT:    callq fmodf@PLT
254; CHECK-NEXT:    unpcklps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Folded Reload
255; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
256; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
257; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
258; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
259; CHECK-NEXT:    callq fmodf@PLT
260; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
261; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
262; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
263; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
264; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
265; CHECK-NEXT:    callq fmodf@PLT
266; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
267; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
268; CHECK-NEXT:    unpcklpd {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Folded Reload
269; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
270; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
271; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
272; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
273; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
274; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
275; CHECK-NEXT:    callq fmodf@PLT
276; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
277; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
278; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
279; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
280; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
281; CHECK-NEXT:    callq fmodf@PLT
282; CHECK-NEXT:    unpcklps (%rsp), %xmm0 # 16-byte Folded Reload
283; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
284; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
285; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
286; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
287; CHECK-NEXT:    callq fmodf@PLT
288; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
289; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
290; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
291; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
292; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
293; CHECK-NEXT:    callq fmodf@PLT
294; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
295; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
296; CHECK-NEXT:    unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload
297; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
298; CHECK-NEXT:    movaps %xmm1, 16(%rbx)
299; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
300; CHECK-NEXT:    movaps %xmm0, (%rbx)
301; CHECK-NEXT:    addq $96, %rsp
302; CHECK-NEXT:    popq %rbx
303; CHECK-NEXT:    retq
304  %frem = frem <8 x float> %a0, %a1
305  store <8 x float> %frem, ptr%p3
306  ret void
307}
308
309define void @frem_v4f32(<4 x float> %a0, <4 x float> %a1, ptr%p3) nounwind {
310; CHECK-LABEL: frem_v4f32:
311; CHECK:       # %bb.0:
312; CHECK-NEXT:    pushq %rbx
313; CHECK-NEXT:    subq $64, %rsp
314; CHECK-NEXT:    movq %rdi, %rbx
315; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
316; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
317; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]
318; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]
319; CHECK-NEXT:    callq fmodf@PLT
320; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
321; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
322; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
323; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
324; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
325; CHECK-NEXT:    callq fmodf@PLT
326; CHECK-NEXT:    unpcklps (%rsp), %xmm0 # 16-byte Folded Reload
327; CHECK-NEXT:    # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
328; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
329; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
330; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
331; CHECK-NEXT:    callq fmodf@PLT
332; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
333; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
334; CHECK-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1,1,1]
335; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
336; CHECK-NEXT:    shufps {{.*#+}} xmm1 = xmm1[1,1,1,1]
337; CHECK-NEXT:    callq fmodf@PLT
338; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
339; CHECK-NEXT:    unpcklps {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
340; CHECK-NEXT:    unpcklpd (%rsp), %xmm1 # 16-byte Folded Reload
341; CHECK-NEXT:    # xmm1 = xmm1[0],mem[0]
342; CHECK-NEXT:    movaps %xmm1, (%rbx)
343; CHECK-NEXT:    addq $64, %rsp
344; CHECK-NEXT:    popq %rbx
345; CHECK-NEXT:    retq
346  %frem = frem <4 x float> %a0, %a1
347  store <4 x float> %frem, ptr%p3
348  ret void
349}
350
351define void @frem_v8f64(<8 x double> %a0, <8 x double> %a1, ptr%p3) nounwind {
352; CHECK-LABEL: frem_v8f64:
353; CHECK:       # %bb.0:
354; CHECK-NEXT:    pushq %rbx
355; CHECK-NEXT:    subq $144, %rsp
356; CHECK-NEXT:    movq %rdi, %rbx
357; CHECK-NEXT:    movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
358; CHECK-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
359; CHECK-NEXT:    movaps %xmm5, (%rsp) # 16-byte Spill
360; CHECK-NEXT:    movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
361; CHECK-NEXT:    movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
362; CHECK-NEXT:    movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
363; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
364; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
365; CHECK-NEXT:    movaps %xmm4, %xmm1
366; CHECK-NEXT:    callq fmod@PLT
367; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
368; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
369; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
370; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
371; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
372; CHECK-NEXT:    callq fmod@PLT
373; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
374; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
375; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
376; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
377; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
378; CHECK-NEXT:    callq fmod@PLT
379; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
380; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
381; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
382; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
383; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
384; CHECK-NEXT:    callq fmod@PLT
385; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
386; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
387; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
388; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
389; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
390; CHECK-NEXT:    callq fmod@PLT
391; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
392; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
393; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
394; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
395; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
396; CHECK-NEXT:    callq fmod@PLT
397; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
398; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
399; CHECK-NEXT:    movaps %xmm1, (%rsp) # 16-byte Spill
400; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
401; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
402; CHECK-NEXT:    callq fmod@PLT
403; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
404; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
405; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
406; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
407; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
408; CHECK-NEXT:    callq fmod@PLT
409; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
410; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
411; CHECK-NEXT:    movaps %xmm1, 48(%rbx)
412; CHECK-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
413; CHECK-NEXT:    movaps %xmm0, 32(%rbx)
414; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
415; CHECK-NEXT:    movaps %xmm0, 16(%rbx)
416; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
417; CHECK-NEXT:    movaps %xmm0, (%rbx)
418; CHECK-NEXT:    addq $144, %rsp
419; CHECK-NEXT:    popq %rbx
420; CHECK-NEXT:    retq
421  %frem = frem <8 x double> %a0, %a1
422  store <8 x double> %frem, ptr%p3
423  ret void
424}
425
426define void @frem_v4f64(<4 x double> %a0, <4 x double> %a1, ptr%p3) nounwind {
427; CHECK-LABEL: frem_v4f64:
428; CHECK:       # %bb.0:
429; CHECK-NEXT:    pushq %rbx
430; CHECK-NEXT:    subq $80, %rsp
431; CHECK-NEXT:    movq %rdi, %rbx
432; CHECK-NEXT:    movaps %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
433; CHECK-NEXT:    movaps %xmm2, (%rsp) # 16-byte Spill
434; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
435; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
436; CHECK-NEXT:    movaps %xmm2, %xmm1
437; CHECK-NEXT:    callq fmod@PLT
438; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
439; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
440; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
441; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
442; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
443; CHECK-NEXT:    callq fmod@PLT
444; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
445; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
446; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
447; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
448; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
449; CHECK-NEXT:    callq fmod@PLT
450; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
451; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
452; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
453; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
454; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
455; CHECK-NEXT:    callq fmod@PLT
456; CHECK-NEXT:    movaps (%rsp), %xmm1 # 16-byte Reload
457; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
458; CHECK-NEXT:    movaps %xmm1, 16(%rbx)
459; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
460; CHECK-NEXT:    movaps %xmm0, (%rbx)
461; CHECK-NEXT:    addq $80, %rsp
462; CHECK-NEXT:    popq %rbx
463; CHECK-NEXT:    retq
464  %frem = frem <4 x double> %a0, %a1
465  store <4 x double> %frem, ptr%p3
466  ret void
467}
468
469define void @frem_v2f64(<2 x double> %a0, <2 x double> %a1, ptr%p3) nounwind {
470; CHECK-LABEL: frem_v2f64:
471; CHECK:       # %bb.0:
472; CHECK-NEXT:    pushq %rbx
473; CHECK-NEXT:    subq $48, %rsp
474; CHECK-NEXT:    movq %rdi, %rbx
475; CHECK-NEXT:    movaps %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
476; CHECK-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill
477; CHECK-NEXT:    callq fmod@PLT
478; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
479; CHECK-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload
480; CHECK-NEXT:    movhlps {{.*#+}} xmm0 = xmm0[1,1]
481; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
482; CHECK-NEXT:    movhlps {{.*#+}} xmm1 = xmm1[1,1]
483; CHECK-NEXT:    callq fmod@PLT
484; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 16-byte Reload
485; CHECK-NEXT:    movlhps {{.*#+}} xmm1 = xmm1[0],xmm0[0]
486; CHECK-NEXT:    movaps %xmm1, (%rbx)
487; CHECK-NEXT:    addq $48, %rsp
488; CHECK-NEXT:    popq %rbx
489; CHECK-NEXT:    retq
490  %frem = frem <2 x double> %a0, %a1
491  store <2 x double> %frem, ptr%p3
492  ret void
493}
494
495define void @frem_v32f16(<32 x half> %a0, <32 x half> %a1, ptr%p3) nounwind {
496; CHECK-LABEL: frem_v32f16:
497; CHECK:       # %bb.0:
498; CHECK-NEXT:    pushq %rbp
499; CHECK-NEXT:    pushq %r15
500; CHECK-NEXT:    pushq %r14
501; CHECK-NEXT:    pushq %r13
502; CHECK-NEXT:    pushq %r12
503; CHECK-NEXT:    pushq %rbx
504; CHECK-NEXT:    subq $1032, %rsp # imm = 0x408
505; CHECK-NEXT:    movq %rdi, %rbx
506; CHECK-NEXT:    movss %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
507; CHECK-NEXT:    movss %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
508; CHECK-NEXT:    movss %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
509; CHECK-NEXT:    movss %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
510; CHECK-NEXT:    movss %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
511; CHECK-NEXT:    movss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
512; CHECK-NEXT:    movd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill
513; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
514; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
515; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
516; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
517; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
518; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
519; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
520; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
521; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
522; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
523; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
524; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
525; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
526; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
527; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
528; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
529; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
530; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
531; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
532; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
533; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
534; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
535; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
536; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
537; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
538; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
539; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
540; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
541; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
542; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
543; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
544; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
545; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
546; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
547; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
548; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
549; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
550; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
551; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
552; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
553; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
554; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
555; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
556; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
557; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
558; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
559; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
560; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
561; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
562; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
563; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
564; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
565; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
566; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
567; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
568; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
569; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
570; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
571; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
572; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
573; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
574; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
575; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
576; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
577; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
578; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
579; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
580; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
581; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
582; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
583; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
584; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
585; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
586; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
587; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
588; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
589; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
590; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
591; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
592; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
593; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
594; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
595; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
596; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
597; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
598; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
599; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
600; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
601; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
602; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
603; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
604; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
605; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
606; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
607; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
608; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
609; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
610; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
611; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
612; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
613; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
614; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
615; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
616; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
617; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
618; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
619; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
620; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
621; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
622; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
623; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
624; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
625; CHECK-NEXT:    callq __extendhfsf2@PLT
626; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
627; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
628; CHECK-NEXT:    callq __extendhfsf2@PLT
629; CHECK-NEXT:    movaps %xmm0, %xmm1
630; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
631; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
632; CHECK-NEXT:    callq fmodf@PLT
633; CHECK-NEXT:    callq __truncsfhf2@PLT
634; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
635; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
636; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
637; CHECK-NEXT:    callq __extendhfsf2@PLT
638; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
639; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
640; CHECK-NEXT:    callq __extendhfsf2@PLT
641; CHECK-NEXT:    movaps %xmm0, %xmm1
642; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
643; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
644; CHECK-NEXT:    callq fmodf@PLT
645; CHECK-NEXT:    callq __truncsfhf2@PLT
646; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
647; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
648; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
649; CHECK-NEXT:    callq __extendhfsf2@PLT
650; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
651; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
652; CHECK-NEXT:    callq __extendhfsf2@PLT
653; CHECK-NEXT:    movaps %xmm0, %xmm1
654; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
655; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
656; CHECK-NEXT:    callq fmodf@PLT
657; CHECK-NEXT:    callq __truncsfhf2@PLT
658; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
659; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
660; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
661; CHECK-NEXT:    callq __extendhfsf2@PLT
662; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
663; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
664; CHECK-NEXT:    callq __extendhfsf2@PLT
665; CHECK-NEXT:    movaps %xmm0, %xmm1
666; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
667; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
668; CHECK-NEXT:    callq fmodf@PLT
669; CHECK-NEXT:    callq __truncsfhf2@PLT
670; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
671; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
672; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
673; CHECK-NEXT:    callq __extendhfsf2@PLT
674; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
675; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
676; CHECK-NEXT:    callq __extendhfsf2@PLT
677; CHECK-NEXT:    movaps %xmm0, %xmm1
678; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
679; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
680; CHECK-NEXT:    callq fmodf@PLT
681; CHECK-NEXT:    callq __truncsfhf2@PLT
682; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
683; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
684; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
685; CHECK-NEXT:    callq __extendhfsf2@PLT
686; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
687; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
688; CHECK-NEXT:    callq __extendhfsf2@PLT
689; CHECK-NEXT:    movaps %xmm0, %xmm1
690; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
691; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
692; CHECK-NEXT:    callq fmodf@PLT
693; CHECK-NEXT:    callq __truncsfhf2@PLT
694; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
695; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
696; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
697; CHECK-NEXT:    callq __extendhfsf2@PLT
698; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
699; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
700; CHECK-NEXT:    callq __extendhfsf2@PLT
701; CHECK-NEXT:    movaps %xmm0, %xmm1
702; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
703; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
704; CHECK-NEXT:    callq fmodf@PLT
705; CHECK-NEXT:    callq __truncsfhf2@PLT
706; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
707; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
708; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
709; CHECK-NEXT:    callq __extendhfsf2@PLT
710; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
711; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
712; CHECK-NEXT:    callq __extendhfsf2@PLT
713; CHECK-NEXT:    movaps %xmm0, %xmm1
714; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
715; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
716; CHECK-NEXT:    callq fmodf@PLT
717; CHECK-NEXT:    callq __truncsfhf2@PLT
718; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
719; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
720; CHECK-NEXT:    callq __extendhfsf2@PLT
721; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
722; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
723; CHECK-NEXT:    callq __extendhfsf2@PLT
724; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
725; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
726; CHECK-NEXT:    callq fmodf@PLT
727; CHECK-NEXT:    callq __truncsfhf2@PLT
728; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
729; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
730; CHECK-NEXT:    callq __extendhfsf2@PLT
731; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
732; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
733; CHECK-NEXT:    callq __extendhfsf2@PLT
734; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
735; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
736; CHECK-NEXT:    callq fmodf@PLT
737; CHECK-NEXT:    callq __truncsfhf2@PLT
738; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
739; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
740; CHECK-NEXT:    callq __extendhfsf2@PLT
741; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
742; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
743; CHECK-NEXT:    callq __extendhfsf2@PLT
744; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
745; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
746; CHECK-NEXT:    callq fmodf@PLT
747; CHECK-NEXT:    callq __truncsfhf2@PLT
748; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
749; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
750; CHECK-NEXT:    callq __extendhfsf2@PLT
751; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
752; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
753; CHECK-NEXT:    callq __extendhfsf2@PLT
754; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
755; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
756; CHECK-NEXT:    callq fmodf@PLT
757; CHECK-NEXT:    callq __truncsfhf2@PLT
758; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
759; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
760; CHECK-NEXT:    callq __extendhfsf2@PLT
761; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
762; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
763; CHECK-NEXT:    callq __extendhfsf2@PLT
764; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
765; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
766; CHECK-NEXT:    callq fmodf@PLT
767; CHECK-NEXT:    callq __truncsfhf2@PLT
768; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
769; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
770; CHECK-NEXT:    callq __extendhfsf2@PLT
771; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
772; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
773; CHECK-NEXT:    callq __extendhfsf2@PLT
774; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
775; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
776; CHECK-NEXT:    callq fmodf@PLT
777; CHECK-NEXT:    callq __truncsfhf2@PLT
778; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
779; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
780; CHECK-NEXT:    callq __extendhfsf2@PLT
781; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
782; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
783; CHECK-NEXT:    callq __extendhfsf2@PLT
784; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
785; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
786; CHECK-NEXT:    callq fmodf@PLT
787; CHECK-NEXT:    callq __truncsfhf2@PLT
788; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
789; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
790; CHECK-NEXT:    callq __extendhfsf2@PLT
791; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
792; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
793; CHECK-NEXT:    callq __extendhfsf2@PLT
794; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
795; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
796; CHECK-NEXT:    callq fmodf@PLT
797; CHECK-NEXT:    callq __truncsfhf2@PLT
798; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
799; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
800; CHECK-NEXT:    callq __extendhfsf2@PLT
801; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
802; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
803; CHECK-NEXT:    callq __extendhfsf2@PLT
804; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
805; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
806; CHECK-NEXT:    callq fmodf@PLT
807; CHECK-NEXT:    callq __truncsfhf2@PLT
808; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
809; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
810; CHECK-NEXT:    callq __extendhfsf2@PLT
811; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
812; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
813; CHECK-NEXT:    callq __extendhfsf2@PLT
814; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
815; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
816; CHECK-NEXT:    callq fmodf@PLT
817; CHECK-NEXT:    callq __truncsfhf2@PLT
818; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
819; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
820; CHECK-NEXT:    callq __extendhfsf2@PLT
821; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
822; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
823; CHECK-NEXT:    callq __extendhfsf2@PLT
824; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
825; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
826; CHECK-NEXT:    callq fmodf@PLT
827; CHECK-NEXT:    callq __truncsfhf2@PLT
828; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
829; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
830; CHECK-NEXT:    callq __extendhfsf2@PLT
831; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
832; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
833; CHECK-NEXT:    callq __extendhfsf2@PLT
834; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
835; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
836; CHECK-NEXT:    callq fmodf@PLT
837; CHECK-NEXT:    callq __truncsfhf2@PLT
838; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
839; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
840; CHECK-NEXT:    callq __extendhfsf2@PLT
841; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
842; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
843; CHECK-NEXT:    callq __extendhfsf2@PLT
844; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
845; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
846; CHECK-NEXT:    callq fmodf@PLT
847; CHECK-NEXT:    callq __truncsfhf2@PLT
848; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
849; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
850; CHECK-NEXT:    callq __extendhfsf2@PLT
851; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
852; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
853; CHECK-NEXT:    callq __extendhfsf2@PLT
854; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
855; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
856; CHECK-NEXT:    callq fmodf@PLT
857; CHECK-NEXT:    callq __truncsfhf2@PLT
858; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
859; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
860; CHECK-NEXT:    callq __extendhfsf2@PLT
861; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
862; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
863; CHECK-NEXT:    callq __extendhfsf2@PLT
864; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
865; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
866; CHECK-NEXT:    callq fmodf@PLT
867; CHECK-NEXT:    callq __truncsfhf2@PLT
868; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
869; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
870; CHECK-NEXT:    callq __extendhfsf2@PLT
871; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
872; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
873; CHECK-NEXT:    callq __extendhfsf2@PLT
874; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
875; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
876; CHECK-NEXT:    callq fmodf@PLT
877; CHECK-NEXT:    callq __truncsfhf2@PLT
878; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
879; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
880; CHECK-NEXT:    callq __extendhfsf2@PLT
881; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
882; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
883; CHECK-NEXT:    callq __extendhfsf2@PLT
884; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
885; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
886; CHECK-NEXT:    callq fmodf@PLT
887; CHECK-NEXT:    callq __truncsfhf2@PLT
888; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
889; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
890; CHECK-NEXT:    callq __extendhfsf2@PLT
891; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
892; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
893; CHECK-NEXT:    callq __extendhfsf2@PLT
894; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
895; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
896; CHECK-NEXT:    callq fmodf@PLT
897; CHECK-NEXT:    callq __truncsfhf2@PLT
898; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
899; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
900; CHECK-NEXT:    callq __extendhfsf2@PLT
901; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
902; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
903; CHECK-NEXT:    callq __extendhfsf2@PLT
904; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
905; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
906; CHECK-NEXT:    callq fmodf@PLT
907; CHECK-NEXT:    callq __truncsfhf2@PLT
908; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
909; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
910; CHECK-NEXT:    callq __extendhfsf2@PLT
911; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
912; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
913; CHECK-NEXT:    callq __extendhfsf2@PLT
914; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
915; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
916; CHECK-NEXT:    callq fmodf@PLT
917; CHECK-NEXT:    callq __truncsfhf2@PLT
918; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
919; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
920; CHECK-NEXT:    callq __extendhfsf2@PLT
921; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
922; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
923; CHECK-NEXT:    callq __extendhfsf2@PLT
924; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
925; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
926; CHECK-NEXT:    callq fmodf@PLT
927; CHECK-NEXT:    callq __truncsfhf2@PLT
928; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
929; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
930; CHECK-NEXT:    callq __extendhfsf2@PLT
931; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
932; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
933; CHECK-NEXT:    callq __extendhfsf2@PLT
934; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
935; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
936; CHECK-NEXT:    callq fmodf@PLT
937; CHECK-NEXT:    callq __truncsfhf2@PLT
938; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
939; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
940; CHECK-NEXT:    callq __extendhfsf2@PLT
941; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
942; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
943; CHECK-NEXT:    callq __extendhfsf2@PLT
944; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
945; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
946; CHECK-NEXT:    callq fmodf@PLT
947; CHECK-NEXT:    callq __truncsfhf2@PLT
948; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
949; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
950; CHECK-NEXT:    callq __extendhfsf2@PLT
951; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
952; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
953; CHECK-NEXT:    callq __extendhfsf2@PLT
954; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
955; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
956; CHECK-NEXT:    callq fmodf@PLT
957; CHECK-NEXT:    callq __truncsfhf2@PLT
958; CHECK-NEXT:    pextrw $0, %xmm0, %eax
959; CHECK-NEXT:    movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
960; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
961; CHECK-NEXT:    pextrw $0, %xmm0, %eax
962; CHECK-NEXT:    movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
963; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
964; CHECK-NEXT:    pextrw $0, %xmm0, %eax
965; CHECK-NEXT:    movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
966; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
967; CHECK-NEXT:    pextrw $0, %xmm0, %esi
968; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
969; CHECK-NEXT:    pextrw $0, %xmm0, %edi
970; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
971; CHECK-NEXT:    pextrw $0, %xmm0, %eax
972; CHECK-NEXT:    movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
973; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
974; CHECK-NEXT:    pextrw $0, %xmm0, %ecx
975; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
976; CHECK-NEXT:    pextrw $0, %xmm0, %edx
977; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
978; CHECK-NEXT:    pextrw $0, %xmm0, %r11d
979; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
980; CHECK-NEXT:    pextrw $0, %xmm0, %ebp
981; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
982; CHECK-NEXT:    pextrw $0, %xmm0, %r14d
983; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
984; CHECK-NEXT:    pextrw $0, %xmm0, %r15d
985; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
986; CHECK-NEXT:    pextrw $0, %xmm0, %r12d
987; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
988; CHECK-NEXT:    pextrw $0, %xmm0, %r13d
989; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
990; CHECK-NEXT:    pextrw $0, %xmm0, %r8d
991; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
992; CHECK-NEXT:    pextrw $0, %xmm0, %r9d
993; CHECK-NEXT:    movl {{[-0-9]+}}(%r{{[sb]}}p), %r10d # 4-byte Reload
994; CHECK-NEXT:    movw %r10w, 62(%rbx)
995; CHECK-NEXT:    movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
996; CHECK-NEXT:    movw %ax, 60(%rbx)
997; CHECK-NEXT:    movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
998; CHECK-NEXT:    movw %ax, 58(%rbx)
999; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1000; CHECK-NEXT:    pextrw $0, %xmm0, %r10d
1001; CHECK-NEXT:    movw %si, 56(%rbx)
1002; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1003; CHECK-NEXT:    pextrw $0, %xmm0, %esi
1004; CHECK-NEXT:    movw %di, 54(%rbx)
1005; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1006; CHECK-NEXT:    pextrw $0, %xmm0, %edi
1007; CHECK-NEXT:    movl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 4-byte Reload
1008; CHECK-NEXT:    movw %ax, 52(%rbx)
1009; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1010; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1011; CHECK-NEXT:    movw %cx, 50(%rbx)
1012; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1013; CHECK-NEXT:    pextrw $0, %xmm0, %ecx
1014; CHECK-NEXT:    movw %dx, 48(%rbx)
1015; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1016; CHECK-NEXT:    pextrw $0, %xmm0, %edx
1017; CHECK-NEXT:    movw %r11w, 46(%rbx)
1018; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1019; CHECK-NEXT:    pextrw $0, %xmm0, %r11d
1020; CHECK-NEXT:    movw %bp, 44(%rbx)
1021; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1022; CHECK-NEXT:    pextrw $0, %xmm0, %ebp
1023; CHECK-NEXT:    movw %r14w, 42(%rbx)
1024; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1025; CHECK-NEXT:    pextrw $0, %xmm0, %r14d
1026; CHECK-NEXT:    movw %r15w, 40(%rbx)
1027; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1028; CHECK-NEXT:    pextrw $0, %xmm0, %r15d
1029; CHECK-NEXT:    movw %r12w, 38(%rbx)
1030; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1031; CHECK-NEXT:    pextrw $0, %xmm0, %r12d
1032; CHECK-NEXT:    movw %r13w, 36(%rbx)
1033; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1034; CHECK-NEXT:    pextrw $0, %xmm0, %r13d
1035; CHECK-NEXT:    movw %r8w, 34(%rbx)
1036; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1037; CHECK-NEXT:    pextrw $0, %xmm0, %r8d
1038; CHECK-NEXT:    movw %r9w, 32(%rbx)
1039; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1040; CHECK-NEXT:    pextrw $0, %xmm0, %r9d
1041; CHECK-NEXT:    movw %r10w, 30(%rbx)
1042; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1043; CHECK-NEXT:    pextrw $0, %xmm0, %r10d
1044; CHECK-NEXT:    movw %si, 28(%rbx)
1045; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1046; CHECK-NEXT:    pextrw $0, %xmm0, %esi
1047; CHECK-NEXT:    movw %di, 26(%rbx)
1048; CHECK-NEXT:    movw %ax, 24(%rbx)
1049; CHECK-NEXT:    movw %cx, 22(%rbx)
1050; CHECK-NEXT:    movw %dx, 20(%rbx)
1051; CHECK-NEXT:    movw %r11w, 18(%rbx)
1052; CHECK-NEXT:    movw %bp, 16(%rbx)
1053; CHECK-NEXT:    movw %r14w, 14(%rbx)
1054; CHECK-NEXT:    movw %r15w, 12(%rbx)
1055; CHECK-NEXT:    movw %r12w, 10(%rbx)
1056; CHECK-NEXT:    movw %r13w, 8(%rbx)
1057; CHECK-NEXT:    movw %r8w, 6(%rbx)
1058; CHECK-NEXT:    movw %r9w, 4(%rbx)
1059; CHECK-NEXT:    movw %r10w, 2(%rbx)
1060; CHECK-NEXT:    movw %si, (%rbx)
1061; CHECK-NEXT:    addq $1032, %rsp # imm = 0x408
1062; CHECK-NEXT:    popq %rbx
1063; CHECK-NEXT:    popq %r12
1064; CHECK-NEXT:    popq %r13
1065; CHECK-NEXT:    popq %r14
1066; CHECK-NEXT:    popq %r15
1067; CHECK-NEXT:    popq %rbp
1068; CHECK-NEXT:    retq
1069  %frem = frem <32 x half> %a0, %a1
1070  store <32 x half> %frem, ptr%p3
1071  ret void
1072}
1073
1074define void @frem_v16f16(<16 x half> %a0, <16 x half> %a1, ptr%p3) nounwind {
1075; CHECK-LABEL: frem_v16f16:
1076; CHECK:       # %bb.0:
1077; CHECK-NEXT:    pushq %rbx
1078; CHECK-NEXT:    subq $512, %rsp # imm = 0x200
1079; CHECK-NEXT:    movq %rdi, %rbx
1080; CHECK-NEXT:    movss %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1081; CHECK-NEXT:    movss %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1082; CHECK-NEXT:    movss %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1083; CHECK-NEXT:    movss %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1084; CHECK-NEXT:    movss %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1085; CHECK-NEXT:    movss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1086; CHECK-NEXT:    movd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill
1087; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1088; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1089; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1090; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1091; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1092; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1093; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1094; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1095; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1096; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1097; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1098; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1099; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1100; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1101; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1102; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1103; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1104; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1105; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1106; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1107; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1108; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1109; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1110; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1111; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1112; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1113; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1114; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1115; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1116; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1117; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1118; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1119; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1120; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1121; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1122; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1123; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1124; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1125; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1126; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1127; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1128; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1129; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1130; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1131; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1132; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1133; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1134; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1135; CHECK-NEXT:    callq __extendhfsf2@PLT
1136; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1137; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1138; CHECK-NEXT:    callq __extendhfsf2@PLT
1139; CHECK-NEXT:    movaps %xmm0, %xmm1
1140; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1141; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1142; CHECK-NEXT:    callq fmodf@PLT
1143; CHECK-NEXT:    callq __truncsfhf2@PLT
1144; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1145; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1146; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1147; CHECK-NEXT:    callq __extendhfsf2@PLT
1148; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1149; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1150; CHECK-NEXT:    callq __extendhfsf2@PLT
1151; CHECK-NEXT:    movaps %xmm0, %xmm1
1152; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1153; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1154; CHECK-NEXT:    callq fmodf@PLT
1155; CHECK-NEXT:    callq __truncsfhf2@PLT
1156; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1157; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1158; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1159; CHECK-NEXT:    callq __extendhfsf2@PLT
1160; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1161; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1162; CHECK-NEXT:    callq __extendhfsf2@PLT
1163; CHECK-NEXT:    movaps %xmm0, %xmm1
1164; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1165; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1166; CHECK-NEXT:    callq fmodf@PLT
1167; CHECK-NEXT:    callq __truncsfhf2@PLT
1168; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1169; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1170; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1171; CHECK-NEXT:    callq __extendhfsf2@PLT
1172; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1173; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1174; CHECK-NEXT:    callq __extendhfsf2@PLT
1175; CHECK-NEXT:    movaps %xmm0, %xmm1
1176; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1177; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1178; CHECK-NEXT:    callq fmodf@PLT
1179; CHECK-NEXT:    callq __truncsfhf2@PLT
1180; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1181; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1182; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1183; CHECK-NEXT:    callq __extendhfsf2@PLT
1184; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1185; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1186; CHECK-NEXT:    callq __extendhfsf2@PLT
1187; CHECK-NEXT:    movaps %xmm0, %xmm1
1188; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1189; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1190; CHECK-NEXT:    callq fmodf@PLT
1191; CHECK-NEXT:    callq __truncsfhf2@PLT
1192; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1193; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1194; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1195; CHECK-NEXT:    callq __extendhfsf2@PLT
1196; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1197; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1198; CHECK-NEXT:    callq __extendhfsf2@PLT
1199; CHECK-NEXT:    movaps %xmm0, %xmm1
1200; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1201; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1202; CHECK-NEXT:    callq fmodf@PLT
1203; CHECK-NEXT:    callq __truncsfhf2@PLT
1204; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1205; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1206; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1207; CHECK-NEXT:    callq __extendhfsf2@PLT
1208; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1209; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1210; CHECK-NEXT:    callq __extendhfsf2@PLT
1211; CHECK-NEXT:    movaps %xmm0, %xmm1
1212; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1213; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1214; CHECK-NEXT:    callq fmodf@PLT
1215; CHECK-NEXT:    callq __truncsfhf2@PLT
1216; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1217; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1218; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1219; CHECK-NEXT:    callq __extendhfsf2@PLT
1220; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1221; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1222; CHECK-NEXT:    callq __extendhfsf2@PLT
1223; CHECK-NEXT:    movaps %xmm0, %xmm1
1224; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1225; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1226; CHECK-NEXT:    callq fmodf@PLT
1227; CHECK-NEXT:    callq __truncsfhf2@PLT
1228; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1229; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1230; CHECK-NEXT:    callq __extendhfsf2@PLT
1231; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1232; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1233; CHECK-NEXT:    callq __extendhfsf2@PLT
1234; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1235; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1236; CHECK-NEXT:    callq fmodf@PLT
1237; CHECK-NEXT:    callq __truncsfhf2@PLT
1238; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1239; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1240; CHECK-NEXT:    callq __extendhfsf2@PLT
1241; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1242; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1243; CHECK-NEXT:    callq __extendhfsf2@PLT
1244; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1245; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1246; CHECK-NEXT:    callq fmodf@PLT
1247; CHECK-NEXT:    callq __truncsfhf2@PLT
1248; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1249; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1250; CHECK-NEXT:    callq __extendhfsf2@PLT
1251; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1252; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1253; CHECK-NEXT:    callq __extendhfsf2@PLT
1254; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1255; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1256; CHECK-NEXT:    callq fmodf@PLT
1257; CHECK-NEXT:    callq __truncsfhf2@PLT
1258; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1259; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1260; CHECK-NEXT:    callq __extendhfsf2@PLT
1261; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1262; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1263; CHECK-NEXT:    callq __extendhfsf2@PLT
1264; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1265; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1266; CHECK-NEXT:    callq fmodf@PLT
1267; CHECK-NEXT:    callq __truncsfhf2@PLT
1268; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1269; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1270; CHECK-NEXT:    callq __extendhfsf2@PLT
1271; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1272; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1273; CHECK-NEXT:    callq __extendhfsf2@PLT
1274; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1275; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1276; CHECK-NEXT:    callq fmodf@PLT
1277; CHECK-NEXT:    callq __truncsfhf2@PLT
1278; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1279; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1280; CHECK-NEXT:    callq __extendhfsf2@PLT
1281; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1282; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1283; CHECK-NEXT:    callq __extendhfsf2@PLT
1284; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1285; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1286; CHECK-NEXT:    callq fmodf@PLT
1287; CHECK-NEXT:    callq __truncsfhf2@PLT
1288; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1289; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1290; CHECK-NEXT:    callq __extendhfsf2@PLT
1291; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1292; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1293; CHECK-NEXT:    callq __extendhfsf2@PLT
1294; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1295; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1296; CHECK-NEXT:    callq fmodf@PLT
1297; CHECK-NEXT:    callq __truncsfhf2@PLT
1298; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1299; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1300; CHECK-NEXT:    callq __extendhfsf2@PLT
1301; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1302; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1303; CHECK-NEXT:    callq __extendhfsf2@PLT
1304; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm1 # 4-byte Reload
1305; CHECK-NEXT:    # xmm1 = mem[0],zero,zero,zero
1306; CHECK-NEXT:    callq fmodf@PLT
1307; CHECK-NEXT:    callq __truncsfhf2@PLT
1308; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1309; CHECK-NEXT:    movw %ax, 30(%rbx)
1310; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1311; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1312; CHECK-NEXT:    movw %ax, 28(%rbx)
1313; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1314; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1315; CHECK-NEXT:    movw %ax, 26(%rbx)
1316; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1317; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1318; CHECK-NEXT:    movw %ax, 24(%rbx)
1319; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1320; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1321; CHECK-NEXT:    movw %ax, 22(%rbx)
1322; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1323; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1324; CHECK-NEXT:    movw %ax, 20(%rbx)
1325; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1326; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1327; CHECK-NEXT:    movw %ax, 18(%rbx)
1328; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1329; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1330; CHECK-NEXT:    movw %ax, 16(%rbx)
1331; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1332; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1333; CHECK-NEXT:    movw %ax, 14(%rbx)
1334; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1335; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1336; CHECK-NEXT:    movw %ax, 12(%rbx)
1337; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1338; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1339; CHECK-NEXT:    movw %ax, 10(%rbx)
1340; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1341; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1342; CHECK-NEXT:    movw %ax, 8(%rbx)
1343; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1344; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1345; CHECK-NEXT:    movw %ax, 6(%rbx)
1346; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1347; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1348; CHECK-NEXT:    movw %ax, 4(%rbx)
1349; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1350; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1351; CHECK-NEXT:    movw %ax, 2(%rbx)
1352; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1353; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1354; CHECK-NEXT:    movw %ax, (%rbx)
1355; CHECK-NEXT:    addq $512, %rsp # imm = 0x200
1356; CHECK-NEXT:    popq %rbx
1357; CHECK-NEXT:    retq
1358  %frem = frem <16 x half> %a0, %a1
1359  store <16 x half> %frem, ptr%p3
1360  ret void
1361}
1362
1363define void @frem_v8f16(<8 x half> %a0, <8 x half> %a1, ptr%p3) nounwind {
1364; CHECK-LABEL: frem_v8f16:
1365; CHECK:       # %bb.0:
1366; CHECK-NEXT:    pushq %rbx
1367; CHECK-NEXT:    subq $240, %rsp
1368; CHECK-NEXT:    movq %rdi, %rbx
1369; CHECK-NEXT:    movss %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1370; CHECK-NEXT:    movss %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1371; CHECK-NEXT:    movss %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1372; CHECK-NEXT:    movss %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1373; CHECK-NEXT:    movss %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1374; CHECK-NEXT:    movss %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1375; CHECK-NEXT:    movd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Folded Spill
1376; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1377; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1378; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1379; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1380; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1381; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1382; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1383; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1384; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1385; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1386; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1387; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1388; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1389; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1390; CHECK-NEXT:    pinsrw $0, {{[0-9]+}}(%rsp), %xmm1
1391; CHECK-NEXT:    movdqa %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1392; CHECK-NEXT:    callq __extendhfsf2@PLT
1393; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1394; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1395; CHECK-NEXT:    callq __extendhfsf2@PLT
1396; CHECK-NEXT:    movaps %xmm0, %xmm1
1397; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1398; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1399; CHECK-NEXT:    callq fmodf@PLT
1400; CHECK-NEXT:    callq __truncsfhf2@PLT
1401; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1402; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1403; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1404; CHECK-NEXT:    callq __extendhfsf2@PLT
1405; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1406; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1407; CHECK-NEXT:    callq __extendhfsf2@PLT
1408; CHECK-NEXT:    movaps %xmm0, %xmm1
1409; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1410; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1411; CHECK-NEXT:    callq fmodf@PLT
1412; CHECK-NEXT:    callq __truncsfhf2@PLT
1413; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1414; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1415; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1416; CHECK-NEXT:    callq __extendhfsf2@PLT
1417; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1418; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1419; CHECK-NEXT:    callq __extendhfsf2@PLT
1420; CHECK-NEXT:    movaps %xmm0, %xmm1
1421; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1422; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1423; CHECK-NEXT:    callq fmodf@PLT
1424; CHECK-NEXT:    callq __truncsfhf2@PLT
1425; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1426; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1427; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1428; CHECK-NEXT:    callq __extendhfsf2@PLT
1429; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1430; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1431; CHECK-NEXT:    callq __extendhfsf2@PLT
1432; CHECK-NEXT:    movaps %xmm0, %xmm1
1433; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1434; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1435; CHECK-NEXT:    callq fmodf@PLT
1436; CHECK-NEXT:    callq __truncsfhf2@PLT
1437; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1438; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1439; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1440; CHECK-NEXT:    callq __extendhfsf2@PLT
1441; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1442; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1443; CHECK-NEXT:    callq __extendhfsf2@PLT
1444; CHECK-NEXT:    movaps %xmm0, %xmm1
1445; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1446; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1447; CHECK-NEXT:    callq fmodf@PLT
1448; CHECK-NEXT:    callq __truncsfhf2@PLT
1449; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1450; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1451; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1452; CHECK-NEXT:    callq __extendhfsf2@PLT
1453; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1454; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1455; CHECK-NEXT:    callq __extendhfsf2@PLT
1456; CHECK-NEXT:    movaps %xmm0, %xmm1
1457; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1458; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1459; CHECK-NEXT:    callq fmodf@PLT
1460; CHECK-NEXT:    callq __truncsfhf2@PLT
1461; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1462; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1463; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1464; CHECK-NEXT:    callq __extendhfsf2@PLT
1465; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1466; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1467; CHECK-NEXT:    callq __extendhfsf2@PLT
1468; CHECK-NEXT:    movaps %xmm0, %xmm1
1469; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1470; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1471; CHECK-NEXT:    callq fmodf@PLT
1472; CHECK-NEXT:    callq __truncsfhf2@PLT
1473; CHECK-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
1474; CHECK-NEXT:    movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
1475; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1476; CHECK-NEXT:    callq __extendhfsf2@PLT
1477; CHECK-NEXT:    movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
1478; CHECK-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1479; CHECK-NEXT:    callq __extendhfsf2@PLT
1480; CHECK-NEXT:    movaps %xmm0, %xmm1
1481; CHECK-NEXT:    movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Folded Reload
1482; CHECK-NEXT:    # xmm0 = mem[0],zero,zero,zero
1483; CHECK-NEXT:    callq fmodf@PLT
1484; CHECK-NEXT:    callq __truncsfhf2@PLT
1485; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1486; CHECK-NEXT:    movw %ax, 14(%rbx)
1487; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1488; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1489; CHECK-NEXT:    movw %ax, 12(%rbx)
1490; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1491; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1492; CHECK-NEXT:    movw %ax, 10(%rbx)
1493; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1494; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1495; CHECK-NEXT:    movw %ax, 8(%rbx)
1496; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1497; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1498; CHECK-NEXT:    movw %ax, 6(%rbx)
1499; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1500; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1501; CHECK-NEXT:    movw %ax, 4(%rbx)
1502; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1503; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1504; CHECK-NEXT:    movw %ax, 2(%rbx)
1505; CHECK-NEXT:    movdqa {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload
1506; CHECK-NEXT:    pextrw $0, %xmm0, %eax
1507; CHECK-NEXT:    movw %ax, (%rbx)
1508; CHECK-NEXT:    addq $240, %rsp
1509; CHECK-NEXT:    popq %rbx
1510; CHECK-NEXT:    retq
1511  %frem = frem <8 x half> %a0, %a1
1512  store <8 x half> %frem, ptr%p3
1513  ret void
1514}
1515
1516define void @frem_v4f80(<4 x x86_fp80> %a0, <4 x x86_fp80> %a1, ptr%p3) nounwind {
1517; CHECK-LABEL: frem_v4f80:
1518; CHECK:       # %bb.0:
1519; CHECK-NEXT:    pushq %rbx
1520; CHECK-NEXT:    subq $128, %rsp
1521; CHECK-NEXT:    movq %rdi, %rbx
1522; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1523; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1524; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1525; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1526; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1527; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1528; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1529; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1530; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1531; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1532; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1533; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1534; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1535; CHECK-NEXT:    fldt {{[0-9]+}}(%rsp)
1536; CHECK-NEXT:    fstpt {{[0-9]+}}(%rsp)
1537; CHECK-NEXT:    fstpt (%rsp)
1538; CHECK-NEXT:    callq fmodl@PLT
1539; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1540; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1541; CHECK-NEXT:    fstpt {{[0-9]+}}(%rsp)
1542; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1543; CHECK-NEXT:    fstpt (%rsp)
1544; CHECK-NEXT:    callq fmodl@PLT
1545; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1546; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1547; CHECK-NEXT:    fstpt {{[0-9]+}}(%rsp)
1548; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1549; CHECK-NEXT:    fstpt (%rsp)
1550; CHECK-NEXT:    callq fmodl@PLT
1551; CHECK-NEXT:    fstpt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Spill
1552; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1553; CHECK-NEXT:    fstpt {{[0-9]+}}(%rsp)
1554; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1555; CHECK-NEXT:    fstpt (%rsp)
1556; CHECK-NEXT:    callq fmodl@PLT
1557; CHECK-NEXT:    fstpt 30(%rbx)
1558; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1559; CHECK-NEXT:    fstpt 20(%rbx)
1560; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1561; CHECK-NEXT:    fstpt 10(%rbx)
1562; CHECK-NEXT:    fldt {{[-0-9]+}}(%r{{[sb]}}p) # 10-byte Folded Reload
1563; CHECK-NEXT:    fstpt (%rbx)
1564; CHECK-NEXT:    addq $128, %rsp
1565; CHECK-NEXT:    popq %rbx
1566; CHECK-NEXT:    retq
1567  %frem = frem <4 x x86_fp80> %a0, %a1
1568  store <4 x x86_fp80> %frem, ptr%p3
1569  ret void
1570}
1571