Skip to content

Commit c8475f3

Browse files
committed
[AIE2] Add concat patterns for accumulators.
1 parent f3a4c1a commit c8475f3

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

llvm/lib/Target/AIE/AIE2InstrPatterns.td

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -976,6 +976,12 @@ def : Pat<(v64i8 (concat_vectors (v32i8 VEC256:$src0), (v32i8 VEC256:$src1))),
976976
def : Pat<(v128i8 (concat_vectors (v64i8 VEC512:$src0), (v64i8 VEC512:$src1))),
977977
(v128i8 (REG_SEQUENCE VEC1024, VEC512:$src0, sub_512_lo, VEC512:$src1, sub_512_hi))>;
978978

979+
// additional concat patters for accumulators
980+
def : Pat<(v8i64 (concat_vectors (v4i64 ACC256:$src0), (v4i64 ACC256:$src1))),
981+
(v8i64 (REG_SEQUENCE ACC512, ACC256:$src0, sub_256_lo, ACC256:$src1, sub_256_hi))>;
982+
def : Pat<(v16i64 (concat_vectors (v8i64 ACC512:$src0), (v8i64 ACC512:$src1))),
983+
(v16i64 (REG_SEQUENCE ACC1024, ACC512:$src0, sub_512_lo, ACC512:$src1, sub_512_hi))>;
984+
979985
// Extract
980986
def : Pat<(int_aie2_ext_I256_I512 VEC512:$src, 0x0),
981987
(v8i32 (EXTRACT_SUBREG VEC512:$src, sub_256_lo))>;

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

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,46 @@ body: |
126126
%1:vregbank(<64 x s8>) = G_IMPLICIT_DEF
127127
%2:vregbank(<128 x s8>) = G_CONCAT_VECTORS %0(<64 x s8>), %1(<64 x s8>)
128128
PseudoRET implicit $lr, implicit %2
129+
...
130+
131+
---
132+
name: vconcat_1024_8x64_acc
133+
legalized: true
134+
regBankSelected: true
135+
tracksRegLiveness: true
136+
stack:
137+
- { id: 0, name: "", size: 128, alignment: 32 }
138+
body: |
139+
bb.0.entry:
140+
141+
; CHECK-LABEL: name: vconcat_1024_8x64_acc
142+
; CHECK: [[DEF:%[0-9]+]]:acc256 = IMPLICIT_DEF
143+
; CHECK-NEXT: [[DEF1:%[0-9]+]]:acc256 = IMPLICIT_DEF
144+
; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:acc512 = REG_SEQUENCE [[DEF]], %subreg.sub_256_lo, [[DEF1]], %subreg.sub_256_hi
145+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[REG_SEQUENCE]]
146+
%0:accregbank(<4 x s64>) = G_IMPLICIT_DEF
147+
%1:accregbank(<4 x s64>) = G_IMPLICIT_DEF
148+
%2:accregbank(<8 x s64>) = G_CONCAT_VECTORS %0(<4 x s64>), %1(<4 x s64>)
149+
PseudoRET implicit $lr, implicit %2
150+
...
151+
152+
---
153+
name: vconcat_1024_16x64_acc
154+
legalized: true
155+
regBankSelected: true
156+
tracksRegLiveness: true
157+
stack:
158+
- { id: 0, name: "", size: 128, alignment: 32 }
159+
body: |
160+
bb.0.entry:
161+
162+
; CHECK-LABEL: name: vconcat_1024_16x64_acc
163+
; CHECK: [[DEF:%[0-9]+]]:ebml = IMPLICIT_DEF
164+
; CHECK-NEXT: [[DEF1:%[0-9]+]]:ebmh = IMPLICIT_DEF
165+
; CHECK-NEXT: [[REG_SEQUENCE:%[0-9]+]]:acc1024 = REG_SEQUENCE [[DEF]], %subreg.sub_512_lo, [[DEF1]], %subreg.sub_512_hi
166+
; CHECK-NEXT: PseudoRET implicit $lr, implicit [[REG_SEQUENCE]]
167+
%0:accregbank(<8 x s64>) = G_IMPLICIT_DEF
168+
%1:accregbank(<8 x s64>) = G_IMPLICIT_DEF
169+
%2:accregbank(<16 x s64>) = G_CONCAT_VECTORS %0(<8 x s64>), %1(<8 x s64>)
170+
PseudoRET implicit $lr, implicit %2
171+
...

0 commit comments

Comments
 (0)