@@ -97,6 +97,7 @@ define fp128 @first_arg(fp128 %x) {
97
97
;
98
98
; CHECK-MSVC64-LABEL: first_arg:
99
99
; CHECK-MSVC64: # %bb.0:
100
+ ; CHECK-MSVC64-NEXT: movaps (%rcx), %xmm0
100
101
; CHECK-MSVC64-NEXT: retq
101
102
;
102
103
; CHECK-MSVC32-LABEL: first_arg:
@@ -118,6 +119,7 @@ define fp128 @first_arg(fp128 %x) {
118
119
;
119
120
; CHECK-MINGW-LABEL: first_arg:
120
121
; CHECK-MINGW: # %bb.0:
122
+ ; CHECK-MINGW-NEXT: movaps (%rcx), %xmm0
121
123
; CHECK-MINGW-NEXT: retq
122
124
ret fp128 %x
123
125
}
@@ -152,7 +154,8 @@ define fp128 @leading_args(i64 %_0, i64 %_1, i64 %_2, i64 %_3, fp128 %x) {
152
154
;
153
155
; CHECK-MSVC64-LABEL: leading_args:
154
156
; CHECK-MSVC64: # %bb.0:
155
- ; CHECK-MSVC64-NEXT: movaps %xmm4, %xmm0
157
+ ; CHECK-MSVC64-NEXT: movq {{[0-9]+}}(%rsp), %rax
158
+ ; CHECK-MSVC64-NEXT: movaps (%rax), %xmm0
156
159
; CHECK-MSVC64-NEXT: retq
157
160
;
158
161
; CHECK-MSVC32-LABEL: leading_args:
@@ -174,7 +177,8 @@ define fp128 @leading_args(i64 %_0, i64 %_1, i64 %_2, i64 %_3, fp128 %x) {
174
177
;
175
178
; CHECK-MINGW-LABEL: leading_args:
176
179
; CHECK-MINGW: # %bb.0:
177
- ; CHECK-MINGW-NEXT: movaps %xmm4, %xmm0
180
+ ; CHECK-MINGW-NEXT: movq {{[0-9]+}}(%rsp), %rax
181
+ ; CHECK-MINGW-NEXT: movaps (%rax), %xmm0
178
182
; CHECK-MINGW-NEXT: retq
179
183
ret fp128 %x
180
184
}
@@ -210,7 +214,8 @@ define fp128 @many_leading_args(i64 %_0, i64 %_1, i64 %_2, i64 %_3, i64 %_4, fp1
210
214
;
211
215
; CHECK-MSVC64-LABEL: many_leading_args:
212
216
; CHECK-MSVC64: # %bb.0:
213
- ; CHECK-MSVC64-NEXT: movaps %xmm5, %xmm0
217
+ ; CHECK-MSVC64-NEXT: movq {{[0-9]+}}(%rsp), %rax
218
+ ; CHECK-MSVC64-NEXT: movaps (%rax), %xmm0
214
219
; CHECK-MSVC64-NEXT: retq
215
220
;
216
221
; CHECK-MSVC32-LABEL: many_leading_args:
@@ -232,7 +237,8 @@ define fp128 @many_leading_args(i64 %_0, i64 %_1, i64 %_2, i64 %_3, i64 %_4, fp1
232
237
;
233
238
; CHECK-MINGW-LABEL: many_leading_args:
234
239
; CHECK-MINGW: # %bb.0:
235
- ; CHECK-MINGW-NEXT: movaps %xmm5, %xmm0
240
+ ; CHECK-MINGW-NEXT: movq {{[0-9]+}}(%rsp), %rax
241
+ ; CHECK-MINGW-NEXT: movaps (%rax), %xmm0
236
242
; CHECK-MINGW-NEXT: retq
237
243
ret fp128 %x
238
244
}
@@ -267,7 +273,8 @@ define fp128 @trailing_arg(i64 %_0, i64 %_1, i64 %_2, i64 %_3, i64 %_4, fp128 %x
267
273
;
268
274
; CHECK-MSVC64-LABEL: trailing_arg:
269
275
; CHECK-MSVC64: # %bb.0:
270
- ; CHECK-MSVC64-NEXT: movaps %xmm4, %xmm0
276
+ ; CHECK-MSVC64-NEXT: movq {{[0-9]+}}(%rsp), %rax
277
+ ; CHECK-MSVC64-NEXT: movaps (%rax), %xmm0
271
278
; CHECK-MSVC64-NEXT: retq
272
279
;
273
280
; CHECK-MSVC32-LABEL: trailing_arg:
@@ -289,7 +296,8 @@ define fp128 @trailing_arg(i64 %_0, i64 %_1, i64 %_2, i64 %_3, i64 %_4, fp128 %x
289
296
;
290
297
; CHECK-MINGW-LABEL: trailing_arg:
291
298
; CHECK-MINGW: # %bb.0:
292
- ; CHECK-MINGW-NEXT: movaps %xmm4, %xmm0
299
+ ; CHECK-MINGW-NEXT: movq {{[0-9]+}}(%rsp), %rax
300
+ ; CHECK-MINGW-NEXT: movaps (%rax), %xmm0
293
301
; CHECK-MINGW-NEXT: retq
294
302
ret fp128 %x
295
303
}
@@ -317,9 +325,12 @@ define void @call_first_arg(fp128 %x) nounwind {
317
325
;
318
326
; CHECK-MSVC64-LABEL: call_first_arg:
319
327
; CHECK-MSVC64: # %bb.0:
320
- ; CHECK-MSVC64-NEXT: subq $40, %rsp
328
+ ; CHECK-MSVC64-NEXT: subq $56, %rsp
329
+ ; CHECK-MSVC64-NEXT: movaps (%rcx), %xmm0
330
+ ; CHECK-MSVC64-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
331
+ ; CHECK-MSVC64-NEXT: leaq {{[0-9]+}}(%rsp), %rcx
321
332
; CHECK-MSVC64-NEXT: callq first_arg
322
- ; CHECK-MSVC64-NEXT: addq $40 , %rsp
333
+ ; CHECK-MSVC64-NEXT: addq $56 , %rsp
323
334
; CHECK-MSVC64-NEXT: retq
324
335
;
325
336
; CHECK-MSVC32-LABEL: call_first_arg:
@@ -342,9 +353,12 @@ define void @call_first_arg(fp128 %x) nounwind {
342
353
;
343
354
; CHECK-MINGW-LABEL: call_first_arg:
344
355
; CHECK-MINGW: # %bb.0:
345
- ; CHECK-MINGW-NEXT: subq $40, %rsp
356
+ ; CHECK-MINGW-NEXT: subq $56, %rsp
357
+ ; CHECK-MINGW-NEXT: movaps (%rcx), %xmm0
358
+ ; CHECK-MINGW-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
359
+ ; CHECK-MINGW-NEXT: leaq {{[0-9]+}}(%rsp), %rcx
346
360
; CHECK-MINGW-NEXT: callq first_arg
347
- ; CHECK-MINGW-NEXT: addq $40 , %rsp
361
+ ; CHECK-MINGW-NEXT: addq $56 , %rsp
348
362
; CHECK-MINGW-NEXT: retq
349
363
call i128 @first_arg (fp128 %x )
350
364
ret void
@@ -385,14 +399,17 @@ define void @call_leading_args(fp128 %x) nounwind {
385
399
;
386
400
; CHECK-MSVC64-LABEL: call_leading_args:
387
401
; CHECK-MSVC64: # %bb.0:
388
- ; CHECK-MSVC64-NEXT: subq $40, %rsp
402
+ ; CHECK-MSVC64-NEXT: subq $72, %rsp
403
+ ; CHECK-MSVC64-NEXT: movaps (%rcx), %xmm0
404
+ ; CHECK-MSVC64-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
405
+ ; CHECK-MSVC64-NEXT: leaq {{[0-9]+}}(%rsp), %rax
406
+ ; CHECK-MSVC64-NEXT: movq %rax, {{[0-9]+}}(%rsp)
389
407
; CHECK-MSVC64-NEXT: xorl %ecx, %ecx
390
408
; CHECK-MSVC64-NEXT: xorl %edx, %edx
391
409
; CHECK-MSVC64-NEXT: xorl %r8d, %r8d
392
410
; CHECK-MSVC64-NEXT: xorl %r9d, %r9d
393
- ; CHECK-MSVC64-NEXT: movaps %xmm0, %xmm4
394
411
; CHECK-MSVC64-NEXT: callq leading_args
395
- ; CHECK-MSVC64-NEXT: addq $40 , %rsp
412
+ ; CHECK-MSVC64-NEXT: addq $72 , %rsp
396
413
; CHECK-MSVC64-NEXT: retq
397
414
;
398
415
; CHECK-MSVC32-LABEL: call_leading_args:
@@ -423,14 +440,17 @@ define void @call_leading_args(fp128 %x) nounwind {
423
440
;
424
441
; CHECK-MINGW-LABEL: call_leading_args:
425
442
; CHECK-MINGW: # %bb.0:
426
- ; CHECK-MINGW-NEXT: subq $40, %rsp
443
+ ; CHECK-MINGW-NEXT: subq $72, %rsp
444
+ ; CHECK-MINGW-NEXT: movaps (%rcx), %xmm0
445
+ ; CHECK-MINGW-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
446
+ ; CHECK-MINGW-NEXT: leaq {{[0-9]+}}(%rsp), %rax
447
+ ; CHECK-MINGW-NEXT: movq %rax, {{[0-9]+}}(%rsp)
427
448
; CHECK-MINGW-NEXT: xorl %ecx, %ecx
428
449
; CHECK-MINGW-NEXT: xorl %edx, %edx
429
450
; CHECK-MINGW-NEXT: xorl %r8d, %r8d
430
451
; CHECK-MINGW-NEXT: xorl %r9d, %r9d
431
- ; CHECK-MINGW-NEXT: movaps %xmm0, %xmm4
432
452
; CHECK-MINGW-NEXT: callq leading_args
433
- ; CHECK-MINGW-NEXT: addq $40 , %rsp
453
+ ; CHECK-MINGW-NEXT: addq $72 , %rsp
434
454
; CHECK-MINGW-NEXT: retq
435
455
call i128 @leading_args (i64 0 , i64 0 , i64 0 , i64 0 , fp128 %x )
436
456
ret void
@@ -477,15 +497,21 @@ define void @call_many_leading_args(fp128 %x) nounwind {
477
497
;
478
498
; CHECK-MSVC64-LABEL: call_many_leading_args:
479
499
; CHECK-MSVC64: # %bb.0:
480
- ; CHECK-MSVC64-NEXT: subq $40, %rsp
481
- ; CHECK-MSVC64-NEXT: xorps %xmm4, %xmm4
500
+ ; CHECK-MSVC64-NEXT: subq $88, %rsp
501
+ ; CHECK-MSVC64-NEXT: movaps (%rcx), %xmm0
502
+ ; CHECK-MSVC64-NEXT: xorps %xmm1, %xmm1
503
+ ; CHECK-MSVC64-NEXT: movaps %xmm1, {{[0-9]+}}(%rsp)
504
+ ; CHECK-MSVC64-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
505
+ ; CHECK-MSVC64-NEXT: leaq {{[0-9]+}}(%rsp), %rax
506
+ ; CHECK-MSVC64-NEXT: movq %rax, {{[0-9]+}}(%rsp)
507
+ ; CHECK-MSVC64-NEXT: leaq {{[0-9]+}}(%rsp), %rax
508
+ ; CHECK-MSVC64-NEXT: movq %rax, {{[0-9]+}}(%rsp)
482
509
; CHECK-MSVC64-NEXT: xorl %ecx, %ecx
483
510
; CHECK-MSVC64-NEXT: xorl %edx, %edx
484
511
; CHECK-MSVC64-NEXT: xorl %r8d, %r8d
485
512
; CHECK-MSVC64-NEXT: xorl %r9d, %r9d
486
- ; CHECK-MSVC64-NEXT: movaps %xmm0, %xmm5
487
513
; CHECK-MSVC64-NEXT: callq many_leading_args
488
- ; CHECK-MSVC64-NEXT: addq $40 , %rsp
514
+ ; CHECK-MSVC64-NEXT: addq $88 , %rsp
489
515
; CHECK-MSVC64-NEXT: retq
490
516
;
491
517
; CHECK-MSVC32-LABEL: call_many_leading_args:
@@ -520,15 +546,21 @@ define void @call_many_leading_args(fp128 %x) nounwind {
520
546
;
521
547
; CHECK-MINGW-LABEL: call_many_leading_args:
522
548
; CHECK-MINGW: # %bb.0:
523
- ; CHECK-MINGW-NEXT: subq $40, %rsp
524
- ; CHECK-MINGW-NEXT: xorps %xmm4, %xmm4
549
+ ; CHECK-MINGW-NEXT: subq $88, %rsp
550
+ ; CHECK-MINGW-NEXT: movaps (%rcx), %xmm0
551
+ ; CHECK-MINGW-NEXT: xorps %xmm1, %xmm1
552
+ ; CHECK-MINGW-NEXT: movaps %xmm1, {{[0-9]+}}(%rsp)
553
+ ; CHECK-MINGW-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
554
+ ; CHECK-MINGW-NEXT: leaq {{[0-9]+}}(%rsp), %rax
555
+ ; CHECK-MINGW-NEXT: movq %rax, {{[0-9]+}}(%rsp)
556
+ ; CHECK-MINGW-NEXT: leaq {{[0-9]+}}(%rsp), %rax
557
+ ; CHECK-MINGW-NEXT: movq %rax, {{[0-9]+}}(%rsp)
525
558
; CHECK-MINGW-NEXT: xorl %ecx, %ecx
526
559
; CHECK-MINGW-NEXT: xorl %edx, %edx
527
560
; CHECK-MINGW-NEXT: xorl %r8d, %r8d
528
561
; CHECK-MINGW-NEXT: xorl %r9d, %r9d
529
- ; CHECK-MINGW-NEXT: movaps %xmm0, %xmm5
530
562
; CHECK-MINGW-NEXT: callq many_leading_args
531
- ; CHECK-MINGW-NEXT: addq $40 , %rsp
563
+ ; CHECK-MINGW-NEXT: addq $88 , %rsp
532
564
; CHECK-MINGW-NEXT: retq
533
565
call i128 @many_leading_args (i64 0 , i64 0 , i64 0 , i64 0 , fp128 0xL0, fp128 %x )
534
566
ret void
@@ -569,14 +601,17 @@ define void @call_trailing_arg(fp128 %x) nounwind {
569
601
;
570
602
; CHECK-MSVC64-LABEL: call_trailing_arg:
571
603
; CHECK-MSVC64: # %bb.0:
572
- ; CHECK-MSVC64-NEXT: subq $40, %rsp
604
+ ; CHECK-MSVC64-NEXT: subq $72, %rsp
605
+ ; CHECK-MSVC64-NEXT: movaps (%rcx), %xmm0
606
+ ; CHECK-MSVC64-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
607
+ ; CHECK-MSVC64-NEXT: leaq {{[0-9]+}}(%rsp), %rax
608
+ ; CHECK-MSVC64-NEXT: movq %rax, {{[0-9]+}}(%rsp)
573
609
; CHECK-MSVC64-NEXT: xorl %ecx, %ecx
574
610
; CHECK-MSVC64-NEXT: xorl %edx, %edx
575
611
; CHECK-MSVC64-NEXT: xorl %r8d, %r8d
576
612
; CHECK-MSVC64-NEXT: xorl %r9d, %r9d
577
- ; CHECK-MSVC64-NEXT: movaps %xmm0, %xmm4
578
613
; CHECK-MSVC64-NEXT: callq trailing_arg
579
- ; CHECK-MSVC64-NEXT: addq $40 , %rsp
614
+ ; CHECK-MSVC64-NEXT: addq $72 , %rsp
580
615
; CHECK-MSVC64-NEXT: retq
581
616
;
582
617
; CHECK-MSVC32-LABEL: call_trailing_arg:
@@ -607,14 +642,17 @@ define void @call_trailing_arg(fp128 %x) nounwind {
607
642
;
608
643
; CHECK-MINGW-LABEL: call_trailing_arg:
609
644
; CHECK-MINGW: # %bb.0:
610
- ; CHECK-MINGW-NEXT: subq $40, %rsp
645
+ ; CHECK-MINGW-NEXT: subq $72, %rsp
646
+ ; CHECK-MINGW-NEXT: movaps (%rcx), %xmm0
647
+ ; CHECK-MINGW-NEXT: movaps %xmm0, {{[0-9]+}}(%rsp)
648
+ ; CHECK-MINGW-NEXT: leaq {{[0-9]+}}(%rsp), %rax
649
+ ; CHECK-MINGW-NEXT: movq %rax, {{[0-9]+}}(%rsp)
611
650
; CHECK-MINGW-NEXT: xorl %ecx, %ecx
612
651
; CHECK-MINGW-NEXT: xorl %edx, %edx
613
652
; CHECK-MINGW-NEXT: xorl %r8d, %r8d
614
653
; CHECK-MINGW-NEXT: xorl %r9d, %r9d
615
- ; CHECK-MINGW-NEXT: movaps %xmm0, %xmm4
616
654
; CHECK-MINGW-NEXT: callq trailing_arg
617
- ; CHECK-MINGW-NEXT: addq $40 , %rsp
655
+ ; CHECK-MINGW-NEXT: addq $72 , %rsp
618
656
; CHECK-MINGW-NEXT: retq
619
657
call i128 @trailing_arg (i64 0 , i64 0 , i64 0 , i64 0 , fp128 %x )
620
658
ret void
0 commit comments