brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.5 KiB · 5bfb2b2 Raw
570 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn -mcpu=hawaii -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX7 %s3# RUN: llc -mtriple=amdgcn -mcpu=gfx900 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX9 %s4# RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX10 %s5# RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX11 %s6# RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=GFX12 %s7 8---9 10name: load_atomic_flat_s32_seq_cst11legalized:       true12regBankSelected: true13tracksRegLiveness: true14 15body: |16  bb.0:17    liveins:  $vgpr0_vgpr118 19    ; GFX7-LABEL: name: load_atomic_flat_s32_seq_cst20    ; GFX7: liveins: $vgpr0_vgpr121    ; GFX7-NEXT: {{  $}}22    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr123    ; GFX7-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))24    ; GFX7-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]25    ;26    ; GFX9-LABEL: name: load_atomic_flat_s32_seq_cst27    ; GFX9: liveins: $vgpr0_vgpr128    ; GFX9-NEXT: {{  $}}29    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr130    ; GFX9-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))31    ; GFX9-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]32    ;33    ; GFX10-LABEL: name: load_atomic_flat_s32_seq_cst34    ; GFX10: liveins: $vgpr0_vgpr135    ; GFX10-NEXT: {{  $}}36    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr137    ; GFX10-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))38    ; GFX10-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]39    ;40    ; GFX11-LABEL: name: load_atomic_flat_s32_seq_cst41    ; GFX11: liveins: $vgpr0_vgpr142    ; GFX11-NEXT: {{  $}}43    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr144    ; GFX11-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))45    ; GFX11-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]46    ;47    ; GFX12-LABEL: name: load_atomic_flat_s32_seq_cst48    ; GFX12: liveins: $vgpr0_vgpr149    ; GFX12-NEXT: {{  $}}50    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr151    ; GFX12-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))52    ; GFX12-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]53    %0:vgpr(p0) = COPY $vgpr0_vgpr154    %1:vgpr(s32) = G_LOAD %0 :: (load seq_cst (s32), align 4, addrspace 0)55    $vgpr0 = COPY %156 57...58 59---60 61name: load_atomic_flat_v2s16_seq_cst62legalized:       true63regBankSelected: true64tracksRegLiveness: true65 66body: |67  bb.0:68    liveins:  $vgpr0_vgpr169 70    ; GFX7-LABEL: name: load_atomic_flat_v2s16_seq_cst71    ; GFX7: liveins: $vgpr0_vgpr172    ; GFX7-NEXT: {{  $}}73    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr174    ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<2 x s16>))75    ; GFX7-NEXT: $vgpr0 = COPY [[LOAD]](<2 x s16>)76    ;77    ; GFX9-LABEL: name: load_atomic_flat_v2s16_seq_cst78    ; GFX9: liveins: $vgpr0_vgpr179    ; GFX9-NEXT: {{  $}}80    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr181    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<2 x s16>))82    ; GFX9-NEXT: $vgpr0 = COPY [[LOAD]](<2 x s16>)83    ;84    ; GFX10-LABEL: name: load_atomic_flat_v2s16_seq_cst85    ; GFX10: liveins: $vgpr0_vgpr186    ; GFX10-NEXT: {{  $}}87    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr188    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<2 x s16>))89    ; GFX10-NEXT: $vgpr0 = COPY [[LOAD]](<2 x s16>)90    ;91    ; GFX11-LABEL: name: load_atomic_flat_v2s16_seq_cst92    ; GFX11: liveins: $vgpr0_vgpr193    ; GFX11-NEXT: {{  $}}94    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr195    ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<2 x s16>))96    ; GFX11-NEXT: $vgpr0 = COPY [[LOAD]](<2 x s16>)97    ;98    ; GFX12-LABEL: name: load_atomic_flat_v2s16_seq_cst99    ; GFX12: liveins: $vgpr0_vgpr1100    ; GFX12-NEXT: {{  $}}101    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1102    ; GFX12-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(<2 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<2 x s16>))103    ; GFX12-NEXT: $vgpr0 = COPY [[LOAD]](<2 x s16>)104    %0:vgpr(p0) = COPY $vgpr0_vgpr1105    %1:vgpr(<2 x s16>) = G_LOAD %0 :: (load seq_cst (<2 x s16>), align 4, addrspace 0)106    $vgpr0 = COPY %1107 108...109 110---111 112name: load_atomic_flat_p3_seq_cst113legalized:       true114regBankSelected: true115tracksRegLiveness: true116 117body: |118  bb.0:119    liveins:  $vgpr0_vgpr1120 121    ; GFX7-LABEL: name: load_atomic_flat_p3_seq_cst122    ; GFX7: liveins: $vgpr0_vgpr1123    ; GFX7-NEXT: {{  $}}124    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1125    ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p0) :: (load seq_cst (p3))126    ; GFX7-NEXT: $vgpr0 = COPY [[LOAD]](p3)127    ;128    ; GFX9-LABEL: name: load_atomic_flat_p3_seq_cst129    ; GFX9: liveins: $vgpr0_vgpr1130    ; GFX9-NEXT: {{  $}}131    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1132    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p0) :: (load seq_cst (p3))133    ; GFX9-NEXT: $vgpr0 = COPY [[LOAD]](p3)134    ;135    ; GFX10-LABEL: name: load_atomic_flat_p3_seq_cst136    ; GFX10: liveins: $vgpr0_vgpr1137    ; GFX10-NEXT: {{  $}}138    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1139    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p0) :: (load seq_cst (p3))140    ; GFX10-NEXT: $vgpr0 = COPY [[LOAD]](p3)141    ;142    ; GFX11-LABEL: name: load_atomic_flat_p3_seq_cst143    ; GFX11: liveins: $vgpr0_vgpr1144    ; GFX11-NEXT: {{  $}}145    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1146    ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p0) :: (load seq_cst (p3))147    ; GFX11-NEXT: $vgpr0 = COPY [[LOAD]](p3)148    ;149    ; GFX12-LABEL: name: load_atomic_flat_p3_seq_cst150    ; GFX12: liveins: $vgpr0_vgpr1151    ; GFX12-NEXT: {{  $}}152    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1153    ; GFX12-NEXT: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p0) :: (load seq_cst (p3))154    ; GFX12-NEXT: $vgpr0 = COPY [[LOAD]](p3)155    %0:vgpr(p0) = COPY $vgpr0_vgpr1156    %1:vgpr(p3) = G_LOAD %0 :: (load seq_cst (p3), align 4, addrspace 0)157    $vgpr0 = COPY %1158 159...160 161---162 163name: load_atomic_flat_s64_seq_cst164legalized:       true165regBankSelected: true166tracksRegLiveness: true167 168body: |169  bb.0:170    liveins:  $vgpr0_vgpr1171 172    ; GFX7-LABEL: name: load_atomic_flat_s64_seq_cst173    ; GFX7: liveins: $vgpr0_vgpr1174    ; GFX7-NEXT: {{  $}}175    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1176    ; GFX7-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s64))177    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]178    ;179    ; GFX9-LABEL: name: load_atomic_flat_s64_seq_cst180    ; GFX9: liveins: $vgpr0_vgpr1181    ; GFX9-NEXT: {{  $}}182    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1183    ; GFX9-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s64))184    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]185    ;186    ; GFX10-LABEL: name: load_atomic_flat_s64_seq_cst187    ; GFX10: liveins: $vgpr0_vgpr1188    ; GFX10-NEXT: {{  $}}189    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1190    ; GFX10-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s64))191    ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]192    ;193    ; GFX11-LABEL: name: load_atomic_flat_s64_seq_cst194    ; GFX11: liveins: $vgpr0_vgpr1195    ; GFX11-NEXT: {{  $}}196    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1197    ; GFX11-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s64))198    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]199    ;200    ; GFX12-LABEL: name: load_atomic_flat_s64_seq_cst201    ; GFX12: liveins: $vgpr0_vgpr1202    ; GFX12-NEXT: {{  $}}203    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1204    ; GFX12-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s64))205    ; GFX12-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]206    %0:vgpr(p0) = COPY $vgpr0_vgpr1207    %1:vgpr(s64) = G_LOAD %0 :: (load seq_cst (s64), align 8, addrspace 0)208    $vgpr0_vgpr1 = COPY %1209 210...211 212---213 214name: load_atomic_flat_v2s32_seq_cst215legalized:       true216regBankSelected: true217tracksRegLiveness: true218 219body: |220  bb.0:221    liveins:  $vgpr0_vgpr1222 223    ; GFX7-LABEL: name: load_atomic_flat_v2s32_seq_cst224    ; GFX7: liveins: $vgpr0_vgpr1225    ; GFX7-NEXT: {{  $}}226    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1227    ; GFX7-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (<2 x s32>))228    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]229    ;230    ; GFX9-LABEL: name: load_atomic_flat_v2s32_seq_cst231    ; GFX9: liveins: $vgpr0_vgpr1232    ; GFX9-NEXT: {{  $}}233    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1234    ; GFX9-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (<2 x s32>))235    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]236    ;237    ; GFX10-LABEL: name: load_atomic_flat_v2s32_seq_cst238    ; GFX10: liveins: $vgpr0_vgpr1239    ; GFX10-NEXT: {{  $}}240    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1241    ; GFX10-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (<2 x s32>))242    ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]243    ;244    ; GFX11-LABEL: name: load_atomic_flat_v2s32_seq_cst245    ; GFX11: liveins: $vgpr0_vgpr1246    ; GFX11-NEXT: {{  $}}247    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1248    ; GFX11-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (<2 x s32>))249    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]250    ;251    ; GFX12-LABEL: name: load_atomic_flat_v2s32_seq_cst252    ; GFX12: liveins: $vgpr0_vgpr1253    ; GFX12-NEXT: {{  $}}254    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1255    ; GFX12-NEXT: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (<2 x s32>))256    ; GFX12-NEXT: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]257    %0:vgpr(p0) = COPY $vgpr0_vgpr1258    %1:vgpr(<2 x s32>) = G_LOAD %0 :: (load seq_cst (<2 x s32>), align 8, addrspace 0)259    $vgpr0_vgpr1 = COPY %1260 261...262 263---264 265name: load_atomic_flat_v4s16_seq_cst266legalized:       true267regBankSelected: true268tracksRegLiveness: true269 270body: |271  bb.0:272    liveins:  $vgpr0_vgpr1273 274    ; GFX7-LABEL: name: load_atomic_flat_v4s16_seq_cst275    ; GFX7: liveins: $vgpr0_vgpr1276    ; GFX7-NEXT: {{  $}}277    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1278    ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<4 x s16>))279    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)280    ;281    ; GFX9-LABEL: name: load_atomic_flat_v4s16_seq_cst282    ; GFX9: liveins: $vgpr0_vgpr1283    ; GFX9-NEXT: {{  $}}284    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1285    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<4 x s16>))286    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)287    ;288    ; GFX10-LABEL: name: load_atomic_flat_v4s16_seq_cst289    ; GFX10: liveins: $vgpr0_vgpr1290    ; GFX10-NEXT: {{  $}}291    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1292    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<4 x s16>))293    ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)294    ;295    ; GFX11-LABEL: name: load_atomic_flat_v4s16_seq_cst296    ; GFX11: liveins: $vgpr0_vgpr1297    ; GFX11-NEXT: {{  $}}298    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1299    ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<4 x s16>))300    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)301    ;302    ; GFX12-LABEL: name: load_atomic_flat_v4s16_seq_cst303    ; GFX12: liveins: $vgpr0_vgpr1304    ; GFX12-NEXT: {{  $}}305    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1306    ; GFX12-NEXT: [[LOAD:%[0-9]+]]:vreg_64(<4 x s16>) = G_LOAD [[COPY]](p0) :: (load seq_cst (<4 x s16>))307    ; GFX12-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](<4 x s16>)308    %0:vgpr(p0) = COPY $vgpr0_vgpr1309    %1:vgpr(<4 x s16>) = G_LOAD %0 :: (load seq_cst (<4 x s16>), align 8, addrspace 0)310    $vgpr0_vgpr1 = COPY %1311 312...313 314---315 316name: load_atomic_flat_p1_seq_cst317legalized:       true318regBankSelected: true319tracksRegLiveness: true320 321body: |322  bb.0:323    liveins:  $vgpr0_vgpr1324 325    ; GFX7-LABEL: name: load_atomic_flat_p1_seq_cst326    ; GFX7: liveins: $vgpr0_vgpr1327    ; GFX7-NEXT: {{  $}}328    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1329    ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p0) :: (load seq_cst (p1))330    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p1)331    ;332    ; GFX9-LABEL: name: load_atomic_flat_p1_seq_cst333    ; GFX9: liveins: $vgpr0_vgpr1334    ; GFX9-NEXT: {{  $}}335    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1336    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p0) :: (load seq_cst (p1))337    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p1)338    ;339    ; GFX10-LABEL: name: load_atomic_flat_p1_seq_cst340    ; GFX10: liveins: $vgpr0_vgpr1341    ; GFX10-NEXT: {{  $}}342    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1343    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p0) :: (load seq_cst (p1))344    ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p1)345    ;346    ; GFX11-LABEL: name: load_atomic_flat_p1_seq_cst347    ; GFX11: liveins: $vgpr0_vgpr1348    ; GFX11-NEXT: {{  $}}349    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1350    ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p0) :: (load seq_cst (p1))351    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p1)352    ;353    ; GFX12-LABEL: name: load_atomic_flat_p1_seq_cst354    ; GFX12: liveins: $vgpr0_vgpr1355    ; GFX12-NEXT: {{  $}}356    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1357    ; GFX12-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p0) :: (load seq_cst (p1))358    ; GFX12-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p1)359    %0:vgpr(p0) = COPY $vgpr0_vgpr1360    %1:vgpr(p1) = G_LOAD %0 :: (load seq_cst (p1), align 8, addrspace 0)361    $vgpr0_vgpr1 = COPY %1362 363...364 365---366 367name: load_atomic_flat_p0_seq_cst368legalized:       true369regBankSelected: true370tracksRegLiveness: true371 372body: |373  bb.0:374    liveins:  $vgpr0_vgpr1375 376    ; GFX7-LABEL: name: load_atomic_flat_p0_seq_cst377    ; GFX7: liveins: $vgpr0_vgpr1378    ; GFX7-NEXT: {{  $}}379    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1380    ; GFX7-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p0) :: (load seq_cst (p0))381    ; GFX7-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p0)382    ;383    ; GFX9-LABEL: name: load_atomic_flat_p0_seq_cst384    ; GFX9: liveins: $vgpr0_vgpr1385    ; GFX9-NEXT: {{  $}}386    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1387    ; GFX9-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p0) :: (load seq_cst (p0))388    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p0)389    ;390    ; GFX10-LABEL: name: load_atomic_flat_p0_seq_cst391    ; GFX10: liveins: $vgpr0_vgpr1392    ; GFX10-NEXT: {{  $}}393    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1394    ; GFX10-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p0) :: (load seq_cst (p0))395    ; GFX10-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p0)396    ;397    ; GFX11-LABEL: name: load_atomic_flat_p0_seq_cst398    ; GFX11: liveins: $vgpr0_vgpr1399    ; GFX11-NEXT: {{  $}}400    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1401    ; GFX11-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p0) :: (load seq_cst (p0))402    ; GFX11-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p0)403    ;404    ; GFX12-LABEL: name: load_atomic_flat_p0_seq_cst405    ; GFX12: liveins: $vgpr0_vgpr1406    ; GFX12-NEXT: {{  $}}407    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vgpr(p0) = COPY $vgpr0_vgpr1408    ; GFX12-NEXT: [[LOAD:%[0-9]+]]:vreg_64(p0) = G_LOAD [[COPY]](p0) :: (load seq_cst (p0))409    ; GFX12-NEXT: $vgpr0_vgpr1 = COPY [[LOAD]](p0)410    %0:vgpr(p0) = COPY $vgpr0_vgpr1411    %1:vgpr(p0) = G_LOAD %0 :: (load seq_cst (p0), align 8, addrspace 0)412    $vgpr0_vgpr1 = COPY %1413 414...415 416---417 418name: load_atomic_flat_s32_seq_cst_gep_m2048419legalized:       true420regBankSelected: true421tracksRegLiveness: true422 423body: |424  bb.0:425    liveins:  $vgpr0_vgpr1426 427    ; GFX7-LABEL: name: load_atomic_flat_s32_seq_cst_gep_m2048428    ; GFX7: liveins: $vgpr0_vgpr1429    ; GFX7-NEXT: {{  $}}430    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1431    ; GFX7-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO -2048, implicit $exec432    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0433    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0434    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1435    ; GFX7-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1436    ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec437    ; GFX7-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec438    ; GFX7-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1439    ; GFX7-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))440    ; GFX7-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]441    ;442    ; GFX9-LABEL: name: load_atomic_flat_s32_seq_cst_gep_m2048443    ; GFX9: liveins: $vgpr0_vgpr1444    ; GFX9-NEXT: {{  $}}445    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1446    ; GFX9-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO -2048, implicit $exec447    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0448    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0449    ; GFX9-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1450    ; GFX9-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1451    ; GFX9-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec452    ; GFX9-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec453    ; GFX9-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1454    ; GFX9-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))455    ; GFX9-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]456    ;457    ; GFX10-LABEL: name: load_atomic_flat_s32_seq_cst_gep_m2048458    ; GFX10: liveins: $vgpr0_vgpr1459    ; GFX10-NEXT: {{  $}}460    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1461    ; GFX10-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO -2048, implicit $exec462    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0463    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0464    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1465    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1466    ; GFX10-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec467    ; GFX10-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec468    ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1469    ; GFX10-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))470    ; GFX10-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]471    ;472    ; GFX11-LABEL: name: load_atomic_flat_s32_seq_cst_gep_m2048473    ; GFX11: liveins: $vgpr0_vgpr1474    ; GFX11-NEXT: {{  $}}475    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1476    ; GFX11-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO -2048, implicit $exec477    ; GFX11-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0478    ; GFX11-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0479    ; GFX11-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1480    ; GFX11-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1481    ; GFX11-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec482    ; GFX11-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec483    ; GFX11-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1484    ; GFX11-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))485    ; GFX11-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]486    ;487    ; GFX12-LABEL: name: load_atomic_flat_s32_seq_cst_gep_m2048488    ; GFX12: liveins: $vgpr0_vgpr1489    ; GFX12-NEXT: {{  $}}490    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1491    ; GFX12-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], -2048, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))492    ; GFX12-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]493    %0:vgpr(p0) = COPY $vgpr0_vgpr1494    %1:vgpr(s64) = G_CONSTANT i64 -2048495    %2:vgpr(p0) = inbounds G_PTR_ADD %0, %1496    %3:vgpr(s32) = G_LOAD %2 :: (load seq_cst (s32), align 4, addrspace 0)497    $vgpr0 = COPY %3498 499...500 501---502 503name: load_atomic_flat_s32_seq_cst_gep_4095504legalized:       true505regBankSelected: true506tracksRegLiveness: true507 508body: |509  bb.0:510    liveins:  $vgpr0_vgpr1511 512    ; GFX7-LABEL: name: load_atomic_flat_s32_seq_cst_gep_4095513    ; GFX7: liveins: $vgpr0_vgpr1514    ; GFX7-NEXT: {{  $}}515    ; GFX7-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1516    ; GFX7-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 4095, implicit $exec517    ; GFX7-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0518    ; GFX7-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0519    ; GFX7-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1520    ; GFX7-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1521    ; GFX7-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec522    ; GFX7-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec523    ; GFX7-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1524    ; GFX7-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))525    ; GFX7-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]526    ;527    ; GFX9-LABEL: name: load_atomic_flat_s32_seq_cst_gep_4095528    ; GFX9: liveins: $vgpr0_vgpr1529    ; GFX9-NEXT: {{  $}}530    ; GFX9-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1531    ; GFX9-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 4095, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))532    ; GFX9-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]533    ;534    ; GFX10-LABEL: name: load_atomic_flat_s32_seq_cst_gep_4095535    ; GFX10: liveins: $vgpr0_vgpr1536    ; GFX10-NEXT: {{  $}}537    ; GFX10-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1538    ; GFX10-NEXT: [[V_MOV_B:%[0-9]+]]:vreg_64 = V_MOV_B64_PSEUDO 4095, implicit $exec539    ; GFX10-NEXT: [[COPY1:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub0540    ; GFX10-NEXT: [[COPY2:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub0541    ; GFX10-NEXT: [[COPY3:%[0-9]+]]:vgpr_32 = COPY [[COPY]].sub1542    ; GFX10-NEXT: [[COPY4:%[0-9]+]]:vgpr_32 = COPY [[V_MOV_B]].sub1543    ; GFX10-NEXT: [[V_ADD_CO_U32_e64_:%[0-9]+]]:vgpr_32, [[V_ADD_CO_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADD_CO_U32_e64 [[COPY1]], [[COPY2]], 0, implicit $exec544    ; GFX10-NEXT: [[V_ADDC_U32_e64_:%[0-9]+]]:vgpr_32, dead [[V_ADDC_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_ADDC_U32_e64 [[COPY3]], [[COPY4]], killed [[V_ADD_CO_U32_e64_1]], 0, implicit $exec545    ; GFX10-NEXT: [[REG_SEQUENCE:%[0-9]+]]:vreg_64 = REG_SEQUENCE [[V_ADD_CO_U32_e64_]], %subreg.sub0, [[V_ADDC_U32_e64_]], %subreg.sub1546    ; GFX10-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[REG_SEQUENCE]], 0, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))547    ; GFX10-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]548    ;549    ; GFX11-LABEL: name: load_atomic_flat_s32_seq_cst_gep_4095550    ; GFX11: liveins: $vgpr0_vgpr1551    ; GFX11-NEXT: {{  $}}552    ; GFX11-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1553    ; GFX11-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 4095, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))554    ; GFX11-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]555    ;556    ; GFX12-LABEL: name: load_atomic_flat_s32_seq_cst_gep_4095557    ; GFX12: liveins: $vgpr0_vgpr1558    ; GFX12-NEXT: {{  $}}559    ; GFX12-NEXT: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1560    ; GFX12-NEXT: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 4095, 0, implicit $exec, implicit $flat_scr :: (load seq_cst (s32))561    ; GFX12-NEXT: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]562    %0:vgpr(p0) = COPY $vgpr0_vgpr1563    %1:vgpr(s64) = G_CONSTANT i64 4095564    %2:vgpr(p0) = inbounds G_PTR_ADD %0, %1565    %3:vgpr(s32) = G_LOAD %2 :: (load seq_cst (s32), align 4, addrspace 0)566    $vgpr0 = COPY %3567 568...569 570