aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/TargetMachine.cpp
diff options
context:
space:
mode:
authorMon P Wang <wangmp@apple.com>2009-03-20 05:06:58 +0000
committerMon P Wang <wangmp@apple.com>2009-03-20 05:06:58 +0000
commitbc65ca8de591e278fc613b5dc0e178b2ddcd215e (patch)
tree32026130fb84b4b803a977697ae45e60b80f87e1 /lib/Target/TargetMachine.cpp
parent654c98c4f39591132027835a52dee4993618de51 (diff)
downloadexternal_llvm-bc65ca8de591e278fc613b5dc0e178b2ddcd215e.zip
external_llvm-bc65ca8de591e278fc613b5dc0e178b2ddcd215e.tar.gz
external_llvm-bc65ca8de591e278fc613b5dc0e178b2ddcd215e.tar.bz2
Added option to enable generating less precise mad (multiply addition)
for those architectures that support the instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67363 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/TargetMachine.cpp')
-rw-r--r--lib/Target/TargetMachine.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/Target/TargetMachine.cpp b/lib/Target/TargetMachine.cpp
index 2aed083..870fe61 100644
--- a/lib/Target/TargetMachine.cpp
+++ b/lib/Target/TargetMachine.cpp
@@ -22,6 +22,7 @@ using namespace llvm;
//
namespace llvm {
+ bool LessPreciseFPMADOption;
bool PrintMachineCode;
bool NoFramePointerElim;
bool NoExcessFPPrecision;
@@ -59,6 +60,11 @@ DisableExcessPrecision("disable-excess-fp-precision",
cl::location(NoExcessFPPrecision),
cl::init(false));
static cl::opt<bool, true>
+EnableFPMAD("enable-fp-mad",
+ cl::desc("Enable less precise MAD instructions to be generated"),
+ cl::location(LessPreciseFPMADOption),
+ cl::init(false));
+static cl::opt<bool, true>
EnableUnsafeFPMath("enable-unsafe-fp-math",
cl::desc("Enable optimizations that may decrease FP precision"),
cl::location(UnsafeFPMath),
@@ -198,6 +204,12 @@ void TargetMachine::setCodeModel(CodeModel::Model Model) {
}
namespace llvm {
+ /// LessPreciseFPMAD - This flag return true when -enable-fp-mad option
+ /// is specified on the command line. When this flag is off(default), the
+ /// code generator is not allowed to generate mad (multiply add) if the
+ /// result is "less precise" than doing those operations individually.
+ bool LessPreciseFPMAD() { return UnsafeFPMath || LessPreciseFPMADOption; }
+
/// FiniteOnlyFPMath - This returns true when the -enable-finite-only-fp-math
/// option is specified on the command line. If this returns false (default),
/// the code generator is not allowed to assume that FP arithmetic arguments