blob: 22e0c8e652b538aa8d46f6be13c0f233951bfca8 [file] [edit]
//===----------------------------------------------------------------------===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
include "llvm/Option/LibraryOptions.td"
def MipsOptions : OptionsStruct<prefix = "mips-">;
// Mips16ISelLowering.cpp
defm : BoolField<"mips16-dont-expand-cond-pseudo", "false",
"Don't expand conditional move related pseudos for Mips 16">;
// MipsBranchExpansion.cpp
defm : BoolField<"force-mips-long-branch", "false",
"MIPS: Expand all branches to long format">;
defm : BoolField<"skip-mips-long-branch", "false",
"MIPS: Skip branch expansion pass">;
// MipsConstantIslandPass.cpp
// FIXME: This option should be removed once it has received sufficient testing.
defm : BoolField<"mips-align-constant-islands", "true",
"Align constant islands in code">;
// For testing purposes we tell it to not use relaxed load forms so that it will
// split blocks.
defm : BoolField<"mips-constant-islands-no-load-relaxation", "false",
"Don't relax loads to long loads - for testing purposes">;
// Rather than do make check tests with huge amounts of code, we force the test
// to use this amount.
defm : ValueField<"mips-constant-islands-small-offset", "int", "0",
"Make small offsets be this amount for testing purposes">;
// MipsDelaySlotFiller.cpp
defm : BoolField<"disable-mips-delay-filler", "false",
"Fill all delay slots with NOPs">;
defm : BoolField<"disable-mips-df-backward-search", "false",
"Disallow MIPS delay filler to search backward">;
defm : BoolField<"disable-mips-df-forward-search", "true",
"Disallow MIPS delay filler to search forward">;
defm : BoolField<"disable-mips-df-succbb-search", "true",
"Disallow MIPS delay filler to search successor basic blocks">;
// MipsISelLowering.cpp
defm : BoolField<"mips-tail-calls", "false",
"MIPS: permit tail calls">;
// MipsOptimizePICCall.cpp
defm : BoolField<"mips-erase-gp-opnd", "true",
"Erase GP Operand">;
defm : BoolField<"mips-load-target-from-got", "true",
"Load target address from GOT">;
// MipsOs16.cpp
defm : ValueField<"mips32-function-mask", "StringRef", "",
"Force function to be mips32">;
// MipsSEISelLowering.cpp
defm : BoolField<"mno-ldc1-sdc1", "false",
"Expand double precision loads and stores to their single precision counterparts">;
// MipsSubtarget.cpp
defm : BoolField<"mgpopt", "false",
"Enable gp-relative addressing of mips small data items">;
defm : EnumField<"mips-compact-branches", "CompactBranchPolicy", "CompactBranchPolicy::Optimal",
"never,optimal,always", ["CompactBranchPolicy::Never", "CompactBranchPolicy::Optimal", "CompactBranchPolicy::Always"],
"MIPS Specific: Compact branch policy">;
defm : BoolField<"mips16-constant-islands", "true",
"Enable mips16 constant islands">;
defm : BoolField<"mips16-hard-float", "false",
"Enable mips16 hard float">;
// MipsTargetMachine.cpp
defm : BoolField<"mfix4300", "false",
"Enable the VR4300 mulmul bug fix">;
defm : BoolField<"mips-os16", "false",
"Compile all functions that don't use floating point as Mips 16">;
// MipsTargetObjectFile.cpp
defm : BoolField<"membedded-data", "false",
"MIPS: Try to allocate variables in the following sections if possible: .rodata, .sdata, .data">;
defm : BoolField<"mextern-sdata", "true",
"MIPS: Use gp_rel for data that is not defined by the current object">;
defm : ValueField<"mips-ssection-threshold", "unsigned", "8",
"Small data and bss section threshold size">;
defm : BoolField<"mlocal-sdata", "true",
"MIPS: Use gp_rel for object-local data">;