11; 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+
47
58; Check frame setup where SGPR spills to VGPRs are disabled or enabled.
69
710declare hidden void @external_void_func_void () #0
811
912define 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]
10160; SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
11161; SPILL-TO-VGPR: ; %bb.0:
12162; SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
@@ -16,18 +166,18 @@ define void @callee_with_stack_and_call() #0 {
16166; SPILL-TO-VGPR-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
17167; SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[8:9]
18168; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s4, 2
19- ; SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0
20169; 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
22171; SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
23172; SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
24173; SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4
25174; 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
26176; SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33
27177; SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
28178; SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
29- ; SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0
30179; SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v40, 1
180+ ; SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0
31181; SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33
32182; SPILL-TO-VGPR-NEXT: v_readlane_b32 s4, v40, 2
33183; SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[6:7], -1
@@ -36,7 +186,6 @@ define void @callee_with_stack_and_call() #0 {
36186; SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
37187; SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
38188; SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
39- ;
40189; NO-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call:
41190; NO-SPILL-TO-VGPR: ; %bb.0:
42191; 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 {
46195; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill
47196; NO-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x800
48197; 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
50199; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
51200; NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s30, 0
52- ; NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 1
53201; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill
54202; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
55203; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
56204; 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]
57213; NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0
58214; NO-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5]
59215; 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 {
62218; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
63219; NO-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5]
64220; 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
66231; NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16
67232; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload
68233; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
69234; NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v0, 0
70- ; NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 1
71235; NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16
72236; NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0)
73237; NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5]
0 commit comments