Skip to content

Commit 45d28ff

Browse files
committed
MIPS: Add 64r2 test to CodeGen/fp-maximumnum-minimumnum.ll
We will use it to be sure that the canonicalize is removed in llvm#139237
1 parent 0635ef8 commit 45d28ff

File tree

1 file changed

+219
-0
lines changed

1 file changed

+219
-0
lines changed

llvm/test/CodeGen/Mips/fp-maximumnum-minimumnum.ll

Lines changed: 219 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
22
; RUN: llc --mtriple=mipsisa32r6 < %s | FileCheck %s --check-prefix=MIPS32R6
3+
; RUN: llc --mtriple=mips64 < %s | FileCheck %s --check-prefix=MIPS64R2
34

45
declare float @llvm.maximumnum.f32(float, float)
56
declare double @llvm.maximumnum.f64(double, double)
@@ -13,6 +14,28 @@ define float @maximumnum_float(float %x, float %y) {
1314
; MIPS32R6-NEXT: min.s $f1, $f12, $f12
1415
; MIPS32R6-NEXT: jr $ra
1516
; MIPS32R6-NEXT: max.s $f0, $f1, $f0
17+
;
18+
; MIPS64R2-LABEL: maximumnum_float:
19+
; MIPS64R2: # %bb.0:
20+
; MIPS64R2-NEXT: c.un.s $f12, $f12
21+
; MIPS64R2-NEXT: movt.s $f12, $f13, $fcc0
22+
; MIPS64R2-NEXT: c.un.s $f13, $f13
23+
; MIPS64R2-NEXT: movt.s $f13, $f12, $fcc0
24+
; MIPS64R2-NEXT: c.ule.s $f12, $f13
25+
; MIPS64R2-NEXT: mov.s $f0, $f13
26+
; MIPS64R2-NEXT: movf.s $f0, $f12, $fcc0
27+
; MIPS64R2-NEXT: add.s $f1, $f0, $f0
28+
; MIPS64R2-NEXT: c.un.s $f0, $f0
29+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
30+
; MIPS64R2-NEXT: mfc1 $1, $f12
31+
; MIPS64R2-NEXT: mov.s $f1, $f0
32+
; MIPS64R2-NEXT: movz.s $f1, $f12, $1
33+
; MIPS64R2-NEXT: mfc1 $1, $f13
34+
; MIPS64R2-NEXT: mtc1 $zero, $f2
35+
; MIPS64R2-NEXT: movz.s $f1, $f13, $1
36+
; MIPS64R2-NEXT: c.eq.s $f0, $f2
37+
; MIPS64R2-NEXT: jr $ra
38+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
1639
%z = call float @llvm.maximumnum.f32(float %x, float %y)
1740
ret float %z
1841
}
@@ -24,6 +47,20 @@ define float @maximumnum_float_nsz(float %x, float %y) {
2447
; MIPS32R6-NEXT: min.s $f1, $f12, $f12
2548
; MIPS32R6-NEXT: jr $ra
2649
; MIPS32R6-NEXT: max.s $f0, $f1, $f0
50+
;
51+
; MIPS64R2-LABEL: maximumnum_float_nsz:
52+
; MIPS64R2: # %bb.0:
53+
; MIPS64R2-NEXT: mov.s $f0, $f13
54+
; MIPS64R2-NEXT: c.un.s $f12, $f12
55+
; MIPS64R2-NEXT: movt.s $f12, $f13, $fcc0
56+
; MIPS64R2-NEXT: c.un.s $f13, $f13
57+
; MIPS64R2-NEXT: movt.s $f0, $f12, $fcc0
58+
; MIPS64R2-NEXT: c.ule.s $f12, $f0
59+
; MIPS64R2-NEXT: movf.s $f0, $f12, $fcc0
60+
; MIPS64R2-NEXT: add.s $f1, $f0, $f0
61+
; MIPS64R2-NEXT: c.un.s $f0, $f0
62+
; MIPS64R2-NEXT: jr $ra
63+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
2764
%z = call nsz float @llvm.maximumnum.f32(float %x, float %y)
2865
ret float %z
2966
}
@@ -33,6 +70,21 @@ define float @maximumnum_float_nnan(float %x, float %y) {
3370
; MIPS32R6: # %bb.0:
3471
; MIPS32R6-NEXT: jr $ra
3572
; MIPS32R6-NEXT: max.s $f0, $f12, $f14
73+
;
74+
; MIPS64R2-LABEL: maximumnum_float_nnan:
75+
; MIPS64R2: # %bb.0:
76+
; MIPS64R2-NEXT: c.ule.s $f12, $f13
77+
; MIPS64R2-NEXT: mov.s $f0, $f13
78+
; MIPS64R2-NEXT: movf.s $f0, $f12, $fcc0
79+
; MIPS64R2-NEXT: mfc1 $1, $f12
80+
; MIPS64R2-NEXT: mov.s $f1, $f0
81+
; MIPS64R2-NEXT: movz.s $f1, $f12, $1
82+
; MIPS64R2-NEXT: mfc1 $1, $f13
83+
; MIPS64R2-NEXT: movz.s $f1, $f13, $1
84+
; MIPS64R2-NEXT: mtc1 $zero, $f2
85+
; MIPS64R2-NEXT: c.eq.s $f0, $f2
86+
; MIPS64R2-NEXT: jr $ra
87+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
3688
%z = call nnan float @llvm.maximumnum.f32(float %x, float %y)
3789
ret float %z
3890
}
@@ -45,6 +97,28 @@ define double @maximumnum_double(double %x, double %y) {
4597
; MIPS32R6-NEXT: min.d $f1, $f12, $f12
4698
; MIPS32R6-NEXT: jr $ra
4799
; MIPS32R6-NEXT: max.d $f0, $f1, $f0
100+
;
101+
; MIPS64R2-LABEL: maximumnum_double:
102+
; MIPS64R2: # %bb.0:
103+
; MIPS64R2-NEXT: c.un.d $f12, $f12
104+
; MIPS64R2-NEXT: movt.d $f12, $f13, $fcc0
105+
; MIPS64R2-NEXT: c.un.d $f13, $f13
106+
; MIPS64R2-NEXT: movt.d $f13, $f12, $fcc0
107+
; MIPS64R2-NEXT: c.ule.d $f12, $f13
108+
; MIPS64R2-NEXT: mov.d $f0, $f13
109+
; MIPS64R2-NEXT: movf.d $f0, $f12, $fcc0
110+
; MIPS64R2-NEXT: add.d $f1, $f0, $f0
111+
; MIPS64R2-NEXT: c.un.d $f0, $f0
112+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
113+
; MIPS64R2-NEXT: dmfc1 $1, $f12
114+
; MIPS64R2-NEXT: mov.d $f1, $f0
115+
; MIPS64R2-NEXT: movz.d $f1, $f12, $1
116+
; MIPS64R2-NEXT: dmfc1 $1, $f13
117+
; MIPS64R2-NEXT: movz.d $f1, $f13, $1
118+
; MIPS64R2-NEXT: dmtc1 $zero, $f2
119+
; MIPS64R2-NEXT: c.eq.d $f0, $f2
120+
; MIPS64R2-NEXT: jr $ra
121+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
48122
%z = call double @llvm.maximumnum.f64(double %x, double %y)
49123
ret double %z
50124
}
@@ -56,6 +130,20 @@ define double @maximumnum_double_nsz(double %x, double %y) {
56130
; MIPS32R6-NEXT: min.d $f1, $f12, $f12
57131
; MIPS32R6-NEXT: jr $ra
58132
; MIPS32R6-NEXT: max.d $f0, $f1, $f0
133+
;
134+
; MIPS64R2-LABEL: maximumnum_double_nsz:
135+
; MIPS64R2: # %bb.0:
136+
; MIPS64R2-NEXT: mov.d $f0, $f13
137+
; MIPS64R2-NEXT: c.un.d $f12, $f12
138+
; MIPS64R2-NEXT: movt.d $f12, $f13, $fcc0
139+
; MIPS64R2-NEXT: c.un.d $f13, $f13
140+
; MIPS64R2-NEXT: movt.d $f0, $f12, $fcc0
141+
; MIPS64R2-NEXT: c.ule.d $f12, $f0
142+
; MIPS64R2-NEXT: movf.d $f0, $f12, $fcc0
143+
; MIPS64R2-NEXT: add.d $f1, $f0, $f0
144+
; MIPS64R2-NEXT: c.un.d $f0, $f0
145+
; MIPS64R2-NEXT: jr $ra
146+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
59147
%z = call nsz double @llvm.maximumnum.f64(double %x, double %y)
60148
ret double %z
61149
}
@@ -65,6 +153,21 @@ define double @maximumnum_double_nnan(double %x, double %y) {
65153
; MIPS32R6: # %bb.0:
66154
; MIPS32R6-NEXT: jr $ra
67155
; MIPS32R6-NEXT: max.d $f0, $f12, $f14
156+
;
157+
; MIPS64R2-LABEL: maximumnum_double_nnan:
158+
; MIPS64R2: # %bb.0:
159+
; MIPS64R2-NEXT: c.ule.d $f12, $f13
160+
; MIPS64R2-NEXT: mov.d $f0, $f13
161+
; MIPS64R2-NEXT: movf.d $f0, $f12, $fcc0
162+
; MIPS64R2-NEXT: dmfc1 $1, $f12
163+
; MIPS64R2-NEXT: mov.d $f1, $f0
164+
; MIPS64R2-NEXT: movz.d $f1, $f12, $1
165+
; MIPS64R2-NEXT: dmfc1 $1, $f13
166+
; MIPS64R2-NEXT: movz.d $f1, $f13, $1
167+
; MIPS64R2-NEXT: dmtc1 $zero, $f2
168+
; MIPS64R2-NEXT: c.eq.d $f0, $f2
169+
; MIPS64R2-NEXT: jr $ra
170+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
68171
%z = call nnan double @llvm.maximumnum.f64(double %x, double %y)
69172
ret double %z
70173
}
@@ -76,6 +179,31 @@ define float @minimumnum_float(float %x, float %y) {
76179
; MIPS32R6-NEXT: min.s $f1, $f12, $f12
77180
; MIPS32R6-NEXT: jr $ra
78181
; MIPS32R6-NEXT: min.s $f0, $f1, $f0
182+
;
183+
; MIPS64R2-LABEL: minimumnum_float:
184+
; MIPS64R2: # %bb.0:
185+
; MIPS64R2-NEXT: c.un.s $f12, $f12
186+
; MIPS64R2-NEXT: movt.s $f12, $f13, $fcc0
187+
; MIPS64R2-NEXT: c.un.s $f13, $f13
188+
; MIPS64R2-NEXT: movt.s $f13, $f12, $fcc0
189+
; MIPS64R2-NEXT: c.olt.s $f12, $f13
190+
; MIPS64R2-NEXT: mov.s $f0, $f13
191+
; MIPS64R2-NEXT: movt.s $f0, $f12, $fcc0
192+
; MIPS64R2-NEXT: add.s $f1, $f0, $f0
193+
; MIPS64R2-NEXT: c.un.s $f0, $f0
194+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
195+
; MIPS64R2-NEXT: mfc1 $1, $f12
196+
; MIPS64R2-NEXT: lui $2, 32768
197+
; MIPS64R2-NEXT: xor $1, $1, $2
198+
; MIPS64R2-NEXT: mov.s $f1, $f0
199+
; MIPS64R2-NEXT: movz.s $f1, $f12, $1
200+
; MIPS64R2-NEXT: mfc1 $1, $f13
201+
; MIPS64R2-NEXT: xor $1, $1, $2
202+
; MIPS64R2-NEXT: mtc1 $zero, $f2
203+
; MIPS64R2-NEXT: movz.s $f1, $f13, $1
204+
; MIPS64R2-NEXT: c.eq.s $f0, $f2
205+
; MIPS64R2-NEXT: jr $ra
206+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
79207
%z = call float @llvm.minimumnum.f32(float %x, float %y)
80208
ret float %z
81209
}
@@ -87,6 +215,20 @@ define float @minimumnum_float_nsz(float %x, float %y) {
87215
; MIPS32R6-NEXT: min.s $f1, $f12, $f12
88216
; MIPS32R6-NEXT: jr $ra
89217
; MIPS32R6-NEXT: min.s $f0, $f1, $f0
218+
;
219+
; MIPS64R2-LABEL: minimumnum_float_nsz:
220+
; MIPS64R2: # %bb.0:
221+
; MIPS64R2-NEXT: mov.s $f0, $f13
222+
; MIPS64R2-NEXT: c.un.s $f12, $f12
223+
; MIPS64R2-NEXT: movt.s $f12, $f13, $fcc0
224+
; MIPS64R2-NEXT: c.un.s $f13, $f13
225+
; MIPS64R2-NEXT: movt.s $f0, $f12, $fcc0
226+
; MIPS64R2-NEXT: c.olt.s $f12, $f0
227+
; MIPS64R2-NEXT: movt.s $f0, $f12, $fcc0
228+
; MIPS64R2-NEXT: add.s $f1, $f0, $f0
229+
; MIPS64R2-NEXT: c.un.s $f0, $f0
230+
; MIPS64R2-NEXT: jr $ra
231+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
90232
%z = call nsz float @llvm.minimumnum.f32(float %x, float %y)
91233
ret float %z
92234
}
@@ -96,6 +238,24 @@ define float @minimumnum_float_nnan(float %x, float %y) {
96238
; MIPS32R6: # %bb.0:
97239
; MIPS32R6-NEXT: jr $ra
98240
; MIPS32R6-NEXT: min.s $f0, $f12, $f14
241+
;
242+
; MIPS64R2-LABEL: minimumnum_float_nnan:
243+
; MIPS64R2: # %bb.0:
244+
; MIPS64R2-NEXT: c.olt.s $f12, $f13
245+
; MIPS64R2-NEXT: mov.s $f0, $f13
246+
; MIPS64R2-NEXT: movt.s $f0, $f12, $fcc0
247+
; MIPS64R2-NEXT: mfc1 $1, $f12
248+
; MIPS64R2-NEXT: lui $2, 32768
249+
; MIPS64R2-NEXT: xor $1, $1, $2
250+
; MIPS64R2-NEXT: mov.s $f1, $f0
251+
; MIPS64R2-NEXT: movz.s $f1, $f12, $1
252+
; MIPS64R2-NEXT: mfc1 $1, $f13
253+
; MIPS64R2-NEXT: xor $1, $1, $2
254+
; MIPS64R2-NEXT: movz.s $f1, $f13, $1
255+
; MIPS64R2-NEXT: mtc1 $zero, $f2
256+
; MIPS64R2-NEXT: c.eq.s $f0, $f2
257+
; MIPS64R2-NEXT: jr $ra
258+
; MIPS64R2-NEXT: movt.s $f0, $f1, $fcc0
99259
%z = call nnan float @llvm.minimumnum.f32(float %x, float %y)
100260
ret float %z
101261
}
@@ -107,6 +267,32 @@ define double @minimumnum_double(double %x, double %y) {
107267
; MIPS32R6-NEXT: min.d $f1, $f12, $f12
108268
; MIPS32R6-NEXT: jr $ra
109269
; MIPS32R6-NEXT: min.d $f0, $f1, $f0
270+
;
271+
; MIPS64R2-LABEL: minimumnum_double:
272+
; MIPS64R2: # %bb.0:
273+
; MIPS64R2-NEXT: c.un.d $f12, $f12
274+
; MIPS64R2-NEXT: movt.d $f12, $f13, $fcc0
275+
; MIPS64R2-NEXT: c.un.d $f13, $f13
276+
; MIPS64R2-NEXT: movt.d $f13, $f12, $fcc0
277+
; MIPS64R2-NEXT: c.olt.d $f12, $f13
278+
; MIPS64R2-NEXT: mov.d $f0, $f13
279+
; MIPS64R2-NEXT: movt.d $f0, $f12, $fcc0
280+
; MIPS64R2-NEXT: add.d $f1, $f0, $f0
281+
; MIPS64R2-NEXT: c.un.d $f0, $f0
282+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
283+
; MIPS64R2-NEXT: dmfc1 $1, $f12
284+
; MIPS64R2-NEXT: daddiu $2, $zero, 1
285+
; MIPS64R2-NEXT: dsll $2, $2, 63
286+
; MIPS64R2-NEXT: xor $1, $1, $2
287+
; MIPS64R2-NEXT: mov.d $f1, $f0
288+
; MIPS64R2-NEXT: movz.d $f1, $f12, $1
289+
; MIPS64R2-NEXT: dmfc1 $1, $f13
290+
; MIPS64R2-NEXT: xor $1, $1, $2
291+
; MIPS64R2-NEXT: movz.d $f1, $f13, $1
292+
; MIPS64R2-NEXT: dmtc1 $zero, $f2
293+
; MIPS64R2-NEXT: c.eq.d $f0, $f2
294+
; MIPS64R2-NEXT: jr $ra
295+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
110296
%z = call double @llvm.minimumnum.f64(double %x, double %y)
111297
ret double %z
112298
}
@@ -118,6 +304,20 @@ define double @minimumnum_double_nsz(double %x, double %y) {
118304
; MIPS32R6-NEXT: min.d $f1, $f12, $f12
119305
; MIPS32R6-NEXT: jr $ra
120306
; MIPS32R6-NEXT: min.d $f0, $f1, $f0
307+
;
308+
; MIPS64R2-LABEL: minimumnum_double_nsz:
309+
; MIPS64R2: # %bb.0:
310+
; MIPS64R2-NEXT: mov.d $f0, $f13
311+
; MIPS64R2-NEXT: c.un.d $f12, $f12
312+
; MIPS64R2-NEXT: movt.d $f12, $f13, $fcc0
313+
; MIPS64R2-NEXT: c.un.d $f13, $f13
314+
; MIPS64R2-NEXT: movt.d $f0, $f12, $fcc0
315+
; MIPS64R2-NEXT: c.olt.d $f12, $f0
316+
; MIPS64R2-NEXT: movt.d $f0, $f12, $fcc0
317+
; MIPS64R2-NEXT: add.d $f1, $f0, $f0
318+
; MIPS64R2-NEXT: c.un.d $f0, $f0
319+
; MIPS64R2-NEXT: jr $ra
320+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
121321
%z = call nsz double @llvm.minimumnum.f64(double %x, double %y)
122322
ret double %z
123323
}
@@ -127,6 +327,25 @@ define double @minimumnum_double_nnan(double %x, double %y) {
127327
; MIPS32R6: # %bb.0:
128328
; MIPS32R6-NEXT: jr $ra
129329
; MIPS32R6-NEXT: min.d $f0, $f12, $f14
330+
;
331+
; MIPS64R2-LABEL: minimumnum_double_nnan:
332+
; MIPS64R2: # %bb.0:
333+
; MIPS64R2-NEXT: c.olt.d $f12, $f13
334+
; MIPS64R2-NEXT: mov.d $f0, $f13
335+
; MIPS64R2-NEXT: movt.d $f0, $f12, $fcc0
336+
; MIPS64R2-NEXT: daddiu $1, $zero, 1
337+
; MIPS64R2-NEXT: dsll $1, $1, 63
338+
; MIPS64R2-NEXT: dmfc1 $2, $f12
339+
; MIPS64R2-NEXT: xor $2, $2, $1
340+
; MIPS64R2-NEXT: mov.d $f1, $f0
341+
; MIPS64R2-NEXT: movz.d $f1, $f12, $2
342+
; MIPS64R2-NEXT: dmfc1 $2, $f13
343+
; MIPS64R2-NEXT: xor $1, $2, $1
344+
; MIPS64R2-NEXT: movz.d $f1, $f13, $1
345+
; MIPS64R2-NEXT: dmtc1 $zero, $f2
346+
; MIPS64R2-NEXT: c.eq.d $f0, $f2
347+
; MIPS64R2-NEXT: jr $ra
348+
; MIPS64R2-NEXT: movt.d $f0, $f1, $fcc0
130349
%z = call nnan double @llvm.minimumnum.f64(double %x, double %y)
131350
ret double %z
132351
}

0 commit comments

Comments
 (0)