1; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s 2; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %} 3 4; CHECK-LABEL: foo 5; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1; 6; CHECK: selp.u32 %[[R:r[0-9]+]], 1, 0, %[[P]]; 7; CHECK: cvt.rn.f32.u32 %f{{.*}}, %[[R]] 8define float @foo(i1 %a) { 9 %ret = uitofp i1 %a to float 10 ret float %ret 11} 12 13; CHECK-LABEL: foo2 14; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1; 15; CHECK: selp.s32 %[[R:r[0-9]+]], -1, 0, %[[P]]; 16; CHECK: cvt.rn.f32.s32 %f{{.*}}, %[[R]] 17define float @foo2(i1 %a) { 18 %ret = sitofp i1 %a to float 19 ret float %ret 20} 21 22; CHECK-LABEL: foo3 23; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1; 24; CHECK: selp.u32 %[[R:r[0-9]+]], 1, 0, %[[P]]; 25; CHECK: cvt.rn.f64.u32 %fd{{.*}}, %[[R]] 26define double @foo3(i1 %a) { 27 %ret = uitofp i1 %a to double 28 ret double %ret 29} 30 31; CHECK-LABEL: foo4 32; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1; 33; CHECK: selp.s32 %[[R:r[0-9]+]], -1, 0, %[[P]]; 34; CHECK: cvt.rn.f64.s32 %fd{{.*}}, %[[R]] 35define double @foo4(i1 %a) { 36 %ret = sitofp i1 %a to double 37 ret double %ret 38} 39 40; CHECK-LABEL: foo5 41; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1; 42; CHECK: selp.u32 %[[R:r[0-9]+]], 1, 0, %[[P]]; 43; CHECK: cvt.rn.f16.u32 %{{.*}}, %[[R]] 44define half @foo5(i1 %a) { 45 %ret = uitofp i1 %a to half 46 ret half %ret 47} 48 49; CHECK-LABEL: foo6 50; CHECK: setp.eq.b16 %[[P:p[0-9]+]], %{{.*}}, 1; 51; CHECK: selp.s32 %[[R:r[0-9]+]], -1, 0, %[[P]]; 52; CHECK: cvt.rn.f16.s32 %{{.*}}, %[[R]] 53define half @foo6(i1 %a) { 54 %ret = sitofp i1 %a to half 55 ret half %ret 56} 57