forked from OSchip/llvm-project
Add a target hook for FLT_EVAL_METHOD and use it to set the value on x86 with sse disabled.
x87 math evaluates everything with 80 bits precision, so we have to set FLT_EVAL_METHOD to "2". llvm-svn: 147311
This commit is contained in:
parent
e5f554ac48
commit
cf5014771d
|
@ -256,6 +256,9 @@ public:
|
|||
return *LongDoubleFormat;
|
||||
}
|
||||
|
||||
/// getFloatEvalMethod - Return the value for the C99 FLT_EVAL_METHOD macro.
|
||||
virtual unsigned getFloatEvalMethod() const { return 0; }
|
||||
|
||||
// getLargeArrayMinWidth/Align - Return the minimum array size that is
|
||||
// 'large' and its alignment.
|
||||
unsigned getLargeArrayMinWidth() const { return LargeArrayMinWidth; }
|
||||
|
|
|
@ -1339,6 +1339,10 @@ public:
|
|||
BigEndian = false;
|
||||
LongDoubleFormat = &llvm::APFloat::x87DoubleExtended;
|
||||
}
|
||||
virtual unsigned getFloatEvalMethod() const {
|
||||
// X87 evaluates with 80 bits "long double" precision.
|
||||
return SSELevel == NoSSE ? 2 : 0;
|
||||
}
|
||||
virtual void getTargetBuiltins(const Builtin::Info *&Records,
|
||||
unsigned &NumRecords) const {
|
||||
Records = BuiltinInfo;
|
||||
|
|
|
@ -513,7 +513,7 @@ static void InitializePredefinedMacros(const TargetInfo &TI,
|
|||
}
|
||||
|
||||
// Macros to control C99 numerics and <float.h>
|
||||
Builder.defineMacro("__FLT_EVAL_METHOD__", "0");
|
||||
Builder.defineMacro("__FLT_EVAL_METHOD__", Twine(TI.getFloatEvalMethod()));
|
||||
Builder.defineMacro("__FLT_RADIX__", "2");
|
||||
int Dig = PickFP(&TI.getLongDoubleFormat(), -1/*FIXME*/, 17, 21, 33, 36);
|
||||
Builder.defineMacro("__DECIMAL_DIG__", Twine(Dig));
|
||||
|
|
|
@ -242,7 +242,7 @@
|
|||
// I386:#define __FLT_DENORM_MIN__ 1.40129846e-45F
|
||||
// I386:#define __FLT_DIG__ 6
|
||||
// I386:#define __FLT_EPSILON__ 1.19209290e-7F
|
||||
// I386:#define __FLT_EVAL_METHOD__ 0
|
||||
// I386:#define __FLT_EVAL_METHOD__ 2
|
||||
// I386:#define __FLT_HAS_DENORM__ 1
|
||||
// I386:#define __FLT_HAS_INFINITY__ 1
|
||||
// I386:#define __FLT_HAS_QUIET_NAN__ 1
|
||||
|
@ -315,7 +315,7 @@
|
|||
// I386:#define __i386__ 1
|
||||
// I386:#define i386 1
|
||||
//
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-pc-linux-gnu < /dev/null | FileCheck -check-prefix I386-LINUX %s
|
||||
// RUN: %clang_cc1 -E -dM -ffreestanding -triple=i386-pc-linux-gnu -target-cpu pentium4 < /dev/null | FileCheck -check-prefix I386-LINUX %s
|
||||
//
|
||||
// I386-LINUX:#define __CHAR16_TYPE__ unsigned short
|
||||
// I386-LINUX:#define __CHAR32_TYPE__ unsigned int
|
||||
|
|
Loading…
Reference in New Issue