From: Vladimir Stefanovic Date: Wed, 11 Jul 2018 12:45:25 +0000 (+0000) Subject: [mips] Add '-mvirt', '-mno-virt', '-mginv', '-mno-ginv' options X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e26d5569ae33a0c8e10008805b75698653829b3d;p=clang [mips] Add '-mvirt', '-mno-virt', '-mginv', '-mno-ginv' options '-mvirt'/'-mno-virt' enables/disables Virtualization ASE. '-mginv'/'-mno-ginv' enables/disables GINV (Global Invalidate) ASE. Differential revision: https://reviews.llvm.org/D48982 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@336798 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index 4a5aa904e4..5a7e5c9e4e 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -2216,6 +2216,10 @@ def mno_abicalls : Flag<["-"], "mno-abicalls">, Group, HelpText<"Disable SVR4-style position-independent code (Mips only)">; def mno_crc : Flag<["-"], "mno-crc">, Group, HelpText<"Disallow use of CRC instructions (Mips only)">; +def mvirt : Flag<["-"], "mvirt">, Group; +def mno_virt : Flag<["-"], "mno-virt">, Group; +def mginv : Flag<["-"], "mginv">, Group; +def mno_ginv : Flag<["-"], "mno-ginv">, Group; def mips1 : Flag<["-"], "mips1">, Alias, AliasArgs<["mips1"]>, Group, HelpText<"Equivalent to -march=mips1">, Flags<[HelpHidden]>; diff --git a/lib/Driver/ToolChains/Arch/Mips.cpp b/lib/Driver/ToolChains/Arch/Mips.cpp index 0c0e090719..6d814631d0 100644 --- a/lib/Driver/ToolChains/Arch/Mips.cpp +++ b/lib/Driver/ToolChains/Arch/Mips.cpp @@ -352,6 +352,10 @@ void mips::getMIPSTargetFeatures(const Driver &D, const llvm::Triple &Triple, AddTargetFeature(Args, Features, options::OPT_mmt, options::OPT_mno_mt, "mt"); AddTargetFeature(Args, Features, options::OPT_mcrc, options::OPT_mno_crc, "crc"); + AddTargetFeature(Args, Features, options::OPT_mvirt, options::OPT_mno_virt, + "virt"); + AddTargetFeature(Args, Features, options::OPT_mginv, options::OPT_mno_ginv, + "ginv"); if (Arg *A = Args.getLastArg(options::OPT_mindirect_jump_EQ)) { StringRef Val = StringRef(A->getValue()); diff --git a/test/Driver/mips-features.c b/test/Driver/mips-features.c index e90f3704f2..f63fb8de55 100644 --- a/test/Driver/mips-features.c +++ b/test/Driver/mips-features.c @@ -420,3 +420,27 @@ // RUN: -mcrc -mno-crc 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-NO-CRC %s // CHECK-NO-CRC: "-target-feature" "-crc" +// +// -mvirt +// RUN: %clang -target mips-unknown-linux-gnu -### -c %s \ +// RUN: -mno-virt -mvirt 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-VIRT %s +// CHECK-VIRT: "-target-feature" "+virt" +// +// -mno-virt +// RUN: %clang -target mips-unknown-linux-gnu -### -c %s \ +// RUN: -mvirt -mno-virt 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NO-VIRT %s +// CHECK-NO-VIRT: "-target-feature" "-virt" +// +// -mginv +// RUN: %clang -target mips-unknown-linux-gnu -### -c %s \ +// RUN: -mno-ginv -mginv 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-GINV %s +// CHECK-GINV: "-target-feature" "+ginv" +// +// -mno-ginv +// RUN: %clang -target mips-unknown-linux-gnu -### -c %s \ +// RUN: -mginv -mno-ginv 2>&1 \ +// RUN: | FileCheck --check-prefix=CHECK-NO-GINV %s +// CHECK-NO-GINV: "-target-feature" "-ginv"