xref: /llvm-project/llvm/test/CodeGen/Mips/mipsr6-minmaxnum.ll (revision 0bf181eb34bbac1a65522dbbef42c81a705d3102)
1; RUN: llc %s -mtriple=mipsisa32r6el-linux-gnu -o - | \
2; RUN:     FileCheck %s --check-prefix=MIPS32R6EL
3; RUN: llc %s -mtriple=mipsisa64r6el-linux-gnuabi64 -o - | \
4; RUN:     FileCheck %s --check-prefix=MIPS64R6EL
5
6define float @mins(float %x, float %y) {
7; MIPS32R6EL-LABEL:	mins
8; MIPS32R6EL:		# %bb.0:
9; MIPS32R6EL-NEXT:	min.s	$f0, $f14, $f14
10; MIPS32R6EL-NEXT:	min.s	$f1, $f12, $f12
11; MIPS32R6EL-NEXT:	jr	$ra
12; MIPS32R6EL-NEXT:	min.s	$f0, $f1, $f0
13;
14; MIPS64R6EL-LABEL:	mins
15; MIPS64R6EL:		# %bb.0:
16; MIPS64R6EL-NEXT:	min.s	$f0, $f13, $f13
17; MIPS64R6EL-NEXT:	min.s	$f1, $f12, $f12
18; MIPS64R6EL-NEXT:	jr	$ra
19; MIPS64R6EL-NEXT:	min.s	$f0, $f1, $f0
20
21  %r = tail call float @llvm.minnum.f32(float %x, float %y)
22  ret float %r
23}
24
25define float @maxs(float %x, float %y) {
26; MIPS32R6EL-LABEL:	maxs
27; MIPS32R6EL:		# %bb.0:
28; MIPS32R6EL-NEXT:	min.s	$f0, $f14, $f14
29; MIPS32R6EL-NEXT:	min.s	$f1, $f12, $f12
30; MIPS32R6EL-NEXT:	jr	$ra
31; MIPS32R6EL-NEXT:	max.s	$f0, $f1, $f0
32;
33; MIPS64R6EL-LABEL:	maxs
34; MIPS64R6EL:		# %bb.0:
35; MIPS64R6EL-NEXT:	min.s	$f0, $f13, $f13
36; MIPS64R6EL-NEXT:	min.s	$f1, $f12, $f12
37; MIPS64R6EL-NEXT:	jr	$ra
38; MIPS64R6EL-NEXT:	max.s	$f0, $f1, $f0
39
40  %r = tail call float @llvm.maxnum.f32(float %x, float %y)
41  ret float %r
42}
43
44define double @mind(double %x, double %y) {
45; MIPS32R6EL-LABEL:	mind
46; MIPS32R6EL:		# %bb.0:
47; MIPS32R6EL-NEXT:	min.d	$f0, $f14, $f14
48; MIPS32R6EL-NEXT:	min.d	$f1, $f12, $f12
49; MIPS32R6EL-NEXT:	jr	$ra
50; MIPS32R6EL-NEXT:	min.d	$f0, $f1, $f0
51;
52; MIPS64R6EL-LABEL:	mind
53; MIPS64R6EL:		# %bb.0:
54; MIPS64R6EL-NEXT:	min.d	$f0, $f13, $f13
55; MIPS64R6EL-NEXT:	min.d	$f1, $f12, $f12
56; MIPS64R6EL-NEXT:	jr	$ra
57; MIPS64R6EL-NEXT:	min.d	$f0, $f1, $f0
58
59  %r = tail call double @llvm.minnum.f64(double %x, double %y)
60  ret double %r
61}
62
63define double @maxd(double %x, double %y) {
64; MIPS32R6EL-LABEL:	maxd
65; MIPS32R6EL:		# %bb.0:
66; MIPS32R6EL-NEXT:	min.d	$f0, $f14, $f14
67; MIPS32R6EL-NEXT:	min.d	$f1, $f12, $f12
68; MIPS32R6EL-NEXT:	jr	$ra
69; MIPS32R6EL-NEXT:	max.d	$f0, $f1, $f0
70;
71; MIPS64R6EL-LABEL:	maxd
72; MIPS64R6EL:		# %bb.0:
73; MIPS64R6EL-NEXT:	min.d	$f0, $f13, $f13
74; MIPS64R6EL-NEXT:	min.d	$f1, $f12, $f12
75; MIPS64R6EL-NEXT:	jr	$ra
76; MIPS64R6EL-NEXT:	max.d	$f0, $f1, $f0
77
78  %r = tail call double @llvm.maxnum.f64(double %x, double %y)
79  ret double %r
80}
81
82declare float @llvm.minnum.f32(float, float)
83declare float @llvm.maxnum.f32(float, float)
84declare double @llvm.minnum.f64(double, double)
85declare double @llvm.maxnum.f64(double, double)
86