Skip to content

Commit 31e47b6

Browse files
committed
Update tests
1 parent 7de09f4 commit 31e47b6

File tree

3 files changed

+146
-75
lines changed

3 files changed

+146
-75
lines changed

llvm/test/Analysis/BasicAA/matrix-intrinsics.ll

Lines changed: 8 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,40 +4,27 @@
44
; don't overlap with matrix loads with a statically known size.
55

66
define <8 x double> @non_overlapping_strided_load(ptr %src) {
7+
; CHECK-LABEL: Function: non_overlapping_strided_load:
8+
; Just Ref: %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
9+
; Just Mod: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2) <-> %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
710
entry:
811
%src.offset = getelementptr inbounds double, ptr %src, i32 12
912
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
1013
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
11-
%l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
12-
%s = fadd <8 x double> %l, %l.2
13-
ret <8 x double> %s
14+
ret <8 x double> %l
1415
}
1516

16-
; CHECK-LABEL: Function: non_overlapping_strided_load:
17+
define <8 x double> @overlapping_strided_load(ptr %src) {
18+
; CHECK-LABEL: Function: overlapping_strided_load:
1719
; CHECK: Just Ref: %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
18-
; CHECK: NoModRef: %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
1920
; CHECK: Just Mod: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2) <-> %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
20-
; CHECK: Just Mod: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2) <-> %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
21-
; CHECK: NoModRef: %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
22-
; CHECK: Just Ref: %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
23-
24-
define <8 x double> @overlapping_strided_load(ptr %src) {
21+
;
2522
entry:
2623
%src.offset = getelementptr inbounds double, ptr %src, i32 11
2724
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
2825
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
29-
%l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
30-
%s = fadd <8 x double> %l, %l.2
31-
ret <8 x double> %s
26+
ret <8 x double> %l
3227
}
3328

34-
; CHECK-LABEL: Function: overlapping_strided_load:
35-
; CHECK: Just Ref: %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
36-
; CHECK: NoModRef: %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
37-
; CHECK: Just Mod: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2) <-> %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
38-
; CHECK: Just Mod: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2) <-> %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
39-
; CHECK: NoModRef: %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> %l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2)
40-
; CHECK: Just Ref: %l.2 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src.offset, i32 8, i1 false, i32 4, i32 2) <-> call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %src, i32 8, i1 false, i32 4, i32 2)
41-
4229
declare <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr, i32, i1, i32, i32)
4330
declare void @llvm.matrix.column.major.store.v8f64.i32(<8 x double>, ptr, i32, i1, i32, i32)

llvm/test/Transforms/DeadStoreElimination/matrix-intrinsics.ll

Lines changed: 59 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ define void @dead_unstrided_store_non_matrix_load(ptr noalias %src, ptr noalias
1010
; CHECK-NEXT: ret void
1111
;
1212
entry:
13-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
13+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
1414
%l = load double, ptr %src
15-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
15+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
1616
ret void
1717
}
1818

@@ -28,9 +28,9 @@ define void @live_unstrided_store_non_matrix_load(ptr noalias %src, ptr noalias
2828
;
2929
entry:
3030
%l.1 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
31-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
31+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
3232
%l.2 = load double, ptr %dst
33-
call void @llvm.matrix.column.major.store(<8 x double> %l.1, ptr %dst, i32 4, i1 false, i32 4, i32 2)
33+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l.1, ptr %dst, i32 4, i1 false, i32 4, i32 2)
3434
ret void
3535
}
3636

@@ -44,9 +44,9 @@ define void @dead_strided_store(ptr noalias %src, ptr noalias %dst) {
4444
; CHECK-NEXT: ret void
4545
;
4646
entry:
47-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 100, i1 false, i32 4, i32 2)
47+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 100, i1 false, i32 4, i32 2)
4848
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 200, i1 false, i32 4, i32 2)
49-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %dst, i32 100, i1 false, i32 4, i32 2)
49+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %dst, i32 100, i1 false, i32 4, i32 2)
5050
ret void
5151
}
5252

@@ -60,9 +60,9 @@ define void @live_strided_store(ptr %ptr) {
6060
; CHECK-NEXT: ret void
6161
;
6262
entry:
63-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %ptr, i32 100, i1 false, i32 4, i32 2)
63+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %ptr, i32 100, i1 false, i32 4, i32 2)
6464
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %ptr, i32 200, i1 false, i32 4, i32 2)
65-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %ptr, i32 100, i1 false, i32 4, i32 2)
65+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %ptr, i32 100, i1 false, i32 4, i32 2)
6666
ret void
6767
}
6868

@@ -78,9 +78,9 @@ define void @dead_strided_store_non_matrix_load(ptr noalias %src, ptr noalias %d
7878
;
7979
entry:
8080
%l.1 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
81-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 100, i1 false, i32 4, i32 2)
81+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 100, i1 false, i32 4, i32 2)
8282
%l.2 = load double, ptr %src
83-
call void @llvm.matrix.column.major.store(<8 x double> %l.1, ptr %dst, i32 100, i1 false, i32 4, i32 2)
83+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l.1, ptr %dst, i32 100, i1 false, i32 4, i32 2)
8484
ret void
8585
}
8686

@@ -96,9 +96,9 @@ define void @live_strided_store_non_matrix_load(ptr noalias %src, ptr noalias %d
9696
;
9797
entry:
9898
%l.1 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
99-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 100, i1 false, i32 4, i32 2)
99+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 100, i1 false, i32 4, i32 2)
100100
%l.2 = load double, ptr %dst
101-
call void @llvm.matrix.column.major.store(<8 x double> %l.1, ptr %dst, i32 100, i1 false, i32 4, i32 2)
101+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l.1, ptr %dst, i32 100, i1 false, i32 4, i32 2)
102102
ret void
103103
}
104104

@@ -112,9 +112,9 @@ define void @dead_dynamically_strided_store(ptr noalias %src, ptr noalias %dst,
112112
; CHECK-NEXT: ret void
113113
;
114114
entry:
115-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
115+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
116116
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
117-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
117+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
118118
ret void
119119
}
120120

@@ -128,9 +128,9 @@ define void @live_dynamically_strided_store(ptr %ptr, i32 %stride) {
128128
; CHECK-NEXT: ret void
129129
;
130130
entry:
131-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %ptr, i32 %stride, i1 false, i32 4, i32 2)
131+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %ptr, i32 %stride, i1 false, i32 4, i32 2)
132132
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %ptr, i32 %stride, i1 false, i32 4, i32 2)
133-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %ptr, i32 %stride, i1 false, i32 4, i32 2)
133+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %ptr, i32 %stride, i1 false, i32 4, i32 2)
134134
ret void
135135
}
136136

@@ -146,9 +146,9 @@ define void @dead_dynamically_strided_store_non_matrix_load(ptr noalias %src, pt
146146
;
147147
entry:
148148
%l.1 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
149-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
149+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
150150
%l.2 = load double, ptr %src
151-
call void @llvm.matrix.column.major.store(<8 x double> %l.1, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
151+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l.1, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
152152
ret void
153153
}
154154

@@ -163,9 +163,9 @@ define void @live_dynamically_strided_store_non_matrix_load(ptr noalias %src, pt
163163
;
164164
entry:
165165
%l.1 = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
166-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
166+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
167167
%l.2 = load double, ptr %dst
168-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
168+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 %stride, i1 false, i32 4, i32 2)
169169
ret void
170170
}
171171

@@ -179,9 +179,9 @@ define void @dead_unstrided_store(ptr noalias %src, ptr noalias %dst) {
179179
; CHECK-NEXT: ret void
180180
;
181181
entry:
182-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
182+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %dst, i32 4, i1 false, i32 4, i32 2)
183183
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
184-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %dst, i32 4, i1 false, i32 4, i32 2)
184+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %dst, i32 4, i1 false, i32 4, i32 2)
185185
ret void
186186
}
187187

@@ -195,9 +195,9 @@ define void @live_unstrided_store(ptr %ptr) {
195195
; CHECK-NEXT: ret void
196196
;
197197
entry:
198-
call void @llvm.matrix.column.major.store(<8 x double> zeroinitializer, ptr %ptr, i32 4, i1 false, i32 4, i32 2)
198+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> zeroinitializer, ptr %ptr, i32 4, i1 false, i32 4, i32 2)
199199
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %ptr, i32 4, i1 false, i32 4, i32 2)
200-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %ptr, i32 4, i1 false, i32 4, i32 2)
200+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %ptr, i32 4, i1 false, i32 4, i32 2)
201201
ret void
202202
}
203203

@@ -215,7 +215,7 @@ entry:
215215
%dst.offset = getelementptr inbounds double, ptr %src, i32 6
216216
store double 42.0, ptr %dst.offset
217217
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 4, i1 false, i32 4, i32 2)
218-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %dst, i32 4, i1 false, i32 4, i32 2)
218+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %dst, i32 4, i1 false, i32 4, i32 2)
219219
ret void
220220
}
221221

@@ -233,7 +233,7 @@ entry:
233233
%ptr.offset = getelementptr inbounds double, ptr %ptr, i32 6
234234
store double 42.0, ptr %ptr.offset
235235
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %ptr, i32 4, i1 false, i32 4, i32 2)
236-
call void @llvm.matrix.column.major.store(<8 x double> %l, ptr %ptr, i32 4, i1 false, i32 4, i32 2)
236+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %ptr, i32 4, i1 false, i32 4, i32 2)
237237
ret void
238238
}
239239

@@ -301,5 +301,38 @@ entry:
301301
ret void
302302
}
303303

304+
define void @dead_matrix_store_dimension_change(ptr noalias %src, ptr noalias %dst) {
305+
; CHECK-LABEL: define void @dead_matrix_store_dimension_change(
306+
; CHECK-SAME: ptr noalias [[SRC:%.*]], ptr noalias [[DST:%.*]]) {
307+
; CHECK-NEXT: [[ENTRY:.*:]]
308+
; CHECK-NEXT: [[L:%.*]] = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr [[SRC]], i32 8, i1 false, i32 4, i32 2)
309+
; CHECK-NEXT: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> [[L]], ptr [[DST]], i32 4, i1 false, i32 4, i32 2)
310+
; CHECK-NEXT: call void @llvm.matrix.column.major.store.v9f64.i32(<9 x double> zeroinitializer, ptr [[DST]], i32 3, i1 false, i32 3, i32 3)
311+
; CHECK-NEXT: ret void
312+
;
313+
entry:
314+
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 8, i1 false, i32 4, i32 2)
315+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %dst, i32 4, i1 false, i32 4, i32 2)
316+
call void @llvm.matrix.column.major.store.v9f64.i32(<9 x double> zeroinitializer, ptr %dst, i32 3, i1 false, i32 3, i32 3)
317+
ret void
318+
}
319+
320+
define void @live_matrix_store_dimension_change(ptr noalias %src, ptr noalias %dst) {
321+
; CHECK-LABEL: define void @live_matrix_store_dimension_change(
322+
; CHECK-SAME: ptr noalias [[SRC:%.*]], ptr noalias [[DST:%.*]]) {
323+
; CHECK-NEXT: [[ENTRY:.*:]]
324+
; CHECK-NEXT: [[L:%.*]] = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr [[SRC]], i32 8, i1 false, i32 4, i32 2)
325+
; CHECK-NEXT: call void @llvm.matrix.column.major.store.v9f64.i32(<9 x double> zeroinitializer, ptr [[DST]], i32 3, i1 false, i32 3, i32 3)
326+
; CHECK-NEXT: call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> [[L]], ptr [[DST]], i32 4, i1 false, i32 4, i32 2)
327+
; CHECK-NEXT: ret void
328+
;
329+
entry:
330+
%l = call <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr %src, i32 8, i1 false, i32 4, i32 2)
331+
call void @llvm.matrix.column.major.store.v9f64.i32(<9 x double> zeroinitializer, ptr %dst, i32 3, i1 false, i32 3, i32 3)
332+
call void @llvm.matrix.column.major.store.v8f64.i32(<8 x double> %l, ptr %dst, i32 4, i1 false, i32 4, i32 2)
333+
ret void
334+
}
335+
304336
declare <8 x double> @llvm.matrix.column.major.load.v8f64.i32(ptr, i32, i1, i32, i32)
337+
declare <9 x double> @llvm.matrix.column.major.load.v9f64.i32(ptr, i32, i1, i32, i32)
305338
declare void @llvm.matrix.column.major.store.v8f64.i32(<8 x double>, ptr, i32, i1, i32, i32)

0 commit comments

Comments
 (0)