[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
This revision was automatically updated to reflect the committed changes. Closed by commit rL311669: [mips] Introducing option -mabs=[legacy/2008] (authored by petarj). Changed prior to commit: https://reviews.llvm.org/D35982?vs=112534=112571#toc Repository: rL LLVM https://reviews.llvm.org/D35982 Files: cfe/trunk/include/clang/Basic/DiagnosticDriverKinds.td cfe/trunk/include/clang/Basic/DiagnosticGroups.td cfe/trunk/include/clang/Driver/Options.td cfe/trunk/lib/Basic/Targets/Mips.cpp cfe/trunk/lib/Basic/Targets/Mips.h cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp cfe/trunk/test/Driver/mips-features.c cfe/trunk/test/Driver/mips-mabs-warning.c cfe/trunk/test/Preprocessor/init.c Index: cfe/trunk/lib/Basic/Targets/Mips.cpp === --- cfe/trunk/lib/Basic/Targets/Mips.cpp +++ cfe/trunk/lib/Basic/Targets/Mips.cpp @@ -149,6 +149,9 @@ if (IsNan2008) Builder.defineMacro("__mips_nan2008", Twine(1)); + if (IsAbs2008) +Builder.defineMacro("__mips_abs2008", Twine(1)); + switch (DspRev) { default: break; Index: cfe/trunk/lib/Basic/Targets/Mips.h === --- cfe/trunk/lib/Basic/Targets/Mips.h +++ cfe/trunk/lib/Basic/Targets/Mips.h @@ -46,6 +46,7 @@ bool IsMips16; bool IsMicromips; bool IsNan2008; + bool IsAbs2008; bool IsSingleFloat; bool IsNoABICalls; bool CanUseBSDABICalls; @@ -61,9 +62,9 @@ public: MipsTargetInfo(const llvm::Triple , const TargetOptions &) : TargetInfo(Triple), IsMips16(false), IsMicromips(false), -IsNan2008(false), IsSingleFloat(false), IsNoABICalls(false), -CanUseBSDABICalls(false), FloatABI(HardFloat), DspRev(NoDSP), -HasMSA(false), DisableMadd4(false), HasFP64(false) { +IsNan2008(false), IsAbs2008(false), IsSingleFloat(false), +IsNoABICalls(false), CanUseBSDABICalls(false), FloatABI(HardFloat), +DspRev(NoDSP), HasMSA(false), DisableMadd4(false), HasFP64(false) { TheCXXABI.set(TargetCXXABI::GenericMIPS); setABI((getTriple().getArch() == llvm::Triple::mips || @@ -300,6 +301,7 @@ IsMips16 = false; IsMicromips = false; IsNan2008 = isIEEE754_2008Default(); +IsAbs2008 = isIEEE754_2008Default(); IsSingleFloat = false; FloatABI = HardFloat; DspRev = NoDSP; @@ -330,6 +332,10 @@ IsNan2008 = true; else if (Feature == "-nan2008") IsNan2008 = false; + else if (Feature == "+abs2008") +IsAbs2008 = true; + else if (Feature == "-abs2008") +IsAbs2008 = false; else if (Feature == "+noabicalls") IsNoABICalls = true; } Index: cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp === --- cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp +++ cfe/trunk/lib/Driver/ToolChains/Arch/Mips.cpp @@ -283,6 +283,28 @@ << A->getOption().getName() << Val; } + if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) { +StringRef Val = StringRef(A->getValue()); +if (Val == "2008") { + if (mips::getIEEE754Standard(CPUName) & mips::Std2008) { +Features.push_back("+abs2008"); + } else { +Features.push_back("-abs2008"); +D.Diag(diag::warn_target_unsupported_abs2008) << CPUName; + } +} else if (Val == "legacy") { + if (mips::getIEEE754Standard(CPUName) & mips::Legacy) { +Features.push_back("-abs2008"); + } else { +Features.push_back("+abs2008"); +D.Diag(diag::warn_target_unsupported_abslegacy) << CPUName; + } +} else { + D.Diag(diag::err_drv_unsupported_option_argument) + << A->getOption().getName() << Val; +} + } + AddTargetFeature(Args, Features, options::OPT_msingle_float, options::OPT_mdouble_float, "single-float"); AddTargetFeature(Args, Features, options::OPT_mips16, options::OPT_mno_mips16, Index: cfe/trunk/include/clang/Driver/Options.td === --- cfe/trunk/include/clang/Driver/Options.td +++ cfe/trunk/include/clang/Driver/Options.td @@ -2066,6 +2066,7 @@ HelpText<"Do not place constants in the .rodata section instead of the " ".sdata if they meet the -G threshold (MIPS)">; def mnan_EQ : Joined<["-"], "mnan=">, Group; +def mabs_EQ : Joined<["-"], "mabs=">, Group; def mabicalls : Flag<["-"], "mabicalls">, Group, HelpText<"Enable SVR4-style position-independent code (Mips only)">; def mno_abicalls : Flag<["-"], "mno-abicalls">, Group, Index: cfe/trunk/include/clang/Basic/DiagnosticGroups.td === --- cfe/trunk/include/clang/Basic/DiagnosticGroups.td +++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td @@ -61,6 +61,7 @@ def DoublePromotion : DiagGroup<"double-promotion">; def EnumTooLarge : DiagGroup<"enum-too-large">; def
[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
abeserminji updated this revision to Diff 112534. abeserminji added a comment. Added test //test/Driver/mips-mabs-warning.c// as suggested in comments. Repository: rL LLVM https://reviews.llvm.org/D35982 Files: include/clang/Basic/DiagnosticDriverKinds.td include/clang/Basic/DiagnosticGroups.td include/clang/Driver/Options.td lib/Basic/Targets/Mips.cpp lib/Basic/Targets/Mips.h lib/Driver/ToolChains/Arch/Mips.cpp test/Driver/mips-features.c test/Driver/mips-mabs-warning.c test/Preprocessor/init.c Index: test/Preprocessor/init.c === --- test/Preprocessor/init.c +++ test/Preprocessor/init.c @@ -4860,6 +4860,16 @@ // RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-NAN2008 %s // NOMIPS-NAN2008-NOT:#define __mips_nan2008 1 // +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature +abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix MIPS-ABS2008 %s +// MIPS-ABS2008:#define __mips_abs2008 1 +// +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature -abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-ABS2008 %s +// NOMIPS-ABS2008-NOT:#define __mips_abs2008 1 +// // RUN: %clang_cc1 -target-feature -fp64 \ // RUN: -E -dM -triple=mips-none-none < /dev/null \ // RUN: | FileCheck -match-full-lines -check-prefix MIPS32-MFP32 %s Index: test/Driver/mips-mabs-warning.c === --- /dev/null +++ test/Driver/mips-mabs-warning.c @@ -0,0 +1,6 @@ +// REQUIRES: mips-registered-target +// RUN: %clang -c -target mips-unknown-gnu -mcpu=mips32 -mabs=2008 %s 2>&1 | FileCheck -check-prefix=NO2008 %s +// NO2008: warning: ignoring '-mabs=2008' option because the 'mips32' architecture does not support it [-Wunsupported-abs] + +// RUN: %clang -c -target mips-unknown-gnu -mcpu=mips32r6 -mabs=legacy %s 2>&1 | FileCheck -check-prefix=NOLEGACY %s +// NOLEGACY: warning: ignoring '-mabs=legacy' option because the 'mips32r6' architecture does not support it [-Wunsupported-abs] Index: test/Driver/mips-features.c === --- test/Driver/mips-features.c +++ test/Driver/mips-features.c @@ -221,6 +221,31 @@ // RUN: | FileCheck --check-prefix=CHECK-NANLEGACY %s // CHECK-NANLEGACY: "-target-feature" "-nan2008" // +// -mabs=2008 on pre R2 +// RUN: %clang -target mips-linux-gnu -march=mips32 -### -c %s \ +// RUN: -mabs=2008 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABSLEGACY %s +// +// -mabs=2008 +// RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \ +// RUN: -mabs=2008 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABS2008 %s +// +// -mabs=legacy +// RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \ +// RUN: -mabs=legacy 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABSLEGACY %s +// +// -mabs=legacy on R6 +// RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \ +// RUN: -mabs=legacy 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABS2008 %s +// +// CHECK-ABSLEGACY: "-target-feature" "-abs2008" +// CHECK-ABSLEGACY-NOT: "-target-feature" "+abs2008" +// CHECK-ABS2008: "-target-feature" "+abs2008" +// CHECK-ABS2008-NOT: "-target-feature" "-abs2008" +// // -mcompact-branches=never // RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \ // RUN: -mcompact-branches=never 2>&1 \ Index: lib/Driver/ToolChains/Arch/Mips.cpp === --- lib/Driver/ToolChains/Arch/Mips.cpp +++ lib/Driver/ToolChains/Arch/Mips.cpp @@ -283,6 +283,28 @@ << A->getOption().getName() << Val; } + if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) { +StringRef Val = StringRef(A->getValue()); +if (Val == "2008") { + if (mips::getIEEE754Standard(CPUName) & mips::Std2008) { +Features.push_back("+abs2008"); + } else { +Features.push_back("-abs2008"); +D.Diag(diag::warn_target_unsupported_abs2008) << CPUName; + } +} else if (Val == "legacy") { + if (mips::getIEEE754Standard(CPUName) & mips::Legacy) { +Features.push_back("-abs2008"); + } else { +Features.push_back("+abs2008"); +D.Diag(diag::warn_target_unsupported_abslegacy) << CPUName; + } +} else { + D.Diag(diag::err_drv_unsupported_option_argument) + << A->getOption().getName() << Val; +} + } + AddTargetFeature(Args, Features, options::OPT_msingle_float, options::OPT_mdouble_float, "single-float"); AddTargetFeature(Args, Features, options::OPT_mips16, options::OPT_mno_mips16, Index: lib/Basic/Targets/Mips.h === --- lib/Basic/Targets/Mips.h +++ lib/Basic/Targets/Mips.h @@ -46,6 +46,7 @@ bool IsMips16;
[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
sdardis accepted this revision. sdardis added a comment. This revision is now accepted and ready to land. LGTM with a test for warnings. See test/Driver/mips-abicalls.c for reference. Repository: rL LLVM https://reviews.llvm.org/D35982 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
abeserminji updated this revision to Diff 111492. abeserminji added a comment. On @atanasyan 's suggestion, part of the patch is separated here https://reviews.llvm.org/D36824. Comments resolved. Repository: rL LLVM https://reviews.llvm.org/D35982 Files: include/clang/Basic/DiagnosticDriverKinds.td include/clang/Basic/DiagnosticGroups.td include/clang/Driver/Options.td lib/Basic/Targets/Mips.cpp lib/Basic/Targets/Mips.h lib/Driver/ToolChains/Arch/Mips.cpp test/Driver/mips-features.c test/Preprocessor/init.c Index: test/Preprocessor/init.c === --- test/Preprocessor/init.c +++ test/Preprocessor/init.c @@ -4860,6 +4860,16 @@ // RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-NAN2008 %s // NOMIPS-NAN2008-NOT:#define __mips_nan2008 1 // +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature +abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix MIPS-ABS2008 %s +// MIPS-ABS2008:#define __mips_abs2008 1 +// +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature -abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-ABS2008 %s +// NOMIPS-ABS2008-NOT:#define __mips_abs2008 1 +// // RUN: %clang_cc1 -target-feature -fp64 \ // RUN: -E -dM -triple=mips-none-none < /dev/null \ // RUN: | FileCheck -match-full-lines -check-prefix MIPS32-MFP32 %s Index: test/Driver/mips-features.c === --- test/Driver/mips-features.c +++ test/Driver/mips-features.c @@ -221,6 +221,31 @@ // RUN: | FileCheck --check-prefix=CHECK-NANLEGACY %s // CHECK-NANLEGACY: "-target-feature" "-nan2008" // +// -mabs=2008 on pre R2 +// RUN: %clang -target mips-linux-gnu -march=mips32 -### -c %s \ +// RUN: -mabs=2008 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABSLEGACY %s +// +// -mabs=2008 +// RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \ +// RUN: -mabs=2008 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABS2008 %s +// +// -mabs=legacy +// RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \ +// RUN: -mabs=legacy 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABSLEGACY %s +// +// -mabs=legacy on R6 +// RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \ +// RUN: -mabs=legacy 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABS2008 %s +// +// CHECK-ABSLEGACY: "-target-feature" "-abs2008" +// CHECK-ABSLEGACY-NOT: "-target-feature" "+abs2008" +// CHECK-ABS2008: "-target-feature" "+abs2008" +// CHECK-ABS2008-NOT: "-target-feature" "-abs2008" +// // -mcompact-branches=never // RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \ // RUN: -mcompact-branches=never 2>&1 \ Index: lib/Driver/ToolChains/Arch/Mips.cpp === --- lib/Driver/ToolChains/Arch/Mips.cpp +++ lib/Driver/ToolChains/Arch/Mips.cpp @@ -284,6 +284,28 @@ << A->getOption().getName() << Val; } + if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) { +StringRef Val = StringRef(A->getValue()); +if (Val == "2008") { + if(mips::getIEEE754Standard(CPUName) & mips::Std2008) { +Features.push_back("+abs2008"); + } else { +Features.push_back("-abs2008"); +D.Diag(diag::warn_target_unsupported_abs2008) << CPUName; + } +} else if (Val == "legacy") { + if(mips::getIEEE754Standard(CPUName) & mips::Legacy) { +Features.push_back("-abs2008"); + } else { +Features.push_back("+abs2008"); +D.Diag(diag::warn_target_unsupported_abslegacy) << CPUName; + } +} else { + D.Diag(diag::err_drv_unsupported_option_argument) +<< A->getOption().getName() << Val; +} + } + AddTargetFeature(Args, Features, options::OPT_msingle_float, options::OPT_mdouble_float, "single-float"); AddTargetFeature(Args, Features, options::OPT_mips16, options::OPT_mno_mips16, Index: lib/Basic/Targets/Mips.h === --- lib/Basic/Targets/Mips.h +++ lib/Basic/Targets/Mips.h @@ -46,6 +46,7 @@ bool IsMips16; bool IsMicromips; bool IsNan2008; + bool IsAbs2008; bool IsSingleFloat; bool IsNoABICalls; bool CanUseBSDABICalls; @@ -61,9 +62,9 @@ public: MipsTargetInfo(const llvm::Triple , const TargetOptions &) : TargetInfo(Triple), IsMips16(false), IsMicromips(false), -IsNan2008(false), IsSingleFloat(false), IsNoABICalls(false), -CanUseBSDABICalls(false), FloatABI(HardFloat), DspRev(NoDSP), -HasMSA(false), DisableMadd4(false), HasFP64(false) { +IsNan2008(false), IsAbs2008(false), IsSingleFloat(false), +IsNoABICalls(false), CanUseBSDABICalls(false), FloatABI(HardFloat), +DspRev(NoDSP), HasMSA(false),
[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
sdardis requested changes to this revision. sdardis added a comment. This revision now requires changes to proceed. Follow @atanasyan 's suggestion and post a patch that renames that enum along with other changes. One comment inlined. Comment at: clang/Basic/DiagnosticDriverKinds.td:282-287 +def warn_target_unsupported_abslegacy : Warning< + "ignoring '-mabs=legacy' option because the '%0' architecture does not support it">, + InGroup; +def warn_target_unsupported_abs2008 : Warning< + "ignoring '-mabs=2008' option because the '%0' architecture does not support it">, + InGroup; These require tests. You should test that abs2008 is ignored pre-r2, legacy and abs2008 is accepted up to r5 and legacy is ignored for R6. Repository: rL LLVM https://reviews.llvm.org/D35982 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
atanasyan added a comment. Is it possible to factor out Nan => IEEE754 renaming into the separate patch? Repository: rL LLVM https://reviews.llvm.org/D35982 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D35982: [mips] Introducing option -mabs=[legacy/2008]
abeserminji created this revision. Herald added a subscriber: arichardson. In patch https://reviews.llvm.org/D3274 using abs.[ds] instruction is forced, as they should behave in accordance with flags Has2008 and ABS2008. Unfortunately for revisions prior mips32r6 and mips64r6, abs.[ds] is not generating correct result when working with NaNs. To generate a sequence which always produce a correct result but also to allow user more control on how his code is compiled, option -mabs is added where user can choose legacy or 2008. By default legacy mode is used on revisions prior R6. Mips32r6 and mips64r6 use abs2008 mode by default. This is Clang part of patch. LLVM part can be found here: https://reviews.llvm.org/D35983 Repository: rL LLVM https://reviews.llvm.org/D35982 Files: Basic/Targets/Mips.cpp Basic/Targets/Mips.h Driver/ToolChains/Arch/Mips.cpp Driver/ToolChains/Arch/Mips.h Driver/mips-features.c Preprocessor/init.c clang/Basic/DiagnosticDriverKinds.td clang/Basic/DiagnosticGroups.td clang/Driver/Options.td Index: Preprocessor/init.c === --- Preprocessor/init.c +++ Preprocessor/init.c @@ -4699,6 +4699,16 @@ // RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-NAN2008 %s // NOMIPS-NAN2008-NOT:#define __mips_nan2008 1 // +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature +abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix MIPS-ABS2008 %s +// MIPS-ABS2008:#define __mips_abs2008 1 +// +// RUN: %clang_cc1 -target-cpu mips32r3 -target-feature -abs2008 \ +// RUN: -E -dM -triple=mips-none-none < /dev/null \ +// RUN: | FileCheck -match-full-lines -check-prefix NOMIPS-ABS2008 %s +// NOMIPS-ABS2008-NOT:#define __mips_abs2008 1 +// // RUN: %clang_cc1 -target-feature -fp64 \ // RUN: -E -dM -triple=mips-none-none < /dev/null \ // RUN: | FileCheck -match-full-lines -check-prefix MIPS32-MFP32 %s Index: Driver/mips-features.c === --- Driver/mips-features.c +++ Driver/mips-features.c @@ -183,6 +183,18 @@ // RUN: | FileCheck --check-prefix=CHECK-NANLEGACY %s // CHECK-NANLEGACY: "-target-feature" "-nan2008" // +// -mabs=2008 +// RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \ +// RUN: -mabs=2008 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABS2008 %s +// CHECK-ABS2008: "-target-feature" "+abs2008" +// +// -mabs=legacy +// RUN: %clang -target mips-linux-gnu -march=mips32r3 -### -c %s \ +// RUN: -mabs=legacy 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-ABSLEGACY %s +// CHECK-ABSLEGACY: "-target-feature" "-abs2008" +// // -mcompact-branches=never // RUN: %clang -target mips-linux-gnu -march=mips32r6 -### -c %s \ // RUN: -mcompact-branches=never 2>&1 \ Index: Driver/ToolChains/Arch/Mips.h === --- Driver/ToolChains/Arch/Mips.h +++ Driver/ToolChains/Arch/Mips.h @@ -24,15 +24,15 @@ bool isMipsArch(llvm::Triple::ArchType Arch); namespace mips { -typedef enum { NanLegacy = 1, Nan2008 = 2 } NanEncoding; +typedef enum { Legacy = 1, Std2008 = 2 } IEEE754Standard; enum class FloatABI { Invalid, Soft, Hard, }; -NanEncoding getSupportedNanEncoding(StringRef ); +IEEE754Standard getIEEE754Standard(StringRef ); bool hasCompactBranches(StringRef ); void getMipsCPUAndABI(const llvm::opt::ArgList , const llvm::Triple , StringRef , Index: Driver/ToolChains/Arch/Mips.cpp === --- Driver/ToolChains/Arch/Mips.cpp +++ Driver/ToolChains/Arch/Mips.cpp @@ -244,14 +244,14 @@ if (Arg *A = Args.getLastArg(options::OPT_mnan_EQ)) { StringRef Val = StringRef(A->getValue()); if (Val == "2008") { - if (mips::getSupportedNanEncoding(CPUName) & mips::Nan2008) + if (mips::getIEEE754Standard(CPUName) & mips::Std2008) Features.push_back("+nan2008"); else { Features.push_back("-nan2008"); D.Diag(diag::warn_target_unsupported_nan2008) << CPUName; } } else if (Val == "legacy") { - if (mips::getSupportedNanEncoding(CPUName) & mips::NanLegacy) + if (mips::getIEEE754Standard(CPUName) & mips::Legacy) Features.push_back("-nan2008"); else { Features.push_back("+nan2008"); @@ -262,6 +262,28 @@ << A->getOption().getName() << Val; } + if (Arg *A = Args.getLastArg(options::OPT_mabs_EQ)) { +StringRef Val = StringRef(A->getValue()); +if (Val == "2008") { + if(mips::getIEEE754Standard(CPUName) & mips::Std2008) { +Features.push_back("+abs2008"); + } else { +Features.push_back("-abs2008"); +D.Diag(diag::warn_target_unsupported_abs2008) << CPUName; + } +} else if (Val == "legacy") { + if(mips::getIEEE754Standard(CPUName) & mips::Legacy) {