xref: /llvm-project/llvm/test/CodeGen/NVPTX/fminimum-fmaximum.ll (revision b279f6b098d3849f7f1c1f539b108307d5f8ae2d)
1*b279f6b0SFangrui Song; RUN: llc < %s -mtriple=nvptx64 | FileCheck %s --check-prefixes=CHECK
2*b279f6b0SFangrui Song; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_80 | FileCheck %s --check-prefixes=CHECK
3*b279f6b0SFangrui Song; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 | %ptxas-verify %}
4*b279f6b0SFangrui Song; RUN: %if ptxas-11.0 %{ llc < %s -mtriple=nvptx64 -mcpu=sm_80 | %ptxas-verify -arch=sm_80 %}
5efb8d4cfSChristian Sigg
6efb8d4cfSChristian Sigg; ---- minimum ----
7efb8d4cfSChristian Sigg
8efb8d4cfSChristian Sigg; CHECK-LABEL: minimum_half
9efb8d4cfSChristian Siggdefine half @minimum_half(half %a) #0 {
10fb3e3ef6SSanjay Patel  ; CHECK: setp
11fb3e3ef6SSanjay Patel  ; CHECK: selp.b16
12efb8d4cfSChristian Sigg  %p = fcmp ult half %a, 0.0
13efb8d4cfSChristian Sigg  %x = select i1 %p, half %a, half 0.0
14efb8d4cfSChristian Sigg  ret half %x
15efb8d4cfSChristian Sigg}
16efb8d4cfSChristian Sigg
17efb8d4cfSChristian Sigg; CHECK-LABEL: minimum_float
18efb8d4cfSChristian Siggdefine float @minimum_float(float %a) #0 {
19fb3e3ef6SSanjay Patel  ; CHECK: setp
20fb3e3ef6SSanjay Patel  ; CHECK: selp.f32
21efb8d4cfSChristian Sigg  %p = fcmp ult float %a, 0.0
22efb8d4cfSChristian Sigg  %x = select i1 %p, float %a, float 0.0
23efb8d4cfSChristian Sigg  ret float %x
24efb8d4cfSChristian Sigg}
25efb8d4cfSChristian Sigg
26efb8d4cfSChristian Sigg; CHECK-LABEL: minimum_double
27efb8d4cfSChristian Siggdefine double @minimum_double(double %a) #0 {
28f7da4a5dSChristian Sigg  ; CHECK: setp
29f7da4a5dSChristian Sigg  ; CHECK: selp.f64
30efb8d4cfSChristian Sigg  %p = fcmp ult double %a, 0.0
31efb8d4cfSChristian Sigg  %x = select i1 %p, double %a, double 0.0
32efb8d4cfSChristian Sigg  ret double %x
33efb8d4cfSChristian Sigg}
34efb8d4cfSChristian Sigg
35efb8d4cfSChristian Sigg; CHECK-LABEL: minimum_v2half
36dc441d77SChristian Siggdefine <2 x half> @minimum_v2half(<2 x half> %a) #0 {
37fb3e3ef6SSanjay Patel  ; CHECK-DAG: setp
38fb3e3ef6SSanjay Patel  ; CHECK-DAG: selp.b16
39fb3e3ef6SSanjay Patel  ; CHECK-DAG: selp.b16
40efb8d4cfSChristian Sigg  %p = fcmp ult <2 x half> %a, zeroinitializer
41efb8d4cfSChristian Sigg  %x = select <2 x i1> %p, <2 x half> %a, <2 x half> zeroinitializer
42efb8d4cfSChristian Sigg  ret <2 x half> %x
43efb8d4cfSChristian Sigg}
44efb8d4cfSChristian Sigg
45efb8d4cfSChristian Sigg; ---- maximum ----
46efb8d4cfSChristian Sigg
47efb8d4cfSChristian Sigg; CHECK-LABEL: maximum_half
48efb8d4cfSChristian Siggdefine half @maximum_half(half %a) #0 {
49fb3e3ef6SSanjay Patel  ; CHECK: setp
50fb3e3ef6SSanjay Patel  ; CHECK: selp.b16
51efb8d4cfSChristian Sigg  %p = fcmp ugt half %a, 0.0
52efb8d4cfSChristian Sigg  %x = select i1 %p, half %a, half 0.0
53efb8d4cfSChristian Sigg  ret half %x
54efb8d4cfSChristian Sigg}
55efb8d4cfSChristian Sigg
56efb8d4cfSChristian Sigg; CHECK-LABEL: maximum_float
57efb8d4cfSChristian Siggdefine float @maximum_float(float %a) #0 {
58fb3e3ef6SSanjay Patel  ; CHECK: setp
59fb3e3ef6SSanjay Patel  ; CHECK: selp.f32
60efb8d4cfSChristian Sigg  %p = fcmp ugt float %a, 0.0
61efb8d4cfSChristian Sigg  %x = select i1 %p, float %a, float 0.0
62efb8d4cfSChristian Sigg  ret float %x
63efb8d4cfSChristian Sigg}
64efb8d4cfSChristian Sigg
65efb8d4cfSChristian Sigg; CHECK-LABEL: maximum_double
66efb8d4cfSChristian Siggdefine double @maximum_double(double %a) #0 {
67f7da4a5dSChristian Sigg  ; CHECK: setp
68f7da4a5dSChristian Sigg  ; CHECK: selp.f64
69efb8d4cfSChristian Sigg  %p = fcmp ugt double %a, 0.0
70efb8d4cfSChristian Sigg  %x = select i1 %p, double %a, double 0.0
71efb8d4cfSChristian Sigg  ret double %x
72efb8d4cfSChristian Sigg}
73efb8d4cfSChristian Sigg
74efb8d4cfSChristian Sigg; CHECK-LABEL: maximum_v2half
75dc441d77SChristian Siggdefine <2 x half> @maximum_v2half(<2 x half> %a) #0 {
76fb3e3ef6SSanjay Patel  ; CHECK-DAG: setp
77fb3e3ef6SSanjay Patel  ; CHECK-DAG: selp.b16
78fb3e3ef6SSanjay Patel  ; CHECK-DAG: selp.b16
79efb8d4cfSChristian Sigg  %p = fcmp ugt <2 x half> %a, zeroinitializer
80efb8d4cfSChristian Sigg  %x = select <2 x i1> %p, <2 x half> %a, <2 x half> zeroinitializer
81efb8d4cfSChristian Sigg  ret <2 x half> %x
82efb8d4cfSChristian Sigg}
83