Skip to content

Commit 526732a

Browse files
andcarminatiF-Stuckmann
authored andcommitted
[AIEX] Add base test for top-down scoreboard single initialization
1 parent 6a8411f commit 526732a

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
;
3+
; This file is licensed under the Apache License v2.0 with LLVM Exceptions.
4+
; See https://llvm.org/LICENSE.txt for license information.
5+
; SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
;
7+
; (c) Copyright 2025 Advanced Micro Devices, Inc. or its affiliates
8+
; RUN: llc -mtriple=aie2p < %s | FileCheck %s
9+
10+
define void @load_store_with_call() {
11+
; CHECK-LABEL: load_store_with_call:
12+
; CHECK: // %bb.0: // %entry
13+
; CHECK-NEXT: movxm ls, #.LBB0_1
14+
; CHECK-NEXT: paddxm [sp], #64
15+
; CHECK-NEXT: mova r0, #0; nopb ; movxm le, #.L_LEnd0; st lr, [sp, #-64] // 4-byte Folded Spill
16+
; CHECK-NEXT: mova p5, #0; add.nc lc, r0, #-7
17+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
18+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
19+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
20+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
21+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
22+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
23+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; nops ; nopxm ; nopv
24+
; CHECK-NEXT: .LBB0_1: // %for.body
25+
; CHECK-NEXT: // =>This Inner Loop Header: Depth=1
26+
; CHECK-NEXT: .L_LEnd0:
27+
; CHECK-NEXT: nopa ; vldb x0, [p5, #0]; vst x0, [p5, #0]; nopxm ; nopv
28+
; CHECK-NEXT: // %bb.2: // %exit
29+
; CHECK-NEXT: nop
30+
; CHECK-NEXT: nop
31+
; CHECK-NEXT: nop
32+
; CHECK-NEXT: nop
33+
; CHECK-NEXT: nop
34+
; CHECK-NEXT: nop
35+
; CHECK-NEXT: nop
36+
; CHECK-NEXT: nop
37+
; CHECK-NEXT: nop
38+
; CHECK-NEXT: nop
39+
; CHECK-NEXT: vst x0, [p5, #0]
40+
; CHECK-NEXT: vst x0, [p5, #0]
41+
; CHECK-NEXT: vst x0, [p5, #0]
42+
; CHECK-NEXT: vst x0, [p5, #0]
43+
; CHECK-NEXT: vst x0, [p5, #0]
44+
; CHECK-NEXT: vst x0, [p5, #0]
45+
; CHECK-NEXT: vst x0, [p5, #0]
46+
; CHECK-NEXT: nop
47+
; CHECK-NEXT: nop
48+
; CHECK-NEXT: nop
49+
; CHECK-NEXT: mova p0, #0
50+
; CHECK-NEXT: jl p5
51+
; CHECK-NEXT: nop // Delay Slot 5
52+
; CHECK-NEXT: mova p1, #0 // Delay Slot 4
53+
; CHECK-NEXT: mova p2, #0 // Delay Slot 3
54+
; CHECK-NEXT: mova p3, #0 // Delay Slot 2
55+
; CHECK-NEXT: mova p4, #0 // Delay Slot 1
56+
; CHECK-NEXT: lda lr, [sp, #-64]; nopb ; nops ; nopxm ; nopv // 4-byte Folded Reload
57+
; CHECK-NEXT: nopx
58+
; CHECK-NEXT: nop
59+
; CHECK-NEXT: nop
60+
; CHECK-NEXT: nop
61+
; CHECK-NEXT: nop
62+
; CHECK-NEXT: nop
63+
; CHECK-NEXT: ret lr
64+
; CHECK-NEXT: nop // Delay Slot 5
65+
; CHECK-NEXT: nop // Delay Slot 4
66+
; CHECK-NEXT: nop // Delay Slot 3
67+
; CHECK-NEXT: paddxm [sp], #-64 // Delay Slot 2
68+
; CHECK-NEXT: nop // Delay Slot 1
69+
entry:
70+
call void @llvm.set.loop.iterations.i32(i32 0)
71+
br label %for.body
72+
73+
for.body: ; preds = %for.body, %entry
74+
%0 = load <64 x i8>, ptr addrspace(5) null, align 64, !noalias !0
75+
store <64 x i8> %0, ptr addrspace(6) null, align 64, !alias.scope !13
76+
%1 = call i1 @llvm.loop.decrement.i32(i32 0)
77+
br i1 %1, label %for.body, label %exit, !llvm.loop !14
78+
79+
exit: ; preds = %for.body
80+
tail call void null(ptr null, ptr null, ptr null, ptr null, ptr null)
81+
%2 = load i32, ptr null, align 4
82+
ret void
83+
}
84+
85+
; Function Attrs: nocallback noduplicate nofree nosync nounwind willreturn
86+
declare void @llvm.set.loop.iterations.i32(i32) #0
87+
88+
; Function Attrs: nocallback noduplicate nofree nosync nounwind willreturn
89+
declare i1 @llvm.loop.decrement.i32(i32) #0
90+
91+
attributes #0 = { nocallback noduplicate nofree nosync nounwind willreturn }
92+
93+
!0 = !{!7, !9}
94+
!7 = distinct !{!7, !8, !"param1: %in"}
95+
!8 = distinct !{!8, !"param1"}
96+
!9 = distinct !{!9, !10, !"param2: %matA"}
97+
!10 = distinct !{!10, !"param2"}
98+
!13 = !{!7, !9}
99+
!14 = distinct !{!14, !15, !16}
100+
!15 = !{!"llvm.loop.mustprogress"}
101+
!16 = !{!"llvm.loop.itercount.range", i64 8}

0 commit comments

Comments
 (0)