brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.9 KiB · a67cf22 Raw
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