; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -global-isel=0 -mtriple=amdgpu8.02-amd-mesa3d < %s | FileCheck -check-prefixes=SDAG,GFX8-SDAG %s
; RUN: llc -global-isel=1 -mtriple=amdgpu8.02-amd-mesa3d < %s | FileCheck -check-prefixes=GISEL,GFX8-GISEL %s
; RUN: llc -global-isel=0 -mtriple=amdgpu9.00-amd-mesa3d < %s | FileCheck -check-prefixes=SDAG,GFX9-SDAG %s
; RUN: llc -global-isel=1 -mtriple=amdgpu9.00-amd-mesa3d < %s | FileCheck -check-prefixes=GISEL,GFX9-GISEL %s

define amdgpu_ps <4 x float> @raw_ptr_buffer_load_format_v4i32(ptr addrspace(8) inreg %rsrc) {
; SDAG-LABEL: raw_ptr_buffer_load_format_v4i32:
; SDAG:       ; %bb.0: ; %main_body
; SDAG-NEXT:    s_mov_b32 s7, s5
; SDAG-NEXT:    s_mov_b32 s6, s4
; SDAG-NEXT:    s_mov_b32 s5, s3
; SDAG-NEXT:    s_mov_b32 s4, s2
; SDAG-NEXT:    buffer_load_format_xyzw v[0:3], off, s[4:7], 0
; SDAG-NEXT:    s_waitcnt vmcnt(0)
; SDAG-NEXT:    ; return to shader part epilog
;
; GISEL-LABEL: raw_ptr_buffer_load_format_v4i32:
; GISEL:       ; %bb.0: ; %main_body
; GISEL-NEXT:    s_mov_b32 s0, s2
; GISEL-NEXT:    s_mov_b32 s1, s3
; GISEL-NEXT:    s_mov_b32 s2, s4
; GISEL-NEXT:    s_mov_b32 s3, s5
; GISEL-NEXT:    buffer_load_format_xyzw v[0:3], off, s[0:3], 0
; GISEL-NEXT:    s_waitcnt vmcnt(0)
; GISEL-NEXT:    v_readfirstlane_b32 s0, v0
; GISEL-NEXT:    v_readfirstlane_b32 s1, v1
; GISEL-NEXT:    v_readfirstlane_b32 s2, v2
; GISEL-NEXT:    v_readfirstlane_b32 s3, v3
; GISEL-NEXT:    v_mov_b32_e32 v0, s0
; GISEL-NEXT:    v_mov_b32_e32 v1, s1
; GISEL-NEXT:    v_mov_b32_e32 v2, s2
; GISEL-NEXT:    v_mov_b32_e32 v3, s3
; GISEL-NEXT:    ; return to shader part epilog
main_body:
  %data = call <4 x i32> @llvm.amdgcn.raw.ptr.buffer.load.format.v4i32(ptr addrspace(8) %rsrc, i32 0, i32 0, i32 0)
  %fdata = bitcast <4 x i32> %data to <4 x float>
  ret <4 x float> %fdata
}

define amdgpu_ps <4 x float> @raw_ptr_buffer_load_format_ofs_v4i32(ptr addrspace(8) inreg %rsrc, i32 %voffset) {
; SDAG-LABEL: raw_ptr_buffer_load_format_ofs_v4i32:
; SDAG:       ; %bb.0: ; %main_body
; SDAG-NEXT:    s_mov_b32 s7, s5
; SDAG-NEXT:    s_mov_b32 s6, s4
; SDAG-NEXT:    s_mov_b32 s5, s3
; SDAG-NEXT:    s_mov_b32 s4, s2
; SDAG-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[4:7], 0 offen
; SDAG-NEXT:    s_waitcnt vmcnt(0)
; SDAG-NEXT:    ; return to shader part epilog
;
; GISEL-LABEL: raw_ptr_buffer_load_format_ofs_v4i32:
; GISEL:       ; %bb.0: ; %main_body
; GISEL-NEXT:    s_mov_b32 s0, s2
; GISEL-NEXT:    s_mov_b32 s1, s3
; GISEL-NEXT:    s_mov_b32 s2, s4
; GISEL-NEXT:    s_mov_b32 s3, s5
; GISEL-NEXT:    buffer_load_format_xyzw v[0:3], v0, s[0:3], 0 offen
; GISEL-NEXT:    s_waitcnt vmcnt(0)
; GISEL-NEXT:    ; return to shader part epilog
main_body:
  %data = call <4 x i32> @llvm.amdgcn.raw.ptr.buffer.load.format.v4i32(ptr addrspace(8) %rsrc, i32 %voffset, i32 0, i32 0)
  %fdata = bitcast <4 x i32> %data to <4 x float>
  ret <4 x float> %fdata
}

define amdgpu_ps float @raw_ptr_buffer_load_format_i32(ptr addrspace(8) inreg %rsrc, i32 %voffset, i32 inreg %soffset) {
; SDAG-LABEL: raw_ptr_buffer_load_format_i32:
; SDAG:       ; %bb.0: ; %main_body
; SDAG-NEXT:    s_mov_b32 s11, s5
; SDAG-NEXT:    s_mov_b32 s10, s4
; SDAG-NEXT:    s_mov_b32 s9, s3
; SDAG-NEXT:    s_mov_b32 s8, s2
; SDAG-NEXT:    buffer_load_format_x v0, v0, s[8:11], s6 offen
; SDAG-NEXT:    s_waitcnt vmcnt(0)
; SDAG-NEXT:    ; return to shader part epilog
;
; GISEL-LABEL: raw_ptr_buffer_load_format_i32:
; GISEL:       ; %bb.0: ; %main_body
; GISEL-NEXT:    s_mov_b32 s0, s2
; GISEL-NEXT:    s_mov_b32 s1, s3
; GISEL-NEXT:    s_mov_b32 s2, s4
; GISEL-NEXT:    s_mov_b32 s3, s5
; GISEL-NEXT:    buffer_load_format_x v0, v0, s[0:3], s6 offen
; GISEL-NEXT:    s_waitcnt vmcnt(0)
; GISEL-NEXT:    ; return to shader part epilog
main_body:
  %data = call i32 @llvm.amdgcn.raw.ptr.buffer.load.format.i32(ptr addrspace(8) %rsrc, i32 %voffset, i32 %soffset, i32 0)
  %fdata = bitcast i32 %data to float
  ret float %fdata
}

; d16: the format load returns packed i16 data. These became legal for the ptr
; form at the same time as the other integer types.
define amdgpu_ps half @raw_ptr_buffer_load_format_i16(ptr addrspace(8) inreg %rsrc, i32 %voffset) {
; SDAG-LABEL: raw_ptr_buffer_load_format_i16:
; SDAG:       ; %bb.0: ; %main_body
; SDAG-NEXT:    s_mov_b32 s7, s5
; SDAG-NEXT:    s_mov_b32 s6, s4
; SDAG-NEXT:    s_mov_b32 s5, s3
; SDAG-NEXT:    s_mov_b32 s4, s2
; SDAG-NEXT:    buffer_load_format_d16_x v0, v0, s[4:7], 0 offen
; SDAG-NEXT:    s_waitcnt vmcnt(0)
; SDAG-NEXT:    ; return to shader part epilog
;
; GISEL-LABEL: raw_ptr_buffer_load_format_i16:
; GISEL:       ; %bb.0: ; %main_body
; GISEL-NEXT:    s_mov_b32 s0, s2
; GISEL-NEXT:    s_mov_b32 s1, s3
; GISEL-NEXT:    s_mov_b32 s2, s4
; GISEL-NEXT:    s_mov_b32 s3, s5
; GISEL-NEXT:    buffer_load_format_d16_x v0, v0, s[0:3], 0 offen
; GISEL-NEXT:    s_waitcnt vmcnt(0)
; GISEL-NEXT:    ; return to shader part epilog
main_body:
  %data = call i16 @llvm.amdgcn.raw.ptr.buffer.load.format.i16(ptr addrspace(8) %rsrc, i32 %voffset, i32 0, i32 0)
  %hdata = bitcast i16 %data to half
  ret half %hdata
}

define amdgpu_ps <4 x half> @raw_ptr_buffer_load_format_v4i16(ptr addrspace(8) inreg %rsrc, i32 %voffset) {
; GFX8-SDAG-LABEL: raw_ptr_buffer_load_format_v4i16:
; GFX8-SDAG:       ; %bb.0: ; %main_body
; GFX8-SDAG-NEXT:    s_mov_b32 s7, s5
; GFX8-SDAG-NEXT:    s_mov_b32 s6, s4
; GFX8-SDAG-NEXT:    s_mov_b32 s5, s3
; GFX8-SDAG-NEXT:    s_mov_b32 s4, s2
; GFX8-SDAG-NEXT:    buffer_load_format_d16_xyzw v[0:3], v0, s[4:7], 0 offen
; GFX8-SDAG-NEXT:    s_mov_b32 s0, 0x1000504
; GFX8-SDAG-NEXT:    s_waitcnt vmcnt(0)
; GFX8-SDAG-NEXT:    v_perm_b32 v0, v0, v1, s0
; GFX8-SDAG-NEXT:    v_perm_b32 v1, v2, v3, s0
; GFX8-SDAG-NEXT:    ; return to shader part epilog
;
; GFX8-GISEL-LABEL: raw_ptr_buffer_load_format_v4i16:
; GFX8-GISEL:       ; %bb.0: ; %main_body
; GFX8-GISEL-NEXT:    s_mov_b32 s0, s2
; GFX8-GISEL-NEXT:    s_mov_b32 s1, s3
; GFX8-GISEL-NEXT:    s_mov_b32 s2, s4
; GFX8-GISEL-NEXT:    s_mov_b32 s3, s5
; GFX8-GISEL-NEXT:    buffer_load_format_d16_xyzw v[0:3], v0, s[0:3], 0 offen
; GFX8-GISEL-NEXT:    s_waitcnt vmcnt(0)
; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v1, 16, v1
; GFX8-GISEL-NEXT:    v_lshlrev_b32_e32 v3, 16, v3
; GFX8-GISEL-NEXT:    v_or_b32_sdwa v0, v0, v1 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
; GFX8-GISEL-NEXT:    v_or_b32_sdwa v1, v2, v3 dst_sel:DWORD dst_unused:UNUSED_PAD src0_sel:WORD_0 src1_sel:DWORD
; GFX8-GISEL-NEXT:    ; return to shader part epilog
;
; GFX9-SDAG-LABEL: raw_ptr_buffer_load_format_v4i16:
; GFX9-SDAG:       ; %bb.0: ; %main_body
; GFX9-SDAG-NEXT:    s_mov_b32 s7, s5
; GFX9-SDAG-NEXT:    s_mov_b32 s6, s4
; GFX9-SDAG-NEXT:    s_mov_b32 s5, s3
; GFX9-SDAG-NEXT:    s_mov_b32 s4, s2
; GFX9-SDAG-NEXT:    buffer_load_format_d16_xyzw v[0:1], v0, s[4:7], 0 offen
; GFX9-SDAG-NEXT:    s_waitcnt vmcnt(0)
; GFX9-SDAG-NEXT:    ; return to shader part epilog
;
; GFX9-GISEL-LABEL: raw_ptr_buffer_load_format_v4i16:
; GFX9-GISEL:       ; %bb.0: ; %main_body
; GFX9-GISEL-NEXT:    s_mov_b32 s0, s2
; GFX9-GISEL-NEXT:    s_mov_b32 s1, s3
; GFX9-GISEL-NEXT:    s_mov_b32 s2, s4
; GFX9-GISEL-NEXT:    s_mov_b32 s3, s5
; GFX9-GISEL-NEXT:    buffer_load_format_d16_xyzw v[0:1], v0, s[0:3], 0 offen
; GFX9-GISEL-NEXT:    s_waitcnt vmcnt(0)
; GFX9-GISEL-NEXT:    ; return to shader part epilog
main_body:
  %data = call <4 x i16> @llvm.amdgcn.raw.ptr.buffer.load.format.v4i16(ptr addrspace(8) %rsrc, i32 %voffset, i32 0, i32 0)
  %hdata = bitcast <4 x i16> %data to <4 x half>
  ret <4 x half> %hdata
}
