xref: /llvm-project/llvm/test/CodeGen/AMDGPU/GlobalISel/llvm.amdgcn.raw.ptr.buffer.store.format.f16.ll (revision c3cfbbc4160c3e0284034c98b332b468328458e3)
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