Files
gps/tools/local/circt/include/mlir/Dialect/LLVMIR/NVVMEnums.td
T
2026-07-12 11:01:51 +03:00

73 lines
3.3 KiB
TableGen

//===----------------------------------------------------------------------===//
//
// 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 contains the declaration of the NVVM IR enum attributes.
///
//===----------------------------------------------------------------------===//
#ifndef NVVMIR_ENUMS
#define NVVMIR_ENUMS
include "mlir/Dialect/LLVMIR/NVVMDialect.td"
include "mlir/IR/EnumAttr.td"
// Attributes for the floating point rounding modes supported by PTX
def FPRoundingModeNone : I32EnumAttrCase<"NONE", 0, "none">;
def FPRoundingModeRN : I32EnumAttrCase<"RN", 1, "rn">;
def FPRoundingModeRM : I32EnumAttrCase<"RM", 2, "rm">;
def FPRoundingModeRP : I32EnumAttrCase<"RP", 3, "rp">;
def FPRoundingModeRZ : I32EnumAttrCase<"RZ", 4, "rz">;
def FPRoundingModeRNA : I32EnumAttrCase<"RNA", 5, "rna">;
def FPRoundingModeRS : I32EnumAttrCase<"RS", 6, "rs">;
def FPRoundingMode : I32EnumAttr<"FPRoundingMode", "NVVM FPRoundingMode kind",
[FPRoundingModeNone, FPRoundingModeRN, FPRoundingModeRM,
FPRoundingModeRP, FPRoundingModeRZ, FPRoundingModeRNA, FPRoundingModeRS]> {
let genSpecializedAttr = 0;
let cppNamespace = "::mlir::NVVM";
}
def FPRoundingModeAttr : EnumAttr<NVVM_Dialect, FPRoundingMode, "fp_rnd_mode"> {
let assemblyFormat = "`<` $value `>`";
}
def SaturationModeNone : I32EnumAttrCase<"NONE", 0, "none">;
def SaturationModeFinite : I32EnumAttrCase<"SATFINITE", 1, "satfinite">;
def SaturationModeSat : I32EnumAttrCase<"SAT", 2, "sat">;
def SaturationMode : I32EnumAttr<"SaturationMode", "NVVM SaturationMode kind",
[SaturationModeNone, SaturationModeFinite, SaturationModeSat]> {
let genSpecializedAttr = 0;
let cppNamespace = "::mlir::NVVM";
}
def SaturationModeAttr : EnumAttr<NVVM_Dialect, SaturationMode, "sat_mode"> {
let summary = "Describes the saturation mode";
let description = [{
A `nvvm.sat_mode` attribute specifies the saturation mode for instructions
involving floating points or integers. It can be one of the following
values:
- `none`: No saturation is applied.
- `satfinite`: If the absolute value of input (ignoring sign) is greater
than the `MAX_NORM` of the specified destination format, then the result
is the sign-preserved `MAX_NORM` of the destination format and a positive
`MAX_NORM` in unsigned datatypes for which the destination sign is not
supported. If the input is `NaN`, then the result can be `NaN` or the
`MAX_NORM` of the destination format, depending on the format.
- `sat`: For integer destination types, this limits the value to `MININT..
MAXINT` and applies to both signed and unsigned integer datatypes. For
floating point destination types (applies to only `F16`, `F32`, and `F64`
types), this limits the value to the range `[0.0, 1.0]` and flushes NaN
results to positive zero.
[For more information, see PTX ISA](https://docs.nvidia.com/cuda/parallel-thread-execution/#data-movement-and-conversion-instructions-cvt)
}];
let assemblyFormat = "`<` $value `>`";
}
#endif // NVVMIR_ENUMS