Matt Arsenault | 7aad8fd | 2017-01-24 22:02:15 +0000 | [diff] [blame] | 1 | ; 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 Stellard | 649b5db | 2016-03-04 18:31:18 +0000 | [diff] [blame] | 3 | |
| 4 | ; Make sure this doesn't crash. |
Marek Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 5 | ; ALL-LABEL: {{^}}test: |
Marek Olsak | 91f22fb | 2016-12-09 19:49:40 +0000 | [diff] [blame] | 6 | ; 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 Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 9 | |
Tom Stellard | cb6ba62 | 2016-04-30 00:23:06 +0000 | [diff] [blame] | 10 | ; Make sure we are handling hazards correctly. |
Matt Arsenault | 707780b | 2017-02-22 21:05:25 +0000 | [diff] [blame] | 11 | ; SGPR: buffer_load_dword [[VHI:v[0-9]+]], off, s[{{[0-9]+:[0-9]+}}], s{{[0-9]+}} offset:16 |
Marek Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 12 | ; 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 Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 17 | ; Make sure scratch wave offset register is correctly incremented and |
| 18 | ; then restored. |
Matt Arsenault | 707780b | 2017-02-22 21:05:25 +0000 | [diff] [blame] | 19 | ; SMEM: s_add_u32 m0, s[[OFF]], 0x100{{$}} |
Marek Olsak | 91f22fb | 2016-12-09 19:49:40 +0000 | [diff] [blame] | 20 | ; SMEM: s_buffer_store_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s{{\[}}[[LO]]:[[HI]]], m0 ; 16-byte Folded Spill |
Marek Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 21 | |
Matt Arsenault | 707780b | 2017-02-22 21:05:25 +0000 | [diff] [blame] | 22 | ; SMEM: s_add_u32 m0, s[[OFF]], 0x100{{$}} |
Marek Olsak | 91f22fb | 2016-12-09 19:49:40 +0000 | [diff] [blame] | 23 | ; SMEM: s_buffer_load_dwordx4 s{{\[[0-9]+:[0-9]+\]}}, s{{\[}}[[LO]]:[[HI]]], m0 ; 16-byte Folded Reload |
Marek Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 24 | |
Matt Arsenault | c47701c | 2016-12-02 00:54:45 +0000 | [diff] [blame] | 25 | ; SMEM: s_dcache_wb |
Marek Olsak | 79c0587 | 2016-11-25 17:37:09 +0000 | [diff] [blame] | 26 | ; ALL: s_endpgm |
Matt Arsenault | 3dbeefa | 2017-03-21 21:39:51 +0000 | [diff] [blame] | 27 | define amdgpu_kernel void @test(i32 addrspace(1)* %out, i32 %in) { |
Matt Arsenault | 3c7581b | 2017-06-08 19:03:20 +0000 | [diff] [blame] | 28 | 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 Stellard | 649b5db | 2016-03-04 18:31:18 +0000 | [diff] [blame] | 72 | |
| 73 | store i32 %in, i32 addrspace(1)* %out |
| 74 | ret void |
| 75 | } |