xref: /llvm-project/llvm/test/CodeGen/AMDGPU/invalid-inline-asm-constraint-crash.ll (revision 9afaf9c6c89efb22bccab39677e8dff47da91a00)
1; RUN: not llc -mtriple=amdgcn < %s 2>&1 | FileCheck -check-prefix=ERR %s
2
3; ERR: error: couldn't allocate output register for constraint 'q'
4define void @crash_use_invalid_output_constraint_block(ptr addrspace(1) %arg) {
5bb:
6  %v = call i32 asm sideeffect "", "=q"()
7  br label %use
8
9use:
10  store i32 %v, ptr addrspace(1) %arg
11  ret void
12}
13
14; ERR: error: unknown asm constraint 'q'
15define void @invalid_input_constraint() {
16  call void asm sideeffect "", "q"(i32 1)
17  ret void
18}
19
20; ERR: error: unknown asm constraint 'q'
21define void @invalid_input_constraint_multi() {
22  call void asm sideeffect "", "q,q"(i32 1, i16 2)
23  ret void
24}
25
26; ERR: error: unknown asm constraint 'q'
27define void @invalid_input_constraint_multi_valid() {
28  call void asm sideeffect "", "q,v"(i32 1, i64 2)
29  ret void
30}
31
32; ERR: error: couldn't allocate output register for constraint 'q'
33define void @crash_use_invalid_output_constraint_block_multi(ptr addrspace(1) %arg) {
34bb:
35  %v = call { i32, i32 } asm sideeffect "", "=q,=q"()
36  br label %use
37
38use:
39  store { i32, i32 } %v, ptr addrspace(1) %arg
40  ret void
41}
42
43; ERR: error: couldn't allocate output register for constraint 'q'
44define void @crash_use_invalid_output_constraint_block_multi_valid(ptr addrspace(1) %arg) {
45bb:
46  %v = call { i32, i32 } asm sideeffect "", "=q,=v"()
47  br label %use
48
49use:
50  store { i32, i32 } %v, ptr addrspace(1) %arg
51  ret void
52}
53