xref: /llvm-project/llvm/test/CodeGen/PowerPC/scalar-min-max.ll (revision 2866c6cad475f668bd0bffabb0513dc96ff157be)
125a41ad2SNemanja Ivanovic; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
225a41ad2SNemanja Ivanovic; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names --enable-unsafe-fp-math \
325a41ad2SNemanja Ivanovic; RUN:   -verify-machineinstrs --enable-no-signed-zeros-fp-math \
425a41ad2SNemanja Ivanovic; RUN:   --enable-no-nans-fp-math \
525a41ad2SNemanja Ivanovic; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s
625a41ad2SNemanja Ivanovic; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names --enable-unsafe-fp-math \
725a41ad2SNemanja Ivanovic; RUN:   -verify-machineinstrs --enable-no-signed-zeros-fp-math \
825a41ad2SNemanja Ivanovic; RUN:   --enable-no-nans-fp-math \
925a41ad2SNemanja Ivanovic; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s
1025a41ad2SNemanja Ivanovic; RUN: llc -mcpu=pwr9 -ppc-asm-full-reg-names -verify-machineinstrs \
1125a41ad2SNemanja Ivanovic; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
1225a41ad2SNemanja Ivanovic; RUN:   --check-prefix=NO-FAST-P9
1325a41ad2SNemanja Ivanovic; RUN: llc -mcpu=pwr8 -ppc-asm-full-reg-names -verify-machineinstrs \
1425a41ad2SNemanja Ivanovic; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s \
1525a41ad2SNemanja Ivanovic; RUN:   --check-prefix=NO-FAST-P8
1625a41ad2SNemanja Ivanovicdefine dso_local float @testfmax(float %a, float %b) local_unnamed_addr {
1725a41ad2SNemanja Ivanovic; CHECK-LABEL: testfmax:
1825a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
1925a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmaxdp f1, f1, f2
2025a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
2125a41ad2SNemanja Ivanovic;
2225a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testfmax:
2325a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
2425a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmaxcdp f1, f1, f2
2525a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
2625a41ad2SNemanja Ivanovic;
2725a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testfmax:
2825a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
2925a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2
3025a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    bgtlr cr0
3125a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:  # %bb.1: # %entry
3225a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    fmr f1, f2
3325a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
3425a41ad2SNemanja Ivanovicentry:
3525a41ad2SNemanja Ivanovic  %cmp = fcmp ogt float %a, %b
3625a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, float %a, float %b
3725a41ad2SNemanja Ivanovic  ret float %cond
3825a41ad2SNemanja Ivanovic}
3925a41ad2SNemanja Ivanovic
4025a41ad2SNemanja Ivanovicdefine dso_local double @testdmax(double %a, double %b) local_unnamed_addr {
4125a41ad2SNemanja Ivanovic; CHECK-LABEL: testdmax:
4225a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
4325a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmaxdp f1, f1, f2
4425a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
4525a41ad2SNemanja Ivanovic;
4625a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testdmax:
4725a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
4825a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmaxcdp f1, f1, f2
4925a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
5025a41ad2SNemanja Ivanovic;
5125a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testdmax:
5225a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
5325a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f2
5425a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    bgtlr cr0
5525a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:  # %bb.1: # %entry
5625a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    fmr f1, f2
5725a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
5825a41ad2SNemanja Ivanovicentry:
5925a41ad2SNemanja Ivanovic  %cmp = fcmp ogt double %a, %b
6025a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, double %a, double %b
6125a41ad2SNemanja Ivanovic  ret double %cond
6225a41ad2SNemanja Ivanovic}
6325a41ad2SNemanja Ivanovic
6425a41ad2SNemanja Ivanovicdefine dso_local float @testfmin(float %a, float %b) local_unnamed_addr {
6525a41ad2SNemanja Ivanovic; CHECK-LABEL: testfmin:
6625a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
6725a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmindp f1, f1, f2
6825a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
6925a41ad2SNemanja Ivanovic;
7025a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testfmin:
7125a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
7225a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmincdp f1, f1, f2
7325a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
7425a41ad2SNemanja Ivanovic;
7525a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testfmin:
7625a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
7725a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    fcmpu cr0, f1, f2
7825a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    bltlr cr0
7925a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:  # %bb.1: # %entry
8025a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    fmr f1, f2
8125a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
8225a41ad2SNemanja Ivanovicentry:
8325a41ad2SNemanja Ivanovic  %cmp = fcmp olt float %a, %b
8425a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, float %a, float %b
8525a41ad2SNemanja Ivanovic  ret float %cond
8625a41ad2SNemanja Ivanovic}
8725a41ad2SNemanja Ivanovic
8825a41ad2SNemanja Ivanovicdefine dso_local double @testdmin(double %a, double %b) local_unnamed_addr {
8925a41ad2SNemanja Ivanovic; CHECK-LABEL: testdmin:
9025a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
9125a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmindp f1, f1, f2
9225a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
9325a41ad2SNemanja Ivanovic;
9425a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testdmin:
9525a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
9625a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmincdp f1, f1, f2
9725a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
9825a41ad2SNemanja Ivanovic;
9925a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testdmin:
10025a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
10125a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    xscmpudp cr0, f1, f2
10225a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    bltlr cr0
10325a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:  # %bb.1: # %entry
10425a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    fmr f1, f2
10525a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
10625a41ad2SNemanja Ivanovicentry:
10725a41ad2SNemanja Ivanovic  %cmp = fcmp olt double %a, %b
10825a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, double %a, double %b
10925a41ad2SNemanja Ivanovic  ret double %cond
11025a41ad2SNemanja Ivanovic}
11125a41ad2SNemanja Ivanovic
11225a41ad2SNemanja Ivanovicdefine dso_local float @testfmax_fast(float %a, float %b) local_unnamed_addr {
11325a41ad2SNemanja Ivanovic; CHECK-LABEL: testfmax_fast:
11425a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
11525a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmaxdp f1, f1, f2
11625a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
11725a41ad2SNemanja Ivanovic;
11825a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testfmax_fast:
11925a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
12025a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmaxcdp f1, f1, f2
12125a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
12225a41ad2SNemanja Ivanovic;
12325a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testfmax_fast:
12425a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
125e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    xssubsp f0, f2, f1
126e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    fsel f1, f0, f2, f1
12725a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
12825a41ad2SNemanja Ivanovicentry:
129*2866c6caSQiu Chaofan  %cmp = fcmp nnan ninf ogt float %a, %b
13025a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, float %a, float %b
13125a41ad2SNemanja Ivanovic  ret float %cond
13225a41ad2SNemanja Ivanovic}
13325a41ad2SNemanja Ivanovicdefine dso_local double @testdmax_fast(double %a, double %b) local_unnamed_addr {
13425a41ad2SNemanja Ivanovic; CHECK-LABEL: testdmax_fast:
13525a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
13625a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmaxdp f1, f1, f2
13725a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
13825a41ad2SNemanja Ivanovic;
13925a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testdmax_fast:
14025a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
14125a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmaxcdp f1, f1, f2
14225a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
14325a41ad2SNemanja Ivanovic;
14425a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testdmax_fast:
14525a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
146e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    xssubdp f0, f2, f1
147e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    fsel f1, f0, f2, f1
14825a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
14925a41ad2SNemanja Ivanovicentry:
150*2866c6caSQiu Chaofan  %cmp = fcmp nnan ninf ogt double %a, %b
15125a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, double %a, double %b
15225a41ad2SNemanja Ivanovic  ret double %cond
15325a41ad2SNemanja Ivanovic}
15425a41ad2SNemanja Ivanovicdefine dso_local float @testfmin_fast(float %a, float %b) local_unnamed_addr {
15525a41ad2SNemanja Ivanovic; CHECK-LABEL: testfmin_fast:
15625a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
15725a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmindp f1, f1, f2
15825a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
15925a41ad2SNemanja Ivanovic;
16025a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testfmin_fast:
16125a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
16225a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmincdp f1, f1, f2
16325a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
16425a41ad2SNemanja Ivanovic;
16525a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testfmin_fast:
16625a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
167e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    xssubsp f0, f1, f2
168e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    fsel f1, f0, f2, f1
16925a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
17025a41ad2SNemanja Ivanovicentry:
171*2866c6caSQiu Chaofan  %cmp = fcmp nnan ninf olt float %a, %b
17225a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, float %a, float %b
17325a41ad2SNemanja Ivanovic  ret float %cond
17425a41ad2SNemanja Ivanovic}
17525a41ad2SNemanja Ivanovicdefine dso_local double @testdmin_fast(double %a, double %b) local_unnamed_addr {
17625a41ad2SNemanja Ivanovic; CHECK-LABEL: testdmin_fast:
17725a41ad2SNemanja Ivanovic; CHECK:       # %bb.0: # %entry
17825a41ad2SNemanja Ivanovic; CHECK-NEXT:    xsmindp f1, f1, f2
17925a41ad2SNemanja Ivanovic; CHECK-NEXT:    blr
18025a41ad2SNemanja Ivanovic;
18125a41ad2SNemanja Ivanovic; NO-FAST-P9-LABEL: testdmin_fast:
18225a41ad2SNemanja Ivanovic; NO-FAST-P9:       # %bb.0: # %entry
18325a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    xsmincdp f1, f1, f2
18425a41ad2SNemanja Ivanovic; NO-FAST-P9-NEXT:    blr
18525a41ad2SNemanja Ivanovic;
18625a41ad2SNemanja Ivanovic; NO-FAST-P8-LABEL: testdmin_fast:
18725a41ad2SNemanja Ivanovic; NO-FAST-P8:       # %bb.0: # %entry
188e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    xssubdp f0, f1, f2
189e9753822SQiu Chaofan; NO-FAST-P8-NEXT:    fsel f1, f0, f2, f1
19025a41ad2SNemanja Ivanovic; NO-FAST-P8-NEXT:    blr
19125a41ad2SNemanja Ivanovicentry:
192*2866c6caSQiu Chaofan  %cmp = fcmp nnan ninf olt double %a, %b
19325a41ad2SNemanja Ivanovic  %cond = select i1 %cmp, double %a, double %b
19425a41ad2SNemanja Ivanovic  ret double %cond
19525a41ad2SNemanja Ivanovic}
196