Skip to content

Commit 88f3fe9

Browse files
[AIE2] Annotate Tile Memory AS
1 parent d7802c7 commit 88f3fe9

File tree

10 files changed

+141
-25
lines changed

10 files changed

+141
-25
lines changed

llvm/lib/Target/AIE/AIE2AddrSpace.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ enum class AddressSpaces {
3838
TM // Address space for TM (Tile Memory)
3939
};
4040

41-
enum class AIEBanks { A, B, C, D };
41+
enum class AIEBanks { A, B, C, D, TileMemory };
4242

4343
} // end namespace AIE2
4444
} // end namespace llvm

llvm/lib/Target/AIE/AIE2Subtarget.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,9 @@ AIE2Subtarget::getMemoryBanksFromAddressSpace(unsigned AddrSpace) const {
129129
MemoryBanks.set(static_cast<unsigned>(AIEBanks::C))
130130
.set(static_cast<unsigned>(AIEBanks::D));
131131
break;
132+
case AddressSpaces::TM:
133+
MemoryBanks.set(static_cast<unsigned>(AIEBanks::TileMemory));
134+
break;
132135
default:
133136
return getDefaultMemoryBank();
134137
break;

llvm/lib/Target/AIE/AIE2TargetMachine.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "AIEFinalizeBundle.h"
2222
#include "AIEMachineAlignment.h"
2323
#include "AIEMachineBlockPlacement.h"
24+
#include "AIEMachineFunctionInfo.h"
2425
#include "AIETargetObjectFile.h"
2526
#include "llvm/ADT/STLExtras.h"
2627
#include "llvm/CodeGen/GlobalISel/IRTranslator.h"
@@ -271,6 +272,8 @@ AIE2TargetMachine::getAddressSpaceForPseudoSourceKind(unsigned Kind) const {
271272
case PseudoSourceValue::Stack:
272273
case PseudoSourceValue::FixedStack:
273274
return StackAddrSpace;
275+
case AIETargetPSV::AIETileMem:
276+
return static_cast<unsigned>(AIE2::AddressSpaces::TM);
274277
default:
275278
return static_cast<unsigned>(AIE2::AddressSpaces::none);
276279
}

llvm/test/CodeGen/AIE/aie2/GlobalISel/inst-select-store_load_TM.mir

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ body: |
1818
; CHECK-LABEL: name: Read_TM
1919
; CHECK: liveins: $p0
2020
; CHECK-NEXT: {{ $}}
21-
; CHECK-NEXT: [[LDA_TM:%[0-9]+]]:er = LDA_TM %2:ep :: (load (s32) from custom "TileMemory")
21+
; CHECK-NEXT: [[LDA_TM:%[0-9]+]]:er = LDA_TM %2:ep :: (load (s32) from custom "TileMemory", addrspace 15)
2222
; CHECK-NEXT: $r0 = COPY [[LDA_TM]]
2323
; CHECK-NEXT: PseudoRET implicit $lr, implicit $r0
2424
%1:ptrregbank(p0) = COPY $p0
@@ -39,7 +39,7 @@ body: |
3939
; CHECK-LABEL: name: Write_TM
4040
; CHECK: liveins: $p0
4141
; CHECK-NEXT: {{ $}}
42-
; CHECK-NEXT: ST_TM %1:er, %2:ep :: (store (s32) into custom "TileMemory")
42+
; CHECK-NEXT: ST_TM %1:er, %2:ep :: (store (s32) into custom "TileMemory", addrspace 15)
4343
; CHECK-NEXT: PseudoRET implicit $lr
4444
%1:ptrregbank(p0) = COPY $p0
4545
G_INTRINSIC_W_SIDE_EFFECTS intrinsic(@llvm.aie2.write.tm), %0:gprregbank(s32), %5:ptrregbank(p0)

llvm/test/CodeGen/AIE/aie2/schedule/load.mir

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ body: |
3939
; CHECK-LABEL: name: load_tm
4040
; CHECK: liveins: $p1
4141
; CHECK-NEXT: {{ $}}
42-
; CHECK-NEXT: $r6 = LDA_TM killed $p1 :: (load (s32) from custom "TileMemory")
42+
; CHECK-NEXT: $r6 = LDA_TM killed $p1 :: (load (s32) from custom "TileMemory", addrspace 15)
4343
; CHECK-NEXT: NOP
4444
; CHECK-NEXT: NOP
4545
; CHECK-NEXT: NOP
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4
2+
# This file is licensed under the Apache License v2.0 with LLVM Exceptions.
3+
# See https://llvm.org/LICENSE.txt for license information.
4+
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
#
6+
# (c) Copyright 2024 Advanced Micro Devices, Inc. or its affiliates
7+
# RUN: llc -march=aie2 -run-pass=postmisched %topdown-multi %s -o - | FileCheck %s
8+
9+
# This test checks scheduling of LDA_TM with VLDB
10+
11+
# We expect LDA.TM & VLDB to be scheduled in the same bundle when VLDB does not have MMO
12+
---
13+
name: LDA_TM_VLDB_without_AS
14+
alignment: 16
15+
body: |
16+
bb.0.entry:
17+
; CHECK-LABEL: name: LDA_TM_VLDB_without_AS
18+
; CHECK: BUNDLE implicit-def $r0, implicit-def $wl2, implicit killed $p0 {
19+
; CHECK-NEXT: $r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
20+
; CHECK-NEXT: $wl2 = VLDB_dmw_ldb_ag_idx_imm killed $p0, 0 :: (load (<8 x s32>))
21+
; CHECK-NEXT: }
22+
; CHECK-NEXT: NOP
23+
; CHECK-NEXT: NOP
24+
; CHECK-NEXT: NOP
25+
; CHECK-NEXT: NOP
26+
; CHECK-NEXT: NOP
27+
; CHECK-NEXT: NOP
28+
$r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory")
29+
$wl2 = VLDB_dmw_ldb_ag_idx_imm $p0, 0 :: (load (<8 x s32>))
30+
...
31+
32+
---
33+
name: LDA_TM_VLDB_from_BankA
34+
alignment: 16
35+
body: |
36+
bb.0.entry:
37+
; CHECK-LABEL: name: LDA_TM_VLDB_from_BankA
38+
; CHECK: BUNDLE implicit-def $r0, implicit-def $wl2, implicit killed $p0 {
39+
; CHECK-NEXT: $r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
40+
; CHECK-NEXT: $wl2 = VLDB_dmw_ldb_ag_idx_imm killed $p0, 0 :: (load (<8 x s32>), addrspace 5)
41+
; CHECK-NEXT: }
42+
; CHECK-NEXT: NOP
43+
; CHECK-NEXT: NOP
44+
; CHECK-NEXT: NOP
45+
; CHECK-NEXT: NOP
46+
; CHECK-NEXT: NOP
47+
; CHECK-NEXT: NOP
48+
$r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory")
49+
$wl2 = VLDB_dmw_ldb_ag_idx_imm $p0, 0 :: (load (<8 x s32>), addrspace 5)
50+
...
51+
52+
---
53+
name: LDA_TM_VLDB_from_BankB
54+
alignment: 16
55+
body: |
56+
bb.0.entry:
57+
; CHECK-LABEL: name: LDA_TM_VLDB_from_BankB
58+
; CHECK: BUNDLE implicit-def $r0, implicit-def $wl2, implicit killed $p0 {
59+
; CHECK-NEXT: $r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
60+
; CHECK-NEXT: $wl2 = VLDB_dmw_ldb_ag_idx_imm killed $p0, 0 :: (load (<8 x s32>), addrspace 6)
61+
; CHECK-NEXT: }
62+
; CHECK-NEXT: NOP
63+
; CHECK-NEXT: NOP
64+
; CHECK-NEXT: NOP
65+
; CHECK-NEXT: NOP
66+
; CHECK-NEXT: NOP
67+
; CHECK-NEXT: NOP
68+
$r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory")
69+
$wl2 = VLDB_dmw_ldb_ag_idx_imm $p0, 0 :: (load (<8 x s32>), addrspace 6)
70+
...
71+
72+
---
73+
name: LDA_TM_VLDB_from_BankC
74+
alignment: 16
75+
body: |
76+
bb.0.entry:
77+
; CHECK-LABEL: name: LDA_TM_VLDB_from_BankC
78+
; CHECK: BUNDLE implicit-def $r0, implicit-def $wl2, implicit killed $p0 {
79+
; CHECK-NEXT: $r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
80+
; CHECK-NEXT: $wl2 = VLDB_dmw_ldb_ag_idx_imm killed $p0, 0 :: (load (<8 x s32>), addrspace 7)
81+
; CHECK-NEXT: }
82+
; CHECK-NEXT: NOP
83+
; CHECK-NEXT: NOP
84+
; CHECK-NEXT: NOP
85+
; CHECK-NEXT: NOP
86+
; CHECK-NEXT: NOP
87+
; CHECK-NEXT: NOP
88+
$r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory")
89+
$wl2 = VLDB_dmw_ldb_ag_idx_imm $p0, 0 :: (load (<8 x s32>), addrspace 7)
90+
...
91+
92+
---
93+
name: LDA_TM_VLDB_from_BankD
94+
alignment: 16
95+
body: |
96+
bb.0.entry:
97+
; CHECK-LABEL: name: LDA_TM_VLDB_from_BankD
98+
; CHECK: BUNDLE implicit-def $r0, implicit-def $wl2, implicit killed $p0 {
99+
; CHECK-NEXT: $r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
100+
; CHECK-NEXT: $wl2 = VLDB_dmw_ldb_ag_idx_imm killed $p0, 0 :: (load (<8 x s32>), addrspace 8)
101+
; CHECK-NEXT: }
102+
; CHECK-NEXT: NOP
103+
; CHECK-NEXT: NOP
104+
; CHECK-NEXT: NOP
105+
; CHECK-NEXT: NOP
106+
; CHECK-NEXT: NOP
107+
; CHECK-NEXT: NOP
108+
$r0 = LDA_TM $p0 :: (load (s32) from custom "TileMemory")
109+
$wl2 = VLDB_dmw_ldb_ag_idx_imm $p0, 0 :: (load (<8 x s32>), addrspace 8)
110+
...

llvm/test/CodeGen/AIE/aie2/schedule/pre_ra/load_storetm.mir

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ body: |
3030
; CHECK-NEXT: [[COPY1:%[0-9]+]]:ep = COPY [[COPY]]
3131
; CHECK-NEXT: [[LDA_dms_lda_idx_imm1:%[0-9]+]]:er = LDA_dms_lda_idx_imm [[COPY1]], 0 :: (load (s32) from %ir.p0)
3232
; CHECK-NEXT: [[MOVXM_lng_cg:%[0-9]+]]:ep_as_32bit = MOVXM_lng_cg -524284
33-
; CHECK-NEXT: ST_TM [[LDA_dms_lda_idx_imm]], [[MOVXM_lng_cg]] :: (store (s32) into custom "TileMemory")
33+
; CHECK-NEXT: ST_TM [[LDA_dms_lda_idx_imm]], [[MOVXM_lng_cg]] :: (store (s32) into custom "TileMemory", addrspace 15)
3434
; CHECK-NEXT: [[MOVXM_lng_cg1:%[0-9]+]]:ep_as_32bit = MOVXM_lng_cg -524280
35-
; CHECK-NEXT: ST_TM [[LDA_dms_lda_idx_imm1]], [[MOVXM_lng_cg1]] :: (store (s32) into custom "TileMemory")
35+
; CHECK-NEXT: ST_TM [[LDA_dms_lda_idx_imm1]], [[MOVXM_lng_cg1]] :: (store (s32) into custom "TileMemory", addrspace 15)
3636
%100:ep = COPY $p0
3737
%200:er = LDA_dms_lda_idx_imm %100, 0 :: (load (s32) from %ir.p0)
3838
%300:ep_as_32bit = MOVXM_lng_cg -524284

llvm/test/CodeGen/AIE/aie2/schedule/resource/proc_bus.mir

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ body: |
2323
; CHECK-NEXT: $p0 = MOV_mv_scl killed $r1
2424
; CHECK-NEXT: }
2525
; CHECK-NEXT: $p1 = MOV_mv_scl killed $r4
26-
; CHECK-NEXT: ST_TM killed $r0, killed $p0 :: (store (s32) into custom "TileMemory")
27-
; CHECK-NEXT: $r0 = LDA_TM killed $p1 :: (load (s32) from custom "TileMemory")
26+
; CHECK-NEXT: ST_TM killed $r0, killed $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
27+
; CHECK-NEXT: $r0 = LDA_TM killed $p1 :: (load (s32) from custom "TileMemory", addrspace 15)
2828
; CHECK-NEXT: NOP
2929
; CHECK-NEXT: NOP
3030
; CHECK-NEXT: NOP

llvm/test/CodeGen/AIE/aie2/schedule/store.mir

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ body: |
4040
; CHECK-NEXT: NOP
4141
; CHECK-NEXT: NOP
4242
; CHECK-NEXT: NOP
43-
; CHECK-NEXT: ST_TM killed $r6, killed $p0 :: (store (s32) into custom "TileMemory")
43+
; CHECK-NEXT: ST_TM killed $r6, killed $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
4444
; CHECK-NEXT: NOP
4545
$r6 = LDA_dms_lda_idx_imm $p1, 4
4646
ST_TM $r6, $p0 :: (store (s32) into custom "TileMemory")

llvm/test/CodeGen/AIE/aie2/schedule/tmdep.mir

+16-16
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ body: |
7575
liveins: $p0
7676
; CHECK-LABEL: name: nodep_wtm_rmem
7777
; CHECK: LDA_dms_lda_idx_imm killed renamable $p0, 0 :: (load (s32) from %ir.p)
78-
; CHECK: ST_TM killed renamable $r1, killed renamable $p1 :: (store (s32) into custom "TileMemory")
78+
; CHECK: ST_TM killed renamable $r1, killed renamable $p1 :: (store (s32) into custom "TileMemory", addrspace 15)
7979
8080
renamable $r1 = MOVA_lda_cg 42
8181
renamable $p1 = MOVXM_lng_cg -524284
82-
ST_TM killed renamable $r1, killed renamable $p1 :: (store (s32) into custom "TileMemory")
82+
ST_TM killed renamable $r1, killed renamable $p1 :: (store (s32) into custom "TileMemory", addrspace 15)
8383
renamable $r0 = LDA_dms_lda_idx_imm killed renamable $p0, 0 :: (load (s32) from %ir.p)
8484
PseudoRET implicit $lr, implicit $r0
8585
@@ -99,10 +99,10 @@ body: |
9999
100100
; CHECK-LABEL: name: nodep_rtm_wmem
101101
; CHECK: ST_dms_sts_idx_imm killed renamable $r1, killed renamable $p0, 0 :: (store (s32) into %ir.p)
102-
; CHECK: renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory")
102+
; CHECK: renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory", addrspace 15)
103103
renamable $p1 = MOVXM_lng_cg -524282
104104
ST_dms_sts_idx_imm killed renamable $r1, killed renamable $p0, 0 :: (store (s32) into %ir.p)
105-
renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory")
105+
renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory", addrspace 15)
106106
107107
...
108108
---
@@ -118,12 +118,12 @@ body: |
118118
bb.0.entry:
119119
liveins: $p1
120120
; CHECK-LABEL: name: true_tm
121-
; CHECK: ST_TM killed renamable $r1, killed renamable $p0 :: (store (s32) into custom "TileMemory")
122-
; CHECK: renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory")
121+
; CHECK: ST_TM killed renamable $r1, killed renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
122+
; CHECK: renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory", addrspace 15)
123123
renamable $r1 = MOVA_lda_cg 42
124124
renamable $p0 = MOVXM_lng_cg -524283
125-
ST_TM killed renamable $r1, renamable $p0 :: (store (s32) into custom "TileMemory")
126-
renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory")
125+
ST_TM killed renamable $r1, renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
126+
renamable $r0 = LDA_TM killed renamable $p1 :: (load (s32) from custom "TileMemory", addrspace 15)
127127
128128
...
129129
---
@@ -139,11 +139,11 @@ body: |
139139
bb.0.entry:
140140
liveins: $p0, $r1
141141
; CHECK-LABEL: name: anti_tm
142-
; CHECK: renamable $r0 = LDA_TM renamable $p0 :: (load (s32) from custom "TileMemory")
143-
; CHECK: ST_TM killed renamable $r1, killed renamable $p0 :: (store (s32) into custom "TileMemory")
144-
renamable $r0 = LDA_TM renamable $p0 :: (load (s32) from custom "TileMemory")
142+
; CHECK: renamable $r0 = LDA_TM renamable $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
143+
; CHECK: ST_TM killed renamable $r1, killed renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
144+
renamable $r0 = LDA_TM renamable $p0 :: (load (s32) from custom "TileMemory", addrspace 15)
145145
renamable $r1 = MOVA_lda_cg 42
146-
ST_TM killed renamable $r1, renamable $p0 :: (store (s32) into custom "TileMemory")
146+
ST_TM killed renamable $r1, renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
147147
148148
...
149149
---
@@ -160,14 +160,14 @@ body: |
160160
liveins: $r0, $r1
161161
162162
; CHECK-LABEL: name: out_tm
163-
; CHECK: ST_TM killed renamable $r3, killed renamable $p0 :: (store (s32) into custom "TileMemory")
164-
; CHECK: ST_TM killed renamable $r0, killed renamable $p0 :: (store (s32) into custom "TileMemory")
163+
; CHECK: ST_TM killed renamable $r3, killed renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
164+
; CHECK: ST_TM killed renamable $r0, killed renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
165165
renamable $p0 = MOVXM_lng_cg -524283
166166
renamable $r2 = MOVXM_lng_cg 524288
167167
renamable $r3 = nsw ADD_add_r_ri renamable $r0, 13, implicit-def $srcarry
168-
ST_TM killed renamable $r3, killed renamable $p0 :: (store (s32) into custom "TileMemory")
168+
ST_TM killed renamable $r3, killed renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
169169
renamable $r1 = ADD killed renamable $r1, killed renamable $r2, implicit-def $srcarry
170170
$p0 = MOV_mv_scl killed $r1
171-
ST_TM killed renamable $r0, killed renamable $p0 :: (store (s32) into custom "TileMemory")
171+
ST_TM killed renamable $r0, killed renamable $p0 :: (store (s32) into custom "TileMemory", addrspace 15)
172172
173173
...

0 commit comments

Comments
 (0)