xref: /llvm-project/llvm/test/Transforms/InstSimplify/ConstProp/vecreduce.ll (revision b280ee1dd7e9b36ae7aaa3953556e4b7a7f31a29)
1486ed885SArthur Eubanks; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2*b280ee1dSBjorn Pettersson; RUN: opt < %s -passes=instsimplify -S | FileCheck %s
3486ed885SArthur Eubanks
4322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.add.v1i32(<1 x i32> %a)
5322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.add.v8i32(<8 x i32> %a)
6322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.mul.v1i32(<1 x i32> %a)
7322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> %a)
8322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.and.v1i32(<1 x i32> %a)
9322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.and.v8i32(<8 x i32> %a)
10322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.or.v1i32(<1 x i32> %a)
11322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.or.v8i32(<8 x i32> %a)
12322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.xor.v1i32(<1 x i32> %a)
13322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> %a)
14322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> %a)
15322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> %a)
16322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> %a)
17322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> %a)
18322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> %a)
19322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> %a)
20322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> %a)
21322d0afdSAmara Emersondeclare i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> %a)
22486ed885SArthur Eubanks
23486ed885SArthur Eubanks
24486ed885SArthur Eubanksdefine i32 @add_0() {
25486ed885SArthur Eubanks; CHECK-LABEL: @add_0(
26486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
27486ed885SArthur Eubanks;
28322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> zeroinitializer)
29486ed885SArthur Eubanks  ret i32 %x
30486ed885SArthur Eubanks}
31486ed885SArthur Eubanks
32486ed885SArthur Eubanksdefine i32 @add_1() {
33486ed885SArthur Eubanks; CHECK-LABEL: @add_1(
34486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 8
35486ed885SArthur Eubanks;
36322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
37486ed885SArthur Eubanks  ret i32 %x
38486ed885SArthur Eubanks}
39486ed885SArthur Eubanks
40486ed885SArthur Eubanksdefine i32 @add_inc() {
41486ed885SArthur Eubanks; CHECK-LABEL: @add_inc(
42486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 18
43486ed885SArthur Eubanks;
44322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
45486ed885SArthur Eubanks  ret i32 %x
46486ed885SArthur Eubanks}
47486ed885SArthur Eubanks
48486ed885SArthur Eubanksdefine i32 @add_1v() {
49486ed885SArthur Eubanks; CHECK-LABEL: @add_1v(
50486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
51486ed885SArthur Eubanks;
52322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.add.v1i32(<1 x i32> <i32 10>)
53486ed885SArthur Eubanks  ret i32 %x
54486ed885SArthur Eubanks}
55486ed885SArthur Eubanks
56486ed885SArthur Eubanksdefine i32 @add_undef() {
57486ed885SArthur Eubanks; CHECK-LABEL: @add_undef(
58322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef)
59486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
60486ed885SArthur Eubanks;
61322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> undef)
62486ed885SArthur Eubanks  ret i32 %x
63486ed885SArthur Eubanks}
64486ed885SArthur Eubanks
65486ed885SArthur Eubanksdefine i32 @add_undef1() {
66486ed885SArthur Eubanks; CHECK-LABEL: @add_undef1(
67322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
68486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
69486ed885SArthur Eubanks;
70322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
71486ed885SArthur Eubanks  ret i32 %x
72486ed885SArthur Eubanks}
73486ed885SArthur Eubanks
7467801813SSanjay Pateldefine i32 @add_poison() {
7567801813SSanjay Patel; CHECK-LABEL: @add_poison(
761089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
7767801813SSanjay Patel;
7867801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> poison)
7967801813SSanjay Patel  ret i32 %x
8067801813SSanjay Patel}
8167801813SSanjay Patel
823dd20636SSanjay Pateldefine i32 @add_poison1() {
833dd20636SSanjay Patel; CHECK-LABEL: @add_poison1(
84a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
853dd20636SSanjay Patel;
863dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> <i32 1, i32 1, i32 poison, i32 1, i32 1, i32 42, i32 1, i32 1>)
873dd20636SSanjay Patel  ret i32 %x
883dd20636SSanjay Patel}
89486ed885SArthur Eubanks
90af382b93SNikita Popovdefine i32 @add_constexpr() {
91af382b93SNikita Popov; CHECK-LABEL: @add_constexpr(
92af382b93SNikita Popov; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> bitcast (<4 x i64> <i64 0, i64 1, i64 2, i64 3> to <8 x i32>))
93af382b93SNikita Popov; CHECK-NEXT:    ret i32 [[X]]
94af382b93SNikita Popov;
95af382b93SNikita Popov  %x = call i32 @llvm.vector.reduce.add.v8i32(<8 x i32> bitcast (<4 x i64> <i64 0, i64 1, i64 2, i64 3> to <8 x i32>))
96af382b93SNikita Popov  ret i32 %x
97af382b93SNikita Popov}
98af382b93SNikita Popov
99486ed885SArthur Eubanksdefine i32 @mul_0() {
100486ed885SArthur Eubanks; CHECK-LABEL: @mul_0(
101486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
102486ed885SArthur Eubanks;
103322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> zeroinitializer)
104486ed885SArthur Eubanks  ret i32 %x
105486ed885SArthur Eubanks}
106486ed885SArthur Eubanks
107486ed885SArthur Eubanksdefine i32 @mul_1() {
108486ed885SArthur Eubanks; CHECK-LABEL: @mul_1(
109486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
110486ed885SArthur Eubanks;
111322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
112486ed885SArthur Eubanks  ret i32 %x
113486ed885SArthur Eubanks}
114486ed885SArthur Eubanks
115486ed885SArthur Eubanksdefine i32 @mul_inc() {
116486ed885SArthur Eubanks; CHECK-LABEL: @mul_inc(
117486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 40320
118486ed885SArthur Eubanks;
119322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
120486ed885SArthur Eubanks  ret i32 %x
121486ed885SArthur Eubanks}
122486ed885SArthur Eubanks
123486ed885SArthur Eubanksdefine i32 @mul_1v() {
124486ed885SArthur Eubanks; CHECK-LABEL: @mul_1v(
125486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
126486ed885SArthur Eubanks;
127322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.mul.v1i32(<1 x i32> <i32 10>)
128486ed885SArthur Eubanks  ret i32 %x
129486ed885SArthur Eubanks}
130486ed885SArthur Eubanks
131486ed885SArthur Eubanksdefine i32 @mul_undef() {
132486ed885SArthur Eubanks; CHECK-LABEL: @mul_undef(
133322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> undef)
134486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
135486ed885SArthur Eubanks;
136322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> undef)
137486ed885SArthur Eubanks  ret i32 %x
138486ed885SArthur Eubanks}
139486ed885SArthur Eubanks
140486ed885SArthur Eubanksdefine i32 @mul_undef1() {
141486ed885SArthur Eubanks; CHECK-LABEL: @mul_undef1(
142322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
143486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
144486ed885SArthur Eubanks;
145322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
146486ed885SArthur Eubanks  ret i32 %x
147486ed885SArthur Eubanks}
148486ed885SArthur Eubanks
14967801813SSanjay Pateldefine i32 @mul_poison() {
15067801813SSanjay Patel; CHECK-LABEL: @mul_poison(
1511089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
15267801813SSanjay Patel;
15367801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> poison)
15467801813SSanjay Patel  ret i32 %x
15567801813SSanjay Patel}
15667801813SSanjay Patel
1573dd20636SSanjay Pateldefine i32 @mul_poison1() {
1583dd20636SSanjay Patel; CHECK-LABEL: @mul_poison1(
159a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
1603dd20636SSanjay Patel;
1613dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.mul.v8i32(<8 x i32> <i32 0, i32 1, i32 poison, i32 1, i32 1, i32 1, i32 1, i32 1>)
1623dd20636SSanjay Patel  ret i32 %x
1633dd20636SSanjay Patel}
164486ed885SArthur Eubanks
165486ed885SArthur Eubanksdefine i32 @and_0() {
166486ed885SArthur Eubanks; CHECK-LABEL: @and_0(
167486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
168486ed885SArthur Eubanks;
169322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> zeroinitializer)
170486ed885SArthur Eubanks  ret i32 %x
171486ed885SArthur Eubanks}
172486ed885SArthur Eubanks
173486ed885SArthur Eubanksdefine i32 @and_1() {
174486ed885SArthur Eubanks; CHECK-LABEL: @and_1(
175486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
176486ed885SArthur Eubanks;
177322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
178486ed885SArthur Eubanks  ret i32 %x
179486ed885SArthur Eubanks}
180486ed885SArthur Eubanks
181486ed885SArthur Eubanksdefine i32 @and_inc() {
182486ed885SArthur Eubanks; CHECK-LABEL: @and_inc(
183486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
184486ed885SArthur Eubanks;
185322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
186486ed885SArthur Eubanks  ret i32 %x
187486ed885SArthur Eubanks}
188486ed885SArthur Eubanks
189486ed885SArthur Eubanksdefine i32 @and_1v() {
190486ed885SArthur Eubanks; CHECK-LABEL: @and_1v(
191486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
192486ed885SArthur Eubanks;
193322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.and.v1i32(<1 x i32> <i32 10>)
194486ed885SArthur Eubanks  ret i32 %x
195486ed885SArthur Eubanks}
196486ed885SArthur Eubanks
197486ed885SArthur Eubanksdefine i32 @and_undef() {
198486ed885SArthur Eubanks; CHECK-LABEL: @and_undef(
199322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef)
200486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
201486ed885SArthur Eubanks;
202322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> undef)
203486ed885SArthur Eubanks  ret i32 %x
204486ed885SArthur Eubanks}
205486ed885SArthur Eubanks
206486ed885SArthur Eubanksdefine i32 @and_undef1() {
207486ed885SArthur Eubanks; CHECK-LABEL: @and_undef1(
208322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
209486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
210486ed885SArthur Eubanks;
211322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
212486ed885SArthur Eubanks  ret i32 %x
213486ed885SArthur Eubanks}
214486ed885SArthur Eubanks
21567801813SSanjay Pateldefine i32 @and_poison() {
21667801813SSanjay Patel; CHECK-LABEL: @and_poison(
2171089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
21867801813SSanjay Patel;
21967801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> poison)
22067801813SSanjay Patel  ret i32 %x
22167801813SSanjay Patel}
22267801813SSanjay Patel
2233dd20636SSanjay Pateldefine i32 @and_poison1() {
2243dd20636SSanjay Patel; CHECK-LABEL: @and_poison1(
225a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
2263dd20636SSanjay Patel;
2273dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.and.v8i32(<8 x i32> <i32 -1, i32 1, i32 poison, i32 1, i32 1, i32 1, i32 1, i32 1>)
2283dd20636SSanjay Patel  ret i32 %x
2293dd20636SSanjay Patel}
230486ed885SArthur Eubanks
231486ed885SArthur Eubanksdefine i32 @or_0() {
232486ed885SArthur Eubanks; CHECK-LABEL: @or_0(
233486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
234486ed885SArthur Eubanks;
235322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> zeroinitializer)
236486ed885SArthur Eubanks  ret i32 %x
237486ed885SArthur Eubanks}
238486ed885SArthur Eubanks
239486ed885SArthur Eubanksdefine i32 @or_1() {
240486ed885SArthur Eubanks; CHECK-LABEL: @or_1(
241486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
242486ed885SArthur Eubanks;
243322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
244486ed885SArthur Eubanks  ret i32 %x
245486ed885SArthur Eubanks}
246486ed885SArthur Eubanks
247486ed885SArthur Eubanksdefine i32 @or_inc() {
248486ed885SArthur Eubanks; CHECK-LABEL: @or_inc(
249486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 -1
250486ed885SArthur Eubanks;
251322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
252486ed885SArthur Eubanks  ret i32 %x
253486ed885SArthur Eubanks}
254486ed885SArthur Eubanks
255486ed885SArthur Eubanksdefine i32 @or_1v() {
256486ed885SArthur Eubanks; CHECK-LABEL: @or_1v(
257486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
258486ed885SArthur Eubanks;
259322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.or.v1i32(<1 x i32> <i32 10>)
260486ed885SArthur Eubanks  ret i32 %x
261486ed885SArthur Eubanks}
262486ed885SArthur Eubanks
263486ed885SArthur Eubanksdefine i32 @or_undef() {
264486ed885SArthur Eubanks; CHECK-LABEL: @or_undef(
265322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)
266486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
267486ed885SArthur Eubanks;
268322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> undef)
269486ed885SArthur Eubanks  ret i32 %x
270486ed885SArthur Eubanks}
271486ed885SArthur Eubanks
272486ed885SArthur Eubanksdefine i32 @or_undef1() {
273486ed885SArthur Eubanks; CHECK-LABEL: @or_undef1(
274322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
275486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
276486ed885SArthur Eubanks;
277322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
278486ed885SArthur Eubanks  ret i32 %x
279486ed885SArthur Eubanks}
280486ed885SArthur Eubanks
28167801813SSanjay Pateldefine i32 @or_poison() {
28267801813SSanjay Patel; CHECK-LABEL: @or_poison(
2831089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
28467801813SSanjay Patel;
28567801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> poison)
28667801813SSanjay Patel  ret i32 %x
28767801813SSanjay Patel}
28867801813SSanjay Patel
2893dd20636SSanjay Pateldefine i32 @or_poison1() {
2903dd20636SSanjay Patel; CHECK-LABEL: @or_poison1(
291a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
2923dd20636SSanjay Patel;
2933dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.or.v8i32(<8 x i32> <i32 1, i32 0, i32 poison, i32 1, i32 1, i32 1, i32 1, i32 1>)
2943dd20636SSanjay Patel  ret i32 %x
2953dd20636SSanjay Patel}
296486ed885SArthur Eubanks
297486ed885SArthur Eubanksdefine i32 @xor_0() {
298486ed885SArthur Eubanks; CHECK-LABEL: @xor_0(
299486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
300486ed885SArthur Eubanks;
301322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> zeroinitializer)
302486ed885SArthur Eubanks  ret i32 %x
303486ed885SArthur Eubanks}
304486ed885SArthur Eubanks
305486ed885SArthur Eubanksdefine i32 @xor_1() {
306486ed885SArthur Eubanks; CHECK-LABEL: @xor_1(
307486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
308486ed885SArthur Eubanks;
309322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
310486ed885SArthur Eubanks  ret i32 %x
311486ed885SArthur Eubanks}
312486ed885SArthur Eubanks
313486ed885SArthur Eubanksdefine i32 @xor_inc() {
314486ed885SArthur Eubanks; CHECK-LABEL: @xor_inc(
315486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
316486ed885SArthur Eubanks;
317322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
318486ed885SArthur Eubanks  ret i32 %x
319486ed885SArthur Eubanks}
320486ed885SArthur Eubanks
321486ed885SArthur Eubanksdefine i32 @xor_1v() {
322486ed885SArthur Eubanks; CHECK-LABEL: @xor_1v(
323486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
324486ed885SArthur Eubanks;
325322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.xor.v1i32(<1 x i32> <i32 10>)
326486ed885SArthur Eubanks  ret i32 %x
327486ed885SArthur Eubanks}
328486ed885SArthur Eubanks
329486ed885SArthur Eubanksdefine i32 @xor_undef() {
330486ed885SArthur Eubanks; CHECK-LABEL: @xor_undef(
331322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)
332486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
333486ed885SArthur Eubanks;
334322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> undef)
335486ed885SArthur Eubanks  ret i32 %x
336486ed885SArthur Eubanks}
337486ed885SArthur Eubanks
338486ed885SArthur Eubanksdefine i32 @xor_undef1() {
339486ed885SArthur Eubanks; CHECK-LABEL: @xor_undef1(
340322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
341486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
342486ed885SArthur Eubanks;
343322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
344486ed885SArthur Eubanks  ret i32 %x
345486ed885SArthur Eubanks}
346486ed885SArthur Eubanks
34767801813SSanjay Pateldefine i32 @xor_poison() {
34867801813SSanjay Patel; CHECK-LABEL: @xor_poison(
3491089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
35067801813SSanjay Patel;
35167801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> poison)
35267801813SSanjay Patel  ret i32 %x
35367801813SSanjay Patel}
35467801813SSanjay Patel
3553dd20636SSanjay Pateldefine i32 @xor_poison1() {
3563dd20636SSanjay Patel; CHECK-LABEL: @xor_poison1(
357a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
3583dd20636SSanjay Patel;
3593dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.xor.v8i32(<8 x i32> <i32 poison, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
3603dd20636SSanjay Patel  ret i32 %x
3613dd20636SSanjay Patel}
362486ed885SArthur Eubanks
363486ed885SArthur Eubanksdefine i32 @smin_0() {
364486ed885SArthur Eubanks; CHECK-LABEL: @smin_0(
365486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
366486ed885SArthur Eubanks;
367322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> zeroinitializer)
368486ed885SArthur Eubanks  ret i32 %x
369486ed885SArthur Eubanks}
370486ed885SArthur Eubanks
371486ed885SArthur Eubanksdefine i32 @smin_1() {
372486ed885SArthur Eubanks; CHECK-LABEL: @smin_1(
373486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
374486ed885SArthur Eubanks;
375322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
376486ed885SArthur Eubanks  ret i32 %x
377486ed885SArthur Eubanks}
378486ed885SArthur Eubanks
379486ed885SArthur Eubanksdefine i32 @smin_inc() {
380486ed885SArthur Eubanks; CHECK-LABEL: @smin_inc(
381486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 -6
382486ed885SArthur Eubanks;
383322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
384486ed885SArthur Eubanks  ret i32 %x
385486ed885SArthur Eubanks}
386486ed885SArthur Eubanks
387486ed885SArthur Eubanksdefine i32 @smin_1v() {
388486ed885SArthur Eubanks; CHECK-LABEL: @smin_1v(
389486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
390486ed885SArthur Eubanks;
391322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smin.v1i32(<1 x i32> <i32 10>)
392486ed885SArthur Eubanks  ret i32 %x
393486ed885SArthur Eubanks}
394486ed885SArthur Eubanks
395486ed885SArthur Eubanksdefine i32 @smin_undef() {
396486ed885SArthur Eubanks; CHECK-LABEL: @smin_undef(
397322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef)
398486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
399486ed885SArthur Eubanks;
400322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> undef)
401486ed885SArthur Eubanks  ret i32 %x
402486ed885SArthur Eubanks}
403486ed885SArthur Eubanks
404486ed885SArthur Eubanksdefine i32 @smin_undef1() {
405486ed885SArthur Eubanks; CHECK-LABEL: @smin_undef1(
406322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
407486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
408486ed885SArthur Eubanks;
409322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
410486ed885SArthur Eubanks  ret i32 %x
411486ed885SArthur Eubanks}
412486ed885SArthur Eubanks
41367801813SSanjay Pateldefine i32 @smin_poison() {
41467801813SSanjay Patel; CHECK-LABEL: @smin_poison(
4151089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
41667801813SSanjay Patel;
41767801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> poison)
41867801813SSanjay Patel  ret i32 %x
41967801813SSanjay Patel}
42067801813SSanjay Patel
4213dd20636SSanjay Pateldefine i32 @smin_poison1() {
4223dd20636SSanjay Patel; CHECK-LABEL: @smin_poison1(
423a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
4243dd20636SSanjay Patel;
4253dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.smin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 poison, i32 1, i32 1, i32 1>)
4263dd20636SSanjay Patel  ret i32 %x
4273dd20636SSanjay Patel}
428486ed885SArthur Eubanks
429486ed885SArthur Eubanksdefine i32 @smax_0() {
430486ed885SArthur Eubanks; CHECK-LABEL: @smax_0(
431486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
432486ed885SArthur Eubanks;
433322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> zeroinitializer)
434486ed885SArthur Eubanks  ret i32 %x
435486ed885SArthur Eubanks}
436486ed885SArthur Eubanks
437486ed885SArthur Eubanksdefine i32 @smax_1() {
438486ed885SArthur Eubanks; CHECK-LABEL: @smax_1(
439486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
440486ed885SArthur Eubanks;
441322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
442486ed885SArthur Eubanks  ret i32 %x
443486ed885SArthur Eubanks}
444486ed885SArthur Eubanks
445486ed885SArthur Eubanksdefine i32 @smax_inc() {
446486ed885SArthur Eubanks; CHECK-LABEL: @smax_inc(
447486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 8
448486ed885SArthur Eubanks;
449322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
450486ed885SArthur Eubanks  ret i32 %x
451486ed885SArthur Eubanks}
452486ed885SArthur Eubanks
453486ed885SArthur Eubanksdefine i32 @smax_1v() {
454486ed885SArthur Eubanks; CHECK-LABEL: @smax_1v(
455486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
456486ed885SArthur Eubanks;
457322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smax.v1i32(<1 x i32> <i32 10>)
458486ed885SArthur Eubanks  ret i32 %x
459486ed885SArthur Eubanks}
460486ed885SArthur Eubanks
461486ed885SArthur Eubanksdefine i32 @smax_undef() {
462486ed885SArthur Eubanks; CHECK-LABEL: @smax_undef(
463322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef)
464486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
465486ed885SArthur Eubanks;
466322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> undef)
467486ed885SArthur Eubanks  ret i32 %x
468486ed885SArthur Eubanks}
469486ed885SArthur Eubanks
470486ed885SArthur Eubanksdefine i32 @smax_undef1() {
471486ed885SArthur Eubanks; CHECK-LABEL: @smax_undef1(
472322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
473486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
474486ed885SArthur Eubanks;
475322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
476486ed885SArthur Eubanks  ret i32 %x
477486ed885SArthur Eubanks}
478486ed885SArthur Eubanks
47967801813SSanjay Pateldefine i32 @smax_poison() {
48067801813SSanjay Patel; CHECK-LABEL: @smax_poison(
4811089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
48267801813SSanjay Patel;
48367801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> poison)
48467801813SSanjay Patel  ret i32 %x
48567801813SSanjay Patel}
48667801813SSanjay Patel
4873dd20636SSanjay Pateldefine i32 @smax_poison1() {
4883dd20636SSanjay Patel; CHECK-LABEL: @smax_poison1(
489a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
4903dd20636SSanjay Patel;
4913dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.smax.v8i32(<8 x i32> <i32 1, i32 1, i32 0, i32 1, i32 1, i32 1, i32 1, i32 poison>)
4923dd20636SSanjay Patel  ret i32 %x
4933dd20636SSanjay Patel}
494486ed885SArthur Eubanks
495486ed885SArthur Eubanksdefine i32 @umin_0() {
496486ed885SArthur Eubanks; CHECK-LABEL: @umin_0(
497486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
498486ed885SArthur Eubanks;
499322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> zeroinitializer)
500486ed885SArthur Eubanks  ret i32 %x
501486ed885SArthur Eubanks}
502486ed885SArthur Eubanks
503486ed885SArthur Eubanksdefine i32 @umin_1() {
504486ed885SArthur Eubanks; CHECK-LABEL: @umin_1(
505486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
506486ed885SArthur Eubanks;
507322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
508486ed885SArthur Eubanks  ret i32 %x
509486ed885SArthur Eubanks}
510486ed885SArthur Eubanks
511486ed885SArthur Eubanksdefine i32 @umin_inc() {
512486ed885SArthur Eubanks; CHECK-LABEL: @umin_inc(
513486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
514486ed885SArthur Eubanks;
515322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
516486ed885SArthur Eubanks  ret i32 %x
517486ed885SArthur Eubanks}
518486ed885SArthur Eubanks
519486ed885SArthur Eubanksdefine i32 @umin_1v() {
520486ed885SArthur Eubanks; CHECK-LABEL: @umin_1v(
521486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
522486ed885SArthur Eubanks;
523322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umin.v1i32(<1 x i32> <i32 10>)
524486ed885SArthur Eubanks  ret i32 %x
525486ed885SArthur Eubanks}
526486ed885SArthur Eubanks
527486ed885SArthur Eubanksdefine i32 @umin_undef() {
528486ed885SArthur Eubanks; CHECK-LABEL: @umin_undef(
529322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef)
530486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
531486ed885SArthur Eubanks;
532322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> undef)
533486ed885SArthur Eubanks  ret i32 %x
534486ed885SArthur Eubanks}
535486ed885SArthur Eubanks
536486ed885SArthur Eubanksdefine i32 @umin_undef1() {
537486ed885SArthur Eubanks; CHECK-LABEL: @umin_undef1(
538322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
539486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
540486ed885SArthur Eubanks;
541322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
542486ed885SArthur Eubanks  ret i32 %x
543486ed885SArthur Eubanks}
544486ed885SArthur Eubanks
54567801813SSanjay Pateldefine i32 @umin_poison() {
54667801813SSanjay Patel; CHECK-LABEL: @umin_poison(
5471089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
54867801813SSanjay Patel;
54967801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> poison)
55067801813SSanjay Patel  ret i32 %x
55167801813SSanjay Patel}
55267801813SSanjay Patel
5533dd20636SSanjay Pateldefine i32 @umin_poison1() {
5543dd20636SSanjay Patel; CHECK-LABEL: @umin_poison1(
555a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
5563dd20636SSanjay Patel;
5573dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.umin.v8i32(<8 x i32> <i32 1, i32 1, i32 -1, i32 poison, i32 1, i32 1, i32 1, i32 1>)
5583dd20636SSanjay Patel  ret i32 %x
5593dd20636SSanjay Patel}
560486ed885SArthur Eubanks
561486ed885SArthur Eubanksdefine i32 @umax_0() {
562486ed885SArthur Eubanks; CHECK-LABEL: @umax_0(
563486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 0
564486ed885SArthur Eubanks;
565322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> zeroinitializer)
566486ed885SArthur Eubanks  ret i32 %x
567486ed885SArthur Eubanks}
568486ed885SArthur Eubanks
569486ed885SArthur Eubanksdefine i32 @umax_1() {
570486ed885SArthur Eubanks; CHECK-LABEL: @umax_1(
571486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 1
572486ed885SArthur Eubanks;
573322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>)
574486ed885SArthur Eubanks  ret i32 %x
575486ed885SArthur Eubanks}
576486ed885SArthur Eubanks
577486ed885SArthur Eubanksdefine i32 @umax_inc() {
578486ed885SArthur Eubanks; CHECK-LABEL: @umax_inc(
579486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 -3
580486ed885SArthur Eubanks;
581322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 -3, i32 5, i32 7, i32 2, i32 4, i32 -6, i32 8>)
582486ed885SArthur Eubanks  ret i32 %x
583486ed885SArthur Eubanks}
584486ed885SArthur Eubanks
585486ed885SArthur Eubanksdefine i32 @umax_1v() {
586486ed885SArthur Eubanks; CHECK-LABEL: @umax_1v(
587486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 10
588486ed885SArthur Eubanks;
589322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umax.v1i32(<1 x i32> <i32 10>)
590486ed885SArthur Eubanks  ret i32 %x
591486ed885SArthur Eubanks}
592486ed885SArthur Eubanks
593486ed885SArthur Eubanksdefine i32 @umax_undef() {
594486ed885SArthur Eubanks; CHECK-LABEL: @umax_undef(
595322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef)
596486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
597486ed885SArthur Eubanks;
598322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> undef)
599486ed885SArthur Eubanks  ret i32 %x
600486ed885SArthur Eubanks}
601486ed885SArthur Eubanks
6023dd20636SSanjay Pateldefine i32 @umax_undef1() {
6033dd20636SSanjay Patel; CHECK-LABEL: @umax_undef1(
604322d0afdSAmara Emerson; CHECK-NEXT:    [[X:%.*]] = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
605486ed885SArthur Eubanks; CHECK-NEXT:    ret i32 [[X]]
606486ed885SArthur Eubanks;
607322d0afdSAmara Emerson  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 undef, i32 1, i32 1, i32 1, i32 1, i32 1>)
608486ed885SArthur Eubanks  ret i32 %x
609486ed885SArthur Eubanks}
61067801813SSanjay Patel
61167801813SSanjay Pateldefine i32 @umax_poison() {
61267801813SSanjay Patel; CHECK-LABEL: @umax_poison(
6131089158cSSanjay Patel; CHECK-NEXT:    ret i32 poison
61467801813SSanjay Patel;
61567801813SSanjay Patel  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> poison)
61667801813SSanjay Patel  ret i32 %x
61767801813SSanjay Patel}
6183dd20636SSanjay Patel
6193dd20636SSanjay Pateldefine i32 @umax_poison1() {
6203dd20636SSanjay Patel; CHECK-LABEL: @umax_poison1(
621a0e71f18SSanjay Patel; CHECK-NEXT:    ret i32 poison
6223dd20636SSanjay Patel;
6233dd20636SSanjay Patel  %x = call i32 @llvm.vector.reduce.umax.v8i32(<8 x i32> <i32 1, i32 1, i32 poison, i32 1, i32 1, i32 poison, i32 1, i32 1>)
6243dd20636SSanjay Patel  ret i32 %x
6253dd20636SSanjay Patel}
626