const std::map<std::string, std::string> IntrinsicToLibdeviceFunc = {
{"llvm.exp.f64", "exp"},
{"llvm.exp.f32", "expf"},
- {"llvm.powi.f64", "powi"},
- {"llvm.powi.f32", "powif"}};
+ {"llvm.powi.f64.i32", "powi"},
+ {"llvm.powi.f32.i32", "powif"}};
/// Return the corresponding CUDA libdevice function name @p Name.
/// Note that this function will try to convert instrinsics in the list
%expf = tail call float @expf(float %A.arr.i.val)
%cosf = tail call float @cosf(float %expf)
%logf = tail call float @logf(float %cosf)
- %powi = tail call float @llvm.powi.f32(float %logf, i32 2)
+ %powi = tail call float @llvm.powi.f32.i32(float %logf, i32 2)
%exp = tail call float @llvm.exp.f32(float %powi)
%B.arr.i = getelementptr inbounds float, float* %B, i64 %indvars.iv
store float %exp, float* %B.arr.i, align 4
declare float @expf(float) #0
declare float @cosf(float) #0
declare float @logf(float) #0
-declare float @llvm.powi.f32(float, i32) #0
+declare float @llvm.powi.f32.i32(float, i32) #0
declare float @llvm.exp.f32(float) #0
attributes #0 = { nounwind readnone }