xref: /llvm-project/llvm/test/CodeGen/AMDGPU/stacksave_stackrestore.invalid.ll (revision 1030483561d6abf0a160bca324509d0c7ef4e398)
19a53f5f5SMatt Arsenault; RUN: split-file %s %t
2*10304835SMatt Arsenault; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn-amd-amdpal -mcpu=gfx1030 -filetype=null %t/stacksave-error.ll 2>&1 | FileCheck -check-prefix=ERR-SAVE-SDAG %s
3*10304835SMatt Arsenault; RUN: not --crash llc -global-isel=0 -mtriple=amdgcn-amd-amdpal -mcpu=gfx1030 -filetype=null %t/stackrestore-error.ll 2>&1 | FileCheck -check-prefix=ERR-RESTORE-SDAG %s
4*10304835SMatt Arsenault
5*10304835SMatt Arsenault; RUN: not --crash llc -global-isel=1 -mtriple=amdgcn-amd-amdpal -mcpu=gfx1030 -filetype=null %t/stacksave-error.ll 2>&1 | FileCheck -check-prefix=ERR-SAVE-GISEL %s
6*10304835SMatt Arsenault; RUN: not --crash llc -global-isel=1 -mtriple=amdgcn-amd-amdpal -mcpu=gfx1030 -filetype=null %t/stackrestore-error.ll 2>&1 | FileCheck -check-prefix=ERR-RESTORE-GISEL %s
79a53f5f5SMatt Arsenault
89a53f5f5SMatt Arsenault; Test that an error is produced if stacksave/stackrestore are used
99a53f5f5SMatt Arsenault; with the wrong (default) address space.
109a53f5f5SMatt Arsenault
119a53f5f5SMatt Arsenault;--- stacksave-error.ll
129a53f5f5SMatt Arsenault
139a53f5f5SMatt Arsenaultdeclare ptr @llvm.stacksave.p0()
149a53f5f5SMatt Arsenault
15*10304835SMatt Arsenault; ERR-SAVE-SDAG: LLVM ERROR: Cannot select: {{.+}}: i64,ch = stacksave
16*10304835SMatt Arsenault; ERR-SAVE-GISEL: LLVM ERROR: unable to legalize instruction: %{{[0-9]+}}:_(p0) = G_STACKSAVE (in function: func_store_stacksave)
179a53f5f5SMatt Arsenaultdefine void @func_store_stacksave() {
189a53f5f5SMatt Arsenault  %stacksave = call ptr @llvm.stacksave.p0()
199a53f5f5SMatt Arsenault  call void asm sideeffect "; use $0", "s"(ptr %stacksave)
209a53f5f5SMatt Arsenault  ret void
219a53f5f5SMatt Arsenault}
229a53f5f5SMatt Arsenault
239a53f5f5SMatt Arsenault;--- stackrestore-error.ll
249a53f5f5SMatt Arsenault
259a53f5f5SMatt Arsenaultdeclare void @llvm.stackrestore.p0(ptr)
269a53f5f5SMatt Arsenault
27*10304835SMatt Arsenault; ERR-RESTORE-SDAG: LLVM ERROR: Cannot select: {{.+}}: ch = stackrestore {{.+}}, {{.+}}
28*10304835SMatt Arsenault; ERR-RESTORE-GISEL: LLVM ERROR: unable to legalize instruction: G_STACKRESTORE %{{[0-9]+}}:_(p0) (in function: func_stacksave_sgpr)
299a53f5f5SMatt Arsenaultdefine amdgpu_gfx void @func_stacksave_sgpr(ptr inreg %stack) {
309a53f5f5SMatt Arsenault  call void @llvm.stackrestore.p0(ptr %stack)
319a53f5f5SMatt Arsenault  ret void
329a53f5f5SMatt Arsenault}
33