313 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a -run-pass=si-load-store-opt -verify-machineinstrs -o - %s | FileCheck -check-prefix=GCN %s3 4---5name: merge_flat_global_load_dword_26body: |7 bb.0.entry:8 9 ; GCN-LABEL: name: merge_flat_global_load_dword_210 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF11 ; GCN-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64_align2 = FLAT_LOAD_DWORDX2 [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s64) from `ptr poison` + 4, align 4)12 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[FLAT_LOAD_DWORDX2_]].sub013 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed [[FLAT_LOAD_DWORDX2_]].sub114 ; GCN-NEXT: S_NOP 0, implicit [[COPY]], implicit [[COPY1]]15 %0:vreg_64_align2 = IMPLICIT_DEF16 %1:vgpr_32 = FLAT_LOAD_DWORD %0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison` + 4, basealign 4)17 %2:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 8, basealign 4, addrspace 1)18 S_NOP 0, implicit %1, implicit %219...20 21---22name: merge_global_flat_load_dword_223body: |24 bb.0.entry:25 26 ; GCN-LABEL: name: merge_global_flat_load_dword_227 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF28 ; GCN-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64_align2 = FLAT_LOAD_DWORDX2 [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s64) from `ptr addrspace(1) poison`)29 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[FLAT_LOAD_DWORDX2_]].sub030 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed [[FLAT_LOAD_DWORDX2_]].sub131 ; GCN-NEXT: S_NOP 0, implicit [[COPY]], implicit [[COPY1]]32 %0:vreg_64_align2 = IMPLICIT_DEF33 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison`, basealign 8, addrspace 1)34 %2:vgpr_32 = FLAT_LOAD_DWORD %0, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison` + 4, basealign 8)35 S_NOP 0, implicit %1, implicit %236...37 38---39name: merge_global_flat_load_dword_340body: |41 bb.0.entry:42 43 ; GCN-LABEL: name: merge_global_flat_load_dword_344 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF45 ; GCN-NEXT: [[FLAT_LOAD_DWORDX3_:%[0-9]+]]:vreg_96_align2 = FLAT_LOAD_DWORDX3 [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s96) from `ptr poison`, align 16)46 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY [[FLAT_LOAD_DWORDX3_]].sub0_sub147 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed [[FLAT_LOAD_DWORDX3_]].sub248 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub149 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY killed [[COPY]].sub050 ; GCN-NEXT: S_NOP 0, implicit [[COPY2]], implicit [[COPY3]]51 %0:vreg_64_align2 = IMPLICIT_DEF52 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 4, basealign 8, addrspace 1)53 %2:vgpr_32 = FLAT_LOAD_DWORD %0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison`, basealign 16)54 %3:vgpr_32 = GLOBAL_LOAD_DWORD %0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 8, basealign 8, addrspace 1)55 S_NOP 0, implicit %1, implicit %256...57 58---59name: merge_global_flat_load_dword_460body: |61 bb.0.entry:62 63 ; GCN-LABEL: name: merge_global_flat_load_dword_464 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF65 ; GCN-NEXT: [[FLAT_LOAD_DWORDX4_:%[0-9]+]]:vreg_128_align2 = FLAT_LOAD_DWORDX4 [[DEF]], 4, 0, implicit $exec, implicit $flat_scr :: (load (s128) from `ptr addrspace(1) poison` + 4, align 4, basealign 8)66 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_96_align2 = COPY [[FLAT_LOAD_DWORDX4_]].sub0_sub1_sub267 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed [[FLAT_LOAD_DWORDX4_]].sub368 ; GCN-NEXT: [[COPY2:%[0-9]+]]:vreg_64_align2 = COPY [[COPY]].sub0_sub169 ; GCN-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY killed [[COPY]].sub270 ; GCN-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[COPY2]].sub071 ; GCN-NEXT: [[COPY5:%[0-9]+]]:vgpr_32 = COPY killed [[COPY2]].sub172 ; GCN-NEXT: S_NOP 0, implicit [[COPY4]], implicit [[COPY5]], implicit [[COPY3]], implicit [[COPY1]]73 %0:vreg_64_align2 = IMPLICIT_DEF74 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 4, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 4, basealign 8, addrspace 1)75 %2:vgpr_32 = GLOBAL_LOAD_DWORD %0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 8, basealign 8, addrspace 1)76 %3:vgpr_32 = GLOBAL_LOAD_DWORD %0, 12, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 12, basealign 8, addrspace 1)77 %4:vgpr_32 = FLAT_LOAD_DWORD %0, 16, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison` + 16)78 S_NOP 0, implicit %1, implicit %2, implicit %3, implicit %479...80 81---82name: merge_flat_global_load_dwordx283body: |84 bb.0.entry:85 86 ; GCN-LABEL: name: merge_flat_global_load_dwordx287 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF88 ; GCN-NEXT: [[FLAT_LOAD_DWORDX4_:%[0-9]+]]:vreg_128_align2 = FLAT_LOAD_DWORDX4 [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s128) from `ptr poison`, align 8)89 ; GCN-NEXT: [[COPY:%[0-9]+]]:vreg_64_align2 = COPY [[FLAT_LOAD_DWORDX4_]].sub0_sub190 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_64_align2 = COPY killed [[FLAT_LOAD_DWORDX4_]].sub2_sub391 ; GCN-NEXT: S_NOP 0, implicit [[COPY]], implicit [[COPY1]]92 %0:vreg_64_align2 = IMPLICIT_DEF93 %1:vreg_64_align2 = FLAT_LOAD_DWORDX2 %0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s64) from `ptr poison`)94 %2:vreg_64_align2 = GLOBAL_LOAD_DWORDX2 %0, 8, 0, implicit $exec :: (load (s64) from `ptr addrspace(1) poison`, addrspace 1)95 S_NOP 0, implicit %1, implicit %296...97 98---99name: merge_flat_global_load_dwordx3100body: |101 bb.0.entry:102 103 ; GCN-LABEL: name: merge_flat_global_load_dwordx3104 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF105 ; GCN-NEXT: [[FLAT_LOAD_DWORDX4_:%[0-9]+]]:vreg_128_align2 = FLAT_LOAD_DWORDX4 [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s128) from `ptr poison`, align 4)106 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[FLAT_LOAD_DWORDX4_]].sub0107 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_96_align2 = COPY killed [[FLAT_LOAD_DWORDX4_]].sub1_sub2_sub3108 ; GCN-NEXT: S_NOP 0, implicit [[COPY]], implicit [[COPY1]]109 %0:vreg_64_align2 = IMPLICIT_DEF110 %1:vgpr_32 = FLAT_LOAD_DWORD %0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison`)111 %2:vreg_96_align2 = GLOBAL_LOAD_DWORDX3 %0, 4, 0, implicit $exec :: (load (s96) from `ptr addrspace(1) poison`, addrspace 1)112 S_NOP 0, implicit %1, implicit %2113...114 115---116name: merge_global_flat_load_dwordx3117body: |118 bb.0.entry:119 120 ; GCN-LABEL: name: merge_global_flat_load_dwordx3121 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF122 ; GCN-NEXT: [[FLAT_LOAD_DWORDX4_:%[0-9]+]]:vreg_128_align2 = FLAT_LOAD_DWORDX4 [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s128) from `ptr addrspace(1) poison`, align 4)123 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[FLAT_LOAD_DWORDX4_]].sub0124 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vreg_96_align2 = COPY killed [[FLAT_LOAD_DWORDX4_]].sub1_sub2_sub3125 ; GCN-NEXT: S_NOP 0, implicit [[COPY]], implicit [[COPY1]]126 %0:vreg_64_align2 = IMPLICIT_DEF127 %1:vgpr_32 = GLOBAL_LOAD_DWORD %0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison`, addrspace 1)128 %2:vreg_96_align2 = FLAT_LOAD_DWORDX3 %0, 4, 0, implicit $exec, implicit $flat_scr :: (load (s96) from `ptr poison`)129 S_NOP 0, implicit %1, implicit %2130...131 132---133name: no_merge_flat_global_load_dword_saddr134body: |135 bb.0.entry:136 137 ; GCN-LABEL: name: no_merge_flat_global_load_dword_saddr138 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF139 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_64_xexec_xnull = IMPLICIT_DEF140 ; GCN-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[DEF]], 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison`)141 ; GCN-NEXT: [[GLOBAL_LOAD_DWORDX2_SADDR:%[0-9]+]]:vreg_64_align2 = GLOBAL_LOAD_DWORDX2_SADDR [[DEF1]], [[DEF]].sub0, 4, 0, implicit $exec :: (load (s64) from `ptr addrspace(1) poison` + 4, align 4, addrspace 1)142 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[GLOBAL_LOAD_DWORDX2_SADDR]].sub0143 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed [[GLOBAL_LOAD_DWORDX2_SADDR]].sub1144 ; GCN-NEXT: S_NOP 0, implicit [[FLAT_LOAD_DWORD]], implicit [[COPY]], implicit [[COPY1]]145 %0:vreg_64_align2 = IMPLICIT_DEF146 %1:sreg_64_xexec_xnull = IMPLICIT_DEF147 %2:vgpr_32 = FLAT_LOAD_DWORD %0, 0, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison`, basealign 4)148 %3:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR %1, %0.sub0, 4, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 4, basealign 4, addrspace 1)149 %4:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR %1, %0.sub0, 8, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison` + 8, basealign 4, addrspace 1)150 S_NOP 0, implicit %2, implicit %3, implicit %4151...152 153---154name: no_merge_global_saddr_flat_load_dword155body: |156 bb.0.entry:157 158 ; GCN-LABEL: name: no_merge_global_saddr_flat_load_dword159 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF160 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_64_xexec_xnull = IMPLICIT_DEF161 ; GCN-NEXT: [[GLOBAL_LOAD_DWORD_SADDR:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR [[DEF1]], [[DEF]].sub0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison`, addrspace 1)162 ; GCN-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64_align2 = FLAT_LOAD_DWORDX2 [[DEF]], 4, 0, implicit $exec, implicit $flat_scr :: (load (s64) from `ptr poison` + 4, align 4)163 ; GCN-NEXT: [[COPY:%[0-9]+]]:vgpr_32 = COPY [[FLAT_LOAD_DWORDX2_]].sub0164 ; GCN-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY killed [[FLAT_LOAD_DWORDX2_]].sub1165 ; GCN-NEXT: S_NOP 0, implicit [[GLOBAL_LOAD_DWORD_SADDR]], implicit [[COPY]], implicit [[COPY1]]166 %0:vreg_64_align2 = IMPLICIT_DEF167 %1:sreg_64_xexec_xnull = IMPLICIT_DEF168 %2:vgpr_32 = GLOBAL_LOAD_DWORD_SADDR %1, %0.sub0, 0, 0, implicit $exec :: (load (s32) from `ptr addrspace(1) poison`, addrspace 1)169 %3:vgpr_32 = FLAT_LOAD_DWORD %0, 4, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison` + 4)170 %4:vgpr_32 = FLAT_LOAD_DWORD %0, 8, 0, implicit $exec, implicit $flat_scr :: (load (s32) from `ptr poison` + 8)171 S_NOP 0, implicit %2, implicit %3, implicit %4172...173 174---175name: merge_flat_global_store_dword_2176body: |177 bb.0.entry:178 ; GCN-LABEL: name: merge_flat_global_store_dword_2179 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF180 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF181 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF182 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE killed [[DEF1]], %subreg.sub0, killed [[DEF2]], %subreg.sub1183 ; GCN-NEXT: FLAT_STORE_DWORDX2 [[DEF]], killed [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64) into `ptr poison`, align 4)184 %0:vreg_64_align2 = IMPLICIT_DEF185 %1:vgpr_32 = IMPLICIT_DEF186 %2:vgpr_32 = IMPLICIT_DEF187 FLAT_STORE_DWORD %0, killed %1, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)188 GLOBAL_STORE_DWORD killed %0, killed %2, 4, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)189...190 191---192name: merge_global_flat_store_dword_2193body: |194 bb.0.entry:195 ; GCN-LABEL: name: merge_global_flat_store_dword_2196 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF197 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF198 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF199 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64_align2 = REG_SEQUENCE killed [[DEF1]], %subreg.sub0, killed [[DEF2]], %subreg.sub1200 ; GCN-NEXT: FLAT_STORE_DWORDX2 [[DEF]], killed [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s64) into `ptr addrspace(1) poison`, align 4)201 %0:vreg_64_align2 = IMPLICIT_DEF202 %1:vgpr_32 = IMPLICIT_DEF203 %2:vgpr_32 = IMPLICIT_DEF204 GLOBAL_STORE_DWORD %0, killed %1, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)205 FLAT_STORE_DWORD %0, killed %2, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)206...207 208---209name: merge_flat_global_store_dwordx2210body: |211 bb.0.entry:212 ; GCN-LABEL: name: merge_flat_global_store_dwordx2213 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF214 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF215 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF216 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[DEF1]], %subreg.sub0, [[DEF2]], %subreg.sub1_sub2217 ; GCN-NEXT: FLAT_STORE_DWORDX3 [[DEF]], killed [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s96) into `ptr poison`, align 4)218 %0:vreg_64_align2 = IMPLICIT_DEF219 %1:vgpr_32 = IMPLICIT_DEF220 %2:vreg_64_align2 = IMPLICIT_DEF221 FLAT_STORE_DWORD %0, %1, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)222 GLOBAL_STORE_DWORDX2 %0, %2, 4, 0, implicit $exec :: (store (s64) into `ptr addrspace(1) poison`, addrspace 1)223...224 225---226name: merge_flat_global_store_dwordx3227body: |228 bb.0.entry:229 ; GCN-LABEL: name: merge_flat_global_store_dwordx3230 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF231 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF232 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF233 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128_align2 = REG_SEQUENCE [[DEF1]], %subreg.sub0, [[DEF2]], %subreg.sub1_sub2_sub3234 ; GCN-NEXT: FLAT_STORE_DWORDX4 [[DEF]], killed [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s128) into `ptr poison`, align 4)235 %0:vreg_64_align2 = IMPLICIT_DEF236 %1:vgpr_32 = IMPLICIT_DEF237 %2:vreg_96_align2 = IMPLICIT_DEF238 FLAT_STORE_DWORD %0, %1, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)239 GLOBAL_STORE_DWORDX3 %0, %2, 4, 0, implicit $exec :: (store (s96) into `ptr addrspace(1) poison`, addrspace 1)240...241 242---243name: merge_global_flat_store_dwordx2244body: |245 bb.0.entry:246 ; GCN-LABEL: name: merge_global_flat_store_dwordx2247 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF248 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF249 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF250 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_96_align2 = REG_SEQUENCE [[DEF1]], %subreg.sub2, [[DEF2]], %subreg.sub0_sub1251 ; GCN-NEXT: FLAT_STORE_DWORDX3 [[DEF]], killed [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s96) into `ptr poison`, align 8)252 %0:vreg_64_align2 = IMPLICIT_DEF253 %1:vgpr_32 = IMPLICIT_DEF254 %2:vreg_64_align2 = IMPLICIT_DEF255 GLOBAL_STORE_DWORD %0, %1, 8, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)256 FLAT_STORE_DWORDX2 %0, %2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s64) into `ptr poison`)257...258 259---260name: merge_global_flat_store_dwordx3261body: |262 bb.0.entry:263 ; GCN-LABEL: name: merge_global_flat_store_dwordx3264 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF265 ; GCN-NEXT: [[DEF1:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF266 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vreg_96_align2 = IMPLICIT_DEF267 ; GCN-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_128_align2 = REG_SEQUENCE [[DEF1]], %subreg.sub3, [[DEF2]], %subreg.sub0_sub1_sub2268 ; GCN-NEXT: FLAT_STORE_DWORDX4 [[DEF]], killed [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s128) into `ptr poison`)269 %0:vreg_64_align2 = IMPLICIT_DEF270 %1:vgpr_32 = IMPLICIT_DEF271 %2:vreg_96_align2 = IMPLICIT_DEF272 GLOBAL_STORE_DWORD %0, %1, 12, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)273 FLAT_STORE_DWORDX3 %0, %2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s96) into `ptr poison`)274...275 276---277name: no_merge_flat_global_store_dword_saddr278body: |279 bb.0.entry:280 ; GCN-LABEL: name: no_merge_flat_global_store_dword_saddr281 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF282 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_64_xexec_xnull = IMPLICIT_DEF283 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF284 ; GCN-NEXT: [[DEF3:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF285 ; GCN-NEXT: FLAT_STORE_DWORD [[DEF]], [[DEF2]], 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)286 ; GCN-NEXT: GLOBAL_STORE_DWORD_SADDR [[DEF]].sub0, [[DEF3]], [[DEF1]], 4, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)287 %0:vreg_64_align2 = IMPLICIT_DEF288 %1:sreg_64_xexec_xnull = IMPLICIT_DEF289 %2:vgpr_32 = IMPLICIT_DEF290 %3:vgpr_32 = IMPLICIT_DEF291 FLAT_STORE_DWORD %0, %2, 0, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)292 GLOBAL_STORE_DWORD_SADDR %0.sub0, %3, %1, 4, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)293...294 295---296name: no_merge_global_saddr_flat_store_dword297body: |298 bb.0.entry:299 ; GCN-LABEL: name: no_merge_global_saddr_flat_store_dword300 ; GCN: [[DEF:%[0-9]+]]:vreg_64_align2 = IMPLICIT_DEF301 ; GCN-NEXT: [[DEF1:%[0-9]+]]:sreg_64_xexec_xnull = IMPLICIT_DEF302 ; GCN-NEXT: [[DEF2:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF303 ; GCN-NEXT: [[DEF3:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF304 ; GCN-NEXT: GLOBAL_STORE_DWORD_SADDR [[DEF]].sub0, [[DEF2]], [[DEF1]], 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)305 ; GCN-NEXT: FLAT_STORE_DWORD [[DEF]], [[DEF3]], 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)306 %0:vreg_64_align2 = IMPLICIT_DEF307 %1:sreg_64_xexec_xnull = IMPLICIT_DEF308 %2:vgpr_32 = IMPLICIT_DEF309 %3:vgpr_32 = IMPLICIT_DEF310 GLOBAL_STORE_DWORD_SADDR %0.sub0, %2, %1, 0, 0, implicit $exec :: (store (s32) into `ptr addrspace(1) poison`, addrspace 1)311 FLAT_STORE_DWORD %0, %3, 4, 0, implicit $exec, implicit $flat_scr :: (store (s32) into `ptr poison`)312...313