1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=i386-pc-linux < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-pc-linux < %s | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker; Function Attrs: nounwind 5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: s64_to_d: 6*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatdidf 7*9880d681SAndroid Build Coastguard Workerdefine double @s64_to_d(i64 %n) #0 { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %conv = sitofp i64 %n to double 10*9880d681SAndroid Build Coastguard Worker ret double %conv 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: s64_to_f: 14*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatdisf 15*9880d681SAndroid Build Coastguard Workerdefine float @s64_to_f(i64 %n) #0 { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker %conv = sitofp i64 %n to float 18*9880d681SAndroid Build Coastguard Worker ret float %conv 19*9880d681SAndroid Build Coastguard Worker} 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: s32_to_d: 22*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatsidf 23*9880d681SAndroid Build Coastguard Workerdefine double @s32_to_d(i32 %n) #0 { 24*9880d681SAndroid Build Coastguard Workerentry: 25*9880d681SAndroid Build Coastguard Worker %conv = sitofp i32 %n to double 26*9880d681SAndroid Build Coastguard Worker ret double %conv 27*9880d681SAndroid Build Coastguard Worker} 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: s32_to_f: 30*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatsisf 31*9880d681SAndroid Build Coastguard Workerdefine float @s32_to_f(i32 %n) #0 { 32*9880d681SAndroid Build Coastguard Workerentry: 33*9880d681SAndroid Build Coastguard Worker %conv = sitofp i32 %n to float 34*9880d681SAndroid Build Coastguard Worker ret float %conv 35*9880d681SAndroid Build Coastguard Worker} 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: u64_to_d: 38*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatundidf 39*9880d681SAndroid Build Coastguard Workerdefine double @u64_to_d(i64 %n) #0 { 40*9880d681SAndroid Build Coastguard Workerentry: 41*9880d681SAndroid Build Coastguard Worker %conv = uitofp i64 %n to double 42*9880d681SAndroid Build Coastguard Worker ret double %conv 43*9880d681SAndroid Build Coastguard Worker} 44*9880d681SAndroid Build Coastguard Worker 45*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: u64_to_f: 46*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatundisf 47*9880d681SAndroid Build Coastguard Workerdefine float @u64_to_f(i64 %n) #0 { 48*9880d681SAndroid Build Coastguard Workerentry: 49*9880d681SAndroid Build Coastguard Worker %conv = uitofp i64 %n to float 50*9880d681SAndroid Build Coastguard Worker ret float %conv 51*9880d681SAndroid Build Coastguard Worker} 52*9880d681SAndroid Build Coastguard Worker 53*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: u32_to_d: 54*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatunsidf 55*9880d681SAndroid Build Coastguard Workerdefine double @u32_to_d(i32 %n) #0 { 56*9880d681SAndroid Build Coastguard Workerentry: 57*9880d681SAndroid Build Coastguard Worker %conv = uitofp i32 %n to double 58*9880d681SAndroid Build Coastguard Worker ret double %conv 59*9880d681SAndroid Build Coastguard Worker} 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: u32_to_f: 62*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __floatunsisf 63*9880d681SAndroid Build Coastguard Workerdefine float @u32_to_f(i32 %n) #0 { 64*9880d681SAndroid Build Coastguard Workerentry: 65*9880d681SAndroid Build Coastguard Worker %conv = uitofp i32 %n to float 66*9880d681SAndroid Build Coastguard Worker ret float %conv 67*9880d681SAndroid Build Coastguard Worker} 68*9880d681SAndroid Build Coastguard Worker 69*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: d_to_s64: 70*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixdfdi 71*9880d681SAndroid Build Coastguard Workerdefine i64 @d_to_s64(double %n) #0 { 72*9880d681SAndroid Build Coastguard Workerentry: 73*9880d681SAndroid Build Coastguard Worker %conv = fptosi double %n to i64 74*9880d681SAndroid Build Coastguard Worker ret i64 %conv 75*9880d681SAndroid Build Coastguard Worker} 76*9880d681SAndroid Build Coastguard Worker 77*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: d_to_s32: 78*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixdfsi 79*9880d681SAndroid Build Coastguard Workerdefine i32 @d_to_s32(double %n) #0 { 80*9880d681SAndroid Build Coastguard Workerentry: 81*9880d681SAndroid Build Coastguard Worker %conv = fptosi double %n to i32 82*9880d681SAndroid Build Coastguard Worker ret i32 %conv 83*9880d681SAndroid Build Coastguard Worker} 84*9880d681SAndroid Build Coastguard Worker 85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_s64: 86*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixsfdi 87*9880d681SAndroid Build Coastguard Workerdefine i64 @f_to_s64(float %n) #0 { 88*9880d681SAndroid Build Coastguard Workerentry: 89*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %n to i64 90*9880d681SAndroid Build Coastguard Worker ret i64 %conv 91*9880d681SAndroid Build Coastguard Worker} 92*9880d681SAndroid Build Coastguard Worker 93*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_s32: 94*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixsfsi 95*9880d681SAndroid Build Coastguard Workerdefine i32 @f_to_s32(float %n) #0 { 96*9880d681SAndroid Build Coastguard Workerentry: 97*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %n to i32 98*9880d681SAndroid Build Coastguard Worker ret i32 %conv 99*9880d681SAndroid Build Coastguard Worker} 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: d_to_u64: 102*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixunsdfdi 103*9880d681SAndroid Build Coastguard Workerdefine i64 @d_to_u64(double %n) #0 { 104*9880d681SAndroid Build Coastguard Workerentry: 105*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %n to i64 106*9880d681SAndroid Build Coastguard Worker ret i64 %conv 107*9880d681SAndroid Build Coastguard Worker} 108*9880d681SAndroid Build Coastguard Worker 109*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: d_to_u32: 110*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixunsdfsi 111*9880d681SAndroid Build Coastguard Workerdefine i32 @d_to_u32(double %n) #0 { 112*9880d681SAndroid Build Coastguard Workerentry: 113*9880d681SAndroid Build Coastguard Worker %conv = fptoui double %n to i32 114*9880d681SAndroid Build Coastguard Worker ret i32 %conv 115*9880d681SAndroid Build Coastguard Worker} 116*9880d681SAndroid Build Coastguard Worker 117*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_u64: 118*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixunssfdi 119*9880d681SAndroid Build Coastguard Workerdefine i64 @f_to_u64(float %n) #0 { 120*9880d681SAndroid Build Coastguard Workerentry: 121*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %n to i64 122*9880d681SAndroid Build Coastguard Worker ret i64 %conv 123*9880d681SAndroid Build Coastguard Worker} 124*9880d681SAndroid Build Coastguard Worker 125*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_u32: 126*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixunssfsi 127*9880d681SAndroid Build Coastguard Workerdefine i32 @f_to_u32(float %n) #0 { 128*9880d681SAndroid Build Coastguard Workerentry: 129*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %n to i32 130*9880d681SAndroid Build Coastguard Worker ret i32 %conv 131*9880d681SAndroid Build Coastguard Worker} 132*9880d681SAndroid Build Coastguard Worker 133*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_s8: 134*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixsfsi 135*9880d681SAndroid Build Coastguard Workerdefine i8 @f_to_s8(float %f, i8 %i) #0 { 136*9880d681SAndroid Build Coastguard Workerentry: 137*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %f to i8 138*9880d681SAndroid Build Coastguard Worker %add = add i8 %conv, %i 139*9880d681SAndroid Build Coastguard Worker ret i8 %add 140*9880d681SAndroid Build Coastguard Worker} 141*9880d681SAndroid Build Coastguard Worker 142*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_u8: 143*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixunssfsi 144*9880d681SAndroid Build Coastguard Workerdefine i8 @f_to_u8(float %f, i8 %i) #0 { 145*9880d681SAndroid Build Coastguard Workerentry: 146*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %f to i8 147*9880d681SAndroid Build Coastguard Worker %add = add i8 %conv, %i 148*9880d681SAndroid Build Coastguard Worker ret i8 %add 149*9880d681SAndroid Build Coastguard Worker} 150*9880d681SAndroid Build Coastguard Worker 151*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_s16: 152*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixsfsi 153*9880d681SAndroid Build Coastguard Workerdefine i16 @f_to_s16(float %f, i16 %i) #0 { 154*9880d681SAndroid Build Coastguard Workerentry: 155*9880d681SAndroid Build Coastguard Worker %conv = fptosi float %f to i16 156*9880d681SAndroid Build Coastguard Worker %add = add i16 %conv, %i 157*9880d681SAndroid Build Coastguard Worker ret i16 %add 158*9880d681SAndroid Build Coastguard Worker} 159*9880d681SAndroid Build Coastguard Worker 160*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: f_to_u16: 161*9880d681SAndroid Build Coastguard Worker; CHECK: call{{l|q}} __fixunssfsi 162*9880d681SAndroid Build Coastguard Workerdefine i16 @f_to_u16(float %f, i16 %i) #0 { 163*9880d681SAndroid Build Coastguard Workerentry: 164*9880d681SAndroid Build Coastguard Worker %conv = fptoui float %f to i16 165*9880d681SAndroid Build Coastguard Worker %add = add i16 %conv, %i 166*9880d681SAndroid Build Coastguard Worker ret i16 %add 167*9880d681SAndroid Build Coastguard Worker} 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "use-soft-float"="true" } 170