@@ -17,15 +17,15 @@ define double @nonstreaming_caller_streaming_callee(double %x) nounwind noinline
17
17
; CHECK-FISEL-NEXT: stp d11, d10, [sp, #48] // 16-byte Folded Spill
18
18
; CHECK-FISEL-NEXT: stp d9, d8, [sp, #64] // 16-byte Folded Spill
19
19
; CHECK-FISEL-NEXT: str x30, [sp, #80] // 8-byte Folded Spill
20
- ; CHECK-FISEL-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
20
+ ; CHECK-FISEL-NEXT: str d0, [sp] // 8-byte Folded Spill
21
21
; CHECK-FISEL-NEXT: smstart sm
22
- ; CHECK-FISEL-NEXT: ldr d0, [sp, #8 ] // 8-byte Folded Reload
22
+ ; CHECK-FISEL-NEXT: ldr d0, [sp] // 8-byte Folded Reload
23
23
; CHECK-FISEL-NEXT: bl streaming_callee
24
- ; CHECK-FISEL-NEXT: str d0, [sp, #88 ] // 8-byte Folded Spill
24
+ ; CHECK-FISEL-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
25
25
; CHECK-FISEL-NEXT: smstop sm
26
26
; CHECK-FISEL-NEXT: adrp x8, .LCPI0_0
27
27
; CHECK-FISEL-NEXT: ldr d0, [x8, :lo12:.LCPI0_0]
28
- ; CHECK-FISEL-NEXT: ldr d1, [sp, #88 ] // 8-byte Folded Reload
28
+ ; CHECK-FISEL-NEXT: ldr d1, [sp, #8 ] // 8-byte Folded Reload
29
29
; CHECK-FISEL-NEXT: fadd d0, d1, d0
30
30
; CHECK-FISEL-NEXT: ldr x30, [sp, #80] // 8-byte Folded Reload
31
31
; CHECK-FISEL-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload
@@ -43,15 +43,15 @@ define double @nonstreaming_caller_streaming_callee(double %x) nounwind noinline
43
43
; CHECK-GISEL-NEXT: stp d11, d10, [sp, #48] // 16-byte Folded Spill
44
44
; CHECK-GISEL-NEXT: stp d9, d8, [sp, #64] // 16-byte Folded Spill
45
45
; CHECK-GISEL-NEXT: str x30, [sp, #80] // 8-byte Folded Spill
46
- ; CHECK-GISEL-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
46
+ ; CHECK-GISEL-NEXT: str d0, [sp] // 8-byte Folded Spill
47
47
; CHECK-GISEL-NEXT: smstart sm
48
- ; CHECK-GISEL-NEXT: ldr d0, [sp, #8 ] // 8-byte Folded Reload
48
+ ; CHECK-GISEL-NEXT: ldr d0, [sp] // 8-byte Folded Reload
49
49
; CHECK-GISEL-NEXT: bl streaming_callee
50
- ; CHECK-GISEL-NEXT: str d0, [sp, #88 ] // 8-byte Folded Spill
50
+ ; CHECK-GISEL-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
51
51
; CHECK-GISEL-NEXT: smstop sm
52
52
; CHECK-GISEL-NEXT: mov x8, #4631107791820423168 // =0x4045000000000000
53
53
; CHECK-GISEL-NEXT: fmov d0, x8
54
- ; CHECK-GISEL-NEXT: ldr d1, [sp, #88 ] // 8-byte Folded Reload
54
+ ; CHECK-GISEL-NEXT: ldr d1, [sp, #8 ] // 8-byte Folded Reload
55
55
; CHECK-GISEL-NEXT: fadd d0, d1, d0
56
56
; CHECK-GISEL-NEXT: ldr x30, [sp, #80] // 8-byte Folded Reload
57
57
; CHECK-GISEL-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload
@@ -76,15 +76,15 @@ define double @streaming_caller_nonstreaming_callee(double %x) nounwind noinline
76
76
; CHECK-COMMON-NEXT: stp d11, d10, [sp, #48] // 16-byte Folded Spill
77
77
; CHECK-COMMON-NEXT: stp d9, d8, [sp, #64] // 16-byte Folded Spill
78
78
; CHECK-COMMON-NEXT: str x30, [sp, #80] // 8-byte Folded Spill
79
- ; CHECK-COMMON-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
79
+ ; CHECK-COMMON-NEXT: str d0, [sp] // 8-byte Folded Spill
80
80
; CHECK-COMMON-NEXT: smstop sm
81
- ; CHECK-COMMON-NEXT: ldr d0, [sp, #8 ] // 8-byte Folded Reload
81
+ ; CHECK-COMMON-NEXT: ldr d0, [sp] // 8-byte Folded Reload
82
82
; CHECK-COMMON-NEXT: bl normal_callee
83
- ; CHECK-COMMON-NEXT: str d0, [sp, #88 ] // 8-byte Folded Spill
83
+ ; CHECK-COMMON-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
84
84
; CHECK-COMMON-NEXT: smstart sm
85
85
; CHECK-COMMON-NEXT: mov x8, #4631107791820423168 // =0x4045000000000000
86
86
; CHECK-COMMON-NEXT: fmov d0, x8
87
- ; CHECK-COMMON-NEXT: ldr d1, [sp, #88 ] // 8-byte Folded Reload
87
+ ; CHECK-COMMON-NEXT: ldr d1, [sp, #8 ] // 8-byte Folded Reload
88
88
; CHECK-COMMON-NEXT: fadd d0, d1, d0
89
89
; CHECK-COMMON-NEXT: ldr x30, [sp, #80] // 8-byte Folded Reload
90
90
; CHECK-COMMON-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload
@@ -102,32 +102,32 @@ entry:
102
102
define double @locally_streaming_caller_normal_callee (double %x ) nounwind noinline optnone "aarch64_pstate_sm_body" {
103
103
; CHECK-COMMON-LABEL: locally_streaming_caller_normal_callee:
104
104
; CHECK-COMMON: // %bb.0:
105
- ; CHECK-COMMON-NEXT: sub sp, sp, #96
106
- ; CHECK-COMMON-NEXT: stp d15, d14, [sp, #16 ] // 16-byte Folded Spill
107
- ; CHECK-COMMON-NEXT: stp d13, d12, [sp, #32 ] // 16-byte Folded Spill
108
- ; CHECK-COMMON-NEXT: stp d11, d10, [sp, #48 ] // 16-byte Folded Spill
109
- ; CHECK-COMMON-NEXT: stp d9, d8, [sp, #64 ] // 16-byte Folded Spill
110
- ; CHECK-COMMON-NEXT: str x30, [sp, #80 ] // 8-byte Folded Spill
111
- ; CHECK-COMMON-NEXT: str d0, [sp, #88 ] // 8-byte Folded Spill
105
+ ; CHECK-COMMON-NEXT: sub sp, sp, #112
106
+ ; CHECK-COMMON-NEXT: stp d15, d14, [sp, #32 ] // 16-byte Folded Spill
107
+ ; CHECK-COMMON-NEXT: stp d13, d12, [sp, #48 ] // 16-byte Folded Spill
108
+ ; CHECK-COMMON-NEXT: stp d11, d10, [sp, #64 ] // 16-byte Folded Spill
109
+ ; CHECK-COMMON-NEXT: stp d9, d8, [sp, #80 ] // 16-byte Folded Spill
110
+ ; CHECK-COMMON-NEXT: str x30, [sp, #96 ] // 8-byte Folded Spill
111
+ ; CHECK-COMMON-NEXT: str d0, [sp, #24 ] // 8-byte Folded Spill
112
112
; CHECK-COMMON-NEXT: smstart sm
113
113
; CHECK-COMMON-NEXT: smstop sm
114
- ; CHECK-COMMON-NEXT: ldr d0, [sp, #88 ] // 8-byte Folded Reload
114
+ ; CHECK-COMMON-NEXT: ldr d0, [sp, #24 ] // 8-byte Folded Reload
115
115
; CHECK-COMMON-NEXT: bl normal_callee
116
- ; CHECK-COMMON-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
116
+ ; CHECK-COMMON-NEXT: str d0, [sp, #16 ] // 8-byte Folded Spill
117
117
; CHECK-COMMON-NEXT: smstart sm
118
118
; CHECK-COMMON-NEXT: mov x8, #4631107791820423168 // =0x4045000000000000
119
119
; CHECK-COMMON-NEXT: fmov d0, x8
120
- ; CHECK-COMMON-NEXT: ldr d1, [sp, #8 ] // 8-byte Folded Reload
120
+ ; CHECK-COMMON-NEXT: ldr d1, [sp, #16 ] // 8-byte Folded Reload
121
121
; CHECK-COMMON-NEXT: fadd d0, d1, d0
122
- ; CHECK-COMMON-NEXT: str d0, [sp] // 8-byte Folded Spill
122
+ ; CHECK-COMMON-NEXT: str d0, [sp, #8 ] // 8-byte Folded Spill
123
123
; CHECK-COMMON-NEXT: smstop sm
124
- ; CHECK-COMMON-NEXT: ldr d0, [sp] // 8-byte Folded Reload
125
- ; CHECK-COMMON-NEXT: ldr x30, [sp, #80 ] // 8-byte Folded Reload
126
- ; CHECK-COMMON-NEXT: ldp d9, d8, [sp, #64 ] // 16-byte Folded Reload
127
- ; CHECK-COMMON-NEXT: ldp d11, d10, [sp, #48 ] // 16-byte Folded Reload
128
- ; CHECK-COMMON-NEXT: ldp d13, d12, [sp, #32 ] // 16-byte Folded Reload
129
- ; CHECK-COMMON-NEXT: ldp d15, d14, [sp, #16 ] // 16-byte Folded Reload
130
- ; CHECK-COMMON-NEXT: add sp, sp, #96
124
+ ; CHECK-COMMON-NEXT: ldr d0, [sp, #8 ] // 8-byte Folded Reload
125
+ ; CHECK-COMMON-NEXT: ldr x30, [sp, #96 ] // 8-byte Folded Reload
126
+ ; CHECK-COMMON-NEXT: ldp d9, d8, [sp, #80 ] // 16-byte Folded Reload
127
+ ; CHECK-COMMON-NEXT: ldp d11, d10, [sp, #64 ] // 16-byte Folded Reload
128
+ ; CHECK-COMMON-NEXT: ldp d13, d12, [sp, #48 ] // 16-byte Folded Reload
129
+ ; CHECK-COMMON-NEXT: ldp d15, d14, [sp, #32 ] // 16-byte Folded Reload
130
+ ; CHECK-COMMON-NEXT: add sp, sp, #112
131
131
; CHECK-COMMON-NEXT: ret
132
132
%call = call double @normal_callee (double %x );
133
133
%add = fadd double %call , 4 .200000e+01
@@ -378,23 +378,25 @@ define double @frem_call_za(double %a, double %b) "aarch64_pstate_za_shared" nou
378
378
define float @frem_call_sm (float %a , float %b ) "aarch64_pstate_sm_enabled" nounwind {
379
379
; CHECK-COMMON-LABEL: frem_call_sm:
380
380
; CHECK-COMMON: // %bb.0:
381
- ; CHECK-COMMON-NEXT: stp d15, d14, [sp, #-80]! // 16-byte Folded Spill
382
- ; CHECK-COMMON-NEXT: stp d13, d12, [sp, #16] // 16-byte Folded Spill
383
- ; CHECK-COMMON-NEXT: stp d11, d10, [sp, #32] // 16-byte Folded Spill
384
- ; CHECK-COMMON-NEXT: stp d9, d8, [sp, #48] // 16-byte Folded Spill
385
- ; CHECK-COMMON-NEXT: str x30, [sp, #64] // 8-byte Folded Spill
386
- ; CHECK-COMMON-NEXT: stp s0, s1, [sp, #72] // 8-byte Folded Spill
381
+ ; CHECK-COMMON-NEXT: sub sp, sp, #96
382
+ ; CHECK-COMMON-NEXT: stp d15, d14, [sp, #16] // 16-byte Folded Spill
383
+ ; CHECK-COMMON-NEXT: stp d13, d12, [sp, #32] // 16-byte Folded Spill
384
+ ; CHECK-COMMON-NEXT: stp d11, d10, [sp, #48] // 16-byte Folded Spill
385
+ ; CHECK-COMMON-NEXT: stp d9, d8, [sp, #64] // 16-byte Folded Spill
386
+ ; CHECK-COMMON-NEXT: str x30, [sp, #80] // 8-byte Folded Spill
387
+ ; CHECK-COMMON-NEXT: stp s0, s1, [sp, #8] // 8-byte Folded Spill
387
388
; CHECK-COMMON-NEXT: smstop sm
388
- ; CHECK-COMMON-NEXT: ldp s0, s1, [sp, #72 ] // 8-byte Folded Reload
389
+ ; CHECK-COMMON-NEXT: ldp s0, s1, [sp, #8 ] // 8-byte Folded Reload
389
390
; CHECK-COMMON-NEXT: bl fmodf
390
- ; CHECK-COMMON-NEXT: str s0, [sp, #76 ] // 4-byte Folded Spill
391
+ ; CHECK-COMMON-NEXT: str s0, [sp, #12 ] // 4-byte Folded Spill
391
392
; CHECK-COMMON-NEXT: smstart sm
392
- ; CHECK-COMMON-NEXT: ldp d9, d8, [sp, #48] // 16-byte Folded Reload
393
- ; CHECK-COMMON-NEXT: ldr s0, [sp, #76] // 4-byte Folded Reload
394
- ; CHECK-COMMON-NEXT: ldp d11, d10, [sp, #32] // 16-byte Folded Reload
395
- ; CHECK-COMMON-NEXT: ldr x30, [sp, #64] // 8-byte Folded Reload
396
- ; CHECK-COMMON-NEXT: ldp d13, d12, [sp, #16] // 16-byte Folded Reload
397
- ; CHECK-COMMON-NEXT: ldp d15, d14, [sp], #80 // 16-byte Folded Reload
393
+ ; CHECK-COMMON-NEXT: ldp d9, d8, [sp, #64] // 16-byte Folded Reload
394
+ ; CHECK-COMMON-NEXT: ldr s0, [sp, #12] // 4-byte Folded Reload
395
+ ; CHECK-COMMON-NEXT: ldp d11, d10, [sp, #48] // 16-byte Folded Reload
396
+ ; CHECK-COMMON-NEXT: ldr x30, [sp, #80] // 8-byte Folded Reload
397
+ ; CHECK-COMMON-NEXT: ldp d13, d12, [sp, #32] // 16-byte Folded Reload
398
+ ; CHECK-COMMON-NEXT: ldp d15, d14, [sp, #16] // 16-byte Folded Reload
399
+ ; CHECK-COMMON-NEXT: add sp, sp, #96
398
400
; CHECK-COMMON-NEXT: ret
399
401
%res = frem float %a , %b
400
402
ret float %res
0 commit comments