1; RUN: llc -march=amdgcn -mcpu=fiji -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=SGPR %s
2
3; Make sure this doesn't crash.
4; ALL-LABEL: {{^}}test:
5; ALL: s_mov_b32 s[[LO:[0-9]+]], SCRATCH_RSRC_DWORD0
6; ALL: s_mov_b32 s[[HI:[0-9]+]], 0xe80000
7
8; Make sure we are handling hazards correctly.
9; SGPR: buffer_load_dword [[VHI:v[0-9]+]], off, s[{{[0-9]+:[0-9]+}}], 0 offset:4
10; SGPR-NEXT: s_mov_b64 exec, s[0:1]
11; SGPR-NEXT: s_waitcnt vmcnt(0)
12; SGPR-NEXT: v_readlane_b32 s{{[0-9]+}}, [[VHI]], 0
13; SGPR-NEXT: v_readlane_b32 s{{[0-9]+}}, [[VHI]], 1
14; SGPR-NEXT: v_readlane_b32 s{{[0-9]+}}, [[VHI]], 2
15; SGPR-NEXT: v_readlane_b32 s[[HI:[0-9]+]], [[VHI]], 3
16; SGPR-NEXT: s_nop 4
17; SGPR-NEXT: buffer_store_dword v0, off, s[0:[[HI]]{{\]}}, 0
18
19; ALL: s_endpgm
20define amdgpu_kernel void @test(i32 addrspace(1)* %out, i32 %in) {
21  call void asm sideeffect "", "~{s[0:7]}" ()
22  call void asm sideeffect "", "~{s[8:15]}" ()
23  call void asm sideeffect "", "~{s[16:23]}" ()
24  call void asm sideeffect "", "~{s[24:31]}" ()
25  call void asm sideeffect "", "~{s[32:39]}" ()
26  call void asm sideeffect "", "~{s[40:47]}" ()
27  call void asm sideeffect "", "~{s[48:55]}" ()
28  call void asm sideeffect "", "~{s[56:63]}" ()
29  call void asm sideeffect "", "~{s[64:71]}" ()
30  call void asm sideeffect "", "~{s[72:79]}" ()
31  call void asm sideeffect "", "~{s[80:87]}" ()
32  call void asm sideeffect "", "~{s[88:95]}" ()
33  call void asm sideeffect "", "~{v[0:7]}" ()
34  call void asm sideeffect "", "~{v[8:15]}" ()
35  call void asm sideeffect "", "~{v[16:23]}" ()
36  call void asm sideeffect "", "~{v[24:31]}" ()
37  call void asm sideeffect "", "~{v[32:39]}" ()
38  call void asm sideeffect "", "~{v[40:47]}" ()
39  call void asm sideeffect "", "~{v[48:55]}" ()
40  call void asm sideeffect "", "~{v[56:63]}" ()
41  call void asm sideeffect "", "~{v[64:71]}" ()
42  call void asm sideeffect "", "~{v[72:79]}" ()
43  call void asm sideeffect "", "~{v[80:87]}" ()
44  call void asm sideeffect "", "~{v[88:95]}" ()
45  call void asm sideeffect "", "~{v[96:103]}" ()
46  call void asm sideeffect "", "~{v[104:111]}" ()
47  call void asm sideeffect "", "~{v[112:119]}" ()
48  call void asm sideeffect "", "~{v[120:127]}" ()
49  call void asm sideeffect "", "~{v[128:135]}" ()
50  call void asm sideeffect "", "~{v[136:143]}" ()
51  call void asm sideeffect "", "~{v[144:151]}" ()
52  call void asm sideeffect "", "~{v[152:159]}" ()
53  call void asm sideeffect "", "~{v[160:167]}" ()
54  call void asm sideeffect "", "~{v[168:175]}" ()
55  call void asm sideeffect "", "~{v[176:183]}" ()
56  call void asm sideeffect "", "~{v[184:191]}" ()
57  call void asm sideeffect "", "~{v[192:199]}" ()
58  call void asm sideeffect "", "~{v[200:207]}" ()
59  call void asm sideeffect "", "~{v[208:215]}" ()
60  call void asm sideeffect "", "~{v[216:223]}" ()
61  call void asm sideeffect "", "~{v[224:231]}" ()
62  call void asm sideeffect "", "~{v[232:239]}" ()
63  call void asm sideeffect "", "~{v[240:247]}" ()
64  call void asm sideeffect "", "~{v[248:255]}" ()
65
66  store i32 %in, i32 addrspace(1)* %out
67  ret void
68}
69