//===--- LoweringOptions.def - Lowering options database ---------- C++ -*-===//
//
// 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
//
//===----------------------------------------------------------------------===//
///
/// \file
/// This file defines the lowering options. Users of this file must define
/// LOWERINGOPT macro to make use of this information.
///
//===----------------------------------------------------------------------===//

#ifndef LOWERINGOPT
#  error Define the LOWERINGOPT macro to handle lowering options
#endif

#ifndef ENUM_LOWERINGOPT
#  define ENUM_LOWERINGOPT(Name, Type, Bits, Default) \
LOWERINGOPT(Name, Bits, Default)
#endif

/// If true, lower transpose without a runtime call.
ENUM_LOWERINGOPT(OptimizeTranspose, unsigned, 1, 1)

/// If true, enable polymorphic type lowering feature. Off by default.
ENUM_LOWERINGOPT(PolymorphicTypeImpl, unsigned, 1, 0)

/// If true, lower to High level FIR before lowering to FIR. On by default.
ENUM_LOWERINGOPT(LowerToHighLevelFIR, unsigned, 1, 1)

/// If true, reverse PowerPC native vector element order.
ENUM_LOWERINGOPT(NoPPCNativeVecElemOrder, unsigned, 1, 0)

/// If true, assume external names will be suffixed with an underscore.
/// On by default.
ENUM_LOWERINGOPT(Underscoring, unsigned, 1, 1)

#undef LOWERINGOPT
#undef ENUM_LOWERINGOPT
