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