xref: /llvm-project/llvm/test/CodeGen/LoongArch/fp-maximumnum-minimumnum.ll (revision fb9e685fc41b8abc87725f8509624b3a80330dee)
1*fb9e685fSYunQiang Su; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch32 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA32F
3*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch32 --mattr=+d < %s | FileCheck %s --check-prefix=LA32D
4*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch64 --mattr=+f,-d < %s | FileCheck %s --check-prefix=LA64F
5*fb9e685fSYunQiang Su; RUN: llc --mtriple=loongarch64 --mattr=+d < %s | FileCheck %s --check-prefix=LA64D
6*fb9e685fSYunQiang Su
7*fb9e685fSYunQiang Sudeclare float @llvm.maximumnum.f32(float, float)
8*fb9e685fSYunQiang Sudeclare double @llvm.maximumnum.f64(double, double)
9*fb9e685fSYunQiang Sudeclare float @llvm.minimumnum.f32(float, float)
10*fb9e685fSYunQiang Sudeclare double @llvm.minimumnum.f64(double, double)
11*fb9e685fSYunQiang Su
12*fb9e685fSYunQiang Sudefine float @maximumnum_float(float %x, float %y) {
13*fb9e685fSYunQiang Su;
14*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_float:
15*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
16*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa1
17*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa0
18*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa1
19*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
20*fb9e685fSYunQiang Su;
21*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_float:
22*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
23*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa1
24*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa0
25*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa1
26*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
27*fb9e685fSYunQiang Su;
28*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_float:
29*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
30*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa1
31*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa0
32*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa1
33*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
34*fb9e685fSYunQiang Su;
35*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_float:
36*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
37*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa1
38*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa0
39*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa1
40*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
41*fb9e685fSYunQiang Su  %z = call float @llvm.maximumnum.f32(float %x, float %y)
42*fb9e685fSYunQiang Su  ret float %z
43*fb9e685fSYunQiang Su}
44*fb9e685fSYunQiang Su
45*fb9e685fSYunQiang Sudefine float @maximumnum_float_nsz(float %x, float %y) {
46*fb9e685fSYunQiang Su;
47*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_float_nsz:
48*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
49*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa1
50*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa0
51*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa1
52*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
53*fb9e685fSYunQiang Su;
54*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_float_nsz:
55*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
56*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa1
57*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa0
58*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa1
59*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
60*fb9e685fSYunQiang Su;
61*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_float_nsz:
62*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
63*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa1
64*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa0
65*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa1
66*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
67*fb9e685fSYunQiang Su;
68*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_float_nsz:
69*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
70*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa1
71*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa0
72*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa1
73*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
74*fb9e685fSYunQiang Su  %z = call nsz float @llvm.maximumnum.f32(float %x, float %y)
75*fb9e685fSYunQiang Su  ret float %z
76*fb9e685fSYunQiang Su}
77*fb9e685fSYunQiang Su
78*fb9e685fSYunQiang Sudefine float @maximumnum_float_nnan(float %x, float %y) {
79*fb9e685fSYunQiang Su;
80*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_float_nnan:
81*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
82*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa1
83*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
84*fb9e685fSYunQiang Su;
85*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_float_nnan:
86*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
87*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa1
88*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
89*fb9e685fSYunQiang Su;
90*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_float_nnan:
91*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
92*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa1
93*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
94*fb9e685fSYunQiang Su;
95*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_float_nnan:
96*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
97*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa1
98*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
99*fb9e685fSYunQiang Su  %z = call nnan float @llvm.maximumnum.f32(float %x, float %y)
100*fb9e685fSYunQiang Su  ret float %z
101*fb9e685fSYunQiang Su}
102*fb9e685fSYunQiang Su
103*fb9e685fSYunQiang Su
104*fb9e685fSYunQiang Sudefine double @maximumnum_double(double %x, double %y) {
105*fb9e685fSYunQiang Su;
106*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_double:
107*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
108*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, -16
109*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_def_cfa_offset 16
110*fb9e685fSYunQiang Su; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
111*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_offset 1, -4
112*fb9e685fSYunQiang Su; LA32F-NEXT:    bl %plt(fmaximum_num)
113*fb9e685fSYunQiang Su; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
114*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, 16
115*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
116*fb9e685fSYunQiang Su;
117*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_double:
118*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
119*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1
120*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0
121*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa1
122*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
123*fb9e685fSYunQiang Su;
124*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_double:
125*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
126*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, -16
127*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_def_cfa_offset 16
128*fb9e685fSYunQiang Su; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
129*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_offset 1, -8
130*fb9e685fSYunQiang Su; LA64F-NEXT:    bl %plt(fmaximum_num)
131*fb9e685fSYunQiang Su; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
132*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, 16
133*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
134*fb9e685fSYunQiang Su;
135*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_double:
136*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
137*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1
138*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0
139*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa1
140*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
141*fb9e685fSYunQiang Su  %z = call double @llvm.maximumnum.f64(double %x, double %y)
142*fb9e685fSYunQiang Su  ret double %z
143*fb9e685fSYunQiang Su}
144*fb9e685fSYunQiang Su
145*fb9e685fSYunQiang Sudefine double @maximumnum_double_nsz(double %x, double %y) {
146*fb9e685fSYunQiang Su;
147*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_double_nsz:
148*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
149*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, -16
150*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_def_cfa_offset 16
151*fb9e685fSYunQiang Su; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
152*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_offset 1, -4
153*fb9e685fSYunQiang Su; LA32F-NEXT:    bl %plt(fmaximum_num)
154*fb9e685fSYunQiang Su; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
155*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, 16
156*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
157*fb9e685fSYunQiang Su;
158*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_double_nsz:
159*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
160*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1
161*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0
162*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa1
163*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
164*fb9e685fSYunQiang Su;
165*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_double_nsz:
166*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
167*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, -16
168*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_def_cfa_offset 16
169*fb9e685fSYunQiang Su; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
170*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_offset 1, -8
171*fb9e685fSYunQiang Su; LA64F-NEXT:    bl %plt(fmaximum_num)
172*fb9e685fSYunQiang Su; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
173*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, 16
174*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
175*fb9e685fSYunQiang Su;
176*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_double_nsz:
177*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
178*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1
179*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0
180*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa1
181*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
182*fb9e685fSYunQiang Su  %z = call nsz double @llvm.maximumnum.f64(double %x, double %y)
183*fb9e685fSYunQiang Su  ret double %z
184*fb9e685fSYunQiang Su}
185*fb9e685fSYunQiang Su
186*fb9e685fSYunQiang Sudefine double @maximumnum_double_nnan(double %x, double %y) {
187*fb9e685fSYunQiang Su;
188*fb9e685fSYunQiang Su; LA32F-LABEL: maximumnum_double_nnan:
189*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
190*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, -16
191*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_def_cfa_offset 16
192*fb9e685fSYunQiang Su; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
193*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_offset 1, -4
194*fb9e685fSYunQiang Su; LA32F-NEXT:    bl %plt(fmaximum_num)
195*fb9e685fSYunQiang Su; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
196*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, 16
197*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
198*fb9e685fSYunQiang Su;
199*fb9e685fSYunQiang Su; LA32D-LABEL: maximumnum_double_nnan:
200*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
201*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa1
202*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
203*fb9e685fSYunQiang Su;
204*fb9e685fSYunQiang Su; LA64F-LABEL: maximumnum_double_nnan:
205*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
206*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, -16
207*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_def_cfa_offset 16
208*fb9e685fSYunQiang Su; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
209*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_offset 1, -8
210*fb9e685fSYunQiang Su; LA64F-NEXT:    bl %plt(fmaximum_num)
211*fb9e685fSYunQiang Su; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
212*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, 16
213*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
214*fb9e685fSYunQiang Su;
215*fb9e685fSYunQiang Su; LA64D-LABEL: maximumnum_double_nnan:
216*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
217*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa1
218*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
219*fb9e685fSYunQiang Su  %z = call nnan double @llvm.maximumnum.f64(double %x, double %y)
220*fb9e685fSYunQiang Su  ret double %z
221*fb9e685fSYunQiang Su}
222*fb9e685fSYunQiang Su
223*fb9e685fSYunQiang Sudefine float @minimumnum_float(float %x, float %y) {
224*fb9e685fSYunQiang Su;
225*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_float:
226*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
227*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa1
228*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa0
229*fb9e685fSYunQiang Su; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa1
230*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
231*fb9e685fSYunQiang Su;
232*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_float:
233*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
234*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa1
235*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa0
236*fb9e685fSYunQiang Su; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa1
237*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
238*fb9e685fSYunQiang Su;
239*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_float:
240*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
241*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa1
242*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa0
243*fb9e685fSYunQiang Su; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa1
244*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
245*fb9e685fSYunQiang Su;
246*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_float:
247*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
248*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa1
249*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa0
250*fb9e685fSYunQiang Su; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa1
251*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
252*fb9e685fSYunQiang Su  %z = call float @llvm.minimumnum.f32(float %x, float %y)
253*fb9e685fSYunQiang Su  ret float %z
254*fb9e685fSYunQiang Su}
255*fb9e685fSYunQiang Su
256*fb9e685fSYunQiang Sudefine float @minimumnum_float_nsz(float %x, float %y) {
257*fb9e685fSYunQiang Su;
258*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_float_nsz:
259*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
260*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa1, $fa1, $fa1
261*fb9e685fSYunQiang Su; LA32F-NEXT:    fmax.s $fa0, $fa0, $fa0
262*fb9e685fSYunQiang Su; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa1
263*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
264*fb9e685fSYunQiang Su;
265*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_float_nsz:
266*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
267*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa1, $fa1, $fa1
268*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.s $fa0, $fa0, $fa0
269*fb9e685fSYunQiang Su; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa1
270*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
271*fb9e685fSYunQiang Su;
272*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_float_nsz:
273*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
274*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa1, $fa1, $fa1
275*fb9e685fSYunQiang Su; LA64F-NEXT:    fmax.s $fa0, $fa0, $fa0
276*fb9e685fSYunQiang Su; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa1
277*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
278*fb9e685fSYunQiang Su;
279*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_float_nsz:
280*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
281*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa1, $fa1, $fa1
282*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.s $fa0, $fa0, $fa0
283*fb9e685fSYunQiang Su; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa1
284*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
285*fb9e685fSYunQiang Su  %z = call nsz float @llvm.minimumnum.f32(float %x, float %y)
286*fb9e685fSYunQiang Su  ret float %z
287*fb9e685fSYunQiang Su}
288*fb9e685fSYunQiang Su
289*fb9e685fSYunQiang Sudefine float @minimumnum_float_nnan(float %x, float %y) {
290*fb9e685fSYunQiang Su;
291*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_float_nnan:
292*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
293*fb9e685fSYunQiang Su; LA32F-NEXT:    fmin.s $fa0, $fa0, $fa1
294*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
295*fb9e685fSYunQiang Su;
296*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_float_nnan:
297*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
298*fb9e685fSYunQiang Su; LA32D-NEXT:    fmin.s $fa0, $fa0, $fa1
299*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
300*fb9e685fSYunQiang Su;
301*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_float_nnan:
302*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
303*fb9e685fSYunQiang Su; LA64F-NEXT:    fmin.s $fa0, $fa0, $fa1
304*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
305*fb9e685fSYunQiang Su;
306*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_float_nnan:
307*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
308*fb9e685fSYunQiang Su; LA64D-NEXT:    fmin.s $fa0, $fa0, $fa1
309*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
310*fb9e685fSYunQiang Su  %z = call nnan float @llvm.minimumnum.f32(float %x, float %y)
311*fb9e685fSYunQiang Su  ret float %z
312*fb9e685fSYunQiang Su}
313*fb9e685fSYunQiang Su
314*fb9e685fSYunQiang Sudefine double @minimumnum_double(double %x, double %y) {
315*fb9e685fSYunQiang Su;
316*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_double:
317*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
318*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, -16
319*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_def_cfa_offset 16
320*fb9e685fSYunQiang Su; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
321*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_offset 1, -4
322*fb9e685fSYunQiang Su; LA32F-NEXT:    bl %plt(fminimum_num)
323*fb9e685fSYunQiang Su; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
324*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, 16
325*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
326*fb9e685fSYunQiang Su;
327*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_double:
328*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
329*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1
330*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0
331*fb9e685fSYunQiang Su; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1
332*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
333*fb9e685fSYunQiang Su;
334*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_double:
335*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
336*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, -16
337*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_def_cfa_offset 16
338*fb9e685fSYunQiang Su; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
339*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_offset 1, -8
340*fb9e685fSYunQiang Su; LA64F-NEXT:    bl %plt(fminimum_num)
341*fb9e685fSYunQiang Su; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
342*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, 16
343*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
344*fb9e685fSYunQiang Su;
345*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_double:
346*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
347*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1
348*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0
349*fb9e685fSYunQiang Su; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1
350*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
351*fb9e685fSYunQiang Su  %z = call double @llvm.minimumnum.f64(double %x, double %y)
352*fb9e685fSYunQiang Su  ret double %z
353*fb9e685fSYunQiang Su}
354*fb9e685fSYunQiang Su
355*fb9e685fSYunQiang Sudefine double @minimumnum_double_nsz(double %x, double %y) {
356*fb9e685fSYunQiang Su;
357*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_double_nsz:
358*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
359*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, -16
360*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_def_cfa_offset 16
361*fb9e685fSYunQiang Su; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
362*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_offset 1, -4
363*fb9e685fSYunQiang Su; LA32F-NEXT:    bl %plt(fminimum_num)
364*fb9e685fSYunQiang Su; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
365*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, 16
366*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
367*fb9e685fSYunQiang Su;
368*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_double_nsz:
369*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
370*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa1, $fa1, $fa1
371*fb9e685fSYunQiang Su; LA32D-NEXT:    fmax.d $fa0, $fa0, $fa0
372*fb9e685fSYunQiang Su; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1
373*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
374*fb9e685fSYunQiang Su;
375*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_double_nsz:
376*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
377*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, -16
378*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_def_cfa_offset 16
379*fb9e685fSYunQiang Su; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
380*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_offset 1, -8
381*fb9e685fSYunQiang Su; LA64F-NEXT:    bl %plt(fminimum_num)
382*fb9e685fSYunQiang Su; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
383*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, 16
384*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
385*fb9e685fSYunQiang Su;
386*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_double_nsz:
387*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
388*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa1, $fa1, $fa1
389*fb9e685fSYunQiang Su; LA64D-NEXT:    fmax.d $fa0, $fa0, $fa0
390*fb9e685fSYunQiang Su; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1
391*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
392*fb9e685fSYunQiang Su  %z = call nsz double @llvm.minimumnum.f64(double %x, double %y)
393*fb9e685fSYunQiang Su  ret double %z
394*fb9e685fSYunQiang Su}
395*fb9e685fSYunQiang Su
396*fb9e685fSYunQiang Sudefine double @minimumnum_double_nnan(double %x, double %y) {
397*fb9e685fSYunQiang Su;
398*fb9e685fSYunQiang Su; LA32F-LABEL: minimumnum_double_nnan:
399*fb9e685fSYunQiang Su; LA32F:       # %bb.0:
400*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, -16
401*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_def_cfa_offset 16
402*fb9e685fSYunQiang Su; LA32F-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
403*fb9e685fSYunQiang Su; LA32F-NEXT:    .cfi_offset 1, -4
404*fb9e685fSYunQiang Su; LA32F-NEXT:    bl %plt(fminimum_num)
405*fb9e685fSYunQiang Su; LA32F-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
406*fb9e685fSYunQiang Su; LA32F-NEXT:    addi.w $sp, $sp, 16
407*fb9e685fSYunQiang Su; LA32F-NEXT:    ret
408*fb9e685fSYunQiang Su;
409*fb9e685fSYunQiang Su; LA32D-LABEL: minimumnum_double_nnan:
410*fb9e685fSYunQiang Su; LA32D:       # %bb.0:
411*fb9e685fSYunQiang Su; LA32D-NEXT:    fmin.d $fa0, $fa0, $fa1
412*fb9e685fSYunQiang Su; LA32D-NEXT:    ret
413*fb9e685fSYunQiang Su;
414*fb9e685fSYunQiang Su; LA64F-LABEL: minimumnum_double_nnan:
415*fb9e685fSYunQiang Su; LA64F:       # %bb.0:
416*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, -16
417*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_def_cfa_offset 16
418*fb9e685fSYunQiang Su; LA64F-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
419*fb9e685fSYunQiang Su; LA64F-NEXT:    .cfi_offset 1, -8
420*fb9e685fSYunQiang Su; LA64F-NEXT:    bl %plt(fminimum_num)
421*fb9e685fSYunQiang Su; LA64F-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
422*fb9e685fSYunQiang Su; LA64F-NEXT:    addi.d $sp, $sp, 16
423*fb9e685fSYunQiang Su; LA64F-NEXT:    ret
424*fb9e685fSYunQiang Su;
425*fb9e685fSYunQiang Su; LA64D-LABEL: minimumnum_double_nnan:
426*fb9e685fSYunQiang Su; LA64D:       # %bb.0:
427*fb9e685fSYunQiang Su; LA64D-NEXT:    fmin.d $fa0, $fa0, $fa1
428*fb9e685fSYunQiang Su; LA64D-NEXT:    ret
429*fb9e685fSYunQiang Su  %z = call nnan double @llvm.minimumnum.f64(double %x, double %y)
430*fb9e685fSYunQiang Su  ret double %z
431*fb9e685fSYunQiang Su}
432