1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-spill-sgpr-to-vgpr=true < %s | FileCheck -check-prefix=SPILL-TO-VGPR %s
3
- ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-spill-sgpr-to-vgpr=false < %s | FileCheck -check-prefix=NO-SPILL-TO-VGPR %s
2
+ ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-spill-sgpr-to-vgpr=true -amdgpu-spill-cfi-saved-regs=false < %s | FileCheck -check-prefixes=NO-CFI-SAVES-SPILL-TO-VGPR %s
3
+ ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-spill-sgpr-to-vgpr=true -amdgpu-spill-cfi-saved-regs=true < %s | FileCheck -check-prefixes=CFI-SAVES-SPILL-TO-VGPR %s
4
+ ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-spill-sgpr-to-vgpr=false -amdgpu-spill-cfi-saved-regs=false < %s | FileCheck -check-prefixes=NO-CFI-SAVES-NO-SPILL-TO-VGPR %s
5
+ ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs -amdgpu-spill-sgpr-to-vgpr=false -amdgpu-spill-cfi-saved-regs=true < %s | FileCheck -check-prefixes=CFI-SAVES-NO-SPILL-TO-VGPR %s
6
+
4
7
5
8
; Check frame setup where SGPR spills to VGPRs are disabled or enabled.
6
9
7
10
declare hidden void @external_void_func_void () #0
8
11
9
12
define void @callee_with_stack_and_call () #0 {
13
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
14
+ ; NO-CFI-SAVES-SPILL-TO-VGPR: ; %bb.0:
15
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
16
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33
17
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32
18
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[8:9], -1
19
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
20
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[8:9]
21
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s4, 2
22
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0
23
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x400
24
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s31, 1
25
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
26
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
27
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
28
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12
29
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33
30
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
31
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
32
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0
33
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v40, 1
34
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33
35
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s4, v40, 2
36
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[6:7], -1
37
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_load_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
38
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[6:7]
39
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
40
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
41
+ ; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
42
+ ;
43
+ ; CFI-SAVES-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
44
+ ; CFI-SAVES-SPILL-TO-VGPR: ; %bb.0:
45
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
46
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33
47
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32
48
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[8:9], -1
49
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
50
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[8:9]
51
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, exec_lo, 2
52
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, exec_hi, 3
53
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s4, 4
54
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0
55
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x400
56
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s31, 1
57
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
58
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
59
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
60
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12
61
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33
62
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
63
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
64
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0
65
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v40, 1
66
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33
67
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s4, v40, 4
68
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[6:7], -1
69
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_load_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
70
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[6:7]
71
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
72
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
73
+ ; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
74
+ ;
75
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
76
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR: ; %bb.0:
77
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
78
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33
79
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32
80
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, s4
81
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
82
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x800
83
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
84
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3
85
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
86
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s30, 0
87
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 1
88
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
89
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
90
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
91
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
92
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
93
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
94
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
95
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12
96
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33
97
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
98
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
99
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
100
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3
101
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
102
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
103
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
104
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v0, 0
105
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 1
106
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
107
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
108
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
109
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload
110
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33
111
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
112
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readfirstlane_b32 s4, v0
113
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
114
+ ; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
115
+ ;
116
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
117
+ ; CFI-SAVES-NO-SPILL-TO-VGPR: ; %bb.0:
118
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
119
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33
120
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32
121
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, exec_lo
122
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
123
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, exec_hi
124
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill
125
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, s4
126
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill
127
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x800
128
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
129
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3
130
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:24
131
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s30, 0
132
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 1
133
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
134
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:24
135
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
136
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
137
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
138
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
139
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
140
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12
141
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33
142
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
143
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
144
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
145
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3
146
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:24
147
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
148
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
149
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v0, 0
150
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 1
151
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:24
152
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
153
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
154
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload
155
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33
156
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
157
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readfirstlane_b32 s4, v0
158
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
159
+ ; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
10
160
; SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
11
161
; SPILL-TO-VGPR: ; %bb.0:
12
162
; SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -16,18 +166,18 @@ define void @callee_with_stack_and_call() #0 {
16
166
; SPILL-TO-VGPR-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
17
167
; SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[8:9]
18
168
; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s4, 2
19
- ; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0
20
169
; SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x400
21
- ; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s31, 1
170
+ ; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0
22
171
; SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
23
172
; SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
24
173
; SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
25
174
; SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12
175
+ ; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s31, 1
26
176
; SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33
27
177
; SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
28
178
; SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
29
- ; SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0
30
179
; SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v40, 1
180
+ ; SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0
31
181
; SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33
32
182
; SPILL-TO-VGPR-NEXT: v_readlane_b32 s4, v40, 2
33
183
; SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[6:7], -1
@@ -36,7 +186,6 @@ define void @callee_with_stack_and_call() #0 {
36
186
; SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
37
187
; SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
38
188
; SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
39
- ;
40
189
; NO-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
41
190
; NO-SPILL-TO-VGPR: ; %bb.0:
42
191
; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -46,14 +195,21 @@ define void @callee_with_stack_and_call() #0 {
46
195
; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
47
196
; NO-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x800
48
197
; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
49
- ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3
198
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 1
50
199
; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
51
200
; NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s30, 0
52
- ; NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 1
53
201
; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
54
202
; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
55
203
; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
56
204
; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
205
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
206
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 1
207
+ ; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
208
+ ; NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 0
209
+ ; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:8 ; 4-byte Folded Spill
210
+ ; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
211
+ ; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
212
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
57
213
; NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
58
214
; NO-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
59
215
; NO-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
@@ -62,12 +218,20 @@ define void @callee_with_stack_and_call() #0 {
62
218
; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
63
219
; NO-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
64
220
; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
65
- ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3
221
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 1
222
+ ; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
223
+ ; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:8 ; 4-byte Folded Reload
224
+ ; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
225
+ ; NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 0
226
+ ; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
227
+ ; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
228
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
229
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec
230
+ ; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 1
66
231
; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
67
232
; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
68
233
; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
69
234
; NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v0, 0
70
- ; NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 1
71
235
; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
72
236
; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
73
237
; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
0 commit comments