Skip to content

Commit b216057

Browse files
committed
AMDGPU/GlobalISel: Fix flat load/store of pointer types
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@367513 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 62b274e commit b216057

File tree

8 files changed

+117
-104
lines changed

8 files changed

+117
-104
lines changed

lib/Target/AMDGPU/AMDGPU.td

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ include "llvm/TableGen/SearchableTable.td"
1010
include "llvm/Target/Target.td"
1111
include "AMDGPUFeatures.td"
1212

13+
def p0 : PtrValueType<i64, 0>;
14+
def p1 : PtrValueType<i64, 1>;
15+
def p2 : PtrValueType<i32, 2>;
16+
def p3 : PtrValueType<i32, 3>;
17+
def p4 : PtrValueType<i64, 4>;
18+
def p5 : PtrValueType<i32, 5>;
19+
def p6 : PtrValueType<i32, 6>;
20+
21+
1322
class BoolToList<bit Value> {
1423
list<int> ret = !if(Value, [1]<int>, []<int>);
1524
}

lib/Target/AMDGPU/AMDGPUGISel.td

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@
1212

1313
include "AMDGPU.td"
1414

15-
def p0 : PtrValueType<i64, 0>;
16-
def p1 : PtrValueType<i64, 1>;
17-
def p4 : PtrValueType<i64, 4>;
18-
1915
def sd_vsrc0 : ComplexPattern<i32, 1, "">;
2016
def gi_vsrc0 :
2117
GIComplexOperandMatcher<s32, "selectVSRC0">,

lib/Target/AMDGPU/FLATInstructions.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -786,7 +786,7 @@ def : FlatLoadAtomicPat <FLAT_LOAD_DWORDX2, atomic_load_64_flat, i64>;
786786
def : FlatStorePat <FLAT_STORE_BYTE, truncstorei8_flat, i32>;
787787
def : FlatStorePat <FLAT_STORE_SHORT, truncstorei16_flat, i32>;
788788

789-
foreach vt = [i32, f32, v2i16, v2f16] in {
789+
foreach vt = [i32, f32, v2i16, v2f16, p2, p3, p5, p6] in {
790790
def : FlatLoadPat <FLAT_LOAD_DWORD, load_flat, vt>;
791791
def : FlatStorePat <FLAT_STORE_DWORD, store_flat, vt>;
792792
}
@@ -867,7 +867,7 @@ def : FlatLoadSignedPat <GLOBAL_LOAD_USHORT, zextloadi16_global, i32>;
867867
def : FlatLoadSignedPat <GLOBAL_LOAD_SSHORT, sextloadi16_global, i32>;
868868
def : FlatLoadSignedPat <GLOBAL_LOAD_USHORT, load_global, i16>;
869869

870-
foreach vt = [i32, f32, v2i16, v2f16] in {
870+
foreach vt = [i32, f32, v2i16, v2f16, p2, p3, p5, p6] in {
871871
def : FlatLoadSignedPat <GLOBAL_LOAD_DWORD, load_global, vt>;
872872
def : FlatStoreSignedPat <GLOBAL_STORE_DWORD, store_global, vt, VGPR_32>;
873873
}

lib/Target/AMDGPU/SIRegisterInfo.td

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ def TTMP0_TTMP1_TTMP2_TTMP3_TTMP4_TTMP5_TTMP6_TTMP7_TTMP8_TTMP9_TTMP10_TTMP11_TT
352352

353353
// VGPR 32-bit registers
354354
// i16/f16 only on VI+
355-
def VGPR_32 : RegisterClass<"AMDGPU", [i32, f32, i16, f16, v2i16, v2f16], 32,
355+
def VGPR_32 : RegisterClass<"AMDGPU", [i32, f32, i16, f16, v2i16, v2f16, p2, p3, p5, p6], 32,
356356
(add (sequence "VGPR%u", 0, 255))> {
357357
let AllocationPriority = 1;
358358
let Size = 32;
@@ -586,7 +586,7 @@ def SReg_1024 : RegisterClass<"AMDGPU", [v32i32, v32f32], 32,
586586
}
587587

588588
// Register class for all vector registers (VGPRs + Interploation Registers)
589-
def VReg_64 : RegisterClass<"AMDGPU", [i64, f64, v2i32, v2f32, v4f16, v4i16], 32,
589+
def VReg_64 : RegisterClass<"AMDGPU", [i64, f64, v2i32, v2f32, v4f16, v4i16, p0, p1, p4], 32,
590590
(add VGPR_64)> {
591591
let Size = 64;
592592

test/CodeGen/AMDGPU/GlobalISel/inst-select-load-flat.mir

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -428,24 +428,25 @@ body: |
428428
429429
; GFX7-LABEL: name: load_flat_p3_from_4
430430
; GFX7: liveins: $vgpr0_vgpr1
431-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
432-
; GFX7: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4)
433-
; GFX7: $vgpr0 = COPY [[LOAD]](p3)
431+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
432+
; GFX7: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 4)
433+
; GFX7: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
434434
; GFX8-LABEL: name: load_flat_p3_from_4
435435
; GFX8: liveins: $vgpr0_vgpr1
436-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
437-
; GFX8: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4)
438-
; GFX8: $vgpr0 = COPY [[LOAD]](p3)
436+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
437+
; GFX8: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 4)
438+
; GFX8: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
439439
; GFX9-LABEL: name: load_flat_p3_from_4
440440
; GFX9: liveins: $vgpr0_vgpr1
441-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
442-
; GFX9: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4)
443-
; GFX9: $vgpr0 = COPY [[LOAD]](p3)
441+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
442+
; GFX9: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 4)
443+
; GFX9: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
444444
; GFX10-LABEL: name: load_flat_p3_from_4
445445
; GFX10: liveins: $vgpr0_vgpr1
446-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
447-
; GFX10: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4)
448-
; GFX10: $vgpr0 = COPY [[LOAD]](p3)
446+
; GFX10: $vcc_hi = IMPLICIT_DEF
447+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
448+
; GFX10: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 4)
449+
; GFX10: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
449450
%0:vgpr(p1) = COPY $vgpr0_vgpr1
450451
%1:vgpr(p3) = G_LOAD %0 :: (load 4, align 4, addrspace 0)
451452
$vgpr0 = COPY %1
@@ -465,24 +466,25 @@ body: |
465466
466467
; GFX7-LABEL: name: load_flat_p1_from_8
467468
; GFX7: liveins: $vgpr0_vgpr1
468-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
469-
; GFX7: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8)
470-
; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
469+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
470+
; GFX7: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 8)
471+
; GFX7: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
471472
; GFX8-LABEL: name: load_flat_p1_from_8
472473
; GFX8: liveins: $vgpr0_vgpr1
473-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
474-
; GFX8: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8)
475-
; GFX8: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
474+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
475+
; GFX8: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 8)
476+
; GFX8: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
476477
; GFX9-LABEL: name: load_flat_p1_from_8
477478
; GFX9: liveins: $vgpr0_vgpr1
478-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
479-
; GFX9: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8)
480-
; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
479+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
480+
; GFX9: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 8)
481+
; GFX9: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
481482
; GFX10-LABEL: name: load_flat_p1_from_8
482483
; GFX10: liveins: $vgpr0_vgpr1
483-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
484-
; GFX10: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8)
485-
; GFX10: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
484+
; GFX10: $vcc_hi = IMPLICIT_DEF
485+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
486+
; GFX10: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 8)
487+
; GFX10: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
486488
%0:vgpr(p1) = COPY $vgpr0_vgpr1
487489
%1:vgpr(p1) = G_LOAD %0 :: (load 8, align 8, addrspace 0)
488490
$vgpr0_vgpr1 = COPY %1

test/CodeGen/AMDGPU/GlobalISel/inst-select-load-global.mir

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -434,24 +434,25 @@ body: |
434434
435435
; GFX7-LABEL: name: load_global_p3_from_4
436436
; GFX7: liveins: $vgpr0_vgpr1
437-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
438-
; GFX7: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4, addrspace 1)
439-
; GFX7: $vgpr0 = COPY [[LOAD]](p3)
437+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
438+
; GFX7: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 4, addrspace 1)
439+
; GFX7: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
440440
; GFX8-LABEL: name: load_global_p3_from_4
441441
; GFX8: liveins: $vgpr0_vgpr1
442-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
443-
; GFX8: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4, addrspace 1)
444-
; GFX8: $vgpr0 = COPY [[LOAD]](p3)
442+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
443+
; GFX8: [[FLAT_LOAD_DWORD:%[0-9]+]]:vgpr_32 = FLAT_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 4, addrspace 1)
444+
; GFX8: $vgpr0 = COPY [[FLAT_LOAD_DWORD]]
445445
; GFX9-LABEL: name: load_global_p3_from_4
446446
; GFX9: liveins: $vgpr0_vgpr1
447-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
448-
; GFX9: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4, addrspace 1)
449-
; GFX9: $vgpr0 = COPY [[LOAD]](p3)
447+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
448+
; GFX9: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec :: (load 4, addrspace 1)
449+
; GFX9: $vgpr0 = COPY [[GLOBAL_LOAD_DWORD]]
450450
; GFX10-LABEL: name: load_global_p3_from_4
451451
; GFX10: liveins: $vgpr0_vgpr1
452-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
453-
; GFX10: [[LOAD:%[0-9]+]]:vgpr_32(p3) = G_LOAD [[COPY]](p1) :: (load 4, addrspace 1)
454-
; GFX10: $vgpr0 = COPY [[LOAD]](p3)
452+
; GFX10: $vcc_hi = IMPLICIT_DEF
453+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
454+
; GFX10: [[GLOBAL_LOAD_DWORD:%[0-9]+]]:vgpr_32 = GLOBAL_LOAD_DWORD [[COPY]], 0, 0, 0, 0, implicit $exec :: (load 4, addrspace 1)
455+
; GFX10: $vgpr0 = COPY [[GLOBAL_LOAD_DWORD]]
455456
%0:vgpr(p1) = COPY $vgpr0_vgpr1
456457
%1:vgpr(p3) = G_LOAD %0 :: (load 4, align 4, addrspace 1)
457458
$vgpr0 = COPY %1
@@ -471,24 +472,25 @@ body: |
471472
472473
; GFX7-LABEL: name: load_global_p1_from_8
473474
; GFX7: liveins: $vgpr0_vgpr1
474-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
475-
; GFX7: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8, addrspace 1)
476-
; GFX7: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
475+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
476+
; GFX7: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 8, addrspace 1)
477+
; GFX7: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
477478
; GFX8-LABEL: name: load_global_p1_from_8
478479
; GFX8: liveins: $vgpr0_vgpr1
479-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
480-
; GFX8: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8, addrspace 1)
481-
; GFX8: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
480+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
481+
; GFX8: [[FLAT_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = FLAT_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (load 8, addrspace 1)
482+
; GFX8: $vgpr0_vgpr1 = COPY [[FLAT_LOAD_DWORDX2_]]
482483
; GFX9-LABEL: name: load_global_p1_from_8
483484
; GFX9: liveins: $vgpr0_vgpr1
484-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
485-
; GFX9: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8, addrspace 1)
486-
; GFX9: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
485+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
486+
; GFX9: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec :: (load 8, addrspace 1)
487+
; GFX9: $vgpr0_vgpr1 = COPY [[GLOBAL_LOAD_DWORDX2_]]
487488
; GFX10-LABEL: name: load_global_p1_from_8
488489
; GFX10: liveins: $vgpr0_vgpr1
489-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
490-
; GFX10: [[LOAD:%[0-9]+]]:vreg_64(p1) = G_LOAD [[COPY]](p1) :: (load 8, addrspace 1)
491-
; GFX10: $vgpr0_vgpr1 = COPY [[LOAD]](p1)
490+
; GFX10: $vcc_hi = IMPLICIT_DEF
491+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
492+
; GFX10: [[GLOBAL_LOAD_DWORDX2_:%[0-9]+]]:vreg_64 = GLOBAL_LOAD_DWORDX2 [[COPY]], 0, 0, 0, 0, implicit $exec :: (load 8, addrspace 1)
493+
; GFX10: $vgpr0_vgpr1 = COPY [[GLOBAL_LOAD_DWORDX2_]]
492494
%0:vgpr(p1) = COPY $vgpr0_vgpr1
493495
%1:vgpr(p1) = G_LOAD %0 :: (load 8, align 8, addrspace 1)
494496
$vgpr0_vgpr1 = COPY %1

test/CodeGen/AMDGPU/GlobalISel/inst-select-store-flat.mir

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -537,24 +537,25 @@ body: |
537537
538538
; GFX7-LABEL: name: store_flat_p1
539539
; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
540-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
541-
; GFX7: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
542-
; GFX7: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8)
540+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
541+
; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
542+
; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8)
543543
; GFX8-LABEL: name: store_flat_p1
544544
; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
545-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
546-
; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
547-
; GFX8: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8)
545+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
546+
; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
547+
; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8)
548548
; GFX9-LABEL: name: store_flat_p1
549549
; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
550-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
551-
; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
552-
; GFX9: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8)
550+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
551+
; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
552+
; GFX9: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8)
553553
; GFX10-LABEL: name: store_flat_p1
554554
; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
555-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
556-
; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
557-
; GFX10: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8)
555+
; GFX10: $vcc_hi = IMPLICIT_DEF
556+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
557+
; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
558+
; GFX10: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8)
558559
%0:vgpr(p1) = COPY $vgpr0_vgpr1
559560
%1:vgpr(p1) = COPY $vgpr2_vgpr3
560561
G_STORE %1, %0 :: (store 8, align 8, addrspace 0)
@@ -611,24 +612,25 @@ body: |
611612
612613
; GFX7-LABEL: name: store_flat_p3
613614
; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
614-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
615-
; GFX7: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
616-
; GFX7: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4)
615+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
616+
; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
617+
; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4)
617618
; GFX8-LABEL: name: store_flat_p3
618619
; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
619-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
620-
; GFX8: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
621-
; GFX8: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4)
620+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
621+
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
622+
; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4)
622623
; GFX9-LABEL: name: store_flat_p3
623624
; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
624-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
625-
; GFX9: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
626-
; GFX9: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4)
625+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
626+
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
627+
; GFX9: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4)
627628
; GFX10-LABEL: name: store_flat_p3
628629
; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
629-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
630-
; GFX10: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
631-
; GFX10: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4)
630+
; GFX10: $vcc_hi = IMPLICIT_DEF
631+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
632+
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
633+
; GFX10: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4)
632634
%0:vgpr(p1) = COPY $vgpr0_vgpr1
633635
%1:vgpr(p3) = COPY $vgpr2
634636
G_STORE %1, %0 :: (store 4, align 4, addrspace 0)

test/CodeGen/AMDGPU/GlobalISel/inst-select-store-global.mir

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -537,24 +537,25 @@ body: |
537537
538538
; GFX7-LABEL: name: store_global_p1
539539
; GFX7: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
540-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
541-
; GFX7: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
542-
; GFX7: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8, addrspace 1)
540+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
541+
; GFX7: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
542+
; GFX7: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
543543
; GFX8-LABEL: name: store_global_p1
544544
; GFX8: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
545-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
546-
; GFX8: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
547-
; GFX8: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8, addrspace 1)
545+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
546+
; GFX8: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
547+
; GFX8: FLAT_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 8, addrspace 1)
548548
; GFX9-LABEL: name: store_global_p1
549549
; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
550-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
551-
; GFX9: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
552-
; GFX9: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8, addrspace 1)
550+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
551+
; GFX9: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
552+
; GFX9: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
553553
; GFX10-LABEL: name: store_global_p1
554554
; GFX10: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3
555-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
556-
; GFX10: [[COPY1:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3
557-
; GFX10: G_STORE [[COPY1]](p1), [[COPY]](p1) :: (store 8, addrspace 1)
555+
; GFX10: $vcc_hi = IMPLICIT_DEF
556+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
557+
; GFX10: [[COPY1:%[0-9]+]]:vreg_64 = COPY $vgpr2_vgpr3
558+
; GFX10: GLOBAL_STORE_DWORDX2 [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 8, addrspace 1)
558559
%0:vgpr(p1) = COPY $vgpr0_vgpr1
559560
%1:vgpr(p1) = COPY $vgpr2_vgpr3
560561
G_STORE %1, %0 :: (store 8, align 8, addrspace 1)
@@ -611,24 +612,25 @@ body: |
611612
612613
; GFX7-LABEL: name: store_global_p3
613614
; GFX7: liveins: $vgpr0_vgpr1, $vgpr2
614-
; GFX7: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
615-
; GFX7: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
616-
; GFX7: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4, addrspace 1)
615+
; GFX7: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
616+
; GFX7: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
617+
; GFX7: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
617618
; GFX8-LABEL: name: store_global_p3
618619
; GFX8: liveins: $vgpr0_vgpr1, $vgpr2
619-
; GFX8: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
620-
; GFX8: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
621-
; GFX8: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4, addrspace 1)
620+
; GFX8: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
621+
; GFX8: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
622+
; GFX8: FLAT_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr :: (store 4, addrspace 1)
622623
; GFX9-LABEL: name: store_global_p3
623624
; GFX9: liveins: $vgpr0_vgpr1, $vgpr2
624-
; GFX9: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
625-
; GFX9: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
626-
; GFX9: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4, addrspace 1)
625+
; GFX9: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
626+
; GFX9: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
627+
; GFX9: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
627628
; GFX10-LABEL: name: store_global_p3
628629
; GFX10: liveins: $vgpr0_vgpr1, $vgpr2
629-
; GFX10: [[COPY:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1
630-
; GFX10: [[COPY1:%[0-9]+]]:vgpr(p3) = COPY $vgpr2
631-
; GFX10: G_STORE [[COPY1]](p3), [[COPY]](p1) :: (store 4, addrspace 1)
630+
; GFX10: $vcc_hi = IMPLICIT_DEF
631+
; GFX10: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
632+
; GFX10: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
633+
; GFX10: GLOBAL_STORE_DWORD [[COPY]], [[COPY1]], 0, 0, 0, 0, implicit $exec :: (store 4, addrspace 1)
632634
%0:vgpr(p1) = COPY $vgpr0_vgpr1
633635
%1:vgpr(p3) = COPY $vgpr2
634636
G_STORE %1, %0 :: (store 4, align 4, addrspace 1)

0 commit comments

Comments
 (0)