diff options
Diffstat (limited to 'tools/llc/llc.cpp')
-rw-r--r-- | tools/llc/llc.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/tools/llc/llc.cpp b/tools/llc/llc.cpp index b303cec..e08bad9 100644 --- a/tools/llc/llc.cpp +++ b/tools/llc/llc.cpp @@ -156,11 +156,6 @@ DisableFPElimNonLeaf("disable-non-leaf-fp-elim", cl::init(false)); static cl::opt<bool> -EnableExcessPrecision("enable-excess-fp-precision", - cl::desc("Enable optimizations that may increase FP precision"), - cl::init(false)); - -static cl::opt<bool> EnableUnsafeFPMath("enable-unsafe-fp-math", cl::desc("Enable optimizations that may decrease FP precision"), cl::init(false)); @@ -199,6 +194,19 @@ FloatABIForCalls("float-abi", "Hard float ABI (uses FP registers)"), clEnumValEnd)); +static cl::opt<llvm::FPOpFusion::FPOpFusionMode> +FuseFPOps("fuse-fp-ops", + cl::desc("Enable aggresive formation of fused FP ops"), + cl::init(FPOpFusion::Standard), + cl::values( + clEnumValN(FPOpFusion::Fast, "fast", + "Fuse FP ops whenever profitable"), + clEnumValN(FPOpFusion::Standard, "standard", + "Only fuse 'blessed' FP ops."), + clEnumValN(FPOpFusion::Strict, "strict", + "Only fuse FP ops when the result won't be effected."), + clEnumValEnd)); + static cl::opt<bool> DontPlaceZerosInBSS("nozero-initialized-in-bss", cl::desc("Don't place zero-initialized symbols into bss section"), @@ -404,7 +412,7 @@ int main(int argc, char **argv) { Options.LessPreciseFPMADOption = EnableFPMAD; Options.NoFramePointerElim = DisableFPElim; Options.NoFramePointerElimNonLeaf = DisableFPElimNonLeaf; - Options.AllowExcessFPPrecision = EnableExcessPrecision; + Options.AllowFPOpFusion = FuseFPOps; Options.UnsafeFPMath = EnableUnsafeFPMath; Options.NoInfsFPMath = EnableNoInfsFPMath; Options.NoNaNsFPMath = EnableNoNaNsFPMath; |