forked from OSchip/llvm-project
[OpenCL] Extended mapping of parcing CodeGen arguments
Summary: Enable cl_mad_enamle and cl_no_signed_zeros options when user turns on cl_unsafe_math_optimizations or cl_fast_relaxed_math options. Reviewers: Anastasia, cfe-commits Reviewed By: Anastasia Subscribers: bader, yaxunl Differential Revision: https://reviews.llvm.org/D31324 llvm-svn: 298838
This commit is contained in:
parent
a2e33e60d2
commit
45c26ee0bf
|
@ -573,7 +573,9 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Opts.DiscardValueNames = Args.hasArg(OPT_discard_value_names);
|
||||
Opts.DisableTailCalls = Args.hasArg(OPT_mdisable_tail_calls);
|
||||
Opts.FloatABI = Args.getLastArgValue(OPT_mfloat_abi);
|
||||
Opts.LessPreciseFPMAD = Args.hasArg(OPT_cl_mad_enable);
|
||||
Opts.LessPreciseFPMAD = Args.hasArg(OPT_cl_mad_enable) ||
|
||||
Args.hasArg(OPT_cl_unsafe_math_optimizations) ||
|
||||
Args.hasArg(OPT_cl_fast_relaxed_math);
|
||||
Opts.LimitFloatPrecision = Args.getLastArgValue(OPT_mlimit_float_precision);
|
||||
Opts.NoInfsFPMath = (Args.hasArg(OPT_menable_no_infinities) ||
|
||||
Args.hasArg(OPT_cl_finite_math_only) ||
|
||||
|
@ -583,7 +585,9 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
|
|||
Args.hasArg(OPT_cl_finite_math_only) ||
|
||||
Args.hasArg(OPT_cl_fast_relaxed_math));
|
||||
Opts.NoSignedZeros = (Args.hasArg(OPT_fno_signed_zeros) ||
|
||||
Args.hasArg(OPT_cl_no_signed_zeros));
|
||||
Args.hasArg(OPT_cl_no_signed_zeros) ||
|
||||
Args.hasArg(OPT_cl_unsafe_math_optimizations) ||
|
||||
Args.hasArg(OPT_cl_fast_relaxed_math));
|
||||
Opts.FlushDenorm = Args.hasArg(OPT_cl_denorms_are_zero);
|
||||
Opts.CorrectlyRoundedDivSqrt =
|
||||
Args.hasArg(OPT_cl_fp32_correctly_rounded_divide_sqrt);
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
// RUN: %clang_cc1 %s -emit-llvm -cl-fast-relaxed-math -o - | FileCheck %s -check-prefix=FAST
|
||||
// RUN: %clang_cc1 %s -emit-llvm -cl-finite-math-only -o - | FileCheck %s -check-prefix=FINITE
|
||||
// RUN: %clang_cc1 %s -emit-llvm -cl-unsafe-math-optimizations -o - | FileCheck %s -check-prefix=UNSAFE
|
||||
|
||||
typedef __attribute__(( ext_vector_type(4) )) float float4;
|
||||
// RUN: %clang_cc1 %s -emit-llvm -cl-mad-enable -o - | FileCheck %s -check-prefix=MAD
|
||||
// RUN: %clang_cc1 %s -emit-llvm -cl-no-signed-zeros -o - | FileCheck %s -check-prefix=NOSIGNED
|
||||
|
||||
float spscalardiv(float a, float b) {
|
||||
// CHECK: @spscalardiv(
|
||||
|
@ -11,24 +11,45 @@ float spscalardiv(float a, float b) {
|
|||
// NORMAL: fdiv float
|
||||
// FAST: fdiv fast float
|
||||
// FINITE: fdiv nnan ninf float
|
||||
// UNSAFE: fdiv nnan float
|
||||
// UNSAFE: fdiv nnan nsz float
|
||||
// MAD: fdiv float
|
||||
// NOSIGNED: fdiv nsz float
|
||||
return a / b;
|
||||
}
|
||||
// CHECK: attributes
|
||||
|
||||
// NORMAL: "less-precise-fpmad"="false"
|
||||
// NORMAL: "no-infs-fp-math"="false"
|
||||
// NORMAL: "no-nans-fp-math"="false"
|
||||
// NORMAL: "no-signed-zeros-fp-math"="false"
|
||||
// NORMAL: "unsafe-fp-math"="false"
|
||||
|
||||
// FAST: "less-precise-fpmad"="true"
|
||||
// FAST: "no-infs-fp-math"="true"
|
||||
// FAST: "no-nans-fp-math"="true"
|
||||
// FAST: "no-signed-zeros-fp-math"="true"
|
||||
// FAST: "unsafe-fp-math"="true"
|
||||
|
||||
// FINITE: "less-precise-fpmad"="false"
|
||||
// FINITE: "no-infs-fp-math"="true"
|
||||
// FINITE: "no-nans-fp-math"="true"
|
||||
// FINITE: "no-signed-zeros-fp-math"="false"
|
||||
// FINITE: "unsafe-fp-math"="false"
|
||||
|
||||
// UNSAFE: "less-precise-fpmad"="true"
|
||||
// UNSAFE: "no-infs-fp-math"="false"
|
||||
// UNSAFE: "no-nans-fp-math"="true"
|
||||
// UNSAFE: "no-signed-zeros-fp-math"="true"
|
||||
// UNSAFE: "unsafe-fp-math"="true"
|
||||
|
||||
// MAD: "less-precise-fpmad"="true"
|
||||
// MAD: "no-infs-fp-math"="false"
|
||||
// MAD: "no-nans-fp-math"="false"
|
||||
// MAD: "no-signed-zeros-fp-math"="false"
|
||||
// MAD: "unsafe-fp-math"="false"
|
||||
|
||||
// NOSIGNED: "less-precise-fpmad"="false"
|
||||
// NOSIGNED: "no-infs-fp-math"="false"
|
||||
// NOSIGNED: "no-nans-fp-math"="false"
|
||||
// NOSIGNED: "no-signed-zeros-fp-math"="true"
|
||||
// NOSIGNED: "unsafe-fp-math"="false"
|
||||
|
|
Loading…
Reference in New Issue