This adds CIR handling for the __builtin_flt_rounds and __builtin_set_flt_rounds builtin functions. Because the LLVM dialect does not have dedicated operations for these, I have chosen not to implement them as operations in CIR either. Instead, we just call the LLVM intrinsic.
2239 lines
63 KiB
C
2239 lines
63 KiB
C
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-cir %s -o %t.cir
|
|
// RUN: FileCheck --input-file=%t.cir %s --check-prefix=CIR
|
|
// RUN: %clang_cc1 -triple aarch64-apple-darwin-macho -fclangir -emit-cir %s -o %t-aarch64.cir
|
|
// RUN: FileCheck --input-file=%t-aarch64.cir %s --check-prefix=AARCH64
|
|
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm -o %t.ll %s
|
|
// RUN: FileCheck --input-file=%t.ll %s --check-prefix=LLVM
|
|
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm -o %t-ogcg.ll %s
|
|
// RUN: FileCheck --input-file=%t-ogcg.ll %s --check-prefix=OGCG
|
|
|
|
// lround
|
|
|
|
long my_lroundf(float f) {
|
|
return __builtin_lroundf(f);
|
|
// CIR: cir.func no_inline dso_local @my_lroundf
|
|
// CIR: cir.lround %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_lroundf
|
|
// LLVM: call i64 @llvm.lround.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_lroundf(
|
|
// OGCG: call i64 @llvm.lround.i64.f32(
|
|
}
|
|
|
|
long my_lround(double f) {
|
|
return __builtin_lround(f);
|
|
// CIR: cir.func no_inline dso_local @my_lround
|
|
// CIR: cir.lround %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_lround
|
|
// LLVM: call i64 @llvm.lround.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_lround(
|
|
// OGCG: call i64 @llvm.lround.i64.f64(
|
|
}
|
|
|
|
long my_lroundl(long double f) {
|
|
return __builtin_lroundl(f);
|
|
// CIR: cir.func no_inline dso_local @my_lroundl
|
|
// CIR: cir.lround %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.lround %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_lroundl
|
|
// LLVM: call i64 @llvm.lround.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_lroundl(
|
|
// OGCG: call i64 @llvm.lround.i64.f80(
|
|
}
|
|
|
|
long lroundf(float);
|
|
long lround(double);
|
|
long lroundl(long double);
|
|
|
|
long call_lroundf(float f) {
|
|
return lroundf(f);
|
|
// CIR: cir.func no_inline dso_local @call_lroundf
|
|
// CIR: cir.lround %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_lroundf
|
|
// LLVM: call i64 @llvm.lround.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_lroundf(
|
|
// OGCG: call i64 @llvm.lround.i64.f32(
|
|
}
|
|
|
|
long call_lround(double f) {
|
|
return lround(f);
|
|
// CIR: cir.func no_inline dso_local @call_lround
|
|
// CIR: cir.lround %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_lround
|
|
// LLVM: call i64 @llvm.lround.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_lround(
|
|
// OGCG: call i64 @llvm.lround.i64.f64(
|
|
}
|
|
|
|
long call_lroundl(long double f) {
|
|
return lroundl(f);
|
|
// CIR: cir.func no_inline dso_local @call_lroundl
|
|
// CIR: cir.lround %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.lround %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_lroundl
|
|
// LLVM: call i64 @llvm.lround.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_lroundl(
|
|
// OGCG: call i64 @llvm.lround.i64.f80(
|
|
}
|
|
|
|
// llround
|
|
|
|
long long my_llroundf(float f) {
|
|
return __builtin_llroundf(f);
|
|
// CIR: cir.func no_inline dso_local @my_llroundf
|
|
// CIR: cir.llround %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_llroundf
|
|
// LLVM: call i64 @llvm.llround.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_llroundf(
|
|
// OGCG: call i64 @llvm.llround.i64.f32(
|
|
}
|
|
|
|
long long my_llround(double f) {
|
|
return __builtin_llround(f);
|
|
// CIR: cir.func no_inline dso_local @my_llround
|
|
// CIR: cir.llround %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_llround
|
|
// LLVM: call i64 @llvm.llround.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_llround(
|
|
// OGCG: call i64 @llvm.llround.i64.f64(
|
|
}
|
|
|
|
long long my_llroundl(long double f) {
|
|
return __builtin_llroundl(f);
|
|
// CIR: cir.func no_inline dso_local @my_llroundl
|
|
// CIR: cir.llround %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.llround %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_llroundl
|
|
// LLVM: call i64 @llvm.llround.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_llroundl(
|
|
// OGCG: call i64 @llvm.llround.i64.f80(
|
|
}
|
|
|
|
long long llroundf(float);
|
|
long long llround(double);
|
|
long long llroundl(long double);
|
|
|
|
long long call_llroundf(float f) {
|
|
return llroundf(f);
|
|
// CIR: cir.func no_inline dso_local @call_llroundf
|
|
// CIR: cir.llround %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_llroundf
|
|
// LLVM: call i64 @llvm.llround.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_llroundf(
|
|
// OGCG: call i64 @llvm.llround.i64.f32(
|
|
}
|
|
|
|
long long call_llround(double f) {
|
|
return llround(f);
|
|
// CIR: cir.func no_inline dso_local @call_llround
|
|
// CIR: cir.llround %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_llround
|
|
// LLVM: call i64 @llvm.llround.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_llround(
|
|
// OGCG: call i64 @llvm.llround.i64.f64(
|
|
}
|
|
|
|
long long call_llroundl(long double f) {
|
|
return llroundl(f);
|
|
// CIR: cir.func no_inline dso_local @call_llroundl
|
|
// CIR: cir.llround %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.llround %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_llroundl
|
|
// LLVM: call i64 @llvm.llround.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_llroundl(
|
|
// OGCG: call i64 @llvm.llround.i64.f80(
|
|
}
|
|
|
|
// lrint
|
|
|
|
long my_lrintf(float f) {
|
|
return __builtin_lrintf(f);
|
|
// CIR: cir.func no_inline dso_local @my_lrintf
|
|
// CIR: cir.lrint %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_lrintf
|
|
// LLVM: call i64 @llvm.lrint.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_lrintf(
|
|
// OGCG: call i64 @llvm.lrint.i64.f32(
|
|
}
|
|
|
|
long my_lrint(double f) {
|
|
return __builtin_lrint(f);
|
|
// CIR: cir.func no_inline dso_local @my_lrint
|
|
// CIR: cir.lrint %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_lrint
|
|
// LLVM: call i64 @llvm.lrint.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_lrint(
|
|
// OGCG: call i64 @llvm.lrint.i64.f64(
|
|
}
|
|
|
|
long my_lrintl(long double f) {
|
|
return __builtin_lrintl(f);
|
|
// CIR: cir.func no_inline dso_local @my_lrintl
|
|
// CIR: cir.lrint %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.lrint %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_lrintl
|
|
// LLVM: call i64 @llvm.lrint.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_lrintl(
|
|
// OGCG: call i64 @llvm.lrint.i64.f80(
|
|
}
|
|
|
|
long lrintf(float);
|
|
long lrint(double);
|
|
long lrintl(long double);
|
|
|
|
long call_lrintf(float f) {
|
|
return lrintf(f);
|
|
// CIR: cir.func no_inline dso_local @call_lrintf
|
|
// CIR: cir.lrint %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_lrintf
|
|
// LLVM: call i64 @llvm.lrint.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_lrintf(
|
|
// OGCG: call i64 @llvm.lrint.i64.f32(
|
|
}
|
|
|
|
long call_lrint(double f) {
|
|
return lrint(f);
|
|
// CIR: cir.func no_inline dso_local @call_lrint
|
|
// CIR: cir.lrint %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_lrint
|
|
// LLVM: call i64 @llvm.lrint.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_lrint(
|
|
// OGCG: call i64 @llvm.lrint.i64.f64(
|
|
}
|
|
|
|
long call_lrintl(long double f) {
|
|
return lrintl(f);
|
|
// CIR: cir.func no_inline dso_local @call_lrintl
|
|
// CIR: cir.lrint %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.lrint %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_lrintl
|
|
// LLVM: call i64 @llvm.lrint.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_lrintl(
|
|
// OGCG: call i64 @llvm.lrint.i64.f80(
|
|
}
|
|
|
|
// llrint
|
|
|
|
long long my_llrintf(float f) {
|
|
return __builtin_llrintf(f);
|
|
// CIR: cir.func no_inline dso_local @my_llrintf
|
|
// CIR: cir.llrint %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_llrintf
|
|
// LLVM: call i64 @llvm.llrint.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_llrintf(
|
|
// OGCG: call i64 @llvm.llrint.i64.f32(
|
|
}
|
|
|
|
long long my_llrint(double f) {
|
|
return __builtin_llrint(f);
|
|
// CIR: cir.func no_inline dso_local @my_llrint
|
|
// CIR: cir.llrint %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_llrint
|
|
// LLVM: call i64 @llvm.llrint.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_llrint(
|
|
// OGCG: call i64 @llvm.llrint.i64.f64(
|
|
}
|
|
|
|
long long my_llrintl(long double f) {
|
|
return __builtin_llrintl(f);
|
|
// CIR: cir.func no_inline dso_local @my_llrintl
|
|
// CIR: cir.llrint %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.llrint %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @my_llrintl
|
|
// LLVM: call i64 @llvm.llrint.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_llrintl(
|
|
// OGCG: call i64 @llvm.llrint.i64.f80(
|
|
}
|
|
|
|
long long llrintf(float);
|
|
long long llrint(double);
|
|
long long llrintl(long double);
|
|
|
|
long long call_llrintf(float f) {
|
|
return llrintf(f);
|
|
// CIR: cir.func no_inline dso_local @call_llrintf
|
|
// CIR: cir.llrint %{{.+}} : !cir.float -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_llrintf
|
|
// LLVM: call i64 @llvm.llrint.i64.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_llrintf(
|
|
// OGCG: call i64 @llvm.llrint.i64.f32(
|
|
}
|
|
|
|
long long call_llrint(double f) {
|
|
return llrint(f);
|
|
// CIR: cir.func no_inline dso_local @call_llrint
|
|
// CIR: cir.llrint %{{.+}} : !cir.double -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_llrint
|
|
// LLVM: call i64 @llvm.llrint.i64.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_llrint(
|
|
// OGCG: call i64 @llvm.llrint.i64.f64(
|
|
}
|
|
|
|
long long call_llrintl(long double f) {
|
|
return llrintl(f);
|
|
// CIR: cir.func no_inline dso_local @call_llrintl
|
|
// CIR: cir.llrint %{{.+}} : !cir.long_double<!cir.f80> -> !s64i
|
|
// AARCH64: cir.llrint %{{.+}} : !cir.long_double<!cir.double> -> !s64i
|
|
|
|
// LLVM: define dso_local i64 @call_llrintl
|
|
// LLVM: call i64 @llvm.llrint.i64.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_llrintl(
|
|
// OGCG: call i64 @llvm.llrint.i64.f80(
|
|
}
|
|
|
|
// ceil
|
|
|
|
float my_ceilf(float f) {
|
|
return __builtin_ceilf(f);
|
|
// CIR: cir.func no_inline dso_local @my_ceilf
|
|
// CIR: {{.+}} = cir.ceil {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_ceilf(float noundef %0)
|
|
// LLVM: call float @llvm.ceil.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_ceilf(
|
|
// OGCG: call float @llvm.ceil.f32(
|
|
}
|
|
|
|
double my_ceil(double f) {
|
|
return __builtin_ceil(f);
|
|
// CIR: cir.func no_inline dso_local @my_ceil
|
|
// CIR: {{.+}} = cir.ceil {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_ceil(double noundef %0)
|
|
// LLVM: call double @llvm.ceil.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_ceil(
|
|
// OGCG: call double @llvm.ceil.f64(
|
|
}
|
|
|
|
long double my_ceill(long double f) {
|
|
return __builtin_ceill(f);
|
|
// CIR: cir.func no_inline dso_local @my_ceill
|
|
// CIR: {{.+}} = cir.ceil {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.ceil {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_ceill(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.ceil.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_ceill(
|
|
// OGCG: call x86_fp80 @llvm.ceil.f80(
|
|
}
|
|
|
|
float ceilf(float);
|
|
double ceil(double);
|
|
long double ceill(long double);
|
|
|
|
float call_ceilf(float f) {
|
|
return ceilf(f);
|
|
// CIR: cir.func no_inline dso_local @call_ceilf
|
|
// CIR: {{.+}} = cir.ceil {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_ceilf(float noundef %0)
|
|
// LLVM: call float @llvm.ceil.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_ceilf(
|
|
// OGCG: call float @llvm.ceil.f32(
|
|
}
|
|
|
|
double call_ceil(double f) {
|
|
return ceil(f);
|
|
// CIR: cir.func no_inline dso_local @call_ceil
|
|
// CIR: {{.+}} = cir.ceil {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_ceil(double noundef %0)
|
|
// LLVM: call double @llvm.ceil.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_ceil(
|
|
// OGCG: call double @llvm.ceil.f64(
|
|
}
|
|
|
|
long double call_ceill(long double f) {
|
|
return ceill(f);
|
|
// CIR: cir.func no_inline dso_local @call_ceill
|
|
// CIR: {{.+}} = cir.ceil {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.ceil {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_ceill(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.ceil.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_ceill(
|
|
// OGCG: call x86_fp80 @llvm.ceil.f80(
|
|
}
|
|
|
|
// cos
|
|
|
|
float my_cosf(float f) {
|
|
return __builtin_cosf(f);
|
|
// CIR: cir.func no_inline dso_local @my_cosf
|
|
// CIR: {{.+}} = cir.cos {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_cosf(float noundef %0)
|
|
// LLVM: call float @llvm.cos.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_cosf(
|
|
// OGCG: call float @llvm.cos.f32(
|
|
}
|
|
|
|
double my_cos(double f) {
|
|
return __builtin_cos(f);
|
|
// CIR: cir.func no_inline dso_local @my_cos
|
|
// CIR: {{.+}} = cir.cos {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_cos(double noundef %0)
|
|
// LLVM: call double @llvm.cos.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_cos(
|
|
// OGCG: call double @llvm.cos.f64(
|
|
}
|
|
|
|
long double my_cosl(long double f) {
|
|
return __builtin_cosl(f);
|
|
// CIR: cir.func no_inline dso_local @my_cosl
|
|
// CIR: {{.+}} = cir.cos {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.cos {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_cosl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.cos.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_cosl(
|
|
// OGCG: call x86_fp80 @llvm.cos.f80(
|
|
}
|
|
|
|
float cosf(float);
|
|
double cos(double);
|
|
long double cosl(long double);
|
|
|
|
float call_cosf(float f) {
|
|
return cosf(f);
|
|
// CIR: cir.func no_inline dso_local @call_cosf
|
|
// CIR: {{.+}} = cir.cos {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_cosf(float noundef %0)
|
|
// LLVM: call float @llvm.cos.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_cosf(
|
|
// OGCG: call float @llvm.cos.f32(
|
|
}
|
|
|
|
double call_cos(double f) {
|
|
return cos(f);
|
|
// CIR: cir.func no_inline dso_local @call_cos
|
|
// CIR: {{.+}} = cir.cos {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_cos(double noundef %0)
|
|
// LLVM: call double @llvm.cos.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_cos(
|
|
// OGCG: call double @llvm.cos.f64(
|
|
}
|
|
|
|
long double call_cosl(long double f) {
|
|
return cosl(f);
|
|
// CIR: cir.func no_inline dso_local @call_cosl
|
|
// CIR: {{.+}} = cir.cos {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.cos {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_cosl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.cos.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_cosl(
|
|
// OGCG: call x86_fp80 @llvm.cos.f80(
|
|
}
|
|
|
|
// exp
|
|
|
|
float my_expf(float f) {
|
|
return __builtin_expf(f);
|
|
// CIR: cir.func no_inline dso_local @my_expf
|
|
// CIR: {{.+}} = cir.exp {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_expf(float noundef %0)
|
|
// LLVM: call float @llvm.exp.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_expf(
|
|
// OGCG: call float @llvm.exp.f32(
|
|
}
|
|
|
|
double my_exp(double f) {
|
|
return __builtin_exp(f);
|
|
// CIR: cir.func no_inline dso_local @my_exp
|
|
// CIR: {{.+}} = cir.exp {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_exp(double noundef %0)
|
|
// LLVM: call double @llvm.exp.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_exp(
|
|
// OGCG: call double @llvm.exp.f64(
|
|
}
|
|
|
|
long double my_expl(long double f) {
|
|
return __builtin_expl(f);
|
|
// CIR: cir.func no_inline dso_local @my_expl
|
|
// CIR: {{.+}} = cir.exp {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.exp {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_expl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.exp.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_expl(
|
|
// OGCG: call x86_fp80 @llvm.exp.f80(
|
|
}
|
|
|
|
float expf(float);
|
|
double exp(double);
|
|
long double expl(long double);
|
|
|
|
float call_expf(float f) {
|
|
return expf(f);
|
|
// CIR: cir.func no_inline dso_local @call_expf
|
|
// CIR: {{.+}} = cir.exp {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_expf(float noundef %0)
|
|
// LLVM: call float @llvm.exp.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_expf(
|
|
// OGCG: call float @llvm.exp.f32(
|
|
}
|
|
|
|
double call_exp(double f) {
|
|
return exp(f);
|
|
// CIR: cir.func no_inline dso_local @call_exp
|
|
// CIR: {{.+}} = cir.exp {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_exp(double noundef %0)
|
|
// LLVM: call double @llvm.exp.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_exp(
|
|
// OGCG: call double @llvm.exp.f64(
|
|
}
|
|
|
|
long double call_expl(long double f) {
|
|
return expl(f);
|
|
// CIR: cir.func no_inline dso_local @call_expl
|
|
// CIR: {{.+}} = cir.exp {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.exp {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_expl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.exp.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_expl(
|
|
// OGCG: call x86_fp80 @llvm.exp.f80(
|
|
}
|
|
|
|
// exp2
|
|
|
|
float my_exp2f(float f) {
|
|
return __builtin_exp2f(f);
|
|
// CIR: cir.func no_inline dso_local @my_exp2f
|
|
// CIR: {{.+}} = cir.exp2 {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_exp2f(float noundef %0)
|
|
// LLVM: call float @llvm.exp2.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_exp2f(
|
|
// OGCG: call float @llvm.exp2.f32(
|
|
}
|
|
|
|
double my_exp2(double f) {
|
|
return __builtin_exp2(f);
|
|
// CIR: cir.func no_inline dso_local @my_exp2
|
|
// CIR: {{.+}} = cir.exp2 {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_exp2(double noundef %0)
|
|
// LLVM: call double @llvm.exp2.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_exp2(
|
|
// OGCG: call double @llvm.exp2.f64(
|
|
}
|
|
|
|
long double my_exp2l(long double f) {
|
|
return __builtin_exp2l(f);
|
|
// CIR: cir.func no_inline dso_local @my_exp2l
|
|
// CIR: {{.+}} = cir.exp2 {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.exp2 {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_exp2l(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.exp2.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_exp2l(
|
|
// OGCG: call x86_fp80 @llvm.exp2.f80(
|
|
}
|
|
|
|
float exp2f(float);
|
|
double exp2(double);
|
|
long double exp2l(long double);
|
|
|
|
float call_exp2f(float f) {
|
|
return exp2f(f);
|
|
// CIR: cir.func no_inline dso_local @call_exp2f
|
|
// CIR: {{.+}} = cir.exp2 {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_exp2f(float noundef %0)
|
|
// LLVM: call float @llvm.exp2.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_exp2f(
|
|
// OGCG: call float @llvm.exp2.f32(
|
|
}
|
|
|
|
double call_exp2(double f) {
|
|
return exp2(f);
|
|
// CIR: cir.func no_inline dso_local @call_exp2
|
|
// CIR: {{.+}} = cir.exp2 {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_exp2(double noundef %0)
|
|
// LLVM: call double @llvm.exp2.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_exp2(
|
|
// OGCG: call double @llvm.exp2.f64(
|
|
}
|
|
|
|
long double call_exp2l(long double f) {
|
|
return exp2l(f);
|
|
// CIR: cir.func no_inline dso_local @call_exp2l
|
|
// CIR: {{.+}} = cir.exp2 {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.exp2 {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_exp2l(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.exp2.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_exp2l(
|
|
// OGCG: call x86_fp80 @llvm.exp2.f80(
|
|
}
|
|
|
|
// floor
|
|
|
|
float my_floorf(float f) {
|
|
return __builtin_floorf(f);
|
|
// CIR: cir.func no_inline dso_local @my_floorf
|
|
// CIR: {{.+}} = cir.floor {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_floorf(float noundef %0)
|
|
// LLVM: call float @llvm.floor.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_floorf(
|
|
// OGCG: call float @llvm.floor.f32(
|
|
}
|
|
|
|
double my_floor(double f) {
|
|
return __builtin_floor(f);
|
|
// CIR: cir.func no_inline dso_local @my_floor
|
|
// CIR: {{.+}} = cir.floor {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_floor(double noundef %0)
|
|
// LLVM: call double @llvm.floor.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_floor(
|
|
// OGCG: call double @llvm.floor.f64(
|
|
}
|
|
|
|
long double my_floorl(long double f) {
|
|
return __builtin_floorl(f);
|
|
// CIR: cir.func no_inline dso_local @my_floorl
|
|
// CIR: {{.+}} = cir.floor {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.floor {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_floorl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.floor.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_floorl(
|
|
// OGCG: call x86_fp80 @llvm.floor.f80(
|
|
}
|
|
|
|
float floorf(float);
|
|
double floor(double);
|
|
long double floorl(long double);
|
|
|
|
float call_floorf(float f) {
|
|
return floorf(f);
|
|
// CIR: cir.func no_inline dso_local @call_floorf
|
|
// CIR: {{.+}} = cir.floor {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_floorf(float noundef %0)
|
|
// LLVM: call float @llvm.floor.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_floorf(
|
|
// OGCG: call float @llvm.floor.f32(
|
|
}
|
|
|
|
double call_floor(double f) {
|
|
return floor(f);
|
|
// CIR: cir.func no_inline dso_local @call_floor
|
|
// CIR: {{.+}} = cir.floor {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_floor(double noundef %0)
|
|
// LLVM: call double @llvm.floor.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_floor(
|
|
// OGCG: call double @llvm.floor.f64(
|
|
}
|
|
|
|
long double call_floorl(long double f) {
|
|
return floorl(f);
|
|
// CIR: cir.func no_inline dso_local @call_floorl
|
|
// CIR: {{.+}} = cir.floor {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.floor {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_floorl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.floor.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_floorl(
|
|
// OGCG: call x86_fp80 @llvm.floor.f80(
|
|
}
|
|
|
|
// log
|
|
|
|
float my_logf(float f) {
|
|
return __builtin_logf(f);
|
|
// CIR: cir.func no_inline dso_local @my_logf
|
|
// CIR: {{.+}} = cir.log {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_logf(float noundef %0)
|
|
// LLVM: call float @llvm.log.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_logf(
|
|
// OGCG: call float @llvm.log.f32(
|
|
}
|
|
|
|
double my_log(double f) {
|
|
return __builtin_log(f);
|
|
// CIR: cir.func no_inline dso_local @my_log
|
|
// CIR: {{.+}} = cir.log {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_log(double noundef %0)
|
|
// LLVM: call double @llvm.log.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log(
|
|
// OGCG: call double @llvm.log.f64(
|
|
}
|
|
|
|
long double my_logl(long double f) {
|
|
return __builtin_logl(f);
|
|
// CIR: cir.func no_inline dso_local @my_logl
|
|
// CIR: {{.+}} = cir.log {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.log {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_logl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.log.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_logl(
|
|
// OGCG: call x86_fp80 @llvm.log.f80(
|
|
}
|
|
|
|
float logf(float);
|
|
double log(double);
|
|
long double logl(long double);
|
|
|
|
float call_logf(float f) {
|
|
return logf(f);
|
|
// CIR: cir.func no_inline dso_local @call_logf
|
|
// CIR: {{.+}} = cir.log {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_logf(float noundef %0)
|
|
// LLVM: call float @llvm.log.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_logf(
|
|
// OGCG: call float @llvm.log.f32(
|
|
}
|
|
|
|
double call_log(double f) {
|
|
return log(f);
|
|
// CIR: cir.func no_inline dso_local @call_log
|
|
// CIR: {{.+}} = cir.log {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_log(double noundef %0)
|
|
// LLVM: call double @llvm.log.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log(
|
|
// OGCG: call double @llvm.log.f64(
|
|
}
|
|
|
|
long double call_logl(long double f) {
|
|
return logl(f);
|
|
// CIR: cir.func no_inline dso_local @call_logl
|
|
// CIR: {{.+}} = cir.log {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.log {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_logl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.log.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_logl(
|
|
// OGCG: call x86_fp80 @llvm.log.f80(
|
|
}
|
|
|
|
// log10
|
|
|
|
float my_log10f(float f) {
|
|
return __builtin_log10f(f);
|
|
// CIR: cir.func no_inline dso_local @my_log10f
|
|
// CIR: {{.+}} = cir.log10 {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_log10f(float noundef %0)
|
|
// LLVM: call float @llvm.log10.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log10f(
|
|
// OGCG: call float @llvm.log10.f32(
|
|
}
|
|
|
|
double my_log10(double f) {
|
|
return __builtin_log10(f);
|
|
// CIR: cir.func no_inline dso_local @my_log10
|
|
// CIR: {{.+}} = cir.log10 {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_log10(double noundef %0)
|
|
// LLVM: call double @llvm.log10.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log10(
|
|
// OGCG: call double @llvm.log10.f64(
|
|
}
|
|
|
|
long double my_log10l(long double f) {
|
|
return __builtin_log10l(f);
|
|
// CIR: cir.func no_inline dso_local @my_log10l
|
|
// CIR: {{.+}} = cir.log10 {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.log10 {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_log10l(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.log10.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log10l(
|
|
// OGCG: call x86_fp80 @llvm.log10.f80(
|
|
}
|
|
|
|
float log10f(float);
|
|
double log10(double);
|
|
long double log10l(long double);
|
|
|
|
float call_log10f(float f) {
|
|
return log10f(f);
|
|
// CIR: cir.func no_inline dso_local @call_log10f
|
|
// CIR: {{.+}} = cir.log10 {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_log10f(float noundef %0)
|
|
// LLVM: call float @llvm.log10.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log10f(
|
|
// OGCG: call float @llvm.log10.f32(
|
|
}
|
|
|
|
double call_log10(double f) {
|
|
return log10(f);
|
|
// CIR: cir.func no_inline dso_local @call_log10
|
|
// CIR: {{.+}} = cir.log10 {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_log10(double noundef %0)
|
|
// LLVM: call double @llvm.log10.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log10(
|
|
// OGCG: call double @llvm.log10.f64(
|
|
}
|
|
|
|
long double call_log10l(long double f) {
|
|
return log10l(f);
|
|
// CIR: cir.func no_inline dso_local @call_log10l
|
|
// CIR: {{.+}} = cir.log10 {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.log10 {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_log10l(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.log10.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log10l(
|
|
// OGCG: call x86_fp80 @llvm.log10.f80(
|
|
}
|
|
|
|
// log2
|
|
|
|
float my_log2f(float f) {
|
|
return __builtin_log2f(f);
|
|
// CIR: cir.func no_inline dso_local @my_log2f
|
|
// CIR: {{.+}} = cir.log2 {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_log2f(float noundef %0)
|
|
// LLVM: call float @llvm.log2.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log2f(
|
|
// OGCG: call float @llvm.log2.f32(
|
|
}
|
|
|
|
double my_log2(double f) {
|
|
return __builtin_log2(f);
|
|
// CIR: cir.func no_inline dso_local @my_log2
|
|
// CIR: {{.+}} = cir.log2 {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_log2(double noundef %0)
|
|
// LLVM: call double @llvm.log2.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log2(
|
|
// OGCG: call double @llvm.log2.f64(
|
|
}
|
|
|
|
long double my_log2l(long double f) {
|
|
return __builtin_log2l(f);
|
|
// CIR: cir.func no_inline dso_local @my_log2l
|
|
// CIR: {{.+}} = cir.log2 {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.log2 {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_log2l(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.log2.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_log2l(
|
|
// OGCG: call x86_fp80 @llvm.log2.f80(
|
|
}
|
|
|
|
float log2f(float);
|
|
double log2(double);
|
|
long double log2l(long double);
|
|
|
|
float call_log2f(float f) {
|
|
return log2f(f);
|
|
// CIR: cir.func no_inline dso_local @call_log2f
|
|
// CIR: {{.+}} = cir.log2 {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_log2f(float noundef %0)
|
|
// LLVM: call float @llvm.log2.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log2f(
|
|
// OGCG: call float @llvm.log2.f32(
|
|
}
|
|
|
|
double call_log2(double f) {
|
|
return log2(f);
|
|
// CIR: cir.func no_inline dso_local @call_log2
|
|
// CIR: {{.+}} = cir.log2 {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_log2(double noundef %0)
|
|
// LLVM: call double @llvm.log2.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log2(
|
|
// OGCG: call double @llvm.log2.f64(
|
|
}
|
|
|
|
long double call_log2l(long double f) {
|
|
return log2l(f);
|
|
// CIR: cir.func no_inline dso_local @call_log2l
|
|
// CIR: {{.+}} = cir.log2 {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.log2 {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_log2l(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.log2.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_log2l(
|
|
// OGCG: call x86_fp80 @llvm.log2.f80(
|
|
}
|
|
|
|
// nearbyint
|
|
|
|
float my_nearbyintf(float f) {
|
|
return __builtin_nearbyintf(f);
|
|
// CIR: cir.func no_inline dso_local @my_nearbyintf
|
|
// CIR: {{.+}} = cir.nearbyint {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_nearbyintf(float noundef %0)
|
|
// LLVM: call float @llvm.nearbyint.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_nearbyintf(
|
|
// OGCG: call float @llvm.nearbyint.f32(
|
|
}
|
|
|
|
double my_nearbyint(double f) {
|
|
return __builtin_nearbyint(f);
|
|
// CIR: cir.func no_inline dso_local @my_nearbyint
|
|
// CIR: {{.+}} = cir.nearbyint {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_nearbyint(double noundef %0)
|
|
// LLVM: call double @llvm.nearbyint.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_nearbyint(
|
|
// OGCG: call double @llvm.nearbyint.f64(
|
|
}
|
|
|
|
long double my_nearbyintl(long double f) {
|
|
return __builtin_nearbyintl(f);
|
|
// CIR: cir.func no_inline dso_local @my_nearbyintl
|
|
// CIR: {{.+}} = cir.nearbyint {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.nearbyint {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_nearbyintl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.nearbyint.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_nearbyintl(
|
|
// OGCG: call x86_fp80 @llvm.nearbyint.f80(
|
|
}
|
|
|
|
float nearbyintf(float);
|
|
double nearbyint(double);
|
|
long double nearbyintl(long double);
|
|
|
|
float call_nearbyintf(float f) {
|
|
return nearbyintf(f);
|
|
// CIR: cir.func no_inline dso_local @call_nearbyintf
|
|
// CIR: {{.+}} = cir.nearbyint {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_nearbyintf(float noundef %0)
|
|
// LLVM: call float @llvm.nearbyint.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_nearbyintf(
|
|
// OGCG: call float @llvm.nearbyint.f32(
|
|
}
|
|
|
|
double call_nearbyint(double f) {
|
|
return nearbyint(f);
|
|
// CIR: cir.func no_inline dso_local @call_nearbyint
|
|
// CIR: {{.+}} = cir.nearbyint {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_nearbyint(double noundef %0)
|
|
// LLVM: call double @llvm.nearbyint.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_nearbyint(
|
|
// OGCG: call double @llvm.nearbyint.f64(
|
|
}
|
|
|
|
long double call_nearbyintl(long double f) {
|
|
return nearbyintl(f);
|
|
// CIR: cir.func no_inline dso_local @call_nearbyintl
|
|
// CIR: {{.+}} = cir.nearbyint {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.nearbyint {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_nearbyintl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.nearbyint.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_nearbyintl(
|
|
// OGCG: call x86_fp80 @llvm.nearbyint.f80(
|
|
}
|
|
|
|
// rint
|
|
|
|
float my_rintf(float f) {
|
|
return __builtin_rintf(f);
|
|
// CIR: cir.func no_inline dso_local @my_rintf
|
|
// CIR: {{.+}} = cir.rint {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_rintf(float noundef %0)
|
|
// LLVM: call float @llvm.rint.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_rintf(
|
|
// OGCG: call float @llvm.rint.f32(
|
|
}
|
|
|
|
double my_rint(double f) {
|
|
return __builtin_rint(f);
|
|
// CIR: cir.func no_inline dso_local @my_rint
|
|
// CIR: {{.+}} = cir.rint {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_rint(double noundef %0)
|
|
// LLVM: call double @llvm.rint.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_rint(
|
|
// OGCG: call double @llvm.rint.f64(
|
|
}
|
|
|
|
long double my_rintl(long double f) {
|
|
return __builtin_rintl(f);
|
|
// CIR: cir.func no_inline dso_local @my_rintl
|
|
// CIR: {{.+}} = cir.rint {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.rint {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_rintl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.rint.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_rintl(
|
|
// OGCG: call x86_fp80 @llvm.rint.f80(
|
|
}
|
|
|
|
float rintf(float);
|
|
double rint(double);
|
|
long double rintl(long double);
|
|
|
|
float call_rintf(float f) {
|
|
return rintf(f);
|
|
// CIR: cir.func no_inline dso_local @call_rintf
|
|
// CIR: {{.+}} = cir.rint {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_rintf(float noundef %0)
|
|
// LLVM: call float @llvm.rint.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_rintf(
|
|
// OGCG: call float @llvm.rint.f32(
|
|
}
|
|
|
|
double call_rint(double f) {
|
|
return rint(f);
|
|
// CIR: cir.func no_inline dso_local @call_rint
|
|
// CIR: {{.+}} = cir.rint {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_rint(double noundef %0)
|
|
// LLVM: call double @llvm.rint.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_rint(
|
|
// OGCG: call double @llvm.rint.f64(
|
|
}
|
|
|
|
long double call_rintl(long double f) {
|
|
return rintl(f);
|
|
// CIR: cir.func no_inline dso_local @call_rintl
|
|
// CIR: {{.+}} = cir.rint {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.rint {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_rintl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.rint.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_rintl(
|
|
// OGCG: call x86_fp80 @llvm.rint.f80(
|
|
}
|
|
|
|
// round
|
|
|
|
float my_roundf(float f) {
|
|
return __builtin_roundf(f);
|
|
// CIR: cir.func no_inline dso_local @my_roundf
|
|
// CIR: {{.+}} = cir.round {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_roundf(float noundef %0)
|
|
// LLVM: call float @llvm.round.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_roundf(
|
|
// OGCG: call float @llvm.round.f32(
|
|
}
|
|
|
|
double my_round(double f) {
|
|
return __builtin_round(f);
|
|
// CIR: cir.func no_inline dso_local @my_round
|
|
// CIR: {{.+}} = cir.round {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_round(double noundef %0)
|
|
// LLVM: call double @llvm.round.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_round(
|
|
// OGCG: call double @llvm.round.f64(
|
|
}
|
|
|
|
long double my_roundl(long double f) {
|
|
return __builtin_roundl(f);
|
|
// CIR: cir.func no_inline dso_local @my_roundl
|
|
// CIR: {{.+}} = cir.round {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.round {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_roundl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.round.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_roundl(
|
|
// OGCG: call x86_fp80 @llvm.round.f80(
|
|
}
|
|
|
|
float roundf(float);
|
|
double round(double);
|
|
long double roundl(long double);
|
|
|
|
float call_roundf(float f) {
|
|
return roundf(f);
|
|
// CIR: cir.func no_inline dso_local @call_roundf
|
|
// CIR: {{.+}} = cir.round {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_roundf(float noundef %0)
|
|
// LLVM: call float @llvm.round.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_roundf(
|
|
// OGCG: call float @llvm.round.f32(
|
|
}
|
|
|
|
double call_round(double f) {
|
|
return round(f);
|
|
// CIR: cir.func no_inline dso_local @call_round
|
|
// CIR: {{.+}} = cir.round {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_round(double noundef %0)
|
|
// LLVM: call double @llvm.round.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_round(
|
|
// OGCG: call double @llvm.round.f64(
|
|
}
|
|
|
|
long double call_roundl(long double f) {
|
|
return roundl(f);
|
|
// CIR: cir.func no_inline dso_local @call_roundl
|
|
// CIR: {{.+}} = cir.round {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.round {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_roundl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.round.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_roundl(
|
|
// OGCG: call x86_fp80 @llvm.round.f80(
|
|
}
|
|
|
|
// sin
|
|
|
|
float my_sinf(float f) {
|
|
return __builtin_sinf(f);
|
|
// CIR: cir.func no_inline dso_local @my_sinf
|
|
// CIR: {{.+}} = cir.sin {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_sinf(float noundef %0)
|
|
// LLVM: call float @llvm.sin.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_sinf(
|
|
// OGCG: call float @llvm.sin.f32(
|
|
}
|
|
|
|
double my_sin(double f) {
|
|
return __builtin_sin(f);
|
|
// CIR: cir.func no_inline dso_local @my_sin
|
|
// CIR: {{.+}} = cir.sin {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_sin(double noundef %0)
|
|
// LLVM: call double @llvm.sin.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_sin(
|
|
// OGCG: call double @llvm.sin.f64(
|
|
}
|
|
|
|
long double my_sinl(long double f) {
|
|
return __builtin_sinl(f);
|
|
// CIR: cir.func no_inline dso_local @my_sinl
|
|
// CIR: {{.+}} = cir.sin {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.sin {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_sinl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.sin.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_sinl(
|
|
// OGCG: call x86_fp80 @llvm.sin.f80(
|
|
}
|
|
|
|
float sinf(float);
|
|
double sin(double);
|
|
long double sinl(long double);
|
|
|
|
float call_sinf(float f) {
|
|
return sinf(f);
|
|
// CIR: cir.func no_inline dso_local @call_sinf
|
|
// CIR: {{.+}} = cir.sin {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_sinf(float noundef %0)
|
|
// LLVM: call float @llvm.sin.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_sinf(
|
|
// OGCG: call float @llvm.sin.f32(
|
|
}
|
|
|
|
double call_sin(double f) {
|
|
return sin(f);
|
|
// CIR: cir.func no_inline dso_local @call_sin
|
|
// CIR: {{.+}} = cir.sin {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_sin(double noundef %0)
|
|
// LLVM: call double @llvm.sin.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_sin(
|
|
// OGCG: call double @llvm.sin.f64(
|
|
}
|
|
|
|
long double call_sinl(long double f) {
|
|
return sinl(f);
|
|
// CIR: cir.func no_inline dso_local @call_sinl
|
|
// CIR: {{.+}} = cir.sin {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.sin {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_sinl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.sin.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_sinl(
|
|
// OGCG: call x86_fp80 @llvm.sin.f80(
|
|
}
|
|
|
|
// sqrt
|
|
|
|
float my_sqrtf(float f) {
|
|
return __builtin_sqrtf(f);
|
|
// CIR: cir.func no_inline dso_local @my_sqrtf
|
|
// CIR: {{.+}} = cir.sqrt {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_sqrtf(float noundef %0)
|
|
// LLVM: call float @llvm.sqrt.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_sqrtf(
|
|
// OGCG: call float @llvm.sqrt.f32(
|
|
}
|
|
|
|
double my_sqrt(double f) {
|
|
return __builtin_sqrt(f);
|
|
// CIR: cir.func no_inline dso_local @my_sqrt
|
|
// CIR: {{.+}} = cir.sqrt {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_sqrt(double noundef %0)
|
|
// LLVM: call double @llvm.sqrt.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_sqrt(
|
|
// OGCG: call double @llvm.sqrt.f64(
|
|
}
|
|
|
|
long double my_sqrtl(long double f) {
|
|
return __builtin_sqrtl(f);
|
|
// CIR: cir.func no_inline dso_local @my_sqrtl
|
|
// CIR: {{.+}} = cir.sqrt {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.sqrt {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_sqrtl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.sqrt.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_sqrtl(
|
|
// OGCG: call x86_fp80 @llvm.sqrt.f80(
|
|
}
|
|
|
|
float sqrtf(float);
|
|
double sqrt(double);
|
|
long double sqrtl(long double);
|
|
|
|
float call_sqrtf(float f) {
|
|
return sqrtf(f);
|
|
// CIR: cir.func no_inline dso_local @call_sqrtf
|
|
// CIR: {{.+}} = cir.sqrt {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_sqrtf(float noundef %0)
|
|
// LLVM: call float @llvm.sqrt.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_sqrtf(
|
|
// OGCG: call float @llvm.sqrt.f32(
|
|
}
|
|
|
|
double call_sqrt(double f) {
|
|
return sqrt(f);
|
|
// CIR: cir.func no_inline dso_local @call_sqrt
|
|
// CIR: {{.+}} = cir.sqrt {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_sqrt(double noundef %0)
|
|
// LLVM: call double @llvm.sqrt.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_sqrt(
|
|
// OGCG: call double @llvm.sqrt.f64(
|
|
}
|
|
|
|
long double call_sqrtl(long double f) {
|
|
return sqrtl(f);
|
|
// CIR: cir.func no_inline dso_local @call_sqrtl
|
|
// CIR: {{.+}} = cir.sqrt {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.sqrt {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_sqrtl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.sqrt.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_sqrtl(
|
|
// OGCG: call x86_fp80 @llvm.sqrt.f80(
|
|
}
|
|
|
|
// tan
|
|
|
|
float my_tanf(float f) {
|
|
return __builtin_tanf(f);
|
|
// CIR: cir.func no_inline dso_local @my_tanf
|
|
// CIR: {{.+}} = cir.tan {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_tanf(float noundef %0)
|
|
// LLVM: call float @llvm.tan.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_tanf(
|
|
// OGCG: call float @llvm.tan.f32(
|
|
}
|
|
|
|
double my_tan(double f) {
|
|
return __builtin_tan(f);
|
|
// CIR: cir.func no_inline dso_local @my_tan
|
|
// CIR: {{.+}} = cir.tan {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_tan(double noundef %0)
|
|
// LLVM: call double @llvm.tan.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_tan(
|
|
// OGCG: call double @llvm.tan.f64(
|
|
}
|
|
|
|
long double my_tanl(long double f) {
|
|
return __builtin_tanl(f);
|
|
// CIR: cir.func no_inline dso_local @my_tanl
|
|
// CIR: {{.+}} = cir.tan {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.tan {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_tanl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.tan.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_tanl(
|
|
// OGCG: call x86_fp80 @llvm.tan.f80(
|
|
}
|
|
|
|
float tanf(float);
|
|
double tan(double);
|
|
long double tanl(long double);
|
|
|
|
float call_tanf(float f) {
|
|
return tanf(f);
|
|
// CIR: cir.func no_inline dso_local @call_tanf
|
|
// CIR: {{.+}} = cir.tan {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_tanf(float noundef %0)
|
|
// LLVM: call float @llvm.tan.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_tanf(
|
|
// OGCG: call float @llvm.tan.f32(
|
|
}
|
|
|
|
double call_tan(double f) {
|
|
return tan(f);
|
|
// CIR: cir.func no_inline dso_local @call_tan
|
|
// CIR: {{.+}} = cir.tan {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_tan(double noundef %0)
|
|
// LLVM: call double @llvm.tan.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_tan(
|
|
// OGCG: call double @llvm.tan.f64(
|
|
}
|
|
|
|
long double call_tanl(long double f) {
|
|
return tanl(f);
|
|
// CIR: cir.func no_inline dso_local @call_tanl
|
|
// CIR: {{.+}} = cir.tan {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.tan {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_tanl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.tan.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_tanl(
|
|
// OGCG: call x86_fp80 @llvm.tan.f80(
|
|
}
|
|
|
|
// trunc
|
|
|
|
float my_truncf(float f) {
|
|
return __builtin_truncf(f);
|
|
// CIR: cir.func no_inline dso_local @my_truncf
|
|
// CIR: {{.+}} = cir.trunc {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_truncf(float noundef %0)
|
|
// LLVM: call float @llvm.trunc.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_truncf(
|
|
// OGCG: call float @llvm.trunc.f32(
|
|
}
|
|
|
|
double my_trunc(double f) {
|
|
return __builtin_trunc(f);
|
|
// CIR: cir.func no_inline dso_local @my_trunc
|
|
// CIR: {{.+}} = cir.trunc {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_trunc(double noundef %0)
|
|
// LLVM: call double @llvm.trunc.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_trunc(
|
|
// OGCG: call double @llvm.trunc.f64(
|
|
}
|
|
|
|
long double my_truncl(long double f) {
|
|
return __builtin_truncl(f);
|
|
// CIR: cir.func no_inline dso_local @my_truncl
|
|
// CIR: {{.+}} = cir.trunc {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.trunc {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_truncl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.trunc.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_truncl(
|
|
// OGCG: call x86_fp80 @llvm.trunc.f80(
|
|
}
|
|
|
|
float truncf(float);
|
|
double trunc(double);
|
|
long double truncl(long double);
|
|
|
|
float call_truncf(float f) {
|
|
return truncf(f);
|
|
// CIR: cir.func no_inline dso_local @call_truncf
|
|
// CIR: {{.+}} = cir.trunc {{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_truncf(float noundef %0)
|
|
// LLVM: call float @llvm.trunc.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_truncf(
|
|
// OGCG: call float @llvm.trunc.f32(
|
|
}
|
|
|
|
double call_trunc(double f) {
|
|
return trunc(f);
|
|
// CIR: cir.func no_inline dso_local @call_trunc
|
|
// CIR: {{.+}} = cir.trunc {{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_trunc(double noundef %0)
|
|
// LLVM: call double @llvm.trunc.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_trunc(
|
|
// OGCG: call double @llvm.trunc.f64(
|
|
}
|
|
|
|
long double call_truncl(long double f) {
|
|
return truncl(f);
|
|
// CIR: cir.func no_inline dso_local @call_truncl
|
|
// CIR: {{.+}} = cir.trunc {{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: {{.+}} = cir.trunc {{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_truncl(x86_fp80 noundef %0)
|
|
// LLVM: call x86_fp80 @llvm.trunc.f80(x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_truncl(
|
|
// OGCG: call x86_fp80 @llvm.trunc.f80(
|
|
}
|
|
|
|
// copysign
|
|
|
|
float my_copysignf(float x, float y) {
|
|
return __builtin_copysignf(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_copysignf
|
|
// CIR: cir.copysign %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_copysignf
|
|
// LLVM: call float @llvm.copysign.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_copysignf(
|
|
// OGCG: call float @llvm.copysign.f32(
|
|
}
|
|
|
|
double my_copysign(double x, double y) {
|
|
return __builtin_copysign(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_copysign
|
|
// CIR: cir.copysign %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_copysign
|
|
// LLVM: call double @llvm.copysign.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_copysign(
|
|
// OGCG: call double @llvm.copysign.f64(
|
|
}
|
|
|
|
long double my_copysignl(long double x, long double y) {
|
|
return __builtin_copysignl(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_copysignl
|
|
// CIR: cir.copysign %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.copysign %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_copysignl
|
|
// LLVM: call x86_fp80 @llvm.copysign.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_copysignl(
|
|
// OGCG: call x86_fp80 @llvm.copysign.f80(
|
|
}
|
|
|
|
float copysignf(float, float);
|
|
double copysign(double, double);
|
|
long double copysignl(long double, long double);
|
|
|
|
float call_copysignf(float x, float y) {
|
|
return copysignf(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_copysignf
|
|
// CIR: cir.copysign %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_copysignf
|
|
// LLVM: call float @llvm.copysign.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_copysignf(
|
|
// OGCG: call float @llvm.copysign.f32(
|
|
}
|
|
|
|
double call_copysign(double x, double y) {
|
|
return copysign(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_copysign
|
|
// CIR: cir.copysign %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_copysign
|
|
// LLVM: call double @llvm.copysign.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_copysign(
|
|
// OGCG: call double @llvm.copysign.f64(
|
|
}
|
|
|
|
long double call_copysignl(long double x, long double y) {
|
|
return copysignl(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_copysignl
|
|
// CIR: cir.copysign %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.copysign %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_copysignl
|
|
// LLVM: call x86_fp80 @llvm.copysign.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_copysignl(
|
|
// OGCG: call x86_fp80 @llvm.copysign.f80(
|
|
}
|
|
|
|
// fmax
|
|
|
|
float my_fmaxf(float x, float y) {
|
|
return __builtin_fmaxf(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmaxf
|
|
// CIR: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_fmaxf
|
|
// LLVM: call nsz float @llvm.maxnum.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmaxf(
|
|
// OGCG: call nsz float @llvm.maxnum.f32(
|
|
}
|
|
|
|
double my_fmax(double x, double y) {
|
|
return __builtin_fmax(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmax
|
|
// CIR: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_fmax
|
|
// LLVM: call nsz double @llvm.maxnum.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmax(
|
|
// OGCG: call nsz double @llvm.maxnum.f64(
|
|
}
|
|
|
|
long double my_fmaxl(long double x, long double y) {
|
|
return __builtin_fmaxl(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmaxl
|
|
// CIR: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_fmaxl
|
|
// LLVM: call nsz x86_fp80 @llvm.maxnum.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmaxl(
|
|
// OGCG: call nsz x86_fp80 @llvm.maxnum.f80(
|
|
}
|
|
|
|
float fmaxf(float, float);
|
|
double fmax(double, double);
|
|
long double fmaxl(long double, long double);
|
|
|
|
float call_fmaxf(float x, float y) {
|
|
return fmaxf(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmaxf
|
|
// CIR: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_fmaxf
|
|
// LLVM: call nsz float @llvm.maxnum.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmaxf(
|
|
// OGCG: call nsz float @llvm.maxnum.f32(
|
|
}
|
|
|
|
double call_fmax(double x, double y) {
|
|
return fmax(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmax
|
|
// CIR: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_fmax
|
|
// LLVM: call nsz double @llvm.maxnum.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmax(
|
|
// OGCG: call nsz double @llvm.maxnum.f64(
|
|
}
|
|
|
|
long double call_fmaxl(long double x, long double y) {
|
|
return fmaxl(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmaxl
|
|
// CIR: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.fmaxnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_fmaxl
|
|
// LLVM: call nsz x86_fp80 @llvm.maxnum.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmaxl(
|
|
// OGCG: call nsz x86_fp80 @llvm.maxnum.f80(
|
|
}
|
|
|
|
// fmin
|
|
|
|
float my_fminf(float x, float y) {
|
|
return __builtin_fminf(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fminf
|
|
// CIR: cir.fminnum %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_fminf
|
|
// LLVM: call nsz float @llvm.minnum.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fminf(
|
|
// OGCG: call nsz float @llvm.minnum.f32(
|
|
}
|
|
|
|
double my_fmin(double x, double y) {
|
|
return __builtin_fmin(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmin
|
|
// CIR: cir.fminnum %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_fmin
|
|
// LLVM: call nsz double @llvm.minnum.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmin(
|
|
// OGCG: call nsz double @llvm.minnum.f64(
|
|
}
|
|
|
|
long double my_fminl(long double x, long double y) {
|
|
return __builtin_fminl(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fminl
|
|
// CIR: cir.fminnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.fminnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_fminl
|
|
// LLVM: call nsz x86_fp80 @llvm.minnum.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fminl(
|
|
// OGCG: call nsz x86_fp80 @llvm.minnum.f80(
|
|
}
|
|
|
|
float fminf(float, float);
|
|
double fmin(double, double);
|
|
long double fminl(long double, long double);
|
|
|
|
float call_fminf(float x, float y) {
|
|
return fminf(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fminf
|
|
// CIR: cir.fminnum %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_fminf
|
|
// LLVM: call nsz float @llvm.minnum.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fminf(
|
|
// OGCG: call nsz float @llvm.minnum.f32(
|
|
}
|
|
|
|
double call_fmin(double x, double y) {
|
|
return fmin(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmin
|
|
// CIR: cir.fminnum %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_fmin
|
|
// LLVM: call nsz double @llvm.minnum.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmin(
|
|
// OGCG: call nsz double @llvm.minnum.f64(
|
|
}
|
|
|
|
long double call_fminl(long double x, long double y) {
|
|
return fminl(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fminl
|
|
// CIR: cir.fminnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.fminnum %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_fminl
|
|
// LLVM: call nsz x86_fp80 @llvm.minnum.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fminl(
|
|
// OGCG: call nsz x86_fp80 @llvm.minnum.f80(
|
|
}
|
|
|
|
// fmod
|
|
|
|
float my_fmodf(float x, float y) {
|
|
return __builtin_fmodf(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmodf
|
|
// CIR: cir.fmod %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_fmodf
|
|
// LLVM: frem float %{{.+}}, %{{.+}}
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmodf(
|
|
// OGCG: frem float
|
|
}
|
|
|
|
double my_fmod(double x, double y) {
|
|
return __builtin_fmod(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmod
|
|
// CIR: cir.fmod %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_fmod
|
|
// LLVM: frem double %{{.+}}, %{{.+}}
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmod(
|
|
// OGCG: frem double
|
|
}
|
|
|
|
long double my_fmodl(long double x, long double y) {
|
|
return __builtin_fmodl(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_fmodl
|
|
// CIR: cir.fmod %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.fmod %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_fmodl
|
|
// LLVM: frem x86_fp80 %{{.+}}, %{{.+}}
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_fmodl(
|
|
// OGCG: frem x86_fp80
|
|
}
|
|
|
|
float fmodf(float, float);
|
|
double fmod(double, double);
|
|
long double fmodl(long double, long double);
|
|
|
|
float call_fmodf(float x, float y) {
|
|
return fmodf(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmodf
|
|
// CIR: cir.fmod %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_fmodf
|
|
// LLVM: frem float %{{.+}}, %{{.+}}
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmodf(
|
|
// OGCG: frem float
|
|
}
|
|
|
|
double call_fmod(double x, double y) {
|
|
return fmod(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmod
|
|
// CIR: cir.fmod %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_fmod
|
|
// LLVM: frem double %{{.+}}, %{{.+}}
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmod(
|
|
// OGCG: frem double
|
|
}
|
|
|
|
long double call_fmodl(long double x, long double y) {
|
|
return fmodl(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_fmodl
|
|
// CIR: cir.fmod %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.fmod %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_fmodl
|
|
// LLVM: frem x86_fp80 %{{.+}}, %{{.+}}
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_fmodl(
|
|
// OGCG: frem x86_fp80
|
|
}
|
|
|
|
// pow
|
|
|
|
float my_powf(float x, float y) {
|
|
return __builtin_powf(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_powf
|
|
// CIR: cir.pow %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_powf
|
|
// LLVM: call float @llvm.pow.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_powf(
|
|
// OGCG: call float @llvm.pow.f32(
|
|
}
|
|
|
|
double my_pow(double x, double y) {
|
|
return __builtin_pow(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_pow
|
|
// CIR: cir.pow %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_pow
|
|
// LLVM: call double @llvm.pow.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_pow(
|
|
// OGCG: call double @llvm.pow.f64(
|
|
}
|
|
|
|
long double my_powl(long double x, long double y) {
|
|
return __builtin_powl(x, y);
|
|
// CIR: cir.func no_inline dso_local @my_powl
|
|
// CIR: cir.pow %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.pow %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @my_powl
|
|
// LLVM: call x86_fp80 @llvm.pow.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_powl(
|
|
// OGCG: call x86_fp80 @llvm.pow.f80(
|
|
}
|
|
|
|
float powf(float, float);
|
|
double pow(double, double);
|
|
long double powl(long double, long double);
|
|
|
|
float call_powf(float x, float y) {
|
|
return powf(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_powf
|
|
// CIR: cir.pow %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @call_powf
|
|
// LLVM: call float @llvm.pow.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_powf(
|
|
// OGCG: call float @llvm.pow.f32(
|
|
}
|
|
|
|
double call_pow(double x, double y) {
|
|
return pow(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_pow
|
|
// CIR: cir.pow %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @call_pow
|
|
// LLVM: call double @llvm.pow.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_pow(
|
|
// OGCG: call double @llvm.pow.f64(
|
|
}
|
|
|
|
long double call_powl(long double x, long double y) {
|
|
return powl(x, y);
|
|
// CIR: cir.func no_inline dso_local @call_powl
|
|
// CIR: cir.pow %{{.+}}, %{{.+}} : !cir.long_double<!cir.f80>
|
|
// AARCH64: cir.pow %{{.+}}, %{{.+}} : !cir.long_double<!cir.double>
|
|
|
|
// LLVM: define dso_local x86_fp80 @call_powl
|
|
// LLVM: call x86_fp80 @llvm.pow.f80(x86_fp80 %{{.+}}, x86_fp80 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@call_powl(
|
|
// OGCG: call x86_fp80 @llvm.pow.f80(
|
|
}
|
|
|
|
// acos
|
|
|
|
float my_acosf(float x) {
|
|
return __builtin_acosf(x);
|
|
// CIR: cir.func no_inline dso_local @my_acosf
|
|
// CIR: cir.acos %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_acosf
|
|
// LLVM: call float @llvm.acos.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_acosf(
|
|
// OGCG: call float @llvm.acos.f32(
|
|
}
|
|
|
|
double my_acos(double x) {
|
|
return __builtin_acos(x);
|
|
// CIR: cir.func no_inline dso_local @my_acos
|
|
// CIR: cir.acos %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_acos
|
|
// LLVM: call double @llvm.acos.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_acos(
|
|
// OGCG: call double @llvm.acos.f64(
|
|
}
|
|
|
|
// asin
|
|
|
|
float my_asinf(float x) {
|
|
return __builtin_asinf(x);
|
|
// CIR: cir.func no_inline dso_local @my_asinf
|
|
// CIR: cir.asin %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_asinf
|
|
// LLVM: call float @llvm.asin.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_asinf(
|
|
// OGCG: call float @llvm.asin.f32(
|
|
}
|
|
|
|
double my_asin(double x) {
|
|
return __builtin_asin(x);
|
|
// CIR: cir.func no_inline dso_local @my_asin
|
|
// CIR: cir.asin %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_asin
|
|
// LLVM: call double @llvm.asin.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_asin(
|
|
// OGCG: call double @llvm.asin.f64(
|
|
}
|
|
|
|
// atan
|
|
|
|
float my_atanf(float x) {
|
|
return __builtin_atanf(x);
|
|
// CIR: cir.func no_inline dso_local @my_atanf
|
|
// CIR: cir.atan %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_atanf
|
|
// LLVM: call float @llvm.atan.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_atanf(
|
|
// OGCG: call float @llvm.atan.f32(
|
|
}
|
|
|
|
double my_atan(double x) {
|
|
return __builtin_atan(x);
|
|
// CIR: cir.func no_inline dso_local @my_atan
|
|
// CIR: cir.atan %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_atan
|
|
// LLVM: call double @llvm.atan.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_atan(
|
|
// OGCG: call double @llvm.atan.f64(
|
|
}
|
|
|
|
// atan2
|
|
|
|
float my_atan2f(float y, float x) {
|
|
return __builtin_atan2f(y, x);
|
|
// CIR: cir.func no_inline dso_local @my_atan2f
|
|
// CIR: cir.atan2 %{{.+}}, %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_atan2f
|
|
// LLVM: call float @llvm.atan2.f32(float %{{.+}}, float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_atan2f(
|
|
// OGCG: call float @llvm.atan2.f32(
|
|
}
|
|
|
|
double my_atan2(double y, double x) {
|
|
return __builtin_atan2(y, x);
|
|
// CIR: cir.func no_inline dso_local @my_atan2
|
|
// CIR: cir.atan2 %{{.+}}, %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_atan2
|
|
// LLVM: call double @llvm.atan2.f64(double %{{.+}}, double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_atan2(
|
|
// OGCG: call double @llvm.atan2.f64(
|
|
}
|
|
|
|
// roundeven
|
|
|
|
float my_roundevenf(float x) {
|
|
return __builtin_roundevenf(x);
|
|
// CIR: cir.func no_inline dso_local @my_roundevenf
|
|
// CIR: cir.roundeven %{{.+}} : !cir.float
|
|
|
|
// LLVM: define dso_local float @my_roundevenf
|
|
// LLVM: call float @llvm.roundeven.f32(float %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_roundevenf(
|
|
// OGCG: call float @llvm.roundeven.f32(
|
|
}
|
|
|
|
double my_roundeven(double x) {
|
|
return __builtin_roundeven(x);
|
|
// CIR: cir.func no_inline dso_local @my_roundeven
|
|
// CIR: cir.roundeven %{{.+}} : !cir.double
|
|
|
|
// LLVM: define dso_local double @my_roundeven
|
|
// LLVM: call double @llvm.roundeven.f64(double %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_roundeven(
|
|
// OGCG: call double @llvm.roundeven.f64(
|
|
}
|
|
|
|
int my_flt_rounds(void) {
|
|
return __builtin_flt_rounds();
|
|
// CIR: cir.func no_inline dso_local @my_flt_rounds
|
|
// CIR: cir.call_llvm_intrinsic "get.rounding" : () -> !s32i
|
|
|
|
// LLVM: define{{.*}} i32 @my_flt_rounds
|
|
// LLVM: call i32 @llvm.get.rounding()
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_flt_rounds
|
|
// OGCG: call i32 @llvm.get.rounding()
|
|
}
|
|
|
|
void my_set_flt_rounds(int rounding) {
|
|
__builtin_set_flt_rounds(rounding);
|
|
// CIR: cir.func no_inline dso_local @my_set_flt_rounds
|
|
// CIR: cir.call_llvm_intrinsic "set.rounding" %{{.*}} : (!s32i)
|
|
|
|
// LLVM: define{{.*}} void @my_set_flt_rounds
|
|
// LLVM: call void @llvm.set.rounding(i32 %{{.+}})
|
|
// LLVM: }
|
|
|
|
// OGCG: define{{.*}}@my_set_flt_rounds
|
|
// OGCG: call void @llvm.set.rounding(i32 %{{.+}})
|
|
}
|