1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=nvptx -mcpu=sm_20 | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -march=nvptx64 -mcpu=sm_20 | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i16 @cvt_i16_f32(float %x) { 6*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rzi.u16.f32 %rs{{[0-9]+}}, %f{{[0-9]+}}; 7*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 8*9880d681SAndroid Build Coastguard Worker %a = fptoui float %x to i16 9*9880d681SAndroid Build Coastguard Worker ret i16 %a 10*9880d681SAndroid Build Coastguard Worker} 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerdefine i16 @cvt_i16_f64(double %x) { 13*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rzi.u16.f64 %rs{{[0-9]+}}, %fd{{[0-9]+}}; 14*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 15*9880d681SAndroid Build Coastguard Worker %a = fptoui double %x to i16 16*9880d681SAndroid Build Coastguard Worker ret i16 %a 17*9880d681SAndroid Build Coastguard Worker} 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerdefine i32 @cvt_i32_f32(float %x) { 20*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rzi.u32.f32 %r{{[0-9]+}}, %f{{[0-9]+}}; 21*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 22*9880d681SAndroid Build Coastguard Worker %a = fptoui float %x to i32 23*9880d681SAndroid Build Coastguard Worker ret i32 %a 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerdefine i32 @cvt_i32_f64(double %x) { 27*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rzi.u32.f64 %r{{[0-9]+}}, %fd{{[0-9]+}}; 28*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 29*9880d681SAndroid Build Coastguard Worker %a = fptoui double %x to i32 30*9880d681SAndroid Build Coastguard Worker ret i32 %a 31*9880d681SAndroid Build Coastguard Worker} 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Workerdefine i64 @cvt_i64_f32(float %x) { 35*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rzi.u64.f32 %rd{{[0-9]+}}, %f{{[0-9]+}}; 36*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 37*9880d681SAndroid Build Coastguard Worker %a = fptoui float %x to i64 38*9880d681SAndroid Build Coastguard Worker ret i64 %a 39*9880d681SAndroid Build Coastguard Worker} 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerdefine i64 @cvt_i64_f64(double %x) { 42*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rzi.u64.f64 %rd{{[0-9]+}}, %fd{{[0-9]+}}; 43*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 44*9880d681SAndroid Build Coastguard Worker %a = fptoui double %x to i64 45*9880d681SAndroid Build Coastguard Worker ret i64 %a 46*9880d681SAndroid Build Coastguard Worker} 47*9880d681SAndroid Build Coastguard Worker 48*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_i16(i16 %x) { 49*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.u16 %f{{[0-9]+}}, %rs{{[0-9]+}}; 50*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 51*9880d681SAndroid Build Coastguard Worker %a = uitofp i16 %x to float 52*9880d681SAndroid Build Coastguard Worker ret float %a 53*9880d681SAndroid Build Coastguard Worker} 54*9880d681SAndroid Build Coastguard Worker 55*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_i32(i32 %x) { 56*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.u32 %f{{[0-9]+}}, %r{{[0-9]+}}; 57*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 58*9880d681SAndroid Build Coastguard Worker %a = uitofp i32 %x to float 59*9880d681SAndroid Build Coastguard Worker ret float %a 60*9880d681SAndroid Build Coastguard Worker} 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_i64(i64 %x) { 63*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.u64 %f{{[0-9]+}}, %rd{{[0-9]+}}; 64*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 65*9880d681SAndroid Build Coastguard Worker %a = uitofp i64 %x to float 66*9880d681SAndroid Build Coastguard Worker ret float %a 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_f64(double %x) { 70*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.f64 %f{{[0-9]+}}, %fd{{[0-9]+}}; 71*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 72*9880d681SAndroid Build Coastguard Worker %a = fptrunc double %x to float 73*9880d681SAndroid Build Coastguard Worker ret float %a 74*9880d681SAndroid Build Coastguard Worker} 75*9880d681SAndroid Build Coastguard Worker 76*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_s16(i16 %x) { 77*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.s16 %f{{[0-9]+}}, %rs{{[0-9]+}} 78*9880d681SAndroid Build Coastguard Worker; CHECK: ret 79*9880d681SAndroid Build Coastguard Worker %a = sitofp i16 %x to float 80*9880d681SAndroid Build Coastguard Worker ret float %a 81*9880d681SAndroid Build Coastguard Worker} 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_s32(i32 %x) { 84*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.s32 %f{{[0-9]+}}, %r{{[0-9]+}} 85*9880d681SAndroid Build Coastguard Worker; CHECK: ret 86*9880d681SAndroid Build Coastguard Worker %a = sitofp i32 %x to float 87*9880d681SAndroid Build Coastguard Worker ret float %a 88*9880d681SAndroid Build Coastguard Worker} 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine float @cvt_f32_s64(i64 %x) { 91*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f32.s64 %f{{[0-9]+}}, %rd{{[0-9]+}} 92*9880d681SAndroid Build Coastguard Worker; CHECK: ret 93*9880d681SAndroid Build Coastguard Worker %a = sitofp i64 %x to float 94*9880d681SAndroid Build Coastguard Worker ret float %a 95*9880d681SAndroid Build Coastguard Worker} 96*9880d681SAndroid Build Coastguard Worker 97*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_i16(i16 %x) { 98*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f64.u16 %fd{{[0-9]+}}, %rs{{[0-9]+}}; 99*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 100*9880d681SAndroid Build Coastguard Worker %a = uitofp i16 %x to double 101*9880d681SAndroid Build Coastguard Worker ret double %a 102*9880d681SAndroid Build Coastguard Worker} 103*9880d681SAndroid Build Coastguard Worker 104*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_i32(i32 %x) { 105*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f64.u32 %fd{{[0-9]+}}, %r{{[0-9]+}}; 106*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 107*9880d681SAndroid Build Coastguard Worker %a = uitofp i32 %x to double 108*9880d681SAndroid Build Coastguard Worker ret double %a 109*9880d681SAndroid Build Coastguard Worker} 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_i64(i64 %x) { 112*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f64.u64 %fd{{[0-9]+}}, %rd{{[0-9]+}}; 113*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 114*9880d681SAndroid Build Coastguard Worker %a = uitofp i64 %x to double 115*9880d681SAndroid Build Coastguard Worker ret double %a 116*9880d681SAndroid Build Coastguard Worker} 117*9880d681SAndroid Build Coastguard Worker 118*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_f32(float %x) { 119*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.f64.f32 %fd{{[0-9]+}}, %f{{[0-9]+}}; 120*9880d681SAndroid Build Coastguard Worker; CHECK: ret; 121*9880d681SAndroid Build Coastguard Worker %a = fpext float %x to double 122*9880d681SAndroid Build Coastguard Worker ret double %a 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_s16(i16 %x) { 126*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f64.s16 %fd{{[0-9]+}}, %rs{{[0-9]+}} 127*9880d681SAndroid Build Coastguard Worker; CHECK: ret 128*9880d681SAndroid Build Coastguard Worker %a = sitofp i16 %x to double 129*9880d681SAndroid Build Coastguard Worker ret double %a 130*9880d681SAndroid Build Coastguard Worker} 131*9880d681SAndroid Build Coastguard Worker 132*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_s32(i32 %x) { 133*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f64.s32 %fd{{[0-9]+}}, %r{{[0-9]+}} 134*9880d681SAndroid Build Coastguard Worker; CHECK: ret 135*9880d681SAndroid Build Coastguard Worker %a = sitofp i32 %x to double 136*9880d681SAndroid Build Coastguard Worker ret double %a 137*9880d681SAndroid Build Coastguard Worker} 138*9880d681SAndroid Build Coastguard Worker 139*9880d681SAndroid Build Coastguard Workerdefine double @cvt_f64_s64(i64 %x) { 140*9880d681SAndroid Build Coastguard Worker; CHECK: cvt.rn.f64.s64 %fd{{[0-9]+}}, %rd{{[0-9]+}} 141*9880d681SAndroid Build Coastguard Worker; CHECK: ret 142*9880d681SAndroid Build Coastguard Worker %a = sitofp i64 %x to double 143*9880d681SAndroid Build Coastguard Worker ret double %a 144*9880d681SAndroid Build Coastguard Worker} 145