Skip to content

Commit 3e6d566

Browse files
committed
[SLP][NFC]Add a test with reused buildvector node, being resized after
minbitwidth analysis.
1 parent c419661 commit 3e6d566

File tree

1 file changed

+89
-0
lines changed

1 file changed

+89
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2+
; RUN: opt -S --passes=slp-vectorizer -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
3+
4+
define void @h() {
5+
; CHECK-LABEL: define void @h() {
6+
; CHECK-NEXT: entry:
7+
; CHECK-NEXT: [[ARRAYIDX2:%.*]] = getelementptr i8, ptr null, i64 16
8+
; CHECK-NEXT: [[TMP0:%.*]] = sub <8 x i32> zeroinitializer, zeroinitializer
9+
; CHECK-NEXT: [[TMP1:%.*]] = add <8 x i32> zeroinitializer, zeroinitializer
10+
; CHECK-NEXT: [[TMP2:%.*]] = shufflevector <8 x i32> [[TMP0]], <8 x i32> [[TMP1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15>
11+
; CHECK-NEXT: [[TMP3:%.*]] = or <8 x i32> [[TMP2]], zeroinitializer
12+
; CHECK-NEXT: [[TMP4:%.*]] = trunc <8 x i32> [[TMP3]] to <8 x i16>
13+
; CHECK-NEXT: store <8 x i16> [[TMP4]], ptr [[ARRAYIDX2]], align 2
14+
; CHECK-NEXT: ret void
15+
;
16+
entry:
17+
%conv9 = zext i16 0 to i32
18+
%arrayidx2 = getelementptr i8, ptr null, i64 16
19+
%conv310 = zext i16 0 to i32
20+
%add4 = add i32 %conv310, %conv9
21+
%sub = sub i32 0, %conv310
22+
%conv15 = sext i16 0 to i32
23+
%shr = ashr i32 0, 0
24+
%arrayidx18 = getelementptr i8, ptr null, i64 24
25+
%conv19 = sext i16 0 to i32
26+
%sub20 = sub i32 %shr, %conv19
27+
%shr29 = ashr i32 0, 0
28+
%add30 = add i32 %shr29, %conv15
29+
%sub39 = or i32 %sub, %sub20
30+
%conv40 = trunc i32 %sub39 to i16
31+
store i16 %conv40, ptr %arrayidx2, align 2
32+
%sub44 = or i32 %add4, %add30
33+
%conv45 = trunc i32 %sub44 to i16
34+
store i16 %conv45, ptr %arrayidx18, align 2
35+
%arrayidx2.1 = getelementptr i8, ptr null, i64 18
36+
%conv3.112 = zext i16 0 to i32
37+
%add4.1 = add i32 %conv3.112, 0
38+
%sub.1 = sub i32 0, %conv3.112
39+
%conv15.1 = sext i16 0 to i32
40+
%shr.1 = ashr i32 0, 0
41+
%arrayidx18.1 = getelementptr i8, ptr null, i64 26
42+
%conv19.1 = sext i16 0 to i32
43+
%sub20.1 = sub i32 %shr.1, %conv19.1
44+
%shr29.1 = ashr i32 0, 0
45+
%add30.1 = add i32 %shr29.1, %conv15.1
46+
%sub39.1 = or i32 %sub.1, %sub20.1
47+
%conv40.1 = trunc i32 %sub39.1 to i16
48+
store i16 %conv40.1, ptr %arrayidx2.1, align 2
49+
%sub44.1 = or i32 %add4.1, %add30.1
50+
%conv45.1 = trunc i32 %sub44.1 to i16
51+
store i16 %conv45.1, ptr %arrayidx18.1, align 2
52+
%conv.213 = zext i16 0 to i32
53+
%arrayidx2.2 = getelementptr i8, ptr null, i64 20
54+
%conv3.214 = zext i16 0 to i32
55+
%add4.2 = add i32 0, %conv.213
56+
%sub.2 = sub i32 0, %conv3.214
57+
%conv15.2 = sext i16 0 to i32
58+
%shr.2 = ashr i32 0, 0
59+
%arrayidx18.2 = getelementptr i8, ptr null, i64 28
60+
%conv19.2 = sext i16 0 to i32
61+
%sub20.2 = sub i32 %shr.2, %conv19.2
62+
%shr29.2 = ashr i32 0, 0
63+
%add30.2 = add i32 %shr29.2, %conv15.2
64+
%sub39.2 = or i32 %sub.2, %sub20.2
65+
%conv40.2 = trunc i32 %sub39.2 to i16
66+
store i16 %conv40.2, ptr %arrayidx2.2, align 2
67+
%sub44.2 = or i32 %add4.2, %add30.2
68+
%conv45.2 = trunc i32 %sub44.2 to i16
69+
store i16 %conv45.2, ptr %arrayidx18.2, align 2
70+
%conv.315 = zext i16 0 to i32
71+
%arrayidx2.3 = getelementptr i8, ptr null, i64 22
72+
%conv3.316 = zext i16 0 to i32
73+
%add4.3 = add i32 0, %conv.315
74+
%sub.3 = sub i32 0, %conv3.316
75+
%conv15.3 = sext i16 0 to i32
76+
%shr.3 = ashr i32 0, 0
77+
%arrayidx18.3 = getelementptr i8, ptr null, i64 30
78+
%conv19.3 = sext i16 0 to i32
79+
%sub20.3 = sub i32 %shr.3, %conv19.3
80+
%shr29.3 = ashr i32 0, 0
81+
%add30.3 = add i32 %shr29.3, %conv15.3
82+
%sub39.3 = or i32 %sub.3, %sub20.3
83+
%conv40.3 = trunc i32 %sub39.3 to i16
84+
store i16 %conv40.3, ptr %arrayidx2.3, align 2
85+
%sub44.3 = or i32 %add4.3, %add30.3
86+
%conv45.3 = trunc i32 %sub44.3 to i16
87+
store i16 %conv45.3, ptr %arrayidx18.3, align 2
88+
ret void
89+
}

0 commit comments

Comments
 (0)