1faa2c678SKrzysztof Drewniak; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9e9907f1SFangrui Song; RUN: llc -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=GCN 3*9e9907f1SFangrui Song; RUN: llc -global-isel -mtriple=amdgcn -mcpu=gfx900 -verify-machineinstrs < %s | FileCheck %s --check-prefixes=GCN 4faa2c678SKrzysztof Drewniak 5faa2c678SKrzysztof Drewniakdeclare void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) nocapture, i32 %size, i32 %voffset, i32 %soffset, i32 %offset, i32 %aux) 6faa2c678SKrzysztof Drewniak 7faa2c678SKrzysztof Drewniakdefine amdgpu_ps float @buffer_load_lds_dword(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds) { 8faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_dword: 9faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 10faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 11faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 12faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword off, s[0:3], 0 lds 13faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword off, s[0:3], 0 offset:4 glc lds 14faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword off, s[0:3], 0 offset:8 slc lds 15faa2c678SKrzysztof Drewniak; GCN-NEXT: v_mov_b32_e32 v0, s4 16faa2c678SKrzysztof Drewniak; GCN-NEXT: s_waitcnt vmcnt(0) 17faa2c678SKrzysztof Drewniak; GCN-NEXT: ds_read_b32 v0, v0 18faa2c678SKrzysztof Drewniak; GCN-NEXT: s_waitcnt lgkmcnt(0) 19faa2c678SKrzysztof Drewniak; GCN-NEXT: ; return to shader part epilog 20faa2c678SKrzysztof Drewniakmain_body: 21faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 0, i32 0, i32 0, i32 0) 22faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 0, i32 0, i32 4, i32 1) 23faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 0, i32 0, i32 8, i32 2) 24faa2c678SKrzysztof Drewniak %res = load float, ptr addrspace(3) %lds 25faa2c678SKrzysztof Drewniak ret float %res 26faa2c678SKrzysztof Drewniak} 27faa2c678SKrzysztof Drewniak 28faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_dword_imm_voffset(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds) { 29faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_dword_imm_voffset: 30faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 31faa2c678SKrzysztof Drewniak; GCN-NEXT: v_mov_b32_e32 v0, 0x800 32faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 33faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 34faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword v0, s[0:3], 0 offen lds 35faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 36faa2c678SKrzysztof Drewniakmain_body: 37faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 2048, i32 0, i32 0, i32 0) 38faa2c678SKrzysztof Drewniak ret void 39faa2c678SKrzysztof Drewniak} 40faa2c678SKrzysztof Drewniak 41faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_dword_v_offset(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds, i32 %voffset) { 42faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_dword_v_offset: 43faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 44faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 45faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 46faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword v0, s[0:3], 0 offen lds 47faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 48faa2c678SKrzysztof Drewniakmain_body: 49faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 %voffset, i32 0, i32 0, i32 0) 50faa2c678SKrzysztof Drewniak ret void 51faa2c678SKrzysztof Drewniak} 52faa2c678SKrzysztof Drewniak 53faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_dword_s_offset(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds, i32 inreg %soffset) { 54faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_dword_s_offset: 55faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 56faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 57faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 58faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword off, s[0:3], s5 lds 59faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 60faa2c678SKrzysztof Drewniakmain_body: 61faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 0, i32 %soffset, i32 0, i32 0) 62faa2c678SKrzysztof Drewniak ret void 63faa2c678SKrzysztof Drewniak} 64faa2c678SKrzysztof Drewniak 65faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_dword_vs_offset(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds, i32 %voffset, i32 inreg %soffset) { 66faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_dword_vs_offset: 67faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 68faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 69faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 70faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword v0, s[0:3], s5 offen lds 71faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 72faa2c678SKrzysztof Drewniakmain_body: 73faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 %voffset, i32 %soffset, i32 0, i32 0) 74faa2c678SKrzysztof Drewniak ret void 75faa2c678SKrzysztof Drewniak} 76faa2c678SKrzysztof Drewniak 77faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_dword_vs_imm_offset(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds, i32 %voffset, i32 inreg %soffset) { 78faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_dword_vs_imm_offset: 79faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 80faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 81faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 82faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_dword v0, s[0:3], s5 offen offset:2048 lds 83faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 84faa2c678SKrzysztof Drewniakmain_body: 85faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 4, i32 %voffset, i32 %soffset, i32 2048, i32 0) 86faa2c678SKrzysztof Drewniak ret void 87faa2c678SKrzysztof Drewniak} 88faa2c678SKrzysztof Drewniak 89faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_ushort(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds) { 90faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_ushort: 91faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 92faa2c678SKrzysztof Drewniak; GCN-NEXT: v_mov_b32_e32 v0, 0x800 93faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 94faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 95faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_ushort v0, s[0:3], 0 offen lds 96faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 97faa2c678SKrzysztof Drewniakmain_body: 98faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 2, i32 2048, i32 0, i32 0, i32 0) 99faa2c678SKrzysztof Drewniak ret void 100faa2c678SKrzysztof Drewniak} 101faa2c678SKrzysztof Drewniak 102faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @buffer_load_lds_ubyte(ptr addrspace(8) inreg %rsrc, ptr addrspace(3) inreg %lds) { 103faa2c678SKrzysztof Drewniak; GCN-LABEL: buffer_load_lds_ubyte: 104faa2c678SKrzysztof Drewniak; GCN: ; %bb.0: ; %main_body 105faa2c678SKrzysztof Drewniak; GCN-NEXT: s_mov_b32 m0, s4 106faa2c678SKrzysztof Drewniak; GCN-NEXT: s_nop 0 107faa2c678SKrzysztof Drewniak; GCN-NEXT: buffer_load_ubyte off, s[0:3], 0 offset:2048 lds 108faa2c678SKrzysztof Drewniak; GCN-NEXT: s_endpgm 109faa2c678SKrzysztof Drewniakmain_body: 110faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.load.lds(ptr addrspace(8) %rsrc, ptr addrspace(3) %lds, i32 1, i32 0, i32 0, i32 2048, i32 0) 111faa2c678SKrzysztof Drewniak ret void 112faa2c678SKrzysztof Drewniak} 113