1*39a0aa58SEli Friedman; RUN: llc -mtriple=armv7-linux < %s -o - | FileCheck -check-prefix=LINUX %s 2*39a0aa58SEli Friedman; RUN: llc -mtriple=thumbv7-windows-msvc -mattr=+thumb-mode < %s -o - | FileCheck -check-prefix=WINDOWS %s 3*39a0aa58SEli Friedman 4*39a0aa58SEli Friedmandefine double @testExp(double %val, i32 %a) { 5*39a0aa58SEli Friedman; LINUX: b ldexp{{$}} 6*39a0aa58SEli Friedman; WINDOWS: b.w ldexp{{$}} 7*39a0aa58SEli Friedmanentry: 8*39a0aa58SEli Friedman %call = tail call fast double @ldexp(double %val, i32 %a) 9*39a0aa58SEli Friedman ret double %call 10*39a0aa58SEli Friedman} 11*39a0aa58SEli Friedman 12*39a0aa58SEli Friedmandeclare double @ldexp(double, i32) memory(none) 13*39a0aa58SEli Friedman 14*39a0aa58SEli Friedmandefine double @testExpIntrinsic(double %val, i32 %a) { 15*39a0aa58SEli Friedman; LINUX: b ldexp{{$}} 16*39a0aa58SEli Friedman; WINDOWS: b.w ldexp{{$}} 17*39a0aa58SEli Friedmanentry: 18*39a0aa58SEli Friedman %call = tail call fast double @llvm.ldexp.f64(double %val, i32 %a) 19*39a0aa58SEli Friedman ret double %call 20*39a0aa58SEli Friedman} 21*39a0aa58SEli Friedman 22*39a0aa58SEli Friedmandefine float @testExpf(float %val, i32 %a) { 23*39a0aa58SEli Friedman; LINUX: b ldexpf 24*39a0aa58SEli Friedman; WINDOWS: b.w ldexpf 25*39a0aa58SEli Friedmanentry: 26*39a0aa58SEli Friedman %call = tail call fast float @ldexpf(float %val, i32 %a) 27*39a0aa58SEli Friedman ret float %call 28*39a0aa58SEli Friedman} 29*39a0aa58SEli Friedman 30*39a0aa58SEli Friedmandefine float @testExpfIntrinsic(float %val, i32 %a) { 31*39a0aa58SEli Friedman; LINUX: b ldexpf 32*39a0aa58SEli Friedman; WINDOWS: bl ldexp{{$}} 33*39a0aa58SEli Friedmanentry: 34*39a0aa58SEli Friedman %call = tail call fast float @llvm.ldexp.f32(float %val, i32 %a) 35*39a0aa58SEli Friedman ret float %call 36*39a0aa58SEli Friedman} 37*39a0aa58SEli Friedman 38*39a0aa58SEli Friedmandeclare float @ldexpf(float, i32) memory(none) 39*39a0aa58SEli Friedman 40*39a0aa58SEli Friedmandefine fp128 @testExpl(fp128 %val, i32 %a) { 41*39a0aa58SEli Friedman; LINUX: bl ldexpl 42*39a0aa58SEli Friedman; WINDOWS: b.w ldexpl 43*39a0aa58SEli Friedmanentry: 44*39a0aa58SEli Friedman %call = tail call fast fp128 @ldexpl(fp128 %val, i32 %a) 45*39a0aa58SEli Friedman ret fp128 %call 46*39a0aa58SEli Friedman} 47*39a0aa58SEli Friedman 48*39a0aa58SEli Friedmandeclare fp128 @ldexpl(fp128, i32) memory(none) 49*39a0aa58SEli Friedman 50*39a0aa58SEli Friedmandefine half @testExpf16(half %val, i32 %a) { 51*39a0aa58SEli Friedman; LINUX: bl ldexpf 52*39a0aa58SEli Friedman; WINDOWS: bl ldexp{{$}} 53*39a0aa58SEli Friedmanentry: 54*39a0aa58SEli Friedman %0 = tail call fast half @llvm.ldexp.f16.i32(half %val, i32 %a) 55*39a0aa58SEli Friedman ret half %0 56*39a0aa58SEli Friedman} 57*39a0aa58SEli Friedman 58*39a0aa58SEli Friedmandeclare half @llvm.ldexp.f16.i32(half, i32) memory(none) 59