[bazel] Port 0aa831e0edb1c1deabb96ce2435667cc82bac79b
[llvm-project.git] / llvm / test / Analysis / CostModel / ARM / reduce-bit.ll
blobb38660df59a3e7200393f04d46c1ae376a3506e3
1 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2 ; RUN: opt < %s -mtriple=armv8a-linux-gnueabihf -mattr=+fp64 -passes="print<cost-model>" 2>&1 -disable-output | FileCheck %s --check-prefix=CHECK-V8
3 ; RUN: opt < %s -mtriple=thumbv8.1m.main-none-eabi -mattr=+mve -passes="print<cost-model>" 2>&1 -disable-output | FileCheck %s --check-prefix=CHECK-MVEI
5 define void @and() {
6 ; CHECK-V8-LABEL: 'and'
7 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %v1i64 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef)
8 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %v2i64 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef)
9 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v4i64 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef)
10 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i32 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef)
11 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %v4i32 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef)
12 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %v8i32 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef)
13 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i16 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef)
14 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i16 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef)
15 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %v8i16 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef)
16 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %v16i16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef)
17 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i8 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef)
18 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i8 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef)
19 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %v8i8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef)
20 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %v16i8 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef)
21 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %v32i8 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef)
22 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
24 ; CHECK-MVEI-LABEL: 'and'
25 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %v1i64 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef)
26 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %v2i64 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef)
27 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %v4i64 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef)
28 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i32 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef)
29 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i32 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef)
30 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %v8i32 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef)
31 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i16 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef)
32 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i16 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef)
33 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %v8i16 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef)
34 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %v16i16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef)
35 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i8 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef)
36 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i8 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef)
37 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %v8i8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef)
38 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 31 for instruction: %v16i8 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef)
39 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 33 for instruction: %v32i8 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef)
40 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
42 entry:
43   %v1i64 = call i64 @llvm.vector.reduce.and.v1i64(<1 x i64> undef)
44   %v2i64 = call i64 @llvm.vector.reduce.and.v2i64(<2 x i64> undef)
45   %v4i64 = call i64 @llvm.vector.reduce.and.v4i64(<4 x i64> undef)
46   %v2i32 = call i32 @llvm.vector.reduce.and.v2i32(<2 x i32> undef)
47   %v4i32 = call i32 @llvm.vector.reduce.and.v4i32(<4 x i32> undef)
48   %v8i32 = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef)
49   %v2i16 = call i16 @llvm.vector.reduce.and.v2i16(<2 x i16> undef)
50   %v4i16 = call i16 @llvm.vector.reduce.and.v4i16(<4 x i16> undef)
51   %v8i16 = call i16 @llvm.vector.reduce.and.v8i16(<8 x i16> undef)
52   %v16i16 = call i16 @llvm.vector.reduce.and.v16i16(<16 x i16> undef)
53   %v2i8 = call i8 @llvm.vector.reduce.and.v2i8(<2 x i8> undef)
54   %v4i8 = call i8 @llvm.vector.reduce.and.v4i8(<4 x i8> undef)
55   %v8i8 = call i8 @llvm.vector.reduce.and.v8i8(<8 x i8> undef)
56   %v16i8 = call i8 @llvm.vector.reduce.and.v16i8(<16 x i8> undef)
57   %v32i8 = call i8 @llvm.vector.reduce.and.v32i8(<32 x i8> undef)
58   ret void
61 define void @or() {
62 ; CHECK-V8-LABEL: 'or'
63 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %v1i64 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)
64 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %v2i64 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)
65 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v4i64 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)
66 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i32 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)
67 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %v4i32 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)
68 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %v8i32 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)
69 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i16 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)
70 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i16 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)
71 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %v8i16 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)
72 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %v16i16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)
73 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i8 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)
74 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i8 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)
75 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %v8i8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)
76 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %v16i8 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)
77 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %v32i8 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)
78 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
80 ; CHECK-MVEI-LABEL: 'or'
81 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %v1i64 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)
82 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %v2i64 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)
83 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %v4i64 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)
84 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i32 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)
85 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i32 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)
86 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %v8i32 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)
87 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i16 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)
88 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i16 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)
89 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %v8i16 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)
90 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %v16i16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)
91 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i8 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)
92 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i8 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)
93 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %v8i8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)
94 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 31 for instruction: %v16i8 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)
95 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 33 for instruction: %v32i8 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)
96 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
98 entry:
99   %v1i64 = call i64 @llvm.vector.reduce.or.v1i64(<1 x i64> undef)
100   %v2i64 = call i64 @llvm.vector.reduce.or.v2i64(<2 x i64> undef)
101   %v4i64 = call i64 @llvm.vector.reduce.or.v4i64(<4 x i64> undef)
102   %v2i32 = call i32 @llvm.vector.reduce.or.v2i32(<2 x i32> undef)
103   %v4i32 = call i32 @llvm.vector.reduce.or.v4i32(<4 x i32> undef)
104   %v8i32 = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)
105   %v2i16 = call i16 @llvm.vector.reduce.or.v2i16(<2 x i16> undef)
106   %v4i16 = call i16 @llvm.vector.reduce.or.v4i16(<4 x i16> undef)
107   %v8i16 = call i16 @llvm.vector.reduce.or.v8i16(<8 x i16> undef)
108   %v16i16 = call i16 @llvm.vector.reduce.or.v16i16(<16 x i16> undef)
109   %v2i8 = call i8 @llvm.vector.reduce.or.v2i8(<2 x i8> undef)
110   %v4i8 = call i8 @llvm.vector.reduce.or.v4i8(<4 x i8> undef)
111   %v8i8 = call i8 @llvm.vector.reduce.or.v8i8(<8 x i8> undef)
112   %v16i8 = call i8 @llvm.vector.reduce.or.v16i8(<16 x i8> undef)
113   %v32i8 = call i8 @llvm.vector.reduce.or.v32i8(<32 x i8> undef)
114   ret void
117 define void @xor() {
118 ; CHECK-V8-LABEL: 'xor'
119 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %v1i64 = call i64 @llvm.vector.reduce.xor.v1i64(<1 x i64> undef)
120 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 2 for instruction: %v2i64 = call i64 @llvm.vector.reduce.xor.v2i64(<2 x i64> undef)
121 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v4i64 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> undef)
122 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i32 = call i32 @llvm.vector.reduce.xor.v2i32(<2 x i32> undef)
123 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %v4i32 = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> undef)
124 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 5 for instruction: %v8i32 = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)
125 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i16 = call i16 @llvm.vector.reduce.xor.v2i16(<2 x i16> undef)
126 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i16 = call i16 @llvm.vector.reduce.xor.v4i16(<4 x i16> undef)
127 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 8 for instruction: %v8i16 = call i16 @llvm.vector.reduce.xor.v8i16(<8 x i16> undef)
128 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %v16i16 = call i16 @llvm.vector.reduce.xor.v16i16(<16 x i16> undef)
129 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i8 = call i8 @llvm.vector.reduce.xor.v2i8(<2 x i8> undef)
130 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i8 = call i8 @llvm.vector.reduce.xor.v4i8(<4 x i8> undef)
131 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %v8i8 = call i8 @llvm.vector.reduce.xor.v8i8(<8 x i8> undef)
132 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 16 for instruction: %v16i8 = call i8 @llvm.vector.reduce.xor.v16i8(<16 x i8> undef)
133 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %v32i8 = call i8 @llvm.vector.reduce.xor.v32i8(<32 x i8> undef)
134 ; CHECK-V8-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
136 ; CHECK-MVEI-LABEL: 'xor'
137 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %v1i64 = call i64 @llvm.vector.reduce.xor.v1i64(<1 x i64> undef)
138 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %v2i64 = call i64 @llvm.vector.reduce.xor.v2i64(<2 x i64> undef)
139 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 6 for instruction: %v4i64 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> undef)
140 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i32 = call i32 @llvm.vector.reduce.xor.v2i32(<2 x i32> undef)
141 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i32 = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> undef)
142 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 9 for instruction: %v8i32 = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)
143 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i16 = call i16 @llvm.vector.reduce.xor.v2i16(<2 x i16> undef)
144 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i16 = call i16 @llvm.vector.reduce.xor.v4i16(<4 x i16> undef)
145 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %v8i16 = call i16 @llvm.vector.reduce.xor.v8i16(<8 x i16> undef)
146 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 17 for instruction: %v16i16 = call i16 @llvm.vector.reduce.xor.v16i16(<16 x i16> undef)
147 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %v2i8 = call i8 @llvm.vector.reduce.xor.v2i8(<2 x i8> undef)
148 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 7 for instruction: %v4i8 = call i8 @llvm.vector.reduce.xor.v4i8(<4 x i8> undef)
149 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 11 for instruction: %v8i8 = call i8 @llvm.vector.reduce.xor.v8i8(<8 x i8> undef)
150 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 31 for instruction: %v16i8 = call i8 @llvm.vector.reduce.xor.v16i8(<16 x i8> undef)
151 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 33 for instruction: %v32i8 = call i8 @llvm.vector.reduce.xor.v32i8(<32 x i8> undef)
152 ; CHECK-MVEI-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret void
154 entry:
155   %v1i64 = call i64 @llvm.vector.reduce.xor.v1i64(<1 x i64> undef)
156   %v2i64 = call i64 @llvm.vector.reduce.xor.v2i64(<2 x i64> undef)
157   %v4i64 = call i64 @llvm.vector.reduce.xor.v4i64(<4 x i64> undef)
158   %v2i32 = call i32 @llvm.vector.reduce.xor.v2i32(<2 x i32> undef)
159   %v4i32 = call i32 @llvm.vector.reduce.xor.v4i32(<4 x i32> undef)
160   %v8i32 = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)
161   %v2i16 = call i16 @llvm.vector.reduce.xor.v2i16(<2 x i16> undef)
162   %v4i16 = call i16 @llvm.vector.reduce.xor.v4i16(<4 x i16> undef)
163   %v8i16 = call i16 @llvm.vector.reduce.xor.v8i16(<8 x i16> undef)
164   %v16i16 = call i16 @llvm.vector.reduce.xor.v16i16(<16 x i16> undef)
165   %v2i8 = call i8 @llvm.vector.reduce.xor.v2i8(<2 x i8> undef)
166   %v4i8 = call i8 @llvm.vector.reduce.xor.v4i8(<4 x i8> undef)
167   %v8i8 = call i8 @llvm.vector.reduce.xor.v8i8(<8 x i8> undef)
168   %v16i8 = call i8 @llvm.vector.reduce.xor.v16i8(<16 x i8> undef)
169   %v32i8 = call i8 @llvm.vector.reduce.xor.v32i8(<32 x i8> undef)
170   ret void
173 declare i16 @llvm.vector.reduce.and.v16i16(<16 x i16>)
174 declare i16 @llvm.vector.reduce.and.v2i16(<2 x i16>)
175 declare i16 @llvm.vector.reduce.and.v4i16(<4 x i16>)
176 declare i16 @llvm.vector.reduce.and.v8i16(<8 x i16>)
177 declare i16 @llvm.vector.reduce.or.v16i16(<16 x i16>)
178 declare i16 @llvm.vector.reduce.or.v2i16(<2 x i16>)
179 declare i16 @llvm.vector.reduce.or.v4i16(<4 x i16>)
180 declare i16 @llvm.vector.reduce.or.v8i16(<8 x i16>)
181 declare i16 @llvm.vector.reduce.xor.v16i16(<16 x i16>)
182 declare i16 @llvm.vector.reduce.xor.v2i16(<2 x i16>)
183 declare i16 @llvm.vector.reduce.xor.v4i16(<4 x i16>)
184 declare i16 @llvm.vector.reduce.xor.v8i16(<8 x i16>)
185 declare i32 @llvm.vector.reduce.and.v2i32(<2 x i32>)
186 declare i32 @llvm.vector.reduce.and.v4i32(<4 x i32>)
187 declare i32 @llvm.vector.reduce.and.v8i32(<8 x i32>)
188 declare i32 @llvm.vector.reduce.or.v2i32(<2 x i32>)
189 declare i32 @llvm.vector.reduce.or.v4i32(<4 x i32>)
190 declare i32 @llvm.vector.reduce.or.v8i32(<8 x i32>)
191 declare i32 @llvm.vector.reduce.xor.v2i32(<2 x i32>)
192 declare i32 @llvm.vector.reduce.xor.v4i32(<4 x i32>)
193 declare i32 @llvm.vector.reduce.xor.v8i32(<8 x i32>)
194 declare i64 @llvm.vector.reduce.and.v1i64(<1 x i64>)
195 declare i64 @llvm.vector.reduce.and.v2i64(<2 x i64>)
196 declare i64 @llvm.vector.reduce.and.v4i64(<4 x i64>)
197 declare i64 @llvm.vector.reduce.or.v1i64(<1 x i64>)
198 declare i64 @llvm.vector.reduce.or.v2i64(<2 x i64>)
199 declare i64 @llvm.vector.reduce.or.v4i64(<4 x i64>)
200 declare i64 @llvm.vector.reduce.xor.v1i64(<1 x i64>)
201 declare i64 @llvm.vector.reduce.xor.v2i64(<2 x i64>)
202 declare i64 @llvm.vector.reduce.xor.v4i64(<4 x i64>)
203 declare i8 @llvm.vector.reduce.and.v16i8(<16 x i8>)
204 declare i8 @llvm.vector.reduce.and.v32i8(<32 x i8>)
205 declare i8 @llvm.vector.reduce.and.v8i8(<8 x i8>)
206 declare i8 @llvm.vector.reduce.and.v4i8(<4 x i8>)
207 declare i8 @llvm.vector.reduce.and.v2i8(<2 x i8>)
208 declare i8 @llvm.vector.reduce.or.v16i8(<16 x i8>)
209 declare i8 @llvm.vector.reduce.or.v32i8(<32 x i8>)
210 declare i8 @llvm.vector.reduce.or.v8i8(<8 x i8>)
211 declare i8 @llvm.vector.reduce.or.v4i8(<4 x i8>)
212 declare i8 @llvm.vector.reduce.or.v2i8(<2 x i8>)
213 declare i8 @llvm.vector.reduce.xor.v16i8(<16 x i8>)
214 declare i8 @llvm.vector.reduce.xor.v32i8(<32 x i8>)
215 declare i8 @llvm.vector.reduce.xor.v8i8(<8 x i8>)
216 declare i8 @llvm.vector.reduce.xor.v4i8(<4 x i8>)
217 declare i8 @llvm.vector.reduce.xor.v2i8(<2 x i8>)