xref: /llvm-project/llvm/test/CodeGen/ARM/fminmax-folds.ll (revision 8e69c3cde8eed94be226bdef1ff6cedda3a33bc4)
15a4a05c8SNikita Popov; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
25a4a05c8SNikita Popov; RUN: llc < %s -mtriple=armv8-eabi | FileCheck %s
35a4a05c8SNikita Popov
45a4a05c8SNikita Popovdeclare float @llvm.minnum.f32(float, float)
55a4a05c8SNikita Popovdeclare float @llvm.maxnum.f32(float, float)
65a4a05c8SNikita Popovdeclare float @llvm.minimum.f32(float, float)
75a4a05c8SNikita Popovdeclare float @llvm.maximum.f32(float, float)
8cb3e1dd6SNikita Popovdeclare <2 x float> @llvm.minnum.v2f32(<2 x float>, <2 x float>)
9cb3e1dd6SNikita Popovdeclare <2 x float> @llvm.maxnum.v2f32(<2 x float>, <2 x float>)
10cb3e1dd6SNikita Popovdeclare <2 x float> @llvm.minimum.v2f32(<2 x float>, <2 x float>)
11cb3e1dd6SNikita Popovdeclare <2 x float> @llvm.maximum.v2f32(<2 x float>, <2 x float>)
125a4a05c8SNikita Popov
135a4a05c8SNikita Popovdefine float @test_minnum_const_nan(float %x) {
145a4a05c8SNikita Popov; CHECK-LABEL: test_minnum_const_nan:
155a4a05c8SNikita Popov; CHECK:       @ %bb.0:
165a4a05c8SNikita Popov; CHECK-NEXT:    bx lr
175a4a05c8SNikita Popov  %r = call float @llvm.minnum.f32(float %x, float 0x7fff000000000000)
185a4a05c8SNikita Popov  ret float %r
195a4a05c8SNikita Popov}
205a4a05c8SNikita Popov
215a4a05c8SNikita Popovdefine float @test_maxnum_const_nan(float %x) {
225a4a05c8SNikita Popov; CHECK-LABEL: test_maxnum_const_nan:
235a4a05c8SNikita Popov; CHECK:       @ %bb.0:
245a4a05c8SNikita Popov; CHECK-NEXT:    bx lr
255a4a05c8SNikita Popov  %r = call float @llvm.maxnum.f32(float %x, float 0x7fff000000000000)
265a4a05c8SNikita Popov  ret float %r
275a4a05c8SNikita Popov}
285a4a05c8SNikita Popov
295a4a05c8SNikita Popovdefine float @test_maximum_const_nan(float %x) {
305a4a05c8SNikita Popov; CHECK-LABEL: test_maximum_const_nan:
315a4a05c8SNikita Popov; CHECK:       @ %bb.0:
320a5dc7efSNikita Popov; CHECK-NEXT:    movw r0, #0
330a5dc7efSNikita Popov; CHECK-NEXT:    movt r0, #32760
345a4a05c8SNikita Popov; CHECK-NEXT:    bx lr
355a4a05c8SNikita Popov  %r = call float @llvm.maximum.f32(float %x, float 0x7fff000000000000)
365a4a05c8SNikita Popov  ret float %r
375a4a05c8SNikita Popov}
385a4a05c8SNikita Popov
395a4a05c8SNikita Popovdefine float @test_minimum_const_nan(float %x) {
405a4a05c8SNikita Popov; CHECK-LABEL: test_minimum_const_nan:
415a4a05c8SNikita Popov; CHECK:       @ %bb.0:
420a5dc7efSNikita Popov; CHECK-NEXT:    movw r0, #0
430a5dc7efSNikita Popov; CHECK-NEXT:    movt r0, #32760
445a4a05c8SNikita Popov; CHECK-NEXT:    bx lr
455a4a05c8SNikita Popov  %r = call float @llvm.minimum.f32(float %x, float 0x7fff000000000000)
465a4a05c8SNikita Popov  ret float %r
475a4a05c8SNikita Popov}
48c2f8bc98SNikita Popov
49c2f8bc98SNikita Popovdefine float @test_minnum_const_inf(float %x) {
50c2f8bc98SNikita Popov; CHECK-LABEL: test_minnum_const_inf:
51c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
52c2f8bc98SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI4_0
53c2f8bc98SNikita Popov; CHECK-NEXT:    vmov s2, r0
54c2f8bc98SNikita Popov; CHECK-NEXT:    vminnm.f32 s0, s2, s0
55c2f8bc98SNikita Popov; CHECK-NEXT:    vmov r0, s0
56c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
57c2f8bc98SNikita Popov; CHECK-NEXT:    .p2align 2
58c2f8bc98SNikita Popov; CHECK-NEXT:  @ %bb.1:
59c2f8bc98SNikita Popov; CHECK-NEXT:  .LCPI4_0:
60c2f8bc98SNikita Popov; CHECK-NEXT:    .long 0x7f800000 @ float +Inf
61c2f8bc98SNikita Popov  %r = call float @llvm.minnum.f32(float %x, float 0x7ff0000000000000)
62c2f8bc98SNikita Popov  ret float %r
63c2f8bc98SNikita Popov}
64c2f8bc98SNikita Popov
65c2f8bc98SNikita Popovdefine float @test_maxnum_const_inf(float %x) {
66c2f8bc98SNikita Popov; CHECK-LABEL: test_maxnum_const_inf:
67c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
68*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
69*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32640
70c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
71c2f8bc98SNikita Popov  %r = call float @llvm.maxnum.f32(float %x, float 0x7ff0000000000000)
72c2f8bc98SNikita Popov  ret float %r
73c2f8bc98SNikita Popov}
74c2f8bc98SNikita Popov
75c2f8bc98SNikita Popovdefine float @test_maximum_const_inf(float %x) {
76c2f8bc98SNikita Popov; CHECK-LABEL: test_maximum_const_inf:
77c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
78c2f8bc98SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI6_0
79c2f8bc98SNikita Popov; CHECK-NEXT:    vmov s2, r0
80c2f8bc98SNikita Popov; CHECK-NEXT:    vmax.f32 d0, d1, d0
81c2f8bc98SNikita Popov; CHECK-NEXT:    vmov r0, s0
82c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
83c2f8bc98SNikita Popov; CHECK-NEXT:    .p2align 2
84c2f8bc98SNikita Popov; CHECK-NEXT:  @ %bb.1:
85c2f8bc98SNikita Popov; CHECK-NEXT:  .LCPI6_0:
86c2f8bc98SNikita Popov; CHECK-NEXT:    .long 0x7f800000 @ float +Inf
87c2f8bc98SNikita Popov  %r = call float @llvm.maximum.f32(float %x, float 0x7ff0000000000000)
88c2f8bc98SNikita Popov  ret float %r
89c2f8bc98SNikita Popov}
90c2f8bc98SNikita Popov
91c2f8bc98SNikita Popovdefine float @test_minimum_const_inf(float %x) {
92c2f8bc98SNikita Popov; CHECK-LABEL: test_minimum_const_inf:
93c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
94c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
95c2f8bc98SNikita Popov  %r = call float @llvm.minimum.f32(float %x, float 0x7ff0000000000000)
96c2f8bc98SNikita Popov  ret float %r
97c2f8bc98SNikita Popov}
98c2f8bc98SNikita Popov
992c85f5e6SNikita Popovdefine float @test_minnum_const_neg_inf(float %x) {
1002c85f5e6SNikita Popov; CHECK-LABEL: test_minnum_const_neg_inf:
101c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
102*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
103*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #65408
104c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
105c2f8bc98SNikita Popov  %r = call float @llvm.minnum.f32(float %x, float 0xfff0000000000000)
106c2f8bc98SNikita Popov  ret float %r
107c2f8bc98SNikita Popov}
108c2f8bc98SNikita Popov
1092c85f5e6SNikita Popovdefine float @test_maxnum_const_neg_inf(float %x) {
1102c85f5e6SNikita Popov; CHECK-LABEL: test_maxnum_const_neg_inf:
111c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
112c2f8bc98SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI9_0
113c2f8bc98SNikita Popov; CHECK-NEXT:    vmov s2, r0
114c2f8bc98SNikita Popov; CHECK-NEXT:    vmaxnm.f32 s0, s2, s0
115c2f8bc98SNikita Popov; CHECK-NEXT:    vmov r0, s0
116c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
117c2f8bc98SNikita Popov; CHECK-NEXT:    .p2align 2
118c2f8bc98SNikita Popov; CHECK-NEXT:  @ %bb.1:
119c2f8bc98SNikita Popov; CHECK-NEXT:  .LCPI9_0:
120c2f8bc98SNikita Popov; CHECK-NEXT:    .long 0xff800000 @ float -Inf
121c2f8bc98SNikita Popov  %r = call float @llvm.maxnum.f32(float %x, float 0xfff0000000000000)
122c2f8bc98SNikita Popov  ret float %r
123c2f8bc98SNikita Popov}
124c2f8bc98SNikita Popov
1252c85f5e6SNikita Popovdefine float @test_maximum_const_neg_inf(float %x) {
1262c85f5e6SNikita Popov; CHECK-LABEL: test_maximum_const_neg_inf:
127c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
128c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
129c2f8bc98SNikita Popov  %r = call float @llvm.maximum.f32(float %x, float 0xfff0000000000000)
130c2f8bc98SNikita Popov  ret float %r
131c2f8bc98SNikita Popov}
132c2f8bc98SNikita Popov
1332c85f5e6SNikita Popovdefine float @test_minimum_const_neg_inf(float %x) {
1342c85f5e6SNikita Popov; CHECK-LABEL: test_minimum_const_neg_inf:
135c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
136c2f8bc98SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI11_0
137c2f8bc98SNikita Popov; CHECK-NEXT:    vmov s2, r0
138c2f8bc98SNikita Popov; CHECK-NEXT:    vmin.f32 d0, d1, d0
139c2f8bc98SNikita Popov; CHECK-NEXT:    vmov r0, s0
140c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
141c2f8bc98SNikita Popov; CHECK-NEXT:    .p2align 2
142c2f8bc98SNikita Popov; CHECK-NEXT:  @ %bb.1:
143c2f8bc98SNikita Popov; CHECK-NEXT:  .LCPI11_0:
144c2f8bc98SNikita Popov; CHECK-NEXT:    .long 0xff800000 @ float -Inf
145c2f8bc98SNikita Popov  %r = call float @llvm.minimum.f32(float %x, float 0xfff0000000000000)
146c2f8bc98SNikita Popov  ret float %r
147c2f8bc98SNikita Popov}
148c2f8bc98SNikita Popov
149c2f8bc98SNikita Popovdefine float @test_minnum_const_inf_nnan(float %x) {
150c2f8bc98SNikita Popov; CHECK-LABEL: test_minnum_const_inf_nnan:
151c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
152c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
153c2f8bc98SNikita Popov  %r = call nnan float @llvm.minnum.f32(float %x, float 0x7ff0000000000000)
154c2f8bc98SNikita Popov  ret float %r
155c2f8bc98SNikita Popov}
156c2f8bc98SNikita Popov
157c2f8bc98SNikita Popovdefine float @test_maxnum_const_inf_nnan(float %x) {
158c2f8bc98SNikita Popov; CHECK-LABEL: test_maxnum_const_inf_nnan:
159c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
160*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
161*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32640
162c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
163c2f8bc98SNikita Popov  %r = call nnan float @llvm.maxnum.f32(float %x, float 0x7ff0000000000000)
164c2f8bc98SNikita Popov  ret float %r
165c2f8bc98SNikita Popov}
166c2f8bc98SNikita Popov
167c2f8bc98SNikita Popovdefine float @test_maximum_const_inf_nnan(float %x) {
168c2f8bc98SNikita Popov; CHECK-LABEL: test_maximum_const_inf_nnan:
169c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
170*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
171*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32640
172c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
173c2f8bc98SNikita Popov  %r = call nnan float @llvm.maximum.f32(float %x, float 0x7ff0000000000000)
174c2f8bc98SNikita Popov  ret float %r
175c2f8bc98SNikita Popov}
176c2f8bc98SNikita Popov
177c2f8bc98SNikita Popovdefine float @test_minimum_const_inf_nnan(float %x) {
178c2f8bc98SNikita Popov; CHECK-LABEL: test_minimum_const_inf_nnan:
179c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
180c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
181c2f8bc98SNikita Popov  %r = call nnan float @llvm.minimum.f32(float %x, float 0x7ff0000000000000)
182c2f8bc98SNikita Popov  ret float %r
183c2f8bc98SNikita Popov}
184c2f8bc98SNikita Popov
185cb3e1dd6SNikita Popovdefine float @test_minnum_const_inf_nnan_comm(float %x) {
186cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_inf_nnan_comm:
187c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
188c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
189cb3e1dd6SNikita Popov  %r = call nnan float @llvm.minnum.f32(float 0x7ff0000000000000, float %x)
190c2f8bc98SNikita Popov  ret float %r
191c2f8bc98SNikita Popov}
192c2f8bc98SNikita Popov
193cb3e1dd6SNikita Popovdefine float @test_maxnum_const_inf_nnan_comm(float %x) {
194cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_inf_nnan_comm:
195c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
196*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
197*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32640
198c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
199cb3e1dd6SNikita Popov  %r = call nnan float @llvm.maxnum.f32(float 0x7ff0000000000000, float %x)
200c2f8bc98SNikita Popov  ret float %r
201c2f8bc98SNikita Popov}
202c2f8bc98SNikita Popov
203cb3e1dd6SNikita Popovdefine float @test_maximum_const_inf_nnan_comm(float %x) {
204cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_inf_nnan_comm:
205c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
206*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
207*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32640
208c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
209cb3e1dd6SNikita Popov  %r = call nnan float @llvm.maximum.f32(float 0x7ff0000000000000, float %x)
210c2f8bc98SNikita Popov  ret float %r
211c2f8bc98SNikita Popov}
212c2f8bc98SNikita Popov
213cb3e1dd6SNikita Popovdefine float @test_minimum_const_inf_nnan_comm(float %x) {
214cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_inf_nnan_comm:
215c2f8bc98SNikita Popov; CHECK:       @ %bb.0:
216c2f8bc98SNikita Popov; CHECK-NEXT:    bx lr
217cb3e1dd6SNikita Popov  %r = call nnan float @llvm.minimum.f32(float 0x7ff0000000000000, float %x)
218c2f8bc98SNikita Popov  ret float %r
219c2f8bc98SNikita Popov}
2202c85f5e6SNikita Popov
221cb3e1dd6SNikita Popovdefine <2 x float> @test_minnum_const_inf_nnan_comm_vec(<2 x float> %x) {
222cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_inf_nnan_comm_vec:
2232c85f5e6SNikita Popov; CHECK:       @ %bb.0:
2242c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
225cb3e1dd6SNikita Popov  %r = call nnan <2 x float> @llvm.minnum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)
226cb3e1dd6SNikita Popov  ret <2 x float> %r
2272c85f5e6SNikita Popov}
2282c85f5e6SNikita Popov
229cb3e1dd6SNikita Popovdefine <2 x float> @test_maxnum_const_inf_nnan_comm_vec(<2 x float> %x) {
230cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_inf_nnan_comm_vec:
2312c85f5e6SNikita Popov; CHECK:       @ %bb.0:
232cb3e1dd6SNikita Popov; CHECK-NEXT:    vldr d16, .LCPI21_0
233cb3e1dd6SNikita Popov; CHECK-NEXT:    vmov r0, r1, d16
2342c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
235cb3e1dd6SNikita Popov; CHECK-NEXT:    .p2align 3
2362c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
2372c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI21_0:
238cb3e1dd6SNikita Popov; CHECK-NEXT:    .long 0x7f800000 @ float +Inf
239cb3e1dd6SNikita Popov; CHECK-NEXT:    .long 0x7f800000 @ float +Inf
240cb3e1dd6SNikita Popov  %r = call nnan <2 x float> @llvm.maxnum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)
241cb3e1dd6SNikita Popov  ret <2 x float> %r
2422c85f5e6SNikita Popov}
2432c85f5e6SNikita Popov
244cb3e1dd6SNikita Popovdefine <2 x float> @test_maximum_const_inf_nnan_comm_vec(<2 x float> %x) {
245cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_inf_nnan_comm_vec:
2462c85f5e6SNikita Popov; CHECK:       @ %bb.0:
247cb3e1dd6SNikita Popov; CHECK-NEXT:    vldr d16, .LCPI22_0
248cb3e1dd6SNikita Popov; CHECK-NEXT:    vmov r0, r1, d16
2492c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
250cb3e1dd6SNikita Popov; CHECK-NEXT:    .p2align 3
2512c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
2522c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI22_0:
253cb3e1dd6SNikita Popov; CHECK-NEXT:    .long 0x7f800000 @ float +Inf
254cb3e1dd6SNikita Popov; CHECK-NEXT:    .long 0x7f800000 @ float +Inf
255cb3e1dd6SNikita Popov  %r = call nnan <2 x float> @llvm.maximum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)
256cb3e1dd6SNikita Popov  ret <2 x float> %r
2572c85f5e6SNikita Popov}
2582c85f5e6SNikita Popov
259cb3e1dd6SNikita Popovdefine <2 x float> @test_minimum_const_inf_nnan_comm_vec(<2 x float> %x) {
260cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_inf_nnan_comm_vec:
2612c85f5e6SNikita Popov; CHECK:       @ %bb.0:
2622c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
263cb3e1dd6SNikita Popov  %r = call nnan <2 x float> @llvm.minimum.v2f32(<2 x float> <float 0x7ff0000000000000, float 0x7ff0000000000000>, <2 x float> %x)
264cb3e1dd6SNikita Popov  ret <2 x float> %r
2652c85f5e6SNikita Popov}
2662c85f5e6SNikita Popov
267cb3e1dd6SNikita Popovdefine float @test_minnum_const_neg_inf_nnan(float %x) {
268cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_neg_inf_nnan:
2692c85f5e6SNikita Popov; CHECK:       @ %bb.0:
270*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
271*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #65408
2722c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
273cb3e1dd6SNikita Popov  %r = call nnan float @llvm.minnum.f32(float %x, float 0xfff0000000000000)
2742c85f5e6SNikita Popov  ret float %r
2752c85f5e6SNikita Popov}
2762c85f5e6SNikita Popov
277cb3e1dd6SNikita Popovdefine float @test_maxnum_const_neg_inf_nnan(float %x) {
278cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_neg_inf_nnan:
2792c85f5e6SNikita Popov; CHECK:       @ %bb.0:
2802c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
281cb3e1dd6SNikita Popov  %r = call nnan float @llvm.maxnum.f32(float %x, float 0xfff0000000000000)
2822c85f5e6SNikita Popov  ret float %r
2832c85f5e6SNikita Popov}
2842c85f5e6SNikita Popov
285cb3e1dd6SNikita Popovdefine float @test_maximum_const_neg_inf_nnan(float %x) {
286cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_neg_inf_nnan:
2872c85f5e6SNikita Popov; CHECK:       @ %bb.0:
2882c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
289cb3e1dd6SNikita Popov  %r = call nnan float @llvm.maximum.f32(float %x, float 0xfff0000000000000)
2902c85f5e6SNikita Popov  ret float %r
2912c85f5e6SNikita Popov}
2922c85f5e6SNikita Popov
293cb3e1dd6SNikita Popovdefine float @test_minimum_const_neg_inf_nnan(float %x) {
294cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_neg_inf_nnan:
2952c85f5e6SNikita Popov; CHECK:       @ %bb.0:
296*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #0
297*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #65408
2982c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
299cb3e1dd6SNikita Popov  %r = call nnan float @llvm.minimum.f32(float %x, float 0xfff0000000000000)
3002c85f5e6SNikita Popov  ret float %r
3012c85f5e6SNikita Popov}
3022c85f5e6SNikita Popov
303cb3e1dd6SNikita Popovdefine float @test_minnum_const_max(float %x) {
304cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_max:
3052c85f5e6SNikita Popov; CHECK:       @ %bb.0:
3062c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI28_0
3072c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
3082c85f5e6SNikita Popov; CHECK-NEXT:    vminnm.f32 s0, s2, s0
3092c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
3102c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
3112c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
3122c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
3132c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI28_0:
3142c85f5e6SNikita Popov; CHECK-NEXT:    .long 0x7f7fffff @ float 3.40282347E+38
315cb3e1dd6SNikita Popov  %r = call float @llvm.minnum.f32(float %x, float 0x47efffffe0000000)
3162c85f5e6SNikita Popov  ret float %r
3172c85f5e6SNikita Popov}
3182c85f5e6SNikita Popov
319cb3e1dd6SNikita Popovdefine float @test_maxnum_const_max(float %x) {
320cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_max:
3212c85f5e6SNikita Popov; CHECK:       @ %bb.0:
3222c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI29_0
3232c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
3242c85f5e6SNikita Popov; CHECK-NEXT:    vmaxnm.f32 s0, s2, s0
3252c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
3262c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
3272c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
3282c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
3292c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI29_0:
3302c85f5e6SNikita Popov; CHECK-NEXT:    .long 0x7f7fffff @ float 3.40282347E+38
331cb3e1dd6SNikita Popov  %r = call float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000)
3322c85f5e6SNikita Popov  ret float %r
3332c85f5e6SNikita Popov}
3342c85f5e6SNikita Popov
335cb3e1dd6SNikita Popovdefine float @test_maximum_const_max(float %x) {
336cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_max:
3372c85f5e6SNikita Popov; CHECK:       @ %bb.0:
3382c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI30_0
3392c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
3402c85f5e6SNikita Popov; CHECK-NEXT:    vmax.f32 d0, d1, d0
3412c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
3422c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
3432c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
3442c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
3452c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI30_0:
3462c85f5e6SNikita Popov; CHECK-NEXT:    .long 0x7f7fffff @ float 3.40282347E+38
347cb3e1dd6SNikita Popov  %r = call float @llvm.maximum.f32(float %x, float 0x47efffffe0000000)
3482c85f5e6SNikita Popov  ret float %r
3492c85f5e6SNikita Popov}
3502c85f5e6SNikita Popov
351cb3e1dd6SNikita Popovdefine float @test_minimum_const_max(float %x) {
352cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_max:
3532c85f5e6SNikita Popov; CHECK:       @ %bb.0:
3542c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI31_0
3552c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
3562c85f5e6SNikita Popov; CHECK-NEXT:    vmin.f32 d0, d1, d0
3572c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
3582c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
3592c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
3602c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
3612c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI31_0:
3622c85f5e6SNikita Popov; CHECK-NEXT:    .long 0x7f7fffff @ float 3.40282347E+38
363cb3e1dd6SNikita Popov  %r = call float @llvm.minimum.f32(float %x, float 0x47efffffe0000000)
3642c85f5e6SNikita Popov  ret float %r
3652c85f5e6SNikita Popov}
3662c85f5e6SNikita Popov
367cb3e1dd6SNikita Popovdefine float @test_minnum_const_neg_max(float %x) {
368cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_neg_max:
3692c85f5e6SNikita Popov; CHECK:       @ %bb.0:
3702c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI32_0
3712c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
3722c85f5e6SNikita Popov; CHECK-NEXT:    vminnm.f32 s0, s2, s0
3732c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
3742c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
3752c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
3762c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
3772c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI32_0:
3782c85f5e6SNikita Popov; CHECK-NEXT:    .long 0xff7fffff @ float -3.40282347E+38
379cb3e1dd6SNikita Popov  %r = call float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000)
3802c85f5e6SNikita Popov  ret float %r
3812c85f5e6SNikita Popov}
3822c85f5e6SNikita Popov
383cb3e1dd6SNikita Popovdefine float @test_maxnum_const_neg_max(float %x) {
384cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_neg_max:
3852c85f5e6SNikita Popov; CHECK:       @ %bb.0:
3862c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI33_0
3872c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
3882c85f5e6SNikita Popov; CHECK-NEXT:    vmaxnm.f32 s0, s2, s0
3892c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
3902c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
3912c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
3922c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
3932c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI33_0:
3942c85f5e6SNikita Popov; CHECK-NEXT:    .long 0xff7fffff @ float -3.40282347E+38
395cb3e1dd6SNikita Popov  %r = call float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000)
3962c85f5e6SNikita Popov  ret float %r
3972c85f5e6SNikita Popov}
3982c85f5e6SNikita Popov
399cb3e1dd6SNikita Popovdefine float @test_maximum_const_neg_max(float %x) {
400cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_neg_max:
4012c85f5e6SNikita Popov; CHECK:       @ %bb.0:
4022c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI34_0
4032c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
4042c85f5e6SNikita Popov; CHECK-NEXT:    vmax.f32 d0, d1, d0
4052c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
4062c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
4072c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
4082c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
4092c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI34_0:
4102c85f5e6SNikita Popov; CHECK-NEXT:    .long 0xff7fffff @ float -3.40282347E+38
411cb3e1dd6SNikita Popov  %r = call float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000)
4122c85f5e6SNikita Popov  ret float %r
4132c85f5e6SNikita Popov}
4142c85f5e6SNikita Popov
415cb3e1dd6SNikita Popovdefine float @test_minimum_const_neg_max(float %x) {
416cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_neg_max:
4172c85f5e6SNikita Popov; CHECK:       @ %bb.0:
4182c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI35_0
4192c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
4202c85f5e6SNikita Popov; CHECK-NEXT:    vmin.f32 d0, d1, d0
4212c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
4222c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
4232c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
4242c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
4252c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI35_0:
4262c85f5e6SNikita Popov; CHECK-NEXT:    .long 0xff7fffff @ float -3.40282347E+38
427cb3e1dd6SNikita Popov  %r = call float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000)
4282c85f5e6SNikita Popov  ret float %r
4292c85f5e6SNikita Popov}
4302c85f5e6SNikita Popov
431cb3e1dd6SNikita Popovdefine float @test_minnum_const_max_ninf(float %x) {
432cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_max_ninf:
4332c85f5e6SNikita Popov; CHECK:       @ %bb.0:
4342c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI36_0
4352c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
4362c85f5e6SNikita Popov; CHECK-NEXT:    vminnm.f32 s0, s2, s0
4372c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
4382c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
4392c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
4402c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
4412c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI36_0:
4422c85f5e6SNikita Popov; CHECK-NEXT:    .long 0x7f7fffff @ float 3.40282347E+38
443cb3e1dd6SNikita Popov  %r = call ninf float @llvm.minnum.f32(float %x, float 0x47efffffe0000000)
4442c85f5e6SNikita Popov  ret float %r
4452c85f5e6SNikita Popov}
4462c85f5e6SNikita Popov
447cb3e1dd6SNikita Popovdefine float @test_maxnum_const_max_ninf(float %x) {
448cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_max_ninf:
4492c85f5e6SNikita Popov; CHECK:       @ %bb.0:
450*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #65535
451*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32639
4522c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
453cb3e1dd6SNikita Popov  %r = call ninf float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000)
4542c85f5e6SNikita Popov  ret float %r
4552c85f5e6SNikita Popov}
4562c85f5e6SNikita Popov
457cb3e1dd6SNikita Popovdefine float @test_maximum_const_max_ninf(float %x) {
458cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_max_ninf:
4592c85f5e6SNikita Popov; CHECK:       @ %bb.0:
4602c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI38_0
4612c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
4622c85f5e6SNikita Popov; CHECK-NEXT:    vmax.f32 d0, d1, d0
4632c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
4642c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
4652c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
4662c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
4672c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI38_0:
4682c85f5e6SNikita Popov; CHECK-NEXT:    .long 0x7f7fffff @ float 3.40282347E+38
469cb3e1dd6SNikita Popov  %r = call ninf float @llvm.maximum.f32(float %x, float 0x47efffffe0000000)
4702c85f5e6SNikita Popov  ret float %r
4712c85f5e6SNikita Popov}
4722c85f5e6SNikita Popov
473cb3e1dd6SNikita Popovdefine float @test_minimum_const_max_ninf(float %x) {
474cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_max_ninf:
4752c85f5e6SNikita Popov; CHECK:       @ %bb.0:
4762c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
477cb3e1dd6SNikita Popov  %r = call ninf float @llvm.minimum.f32(float %x, float 0x47efffffe0000000)
4782c85f5e6SNikita Popov  ret float %r
4792c85f5e6SNikita Popov}
4802c85f5e6SNikita Popov
481cb3e1dd6SNikita Popovdefine float @test_minnum_const_neg_max_ninf(float %x) {
482cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_neg_max_ninf:
4832c85f5e6SNikita Popov; CHECK:       @ %bb.0:
484*8e69c3cdSNikita Popov; CHECK-NEXT:    mvn r0, #8388608
4852c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
486cb3e1dd6SNikita Popov  %r = call ninf float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000)
4872c85f5e6SNikita Popov  ret float %r
4882c85f5e6SNikita Popov}
4892c85f5e6SNikita Popov
490cb3e1dd6SNikita Popovdefine float @test_maxnum_const_neg_max_ninf(float %x) {
491cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_neg_max_ninf:
4922c85f5e6SNikita Popov; CHECK:       @ %bb.0:
4932c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI41_0
4942c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
4952c85f5e6SNikita Popov; CHECK-NEXT:    vmaxnm.f32 s0, s2, s0
4962c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
4972c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
4982c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
4992c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
5002c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI41_0:
5012c85f5e6SNikita Popov; CHECK-NEXT:    .long 0xff7fffff @ float -3.40282347E+38
502cb3e1dd6SNikita Popov  %r = call ninf float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000)
5032c85f5e6SNikita Popov  ret float %r
5042c85f5e6SNikita Popov}
5052c85f5e6SNikita Popov
506cb3e1dd6SNikita Popovdefine float @test_maximum_const_neg_max_ninf(float %x) {
507cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_neg_max_ninf:
5082c85f5e6SNikita Popov; CHECK:       @ %bb.0:
5092c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
510cb3e1dd6SNikita Popov  %r = call ninf float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000)
5112c85f5e6SNikita Popov  ret float %r
5122c85f5e6SNikita Popov}
5132c85f5e6SNikita Popov
514cb3e1dd6SNikita Popovdefine float @test_minimum_const_neg_max_ninf(float %x) {
515cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_neg_max_ninf:
5162c85f5e6SNikita Popov; CHECK:       @ %bb.0:
5172c85f5e6SNikita Popov; CHECK-NEXT:    vldr s0, .LCPI43_0
5182c85f5e6SNikita Popov; CHECK-NEXT:    vmov s2, r0
5192c85f5e6SNikita Popov; CHECK-NEXT:    vmin.f32 d0, d1, d0
5202c85f5e6SNikita Popov; CHECK-NEXT:    vmov r0, s0
5212c85f5e6SNikita Popov; CHECK-NEXT:    bx lr
5222c85f5e6SNikita Popov; CHECK-NEXT:    .p2align 2
5232c85f5e6SNikita Popov; CHECK-NEXT:  @ %bb.1:
5242c85f5e6SNikita Popov; CHECK-NEXT:  .LCPI43_0:
5252c85f5e6SNikita Popov; CHECK-NEXT:    .long 0xff7fffff @ float -3.40282347E+38
526cb3e1dd6SNikita Popov  %r = call ninf float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000)
527cb3e1dd6SNikita Popov  ret float %r
528cb3e1dd6SNikita Popov}
529cb3e1dd6SNikita Popov
530cb3e1dd6SNikita Popovdefine float @test_minnum_const_max_nnan_ninf(float %x) {
531cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_max_nnan_ninf:
532cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
533cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
534cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.minnum.f32(float %x, float 0x47efffffe0000000)
535cb3e1dd6SNikita Popov  ret float %r
536cb3e1dd6SNikita Popov}
537cb3e1dd6SNikita Popov
538cb3e1dd6SNikita Popovdefine float @test_maxnum_const_max_nnan_ninf(float %x) {
539cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_max_nnan_ninf:
540cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
541*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #65535
542*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32639
543cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
544cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.maxnum.f32(float %x, float 0x47efffffe0000000)
545cb3e1dd6SNikita Popov  ret float %r
546cb3e1dd6SNikita Popov}
547cb3e1dd6SNikita Popov
548cb3e1dd6SNikita Popovdefine float @test_maximum_const_max_nnan_ninf(float %x) {
549cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_max_nnan_ninf:
550cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
551*8e69c3cdSNikita Popov; CHECK-NEXT:    movw r0, #65535
552*8e69c3cdSNikita Popov; CHECK-NEXT:    movt r0, #32639
553cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
554cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.maximum.f32(float %x, float 0x47efffffe0000000)
555cb3e1dd6SNikita Popov  ret float %r
556cb3e1dd6SNikita Popov}
557cb3e1dd6SNikita Popov
558cb3e1dd6SNikita Popovdefine float @test_minimum_const_max_nnan_ninf(float %x) {
559cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_max_nnan_ninf:
560cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
561cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
562cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.minimum.f32(float %x, float 0x47efffffe0000000)
563cb3e1dd6SNikita Popov  ret float %r
564cb3e1dd6SNikita Popov}
565cb3e1dd6SNikita Popov
566cb3e1dd6SNikita Popovdefine float @test_minnum_const_neg_max_nnan_ninf(float %x) {
567cb3e1dd6SNikita Popov; CHECK-LABEL: test_minnum_const_neg_max_nnan_ninf:
568cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
569*8e69c3cdSNikita Popov; CHECK-NEXT:    mvn r0, #8388608
570cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
571cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.minnum.f32(float %x, float 0xc7efffffe0000000)
572cb3e1dd6SNikita Popov  ret float %r
573cb3e1dd6SNikita Popov}
574cb3e1dd6SNikita Popov
575cb3e1dd6SNikita Popovdefine float @test_maxnum_const_neg_max_nnan_ninf(float %x) {
576cb3e1dd6SNikita Popov; CHECK-LABEL: test_maxnum_const_neg_max_nnan_ninf:
577cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
578cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
579cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.maxnum.f32(float %x, float 0xc7efffffe0000000)
580cb3e1dd6SNikita Popov  ret float %r
581cb3e1dd6SNikita Popov}
582cb3e1dd6SNikita Popov
583cb3e1dd6SNikita Popovdefine float @test_maximum_const_neg_max_nnan_ninf(float %x) {
584cb3e1dd6SNikita Popov; CHECK-LABEL: test_maximum_const_neg_max_nnan_ninf:
585cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
586cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
587cb3e1dd6SNikita Popov  %r = call nnan ninf float @llvm.maximum.f32(float %x, float 0xc7efffffe0000000)
588cb3e1dd6SNikita Popov  ret float %r
589cb3e1dd6SNikita Popov}
590cb3e1dd6SNikita Popov
591cb3e1dd6SNikita Popovdefine float @test_minimum_const_neg_max_nnan_ninf(float %x) {
592cb3e1dd6SNikita Popov; CHECK-LABEL: test_minimum_const_neg_max_nnan_ninf:
593cb3e1dd6SNikita Popov; CHECK:       @ %bb.0:
594*8e69c3cdSNikita Popov; CHECK-NEXT:    mvn r0, #8388608
595cb3e1dd6SNikita Popov; CHECK-NEXT:    bx lr
5962c85f5e6SNikita Popov  %r = call nnan ninf float @llvm.minimum.f32(float %x, float 0xc7efffffe0000000)
5972c85f5e6SNikita Popov  ret float %r
5982c85f5e6SNikita Popov}
599