blob: a57e7b13453f2ef5aeba4d90e15ed1a8e3d80a70 [file] [log] [blame]
Matt Arsenault7aad8fd2017-01-24 22:02:15 +00001; RUN: llc -march=amdgcn -mcpu=fiji -mattr=-flat-for-global -amdgpu-spill-sgpr-to-smem=0 -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=SGPR %s
2; RUN: llc -march=amdgcn -mcpu=fiji -mattr=-flat-for-global -amdgpu-spill-sgpr-to-smem=1 -verify-machineinstrs < %s | FileCheck -check-prefix=ALL -check-prefix=SMEM %s
Tom Stellard649b5db2016-03-04 18:31:18 +00003
4; Make sure this doesn't crash.
Marek Olsak79c05872016-11-25 17:37:09 +00005; ALL-LABEL: {{^}}test:
Marek Olsak91f22fb2016-12-09 19:49:40 +00006; ALL: s_mov_b32 s[[LO:[0-9]+]], SCRATCH_RSRC_DWORD0
7; ALL: s_mov_b32 s[[OFF:[0-9]+]], s3
8; ALL: s_mov_b32 s[[HI:[0-9]+]], 0xe80000
Marek Olsak79c05872016-11-25 17:37:09 +00009
Tom Stellardcb6ba622016-04-30 00:23:06 +000010; Make sure we are handling hazards correctly.
Matt Arsenault707780b2017-02-22 21:05:25 +000011; SGPR: buffer_load_dword [[VHI:v[0-9]+]], off, s[{{[0-9]+:[0-9]+}}], s{{[0-9]+}} offset:16
Marek Olsak79c05872016-11-25 17:37:09 +000012; SGPR-NEXT: s_waitcnt vmcnt(0)
13; SGPR-NEXT: v_readfirstlane_b32 s[[HI:[0-9]+]], [[VHI]]
14; SGPR-NEXT: s_nop 4
15; SGPR-NEXT: buffer_store_dword v0, off, s[0:[[HI]]{{\]}}, 0
16
Marek Olsak79c05872016-11-25 17:37:09 +000017; Make sure scratch wave offset register is correctly incremented and
18; then restored.
Matt Arsenault707780b2017-02-22 21:05:25 +000019; SMEM: s_add_u32 m0, s[[OFF]], 0x100{{$}}
Marek Olsak91f22fb2016-12-09 19:49:40 +000020; SMEM: s_buffer_store_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s{{\[}}[[LO]]:[[HI]]], m0 ; 16-byte Folded Spill
Marek Olsak79c05872016-11-25 17:37:09 +000021
Matt Arsenault707780b2017-02-22 21:05:25 +000022; SMEM: s_add_u32 m0, s[[OFF]], 0x100{{$}}
Marek Olsak91f22fb2016-12-09 19:49:40 +000023; SMEM: s_buffer_load_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s{{\[}}[[LO]]:[[HI]]], m0 ; 16-byte Folded Reload
Marek Olsak79c05872016-11-25 17:37:09 +000024
Matt Arsenaultc47701c2016-12-02 00:54:45 +000025; SMEM: s_dcache_wb
Marek Olsak79c05872016-11-25 17:37:09 +000026; ALL: s_endpgm
Matt Arsenault3dbeefa2017-03-21 21:39:51 +000027define amdgpu_kernel void @test(i32 addrspace(1)* %out, i32 %in) {
Matt Arsenault3c7581b2017-06-08 19:03:20 +000028 call void asm sideeffect "", "~{s[0:7]}" ()
29 call void asm sideeffect "", "~{s[8:15]}" ()
30 call void asm sideeffect "", "~{s[16:23]}" ()
31 call void asm sideeffect "", "~{s[24:31]}" ()
32 call void asm sideeffect "", "~{s[32:39]}" ()
33 call void asm sideeffect "", "~{s[40:47]}" ()
34 call void asm sideeffect "", "~{s[48:55]}" ()
35 call void asm sideeffect "", "~{s[56:63]}" ()
36 call void asm sideeffect "", "~{s[64:71]}" ()
37 call void asm sideeffect "", "~{s[72:79]}" ()
38 call void asm sideeffect "", "~{s[80:87]}" ()
39 call void asm sideeffect "", "~{s[88:95]}" ()
40 call void asm sideeffect "", "~{v[0:7]}" ()
41 call void asm sideeffect "", "~{v[8:15]}" ()
42 call void asm sideeffect "", "~{v[16:23]}" ()
43 call void asm sideeffect "", "~{v[24:31]}" ()
44 call void asm sideeffect "", "~{v[32:39]}" ()
45 call void asm sideeffect "", "~{v[40:47]}" ()
46 call void asm sideeffect "", "~{v[48:55]}" ()
47 call void asm sideeffect "", "~{v[56:63]}" ()
48 call void asm sideeffect "", "~{v[64:71]}" ()
49 call void asm sideeffect "", "~{v[72:79]}" ()
50 call void asm sideeffect "", "~{v[80:87]}" ()
51 call void asm sideeffect "", "~{v[88:95]}" ()
52 call void asm sideeffect "", "~{v[96:103]}" ()
53 call void asm sideeffect "", "~{v[104:111]}" ()
54 call void asm sideeffect "", "~{v[112:119]}" ()
55 call void asm sideeffect "", "~{v[120:127]}" ()
56 call void asm sideeffect "", "~{v[128:135]}" ()
57 call void asm sideeffect "", "~{v[136:143]}" ()
58 call void asm sideeffect "", "~{v[144:151]}" ()
59 call void asm sideeffect "", "~{v[152:159]}" ()
60 call void asm sideeffect "", "~{v[160:167]}" ()
61 call void asm sideeffect "", "~{v[168:175]}" ()
62 call void asm sideeffect "", "~{v[176:183]}" ()
63 call void asm sideeffect "", "~{v[184:191]}" ()
64 call void asm sideeffect "", "~{v[192:199]}" ()
65 call void asm sideeffect "", "~{v[200:207]}" ()
66 call void asm sideeffect "", "~{v[208:215]}" ()
67 call void asm sideeffect "", "~{v[216:223]}" ()
68 call void asm sideeffect "", "~{v[224:231]}" ()
69 call void asm sideeffect "", "~{v[232:239]}" ()
70 call void asm sideeffect "", "~{v[240:247]}" ()
71 call void asm sideeffect "", "~{v[248:255]}" ()
Tom Stellard649b5db2016-03-04 18:31:18 +000072
73 store i32 %in, i32 addrspace(1)* %out
74 ret void
75}