|  | ; RUN: llc < %s -mtriple=nvptx64 -mcpu=sm_20 | FileCheck %s | 
|  | ; RUN: %if ptxas %{ llc < %s -mtriple=nvptx64 -mcpu=sm_20 | %ptxas-verify %} | 
|  |  | 
|  | ; CHECK-LABEL: foo | 
|  | ; CHECK: setp.ne.b16 %[[P:p[0-9]+]], %{{.*}}, 0; | 
|  | ; CHECK: selp.b32 %[[R:r[0-9]+]], 1, 0, %[[P]]; | 
|  | ; CHECK: cvt.rn.f32.u32 %r{{.*}}, %[[R]] | 
|  | define float @foo(i1 %a) { | 
|  | %ret = uitofp i1 %a to float | 
|  | ret float %ret | 
|  | } | 
|  |  | 
|  | ; CHECK-LABEL: foo2 | 
|  | ; CHECK: setp.ne.b16 %[[P:p[0-9]+]], %{{.*}}, 0; | 
|  | ; CHECK: selp.b32 %[[R:r[0-9]+]], -1, 0, %[[P]]; | 
|  | ; CHECK: cvt.rn.f32.s32 %r{{.*}}, %[[R]] | 
|  | define float @foo2(i1 %a) { | 
|  | %ret = sitofp i1 %a to float | 
|  | ret float %ret | 
|  | } | 
|  |  | 
|  | ; CHECK-LABEL: foo3 | 
|  | ; CHECK: setp.ne.b16 %[[P:p[0-9]+]], %{{.*}}, 0; | 
|  | ; CHECK: selp.b32 %[[R:r[0-9]+]], 1, 0, %[[P]]; | 
|  | ; CHECK: cvt.rn.f64.u32 %rd{{.*}}, %[[R]] | 
|  | define double @foo3(i1 %a) { | 
|  | %ret = uitofp i1 %a to double | 
|  | ret double %ret | 
|  | } | 
|  |  | 
|  | ; CHECK-LABEL: foo4 | 
|  | ; CHECK: setp.ne.b16 %[[P:p[0-9]+]], %{{.*}}, 0; | 
|  | ; CHECK: selp.b32 %[[R:r[0-9]+]], -1, 0, %[[P]]; | 
|  | ; CHECK: cvt.rn.f64.s32 %rd{{.*}}, %[[R]] | 
|  | define double @foo4(i1 %a) { | 
|  | %ret = sitofp i1 %a to double | 
|  | ret double %ret | 
|  | } | 
|  |  | 
|  | ; CHECK-LABEL: foo5 | 
|  | ; CHECK: setp.ne.b16 %[[P:p[0-9]+]], %{{.*}}, 0; | 
|  | ; CHECK: selp.b32 %[[R:r[0-9]+]], 1, 0, %[[P]]; | 
|  | ; CHECK: cvt.rn.f16.u32 %{{.*}}, %[[R]] | 
|  | define half @foo5(i1 %a) { | 
|  | %ret = uitofp i1 %a to half | 
|  | ret half %ret | 
|  | } | 
|  |  | 
|  | ; CHECK-LABEL: foo6 | 
|  | ; CHECK: setp.ne.b16 %[[P:p[0-9]+]], %{{.*}}, 0; | 
|  | ; CHECK: selp.b32 %[[R:r[0-9]+]], -1, 0, %[[P]]; | 
|  | ; CHECK: cvt.rn.f16.s32 %{{.*}}, %[[R]] | 
|  | define half @foo6(i1 %a) { | 
|  | %ret = sitofp i1 %a to half | 
|  | ret half %ret | 
|  | } |