================ @@ -1101,6 +1107,187 @@ inline void FPOptions::applyChanges(FPOptionsOverride FPO) { *this = FPO.applyOverrides(*this); } +// The three atomic code-generation options. +// The canonical (positive) names are: +// "remote_memory", "fine_grained_memory", and "ignore_denormal_mode". +// In attribute or command-line parsing, a token prefixed with "no_" inverts its +// value. +enum class AtomicOptionKind { + RemoteMemory, // true means remote memory is enabled. + FineGrainedMemory, // true means fine-grained memory is enabled. + IgnoreDenormalMode, // true means ignore floating-point denormals. + LANGOPT_ATOMIC_OPTION_LAST +}; + +struct AtomicOptions { + // Bitfields for each option. + unsigned remote_memory : 1; + unsigned fine_grained_memory : 1; + unsigned ignore_denormal_mode : 1; + + AtomicOptions() + : remote_memory(0), fine_grained_memory(0), ignore_denormal_mode(0) {} + + bool getOption(AtomicOptionKind Kind) const { + switch (Kind) { + case AtomicOptionKind::RemoteMemory: + return remote_memory; + case AtomicOptionKind::FineGrainedMemory: + return fine_grained_memory; + case AtomicOptionKind::IgnoreDenormalMode: + return ignore_denormal_mode; + default: + llvm_unreachable("Invalid AtomicOptionKind"); + } + } + + void setOption(AtomicOptionKind Kind, bool Value) { + switch (Kind) { + case AtomicOptionKind::RemoteMemory: + remote_memory = Value; + break; + case AtomicOptionKind::FineGrainedMemory: + fine_grained_memory = Value; + break; + case AtomicOptionKind::IgnoreDenormalMode: + ignore_denormal_mode = Value; + break; + default: ---------------- yxsamliu wrote:
will do https://github.com/llvm/llvm-project/pull/114841 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits