1faa2c678SKrzysztof Drewniak; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2faa2c678SKrzysztof Drewniak; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=tonga -stop-after=instruction-select -o - %s | FileCheck -check-prefix=UNPACKED %s 3faa2c678SKrzysztof Drewniak; RUN: llc -global-isel -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx810 -stop-after=instruction-select -o - %s | FileCheck -check-prefix=PACKED %s 4faa2c678SKrzysztof Drewniak 5faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_f16(ptr addrspace(8) inreg %rsrc, half %val, i32 %voffset, i32 inreg %soffset) { 6faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_f16 7faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 8faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 9faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 10faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 11faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 12faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 13faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 14faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 15faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 16faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 17faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 18ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_X_gfx80_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 0, 0, implicit $exec :: (dereferenceable store (s16) into %ir.rsrc, align 1, addrspace 8) 19faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 20*c3cfbbc4Spvanhout ; 21faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_f16 22faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 23faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 24faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 25faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 26faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 27faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 28faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 29faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 30faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 31faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 32faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 33ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_X_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 0, 0, implicit $exec :: (dereferenceable store (s16) into %ir.rsrc, align 1, addrspace 8) 34faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 35faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.f16(half %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 %soffset, i32 0) 36faa2c678SKrzysztof Drewniak ret void 37faa2c678SKrzysztof Drewniak} 38faa2c678SKrzysztof Drewniak 39faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__voffset_4095__sgpr_soffset_f16(ptr addrspace(8) inreg %rsrc, half %val, i32 inreg %soffset) { 40faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__voffset_4095__sgpr_soffset_f16 41faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 42faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0 43faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 44faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 45faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 46faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 47faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 48faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 49faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr6 50faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 51ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_X_gfx80_OFFSET_exact [[COPY4]], [[REG_SEQUENCE]], [[COPY5]], 4095, 0, 0, implicit $exec :: (dereferenceable store (s16) into %ir.rsrc, align 1, addrspace 8) 52faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 53*c3cfbbc4Spvanhout ; 54faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__voffset_4095__sgpr_soffset_f16 55faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 56faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0 57faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 58faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 59faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 60faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 61faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 62faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 63faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:sreg_32 = COPY $sgpr6 64faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 65ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_X_OFFSET_exact [[COPY4]], [[REG_SEQUENCE]], [[COPY5]], 4095, 0, 0, implicit $exec :: (dereferenceable store (s16) into %ir.rsrc, align 1, addrspace 8) 66faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 67faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.f16(half %val, ptr addrspace(8) %rsrc, i32 4095, i32 %soffset, i32 0) 68faa2c678SKrzysztof Drewniak ret void 69faa2c678SKrzysztof Drewniak} 70faa2c678SKrzysztof Drewniak 71faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16(ptr addrspace(8) inreg %rsrc, <2 x half> %val, i32 %voffset, i32 inreg %soffset) { 72faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16 73faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 74faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 75faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 76faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 77faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 78faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 79faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 80faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 81faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 82faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 83faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 16 84faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 85faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY7]], [[COPY4]], implicit $exec 86faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1 87faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 88ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY5]], [[REG_SEQUENCE1]], [[COPY6]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 89faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 90*c3cfbbc4Spvanhout ; 91faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16 92faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 93faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 94faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 95faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 96faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 97faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 98faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 99faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 100faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 101faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 102faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 103ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 104faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 105faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 %soffset, i32 0) 106faa2c678SKrzysztof Drewniak ret void 107faa2c678SKrzysztof Drewniak} 108faa2c678SKrzysztof Drewniak 109faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16(ptr addrspace(8) inreg %rsrc, <4 x half> %val, i32 %voffset, i32 inreg %soffset) { 110faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16 111faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 112faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1, $vgpr2 113faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 114faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 115faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 116faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 117faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 118faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 119faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 120faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 121faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr6 122faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 16 123faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 124faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY8]], [[COPY4]], implicit $exec 125faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY9:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 126faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY9]], [[COPY5]], implicit $exec 127faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[V_LSHRREV_B32_e64_1]], %subreg.sub3 128faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 129ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XYZW_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY6]], [[REG_SEQUENCE1]], [[COPY7]], 0, 0, 0, implicit $exec :: (dereferenceable store (<4 x s16>) into %ir.rsrc, align 1, addrspace 8) 130faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 131*c3cfbbc4Spvanhout ; 132faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16 133faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 134faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1, $vgpr2 135faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 136faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 137faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 138faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 139faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 140faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 141faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 142faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY5]], %subreg.sub1 143faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr2 144faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr6 145faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 146ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XYZW_OFFEN_exact [[REG_SEQUENCE]], [[COPY6]], [[REG_SEQUENCE1]], [[COPY7]], 0, 0, 0, implicit $exec :: (dereferenceable store (<4 x s16>) into %ir.rsrc, align 1, addrspace 8) 147faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 148faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v4f16(<4 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 %soffset, i32 0) 149faa2c678SKrzysztof Drewniak ret void 150faa2c678SKrzysztof Drewniak} 151faa2c678SKrzysztof Drewniak 152faa2c678SKrzysztof Drewniak; Make sure unpack code is emitted outside of loop 153faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__vgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16(ptr addrspace(8) %rsrc, <4 x half> %val, i32 %voffset, i32 inreg %soffset) { 154faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__vgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16 155faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 156faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.2(0x80000000) 157faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6 158faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 159faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 160faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 161faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 162faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 163faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 164faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr5 165faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr6 166faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr2 167faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 16 168faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 169faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY8]], [[COPY4]], implicit $exec 170faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY9:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 171faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY9]], [[COPY5]], implicit $exec 172faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[V_LSHRREV_B32_e64_1]], %subreg.sub3 173faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 174faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec 175faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 176faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.2: 177faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.3(0x80000000) 178faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 179faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec 180faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY1]], implicit $exec 181faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_2:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY2]], implicit $exec 182faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_3:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY3]], implicit $exec 183faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1, [[V_READFIRSTLANE_B32_2]], %subreg.sub2, [[V_READFIRSTLANE_B32_3]], %subreg.sub3 184faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY10:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub0_sub1 185faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY11:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub2_sub3 186faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY12:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub0_sub1 187faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY13:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub2_sub3 188faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY12]], [[COPY10]], implicit $exec 189faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_CMP_EQ_U64_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY13]], [[COPY11]], implicit $exec 190*c3cfbbc4Spvanhout ; UNPACKED-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_B64 [[V_CMP_EQ_U64_e64_]], [[V_CMP_EQ_U64_e64_1]], implicit-def dead $scc 191faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[S_AND_B64_]], implicit-def $exec, implicit-def $scc, implicit $exec 192faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 193faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.3: 194faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000) 195faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 196ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XYZW_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY6]], [[REG_SEQUENCE2]], [[COPY7]], 0, 0, 0, implicit $exec :: (dereferenceable store (<4 x s16>) into %ir.rsrc, align 1, addrspace 8) 197faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc 198faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: SI_WATERFALL_LOOP %bb.2, implicit $exec 199faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 200faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.4: 201faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.5(0x80000000) 202faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 203faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: $exec = S_MOV_B64_term [[S_MOV_B64_]] 204faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 205faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.5: 206faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 207*c3cfbbc4Spvanhout ; 208faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__vgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16 209faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 210faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.2(0x80000000) 211faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6 212faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 213faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 214faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 215faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 216faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 217faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 218faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr5 219faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY5]], %subreg.sub1 220faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr6 221faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr2 222faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 223faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec 224faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 225faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.2: 226faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.3(0x80000000) 227faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 228faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec 229faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY1]], implicit $exec 230faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_2:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY2]], implicit $exec 231faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_3:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY3]], implicit $exec 232faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1, [[V_READFIRSTLANE_B32_2]], %subreg.sub2, [[V_READFIRSTLANE_B32_3]], %subreg.sub3 233faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY8:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub0_sub1 234faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY9:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub2_sub3 235faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY10:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub0_sub1 236faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY11:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub2_sub3 237faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY10]], [[COPY8]], implicit $exec 238faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_CMP_EQ_U64_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY11]], [[COPY9]], implicit $exec 239*c3cfbbc4Spvanhout ; PACKED-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_B64 [[V_CMP_EQ_U64_e64_]], [[V_CMP_EQ_U64_e64_1]], implicit-def dead $scc 240faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[S_AND_B64_]], implicit-def $exec, implicit-def $scc, implicit $exec 241faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 242faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.3: 243faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000) 244faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 245ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XYZW_OFFEN_exact [[REG_SEQUENCE]], [[COPY6]], [[REG_SEQUENCE2]], [[COPY7]], 0, 0, 0, implicit $exec :: (dereferenceable store (<4 x s16>) into %ir.rsrc, align 1, addrspace 8) 246faa2c678SKrzysztof Drewniak ; PACKED-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc 247faa2c678SKrzysztof Drewniak ; PACKED-NEXT: SI_WATERFALL_LOOP %bb.2, implicit $exec 248faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 249faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.4: 250faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.5(0x80000000) 251faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 252faa2c678SKrzysztof Drewniak ; PACKED-NEXT: $exec = S_MOV_B64_term [[S_MOV_B64_]] 253faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 254faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.5: 255faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 256faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v4f16(<4 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 %soffset, i32 0) 257faa2c678SKrzysztof Drewniak ret void 258faa2c678SKrzysztof Drewniak} 259faa2c678SKrzysztof Drewniak 260faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_soffset4095(ptr addrspace(8) inreg %rsrc, <2 x half> %val, i32 %voffset, i32 inreg %soffset) { 261faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_soffset4095 262faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 263faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 264faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 265faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 266faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 267faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 268faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 269faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 270faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 271faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4095 272faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 16 273faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_1]] 274faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY6]], [[COPY4]], implicit $exec 275faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1 276faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 277ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY5]], [[REG_SEQUENCE1]], [[S_MOV_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 278faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 279*c3cfbbc4Spvanhout ; 280faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_soffset4095 281faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 282faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 283faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 284faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 285faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 286faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 287faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 288faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 289faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 290faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4095 291faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 292ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[S_MOV_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 293faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 294faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 4095, i32 0) 295faa2c678SKrzysztof Drewniak ret void 296faa2c678SKrzysztof Drewniak} 297faa2c678SKrzysztof Drewniak 298faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_soffset4096(ptr addrspace(8) inreg %rsrc, <2 x half> %val, i32 %voffset, i32 inreg %soffset) { 299faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_soffset4096 300faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 301faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 302faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 303faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 304faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 305faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 306faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 307faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 308faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 309faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4096 310faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 16 311faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_1]] 312faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY6]], [[COPY4]], implicit $exec 313faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1 314faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 315ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY5]], [[REG_SEQUENCE1]], [[S_MOV_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 316faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 317*c3cfbbc4Spvanhout ; 318faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_soffset4096 319faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 320faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 321faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 322faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 323faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 324faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 325faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 326faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 327faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 328faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4096 329faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 330ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[S_MOV_B32_]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 331faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 332faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset, i32 4096, i32 0) 333faa2c678SKrzysztof Drewniak ret void 334faa2c678SKrzysztof Drewniak} 335faa2c678SKrzysztof Drewniak 336faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_16(ptr addrspace(8) inreg %rsrc, <2 x half> %val, i32 %voffset, i32 inreg %soffset) { 337faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_16 338faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 339faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 340faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 341faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 342faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 343faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 344faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 345faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 346faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 347faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 348faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 16 349faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 350faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY7]], [[COPY4]], implicit $exec 351faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1 352faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 353ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY5]], [[REG_SEQUENCE1]], [[COPY6]], 16, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 354faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 355*c3cfbbc4Spvanhout ; 356faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_16 357faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 358faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 359faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 360faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 361faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 362faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 363faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 364faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 365faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 366faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 367faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 368ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 16, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 369faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 370faa2c678SKrzysztof Drewniak %voffset.add = add i32 %voffset, 16 371faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 %soffset, i32 0) 372faa2c678SKrzysztof Drewniak ret void 373faa2c678SKrzysztof Drewniak} 374faa2c678SKrzysztof Drewniak 375faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_4095(ptr addrspace(8) inreg %rsrc, <2 x half> %val, i32 %voffset, i32 inreg %soffset) { 376faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_4095 377faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 378faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 379faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 380faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 381faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 382faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 383faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 384faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 385faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 386faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 387faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 16 388faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 389faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY7]], [[COPY4]], implicit $exec 390faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1 391faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 392ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[COPY5]], [[REG_SEQUENCE1]], [[COPY6]], 4095, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 393faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 394*c3cfbbc4Spvanhout ; 395faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_4095 396faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 397faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 398faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 399faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 400faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 401faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 402faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 403faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 404faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 405faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 406faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 407ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_OFFEN_exact [[COPY4]], [[COPY5]], [[REG_SEQUENCE]], [[COPY6]], 4095, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 408faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 409faa2c678SKrzysztof Drewniak %voffset.add = add i32 %voffset, 4095 410faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 %soffset, i32 0) 411faa2c678SKrzysztof Drewniak ret void 412faa2c678SKrzysztof Drewniak} 413faa2c678SKrzysztof Drewniak 414faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_4096(ptr addrspace(8) inreg %rsrc, <2 x half> %val, i32 %voffset, i32 inreg %soffset) { 415faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_4096 416faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 417faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 418faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 419faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 420faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 421faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 422faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 423faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 424faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 425faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 426faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4096 427faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 428faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY5]], [[COPY7]], 0, implicit $exec 429faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 16 430faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_1]] 431faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY8]], [[COPY4]], implicit $exec 432faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1 433faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 434ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[V_ADD_CO_U32_e64_]], [[REG_SEQUENCE1]], [[COPY6]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 435faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 436*c3cfbbc4Spvanhout ; 437faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__sgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v2f16_voffset_add_4096 438faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 439faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $sgpr3, $sgpr4, $sgpr5, $sgpr6, $vgpr0, $vgpr1 440faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 441faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:sreg_32 = COPY $sgpr2 442faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:sreg_32 = COPY $sgpr3 443faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:sreg_32 = COPY $sgpr4 444faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:sreg_32 = COPY $sgpr5 445faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr0 446faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr1 447faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:sreg_32 = COPY $sgpr6 448faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4096 449faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY7:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 450faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY5]], [[COPY7]], 0, implicit $exec 451faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 452ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XY_OFFEN_exact [[COPY4]], [[V_ADD_CO_U32_e64_]], [[REG_SEQUENCE]], [[COPY6]], 0, 0, 0, implicit $exec :: (dereferenceable store (<2 x s16>) into %ir.rsrc, align 1, addrspace 8) 453faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 454faa2c678SKrzysztof Drewniak %voffset.add = add i32 %voffset, 4096 455faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 %soffset, i32 0) 456faa2c678SKrzysztof Drewniak ret void 457faa2c678SKrzysztof Drewniak} 458faa2c678SKrzysztof Drewniak 459faa2c678SKrzysztof Drewniak 460faa2c678SKrzysztof Drewniak; Check what happens with offset add inside a waterfall loop 461faa2c678SKrzysztof Drewniakdefine amdgpu_ps void @raw_ptr_buffer_store_format__vgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16_add_4096(ptr addrspace(8) %rsrc, <4 x half> %val, i32 %voffset, i32 inreg %soffset) { 462faa2c678SKrzysztof Drewniak ; UNPACKED-LABEL: name: raw_ptr_buffer_store_format__vgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16_add_4096 463faa2c678SKrzysztof Drewniak ; UNPACKED: bb.1 (%ir-block.0): 464faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.2(0x80000000) 465faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: liveins: $sgpr2, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6 466faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 467faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 468faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 469faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 470faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 471faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 472faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr5 473faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr6 474faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr2 475faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4096 476faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 477faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY6]], [[COPY8]], 0, implicit $exec 478faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B32_1:%[0-9]+]]:sreg_32 = S_MOV_B32 16 479faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY9:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_1]] 480faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY9]], [[COPY4]], implicit $exec 481faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY10:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_1]] 482faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_LSHRREV_B32_e64_1:%[0-9]+]]:vgpr_32 = V_LSHRREV_B32_e64 [[COPY10]], [[COPY5]], implicit $exec 483faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[V_LSHRREV_B32_e64_]], %subreg.sub1, [[COPY5]], %subreg.sub2, [[V_LSHRREV_B32_e64_1]], %subreg.sub3 484faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 485faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec 486faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 487faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.2: 488faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.3(0x80000000) 489faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 490faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec 491faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY1]], implicit $exec 492faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_2:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY2]], implicit $exec 493faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_READFIRSTLANE_B32_3:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY3]], implicit $exec 494faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1, [[V_READFIRSTLANE_B32_2]], %subreg.sub2, [[V_READFIRSTLANE_B32_3]], %subreg.sub3 495faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY11:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub0_sub1 496faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY12:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub2_sub3 497faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY13:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub0_sub1 498faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[COPY14:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub2_sub3 499faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY13]], [[COPY11]], implicit $exec 500faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[V_CMP_EQ_U64_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY14]], [[COPY12]], implicit $exec 501*c3cfbbc4Spvanhout ; UNPACKED-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_B64 [[V_CMP_EQ_U64_e64_]], [[V_CMP_EQ_U64_e64_1]], implicit-def dead $scc 502faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[S_AND_B64_]], implicit-def $exec, implicit-def $scc, implicit $exec 503faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 504faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.3: 505faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000) 506faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 507ab379378SKrzysztof Drewniak ; UNPACKED-NEXT: BUFFER_STORE_FORMAT_D16_XYZW_gfx80_OFFEN_exact [[REG_SEQUENCE]], [[V_ADD_CO_U32_e64_]], [[REG_SEQUENCE2]], [[COPY7]], 0, 0, 0, implicit $exec :: (dereferenceable store (<4 x s16>) into %ir.rsrc, align 1, addrspace 8) 508faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc 509faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: SI_WATERFALL_LOOP %bb.2, implicit $exec 510faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 511faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.4: 512faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: successors: %bb.5(0x80000000) 513faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 514faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: $exec = S_MOV_B64_term [[S_MOV_B64_]] 515faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: {{ $}} 516faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: bb.5: 517faa2c678SKrzysztof Drewniak ; UNPACKED-NEXT: S_ENDPGM 0 518*c3cfbbc4Spvanhout ; 519faa2c678SKrzysztof Drewniak ; PACKED-LABEL: name: raw_ptr_buffer_store_format__vgpr_rsrc__vgpr_val__vgpr_voffset__sgpr_soffset_v4f16_add_4096 520faa2c678SKrzysztof Drewniak ; PACKED: bb.1 (%ir-block.0): 521faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.2(0x80000000) 522faa2c678SKrzysztof Drewniak ; PACKED-NEXT: liveins: $sgpr2, $vgpr0, $vgpr1, $vgpr2, $vgpr3, $vgpr4, $vgpr5, $vgpr6 523faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 524faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 525faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 526faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr2 527faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY $vgpr3 528faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY $vgpr4 529faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY $vgpr5 530faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[COPY4]], %subreg.sub0, [[COPY5]], %subreg.sub1 531faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY6:%[0-9]+]]:vgpr_32 = COPY $vgpr6 532faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY7:%[0-9]+]]:sreg_32 = COPY $sgpr2 533faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_MOV_B32_:%[0-9]+]]:sreg_32 = S_MOV_B32 4096 534faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY8:%[0-9]+]]:vgpr_32 = COPY [[S_MOV_B32_]] 535faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64 = V_ADD_CO_U32_e64 [[COPY6]], [[COPY8]], 0, implicit $exec 536faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE1:%[0-9]+]]:vreg_128 = REG_SEQUENCE [[COPY]], %subreg.sub0, [[COPY1]], %subreg.sub1, [[COPY2]], %subreg.sub2, [[COPY3]], %subreg.sub3 537faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_MOV_B64_:%[0-9]+]]:sreg_64_xexec = S_MOV_B64 $exec 538faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 539faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.2: 540faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.3(0x80000000) 541faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 542faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY]], implicit $exec 543faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_1:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY1]], implicit $exec 544faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_2:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY2]], implicit $exec 545faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_READFIRSTLANE_B32_3:%[0-9]+]]:sreg_32 = V_READFIRSTLANE_B32 [[COPY3]], implicit $exec 546faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[REG_SEQUENCE2:%[0-9]+]]:sgpr_128 = REG_SEQUENCE [[V_READFIRSTLANE_B32_]], %subreg.sub0, [[V_READFIRSTLANE_B32_1]], %subreg.sub1, [[V_READFIRSTLANE_B32_2]], %subreg.sub2, [[V_READFIRSTLANE_B32_3]], %subreg.sub3 547faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY9:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub0_sub1 548faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY10:%[0-9]+]]:vreg_64 = COPY [[REG_SEQUENCE1]].sub2_sub3 549faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY11:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub0_sub1 550faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[COPY12:%[0-9]+]]:sreg_64 = COPY [[REG_SEQUENCE2]].sub2_sub3 551faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_CMP_EQ_U64_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY11]], [[COPY9]], implicit $exec 552faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[V_CMP_EQ_U64_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_EQ_U64_e64 [[COPY12]], [[COPY10]], implicit $exec 553*c3cfbbc4Spvanhout ; PACKED-NEXT: [[S_AND_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_B64 [[V_CMP_EQ_U64_e64_]], [[V_CMP_EQ_U64_e64_1]], implicit-def dead $scc 554faa2c678SKrzysztof Drewniak ; PACKED-NEXT: [[S_AND_SAVEEXEC_B64_:%[0-9]+]]:sreg_64_xexec = S_AND_SAVEEXEC_B64 killed [[S_AND_B64_]], implicit-def $exec, implicit-def $scc, implicit $exec 555faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 556faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.3: 557faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.4(0x40000000), %bb.2(0x40000000) 558faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 559ab379378SKrzysztof Drewniak ; PACKED-NEXT: BUFFER_STORE_FORMAT_D16_XYZW_OFFEN_exact [[REG_SEQUENCE]], [[V_ADD_CO_U32_e64_]], [[REG_SEQUENCE2]], [[COPY7]], 0, 0, 0, implicit $exec :: (dereferenceable store (<4 x s16>) into %ir.rsrc, align 1, addrspace 8) 560faa2c678SKrzysztof Drewniak ; PACKED-NEXT: $exec = S_XOR_B64_term $exec, [[S_AND_SAVEEXEC_B64_]], implicit-def $scc 561faa2c678SKrzysztof Drewniak ; PACKED-NEXT: SI_WATERFALL_LOOP %bb.2, implicit $exec 562faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 563faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.4: 564faa2c678SKrzysztof Drewniak ; PACKED-NEXT: successors: %bb.5(0x80000000) 565faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 566faa2c678SKrzysztof Drewniak ; PACKED-NEXT: $exec = S_MOV_B64_term [[S_MOV_B64_]] 567faa2c678SKrzysztof Drewniak ; PACKED-NEXT: {{ $}} 568faa2c678SKrzysztof Drewniak ; PACKED-NEXT: bb.5: 569faa2c678SKrzysztof Drewniak ; PACKED-NEXT: S_ENDPGM 0 570faa2c678SKrzysztof Drewniak %voffset.add = add i32 %voffset, 4096 571faa2c678SKrzysztof Drewniak call void @llvm.amdgcn.raw.ptr.buffer.store.format.v4f16(<4 x half> %val, ptr addrspace(8) %rsrc, i32 %voffset.add, i32 %soffset, i32 0) 572faa2c678SKrzysztof Drewniak ret void 573faa2c678SKrzysztof Drewniak} 574faa2c678SKrzysztof Drewniak 575faa2c678SKrzysztof Drewniakdeclare void @llvm.amdgcn.raw.ptr.buffer.store.format.f16(half, ptr addrspace(8), i32, i32, i32 immarg) 576faa2c678SKrzysztof Drewniakdeclare void @llvm.amdgcn.raw.ptr.buffer.store.format.v2f16(<2 x half>, ptr addrspace(8), i32, i32, i32 immarg) 577faa2c678SKrzysztof Drewniakdeclare void @llvm.amdgcn.raw.ptr.buffer.store.format.v4f16(<4 x half>, ptr addrspace(8), i32, i32, i32 immarg) 578