[TTI] getTypeBasedIntrinsicInstrCost - add basic handling for strided load/store...
[llvm-project.git] / llvm / test / Transforms / SLPVectorizer / AArch64 / gather-with-minbith-user.ll
blob3ebe920d17343ef8d68ebd145517d3673ccbe309
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
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:    store <8 x i16> zeroinitializer, ptr [[ARRAYIDX2]], align 2
9 ; CHECK-NEXT:    ret void
11 entry:
12   %conv9 = zext i16 0 to i32
13   %arrayidx2 = getelementptr i8, ptr null, i64 16
14   %conv310 = zext i16 0 to i32
15   %add4 = add i32 %conv310, %conv9
16   %sub = sub i32 0, %conv310
17   %conv15 = sext i16 0 to i32
18   %shr = ashr i32 0, 0
19   %arrayidx18 = getelementptr i8, ptr null, i64 24
20   %conv19 = sext i16 0 to i32
21   %sub20 = sub i32 %shr, %conv19
22   %shr29 = ashr i32 0, 0
23   %add30 = add i32 %shr29, %conv15
24   %sub39 = or i32 %sub, %sub20
25   %conv40 = trunc i32 %sub39 to i16
26   store i16 %conv40, ptr %arrayidx2, align 2
27   %sub44 = or i32 %add4, %add30
28   %conv45 = trunc i32 %sub44 to i16
29   store i16 %conv45, ptr %arrayidx18, align 2
30   %arrayidx2.1 = getelementptr i8, ptr null, i64 18
31   %conv3.112 = zext i16 0 to i32
32   %add4.1 = add i32 %conv3.112, 0
33   %sub.1 = sub i32 0, %conv3.112
34   %conv15.1 = sext i16 0 to i32
35   %shr.1 = ashr i32 0, 0
36   %arrayidx18.1 = getelementptr i8, ptr null, i64 26
37   %conv19.1 = sext i16 0 to i32
38   %sub20.1 = sub i32 %shr.1, %conv19.1
39   %shr29.1 = ashr i32 0, 0
40   %add30.1 = add i32 %shr29.1, %conv15.1
41   %sub39.1 = or i32 %sub.1, %sub20.1
42   %conv40.1 = trunc i32 %sub39.1 to i16
43   store i16 %conv40.1, ptr %arrayidx2.1, align 2
44   %sub44.1 = or i32 %add4.1, %add30.1
45   %conv45.1 = trunc i32 %sub44.1 to i16
46   store i16 %conv45.1, ptr %arrayidx18.1, align 2
47   %conv.213 = zext i16 0 to i32
48   %arrayidx2.2 = getelementptr i8, ptr null, i64 20
49   %conv3.214 = zext i16 0 to i32
50   %add4.2 = add i32 0, %conv.213
51   %sub.2 = sub i32 0, %conv3.214
52   %conv15.2 = sext i16 0 to i32
53   %shr.2 = ashr i32 0, 0
54   %arrayidx18.2 = getelementptr i8, ptr null, i64 28
55   %conv19.2 = sext i16 0 to i32
56   %sub20.2 = sub i32 %shr.2, %conv19.2
57   %shr29.2 = ashr i32 0, 0
58   %add30.2 = add i32 %shr29.2, %conv15.2
59   %sub39.2 = or i32 %sub.2, %sub20.2
60   %conv40.2 = trunc i32 %sub39.2 to i16
61   store i16 %conv40.2, ptr %arrayidx2.2, align 2
62   %sub44.2 = or i32 %add4.2, %add30.2
63   %conv45.2 = trunc i32 %sub44.2 to i16
64   store i16 %conv45.2, ptr %arrayidx18.2, align 2
65   %conv.315 = zext i16 0 to i32
66   %arrayidx2.3 = getelementptr i8, ptr null, i64 22
67   %conv3.316 = zext i16 0 to i32
68   %add4.3 = add i32 0, %conv.315
69   %sub.3 = sub i32 0, %conv3.316
70   %conv15.3 = sext i16 0 to i32
71   %shr.3 = ashr i32 0, 0
72   %arrayidx18.3 = getelementptr i8, ptr null, i64 30
73   %conv19.3 = sext i16 0 to i32
74   %sub20.3 = sub i32 %shr.3, %conv19.3
75   %shr29.3 = ashr i32 0, 0
76   %add30.3 = add i32 %shr29.3, %conv15.3
77   %sub39.3 = or i32 %sub.3, %sub20.3
78   %conv40.3 = trunc i32 %sub39.3 to i16
79   store i16 %conv40.3, ptr %arrayidx2.3, align 2
80   %sub44.3 = or i32 %add4.3, %add30.3
81   %conv45.3 = trunc i32 %sub44.3 to i16
82   store i16 %conv45.3, ptr %arrayidx18.3, align 2
83   ret void