1; RUN: llc < %s -march=nvptx | FileCheck %s --check-prefixes=CHECK,CHECK-NONAN 2; RUN: llc < %s -march=nvptx -mcpu=sm_80 | FileCheck %s --check-prefixes=CHECK,CHECK-NAN 3 4; ---- minimum ---- 5 6; CHECK-LABEL: minimum_half 7define half @minimum_half(half %a) #0 { 8 ; CHECK-NONAN: setp 9 ; CHECK-NONAN: selp.b16 10 ; CHECK-NAN: min.NaN.f16 11 %p = fcmp ult half %a, 0.0 12 %x = select i1 %p, half %a, half 0.0 13 ret half %x 14} 15 16; CHECK-LABEL: minimum_float 17define float @minimum_float(float %a) #0 { 18 ; CHECK-NONAN: setp 19 ; CHECK-NONAN: selp.f32 20 ; CHECK-NAN: min.NaN.f32 21 %p = fcmp ult float %a, 0.0 22 %x = select i1 %p, float %a, float 0.0 23 ret float %x 24} 25 26; CHECK-LABEL: minimum_double 27define double @minimum_double(double %a) #0 { 28 ; CHECK-NONAN: setp 29 ; CHECK-NONAN: selp.f64 30 ; CHECK-NAN: min.NaN.f64 31 %p = fcmp ult double %a, 0.0 32 %x = select i1 %p, double %a, double 0.0 33 ret double %x 34} 35 36; CHECK-LABEL: minimum_v2half 37define <2 x half> @minimum_v2half(<2 x half> %a, <2 x half> %b) #0 { 38 ; CHECK-NONAN-DAG: setp 39 ; CHECK-NONAN-DAG: setp 40 ; CHECK-NONAN-DAG: selp.b16 41 ; CHECK-NONAN-DAG: selp.b16 42 ; CHECK-NAN: min.NaN.f16x2 43 %p = fcmp ult <2 x half> %a, zeroinitializer 44 %x = select <2 x i1> %p, <2 x half> %a, <2 x half> zeroinitializer 45 ret <2 x half> %x 46} 47 48; ---- maximum ---- 49 50; CHECK-LABEL: maximum_half 51define half @maximum_half(half %a) #0 { 52 ; CHECK-NONAN: setp 53 ; CHECK-NONAN: selp.b16 54 ; CHECK-NAN: max.NaN.f16 55 %p = fcmp ugt half %a, 0.0 56 %x = select i1 %p, half %a, half 0.0 57 ret half %x 58} 59 60; CHECK-LABEL: maximum_float 61define float @maximum_float(float %a) #0 { 62 ; CHECK-NONAN: setp 63 ; CHECK-NONAN: selp.f32 64 ; CHECK-NAN: max.NaN.f32 65 %p = fcmp ugt float %a, 0.0 66 %x = select i1 %p, float %a, float 0.0 67 ret float %x 68} 69 70; CHECK-LABEL: maximum_double 71define double @maximum_double(double %a) #0 { 72 ; CHECK-NONAN: setp 73 ; CHECK-NONAN: selp.f64 74 ; CHECK-NAN: max.NaN.f64 75 %p = fcmp ugt double %a, 0.0 76 %x = select i1 %p, double %a, double 0.0 77 ret double %x 78} 79 80; CHECK-LABEL: maximum_v2half 81define <2 x half> @maximum_v2half(<2 x half> %a, <2 x half> %b) #0 { 82 ; CHECK-NONAN-DAG: setp 83 ; CHECK-NONAN-DAG: setp 84 ; CHECK-NONAN-DAG: selp.b16 85 ; CHECK-NONAN-DAG: selp.b16 86 ; CHECK-NAN: max.NaN.f16x2 87 %p = fcmp ugt <2 x half> %a, zeroinitializer 88 %x = select <2 x i1> %p, <2 x half> %a, <2 x half> zeroinitializer 89 ret <2 x half> %x 90} 91 92attributes #0 = { "no-signed-zeros-fp-math"="true" } 93