1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2 ; RUN: opt -passes=slp-vectorizer -S -mtriple=x86_64-unknown-linux < %s | FileCheck %s
4 define i32 @test(ptr %p) {
5 ; CHECK-LABEL: define i32 @test
6 ; CHECK-SAME: (ptr [[P:%.*]]) {
8 ; CHECK-NEXT: [[IDX4:%.*]] = getelementptr i32, ptr [[P]], i64 8
9 ; CHECK-NEXT: store i32 0, ptr [[IDX4]], align 4
10 ; CHECK-NEXT: [[IDX5:%.*]] = getelementptr i32, ptr [[P]], i64 10
11 ; CHECK-NEXT: store i32 0, ptr [[IDX5]], align 4
12 ; CHECK-NEXT: [[IDX6:%.*]] = getelementptr i32, ptr [[P]], i64 12
13 ; CHECK-NEXT: store i32 0, ptr [[IDX6]], align 4
14 ; CHECK-NEXT: [[IDX7:%.*]] = getelementptr i32, ptr [[P]], i64 14
15 ; CHECK-NEXT: store i32 0, ptr [[IDX7]], align 4
16 ; CHECK-NEXT: [[IDX8:%.*]] = getelementptr i32, ptr [[P]], i64 16
17 ; CHECK-NEXT: store i32 0, ptr [[IDX8]], align 4
18 ; CHECK-NEXT: [[IDX9:%.*]] = getelementptr i32, ptr [[P]], i64 18
19 ; CHECK-NEXT: store i32 0, ptr [[IDX9]], align 4
20 ; CHECK-NEXT: [[IDX10:%.*]] = getelementptr i32, ptr [[P]], i64 20
21 ; CHECK-NEXT: store i32 0, ptr [[IDX10]], align 4
22 ; CHECK-NEXT: [[IDX11:%.*]] = getelementptr i32, ptr [[P]], i64 22
23 ; CHECK-NEXT: store i32 0, ptr [[IDX11]], align 4
24 ; CHECK-NEXT: [[IDX12:%.*]] = getelementptr i32, ptr [[P]], i64 24
25 ; CHECK-NEXT: store i32 0, ptr [[IDX12]], align 4
26 ; CHECK-NEXT: [[IDX13:%.*]] = getelementptr i32, ptr [[P]], i64 26
27 ; CHECK-NEXT: store i32 0, ptr [[IDX13]], align 4
28 ; CHECK-NEXT: [[IDX14:%.*]] = getelementptr i32, ptr [[P]], i64 28
29 ; CHECK-NEXT: store i32 0, ptr [[IDX14]], align 4
30 ; CHECK-NEXT: [[IDX15:%.*]] = getelementptr i32, ptr [[P]], i64 30
31 ; CHECK-NEXT: store i32 0, ptr [[IDX15]], align 4
32 ; CHECK-NEXT: [[IDX16:%.*]] = getelementptr i32, ptr [[P]], i64 32
33 ; CHECK-NEXT: store i32 0, ptr [[IDX16]], align 4
34 ; CHECK-NEXT: [[IDX18:%.*]] = getelementptr i32, ptr [[P]], i64 36
35 ; CHECK-NEXT: store i32 0, ptr [[IDX18]], align 4
36 ; CHECK-NEXT: [[IDX19:%.*]] = getelementptr i32, ptr [[P]], i64 38
37 ; CHECK-NEXT: store i32 0, ptr [[IDX19]], align 4
38 ; CHECK-NEXT: [[IDX20:%.*]] = getelementptr i32, ptr [[P]], i64 40
39 ; CHECK-NEXT: store i32 0, ptr [[IDX20]], align 4
40 ; CHECK-NEXT: [[IDX21:%.*]] = getelementptr i32, ptr [[P]], i64 42
41 ; CHECK-NEXT: store i32 0, ptr [[IDX21]], align 4
42 ; CHECK-NEXT: [[IDX22:%.*]] = getelementptr i32, ptr [[P]], i64 44
43 ; CHECK-NEXT: store i32 0, ptr [[IDX22]], align 4
44 ; CHECK-NEXT: [[IDX23:%.*]] = getelementptr i32, ptr [[P]], i64 46
45 ; CHECK-NEXT: store i32 0, ptr [[IDX23]], align 4
46 ; CHECK-NEXT: [[IDX24:%.*]] = getelementptr i32, ptr [[P]], i64 48
47 ; CHECK-NEXT: store i32 0, ptr [[IDX24]], align 4
48 ; CHECK-NEXT: [[IDX25:%.*]] = getelementptr i32, ptr [[P]], i64 50
49 ; CHECK-NEXT: store i32 0, ptr [[IDX25]], align 4
50 ; CHECK-NEXT: [[IDX26:%.*]] = getelementptr i32, ptr [[P]], i64 52
51 ; CHECK-NEXT: store i32 0, ptr [[IDX26]], align 4
52 ; CHECK-NEXT: [[IDX27:%.*]] = getelementptr i32, ptr [[P]], i64 54
53 ; CHECK-NEXT: store i32 0, ptr [[IDX27]], align 4
54 ; CHECK-NEXT: [[IDX28:%.*]] = getelementptr i32, ptr [[P]], i64 56
55 ; CHECK-NEXT: store i32 0, ptr [[IDX28]], align 4
56 ; CHECK-NEXT: [[IDX29:%.*]] = getelementptr i32, ptr [[P]], i64 58
57 ; CHECK-NEXT: store i32 0, ptr [[IDX29]], align 4
58 ; CHECK-NEXT: [[IDX30:%.*]] = getelementptr i32, ptr [[P]], i64 60
59 ; CHECK-NEXT: store i32 0, ptr [[IDX30]], align 4
60 ; CHECK-NEXT: [[IDX31:%.*]] = getelementptr i32, ptr [[P]], i64 62
61 ; CHECK-NEXT: store i32 0, ptr [[IDX31]], align 4
62 ; CHECK-NEXT: [[IDX32:%.*]] = getelementptr i32, ptr [[P]], i64 64
63 ; CHECK-NEXT: store i32 0, ptr [[IDX32]], align 4
64 ; CHECK-NEXT: [[IDX33:%.*]] = getelementptr i32, ptr [[P]], i64 66
65 ; CHECK-NEXT: store i32 0, ptr [[IDX33]], align 4
66 ; CHECK-NEXT: store i32 0, ptr [[P]], align 4
67 ; CHECK-NEXT: [[IDX0:%.*]] = getelementptr i32, ptr [[P]], i64 3
68 ; CHECK-NEXT: store <4 x i32> zeroinitializer, ptr [[IDX0]], align 4
69 ; CHECK-NEXT: ret i32 0
72 %idx2 = getelementptr i32, ptr %p, i64 4
73 store i32 0, ptr %idx2, align 4
74 %idx3 = getelementptr i32, ptr %p, i64 6
75 store i32 0, ptr %idx3, align 4
76 %idx4 = getelementptr i32, ptr %p, i64 8
77 store i32 0, ptr %idx4, align 4
78 %idx5 = getelementptr i32, ptr %p, i64 10
79 store i32 0, ptr %idx5, align 4
80 %idx6 = getelementptr i32, ptr %p, i64 12
81 store i32 0, ptr %idx6, align 4
82 %idx7 = getelementptr i32, ptr %p, i64 14
83 store i32 0, ptr %idx7, align 4
84 %idx8 = getelementptr i32, ptr %p, i64 16
85 store i32 0, ptr %idx8, align 4
86 %idx9 = getelementptr i32, ptr %p, i64 18
87 store i32 0, ptr %idx9, align 4
88 %idx10 = getelementptr i32, ptr %p, i64 20
89 store i32 0, ptr %idx10, align 4
90 %idx11 = getelementptr i32, ptr %p, i64 22
91 store i32 0, ptr %idx11, align 4
92 %idx12 = getelementptr i32, ptr %p, i64 24
93 store i32 0, ptr %idx12, align 4
94 %idx13 = getelementptr i32, ptr %p, i64 26
95 store i32 0, ptr %idx13, align 4
96 %idx14 = getelementptr i32, ptr %p, i64 28
97 store i32 0, ptr %idx14, align 4
98 %idx15 = getelementptr i32, ptr %p, i64 30
99 store i32 0, ptr %idx15, align 4
100 %idx16 = getelementptr i32, ptr %p, i64 32
101 store i32 0, ptr %idx16, align 4
102 %idx18 = getelementptr i32, ptr %p, i64 36
103 store i32 0, ptr %idx18, align 4
104 %idx19 = getelementptr i32, ptr %p, i64 38
105 store i32 0, ptr %idx19, align 4
106 %idx20 = getelementptr i32, ptr %p, i64 40
107 store i32 0, ptr %idx20, align 4
108 %idx21 = getelementptr i32, ptr %p, i64 42
109 store i32 0, ptr %idx21, align 4
110 %idx22 = getelementptr i32, ptr %p, i64 44
111 store i32 0, ptr %idx22, align 4
112 %idx23 = getelementptr i32, ptr %p, i64 46
113 store i32 0, ptr %idx23, align 4
114 %idx24 = getelementptr i32, ptr %p, i64 48
115 store i32 0, ptr %idx24, align 4
116 %idx25 = getelementptr i32, ptr %p, i64 50
117 store i32 0, ptr %idx25, align 4
118 %idx26 = getelementptr i32, ptr %p, i64 52
119 store i32 0, ptr %idx26, align 4
120 %idx27 = getelementptr i32, ptr %p, i64 54
121 store i32 0, ptr %idx27, align 4
122 %idx28 = getelementptr i32, ptr %p, i64 56
123 store i32 0, ptr %idx28, align 4
124 %idx29 = getelementptr i32, ptr %p, i64 58
125 store i32 0, ptr %idx29, align 4
126 %idx30 = getelementptr i32, ptr %p, i64 60
127 store i32 0, ptr %idx30, align 4
128 %idx31 = getelementptr i32, ptr %p, i64 62
129 store i32 0, ptr %idx31, align 4
130 %idx32 = getelementptr i32, ptr %p, i64 64
131 store i32 0, ptr %idx32, align 4
132 %idx33 = getelementptr i32, ptr %p, i64 66
133 store i32 0, ptr %idx33, align 4
134 store i32 0, ptr %p, align 4
135 %idx0 = getelementptr i32, ptr %p, i64 3
136 store i32 0, ptr %idx0, align 4
137 %idx1 = getelementptr i32, ptr %p, i64 5
138 store i32 0, ptr %idx1, align 4