149 lines
5.4 KiB
C
149 lines
5.4 KiB
C
// REQUIRES: powerpc-registered-target
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -O3 -fapprox-func --target=powerpc64le-unknown-linux-gnu -S %s -o -| FileCheck %s -check-prefix=CHECK-MASS-AFN
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -Ofast --target=powerpc64le-unknown-linux-gnu -S %s -o -| FileCheck %s -check-prefix=CHECK-MASS-FAST
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -O3 -fapprox-func --target=powerpc-ibm-aix-xcoff -S %s -o -| FileCheck %s -check-prefix=CHECK-MASS-AFN
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -Ofast --target=powerpc-ibm-aix-xcoff -S %s -o -| FileCheck %s -check-prefix=CHECK-MASS-FAST
|
|
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass=false -O3 -fapprox-func --target=powerpc64le-unknown-linux-gnu -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-AFN
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass=false -Ofast --target=powerpc64le-unknown-linux-gnu -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-FAST
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass=false -O3 -fapprox-func --target=powerpc-ibm-aix-xcoff -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-AFN
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass=false -Ofast --target=powerpc-ibm-aix-xcoff -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-FAST
|
|
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -O3 -fno-approx-func --target=powerpc64le-unknown-linux-gnu -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-AFN
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -fno-fast-math --target=powerpc64le-unknown-linux-gnu -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-FAST
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -O3 -fno-approx-func --target=powerpc-ibm-aix-xcoff -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-AFN
|
|
// RUN: %clang -mllvm -enable-ppc-gen-scalar-mass -fno-fast-math --target=powerpc-ibm-aix-xcoff -S %s -o -| FileCheck %s -check-prefix=CHECK-NO-MASS-FAST
|
|
|
|
extern double sin(double a);
|
|
extern double cos(double a);
|
|
extern double pow(double a, double b);
|
|
extern double log(double a);
|
|
extern double log10(double a);
|
|
extern double exp(double a);
|
|
extern float sinf(float a);
|
|
extern float cosf(float a);
|
|
extern float powf(float a, float b);
|
|
extern float logf(float a);
|
|
extern float log10f(float a);
|
|
extern float expf(float a);
|
|
|
|
double sin_f64(double a) {
|
|
// CHECK-LABEL: sin_f64
|
|
// CHECK-MASS-FAST: __xl_sin_finite
|
|
// CHECK-MASS-AFN: __xl_sin
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_sin|__xl_sin_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_sin|__xl_sin_finite}}
|
|
// CHECK: blr
|
|
return sin(a);
|
|
}
|
|
|
|
double cos_f64(double a) {
|
|
// CHECK-LABEL: cos_f64
|
|
// CHECK-MASS-FAST: __xl_cos_finite
|
|
// CHECK-MASS-AFN: __xl_cos
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_cos|__xl_cos_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_cos|__xl_cos_finite}}
|
|
// CHECK: blr
|
|
return cos(a);
|
|
}
|
|
|
|
double pow_f64(double a, double b) {
|
|
// CHECK-LABEL: pow_f64
|
|
// CHECK-MASS-FAST: __xl_pow_finite
|
|
// CHECK-MASS-AFN: __xl_pow
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_pow|__xl_pow_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_pow|__xl_pow_finite}}
|
|
// CHECK: blr
|
|
return pow(a, b);
|
|
}
|
|
|
|
double log_f64(double a) {
|
|
// CHECK-LABEL: log_f64
|
|
// CHECK-MASS-FAST: __xl_log_finite
|
|
// CHECK-MASS-AFN: __xl_log
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_log|__xl_log_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_log|__xl_log_finite}}
|
|
// CHECK: blr
|
|
return log(a);
|
|
}
|
|
|
|
double log10_f64(double a) {
|
|
// CHECK-LABEL: log10_f64
|
|
// CHECK-MASS-FAST: __xl_log10_finite
|
|
// CHECK-MASS-AFN: __xl_log10
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_log10|__xl_log10_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_log10|__xl_log10_finite}}
|
|
// CHECK: blr
|
|
return log10(a);
|
|
}
|
|
|
|
double exp_f64(double a) {
|
|
// CHECK-LABEL: exp_f64
|
|
// CHECK-MASS-FAST: __xl_exp_finite
|
|
// CHECK-MASS-AFN: __xl_exp
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_exp|__xl_exp_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_exp|__xl_exp_finite}}
|
|
// CHECK: blr
|
|
return exp(a);
|
|
}
|
|
|
|
float sin_f32(float a) {
|
|
// CHECK-LABEL: sin_f32
|
|
// CHECK-MASS-FAST: __xl_sinf_finite
|
|
// CHECK-MASS-AFN: __xl_sinf
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_sinf|__xl_sinf_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_sinf|__xl_sinf_finite}}
|
|
// CHECK: blr
|
|
return sinf(a);
|
|
}
|
|
|
|
float cos_f32(float a) {
|
|
// CHECK-LABEL: cos_f32
|
|
// CHECK-MASS-FAST: __xl_cosf_finite
|
|
// CHECK-MASS-AFN: __xl_cosf
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_cosf|__xl_cosf_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_cosf|__xl_cosf_finite}}
|
|
// CHECK: blr
|
|
return cosf(a);
|
|
}
|
|
|
|
float pow_f32(float a, float b) {
|
|
// CHECK-LABEL: pow_f32
|
|
// CHECK-MASS-FAST: __xl_powf_finite
|
|
// CHECK-MASS-AFN: __xl_powf
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_pow|__xl_powf_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_pow|__xl_powf_finite}}
|
|
// CHECK: blr
|
|
return powf(a, b);
|
|
}
|
|
|
|
float log_f32(float a) {
|
|
// CHECK-LABEL: log_f32
|
|
// CHECK-MASS-FAST: __xl_logf_finite
|
|
// CHECK-MASS-AFN: __xl_logf
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_logf|__xl_logf_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_logf|__xl_logf_finite}}
|
|
// CHECK: blr
|
|
return logf(a);
|
|
}
|
|
|
|
float log10_f32(float a) {
|
|
// CHECK-LABEL: log10_f32
|
|
// CHECK-MASS-FAST: __xl_log10f_finite
|
|
// CHECK-MASS-AFN: __xl_log10f
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_log10f|__xl_log10f_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_log10f|__xl_log10f_finite}}
|
|
// CHECK: blr
|
|
return log10f(a);
|
|
}
|
|
|
|
float exp_f32(float a) {
|
|
// CHECK-LABEL: exp_f32
|
|
// CHECK-MASS-FAST: __xl_expf_finite
|
|
// CHECK-MASS-AFN: __xl_expf
|
|
// CHECK-NO-MASS-FAST-NOT: {{__xl_expf|__xl_expf_finite}}
|
|
// CHECK-NO-MASS-AFN-NOT: {{__xl_expf|__xl_expf_finite}}
|
|
// CHECK: blr
|
|
return expf(a);
|
|
}
|