|
1 | 1 | ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
2 |
| -<<<<<<< HEAD |
3 |
| -; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-spill-sgpr-to-vgpr=true < %s | FileCheck -check-prefix=SPILL-TO-VGPR %s |
4 |
| -; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-spill-sgpr-to-vgpr=false < %s | FileCheck -check-prefix=NO-SPILL-TO-VGPR %s |
5 |
| -======= |
6 | 2 | ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-spill-sgpr-to-vgpr=true -amdgpu-spill-cfi-saved-regs=false < %s | FileCheck -check-prefixes=NO-CFI-SAVES-SPILL-TO-VGPR %s
|
7 | 3 | ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-spill-sgpr-to-vgpr=true -amdgpu-spill-cfi-saved-regs=true < %s | FileCheck -check-prefixes=CFI-SAVES-SPILL-TO-VGPR %s
|
8 | 4 | ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-spill-sgpr-to-vgpr=false -amdgpu-spill-cfi-saved-regs=false < %s | FileCheck -check-prefixes=NO-CFI-SAVES-NO-SPILL-TO-VGPR %s
|
9 | 5 | ; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -amdgpu-spill-sgpr-to-vgpr=false -amdgpu-spill-cfi-saved-regs=true < %s | FileCheck -check-prefixes=CFI-SAVES-NO-SPILL-TO-VGPR %s
|
10 |
| ->>>>>>> a9becbe509280bd147cef54315b3efc15d5aa594 |
11 | 6 |
|
12 | 7 | ; Check frame setup where SGPR spills to VGPRs are disabled or enabled.
|
13 | 8 |
|
@@ -84,6 +79,153 @@ define void @callee_with_stack_and_call() #0 {
|
84 | 79 | ; NO-SPILL-TO-VGPR-NEXT: v_readfirstlane_b32 s4, v0
|
85 | 80 | ; NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4
|
86 | 81 | ; NO-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31]
|
| 82 | +; NO-CFI-SAVES-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call: |
| 83 | +; NO-CFI-SAVES-SPILL-TO-VGPR: ; %bb.0: |
| 84 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 85 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33 |
| 86 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32 |
| 87 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[8:9], -1 |
| 88 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill |
| 89 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[8:9] |
| 90 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s4, 2 |
| 91 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0 |
| 92 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x400 |
| 93 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s31, 1 |
| 94 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0 |
| 95 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5] |
| 96 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4 |
| 97 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12 |
| 98 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 |
| 99 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 100 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5] |
| 101 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0 |
| 102 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v40, 1 |
| 103 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33 |
| 104 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s4, v40, 2 |
| 105 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[6:7], -1 |
| 106 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_load_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload |
| 107 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[6:7] |
| 108 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4 |
| 109 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 110 | +; NO-CFI-SAVES-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31] |
| 111 | +; |
| 112 | +; CFI-SAVES-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call: |
| 113 | +; CFI-SAVES-SPILL-TO-VGPR: ; %bb.0: |
| 114 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 115 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33 |
| 116 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32 |
| 117 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[8:9], -1 |
| 118 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill |
| 119 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[8:9] |
| 120 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, exec_lo, 2 |
| 121 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, exec_hi, 3 |
| 122 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s4, 4 |
| 123 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s30, 0 |
| 124 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x400 |
| 125 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_writelane_b32 v40, s31, 1 |
| 126 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0 |
| 127 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5] |
| 128 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4 |
| 129 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12 |
| 130 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 |
| 131 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 132 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5] |
| 133 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v40, 0 |
| 134 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v40, 1 |
| 135 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33 |
| 136 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: v_readlane_b32 s4, v40, 4 |
| 137 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_or_saveexec_b64 s[6:7], -1 |
| 138 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: buffer_load_dword v40, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload |
| 139 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[6:7] |
| 140 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4 |
| 141 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 142 | +; CFI-SAVES-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31] |
| 143 | +; |
| 144 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call: |
| 145 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR: ; %bb.0: |
| 146 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 147 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33 |
| 148 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32 |
| 149 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, s4 |
| 150 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill |
| 151 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x800 |
| 152 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec |
| 153 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3 |
| 154 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16 |
| 155 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s30, 0 |
| 156 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 1 |
| 157 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill |
| 158 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16 |
| 159 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 160 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5] |
| 161 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0 |
| 162 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5] |
| 163 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4 |
| 164 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12 |
| 165 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 |
| 166 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 167 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5] |
| 168 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec |
| 169 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3 |
| 170 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16 |
| 171 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload |
| 172 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 173 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v0, 0 |
| 174 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 1 |
| 175 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:16 |
| 176 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 177 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5] |
| 178 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Reload |
| 179 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33 |
| 180 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 181 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readfirstlane_b32 s4, v0 |
| 182 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4 |
| 183 | +; NO-CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31] |
| 184 | +; |
| 185 | +; CFI-SAVES-NO-SPILL-TO-VGPR-LABEL: callee_with_stack_and_call: |
| 186 | +; CFI-SAVES-NO-SPILL-TO-VGPR: ; %bb.0: |
| 187 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0) |
| 188 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s4, s33 |
| 189 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s32 |
| 190 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, exec_lo |
| 191 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:12 ; 4-byte Folded Spill |
| 192 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, exec_hi |
| 193 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:16 ; 4-byte Folded Spill |
| 194 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, s4 |
| 195 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:20 ; 4-byte Folded Spill |
| 196 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addk_i32 s32, 0x800 |
| 197 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec |
| 198 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3 |
| 199 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:24 |
| 200 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s30, 0 |
| 201 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_writelane_b32 v0, s31, 1 |
| 202 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Spill |
| 203 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:24 |
| 204 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 205 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5] |
| 206 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_mov_b32_e32 v0, 0 |
| 207 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_getpc_b64 s[4:5] |
| 208 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_add_u32 s4, s4, external_void_func_void@rel32@lo+4 |
| 209 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_addc_u32 s5, s5, external_void_func_void@rel32@hi+12 |
| 210 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 |
| 211 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 212 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_swappc_b64 s[30:31], s[4:5] |
| 213 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 s[4:5], exec |
| 214 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, 3 |
| 215 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_store_dword v0, off, s[0:3], s33 offset:24 |
| 216 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:4 ; 4-byte Folded Reload |
| 217 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 218 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s30, v0, 0 |
| 219 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readlane_b32 s31, v0, 1 |
| 220 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:24 |
| 221 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 222 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b64 exec, s[4:5] |
| 223 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: buffer_load_dword v0, off, s[0:3], s33 offset:20 ; 4-byte Folded Reload |
| 224 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s32, s33 |
| 225 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_waitcnt vmcnt(0) |
| 226 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: v_readfirstlane_b32 s4, v0 |
| 227 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_mov_b32 s33, s4 |
| 228 | +; CFI-SAVES-NO-SPILL-TO-VGPR-NEXT: s_setpc_b64 s[30:31] |
87 | 229 | %alloca = alloca i32, addrspace(5)
|
88 | 230 | store volatile i32 0, ptr addrspace(5) %alloca
|
89 | 231 | call void @external_void_func_void()
|
|
0 commit comments