From f9f9c4a083b4e268caac3feff3a848df7a4f17cb Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 13 Sep 2023 15:07:01 -0700 Subject: [PATCH] clang bindings: fix APFloatBaseSemantics enum This wasn't caught due to missing C++ static asserts for this enum. This commit adds them and fixes the enum. --- src/clang.zig | 4 ++++ src/zig_clang.cpp | 14 ++++++++++++++ src/zig_clang.h | 9 ++++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/clang.zig b/src/clang.zig index 7c93568290..704f94131d 100644 --- a/src/clang.zig +++ b/src/clang.zig @@ -113,7 +113,11 @@ pub const APFloatBaseSemantics = enum(c_int) { IEEEquad, PPCDoubleDouble, Float8E5M2, + Float8E5M2FNUZ, Float8E4M3FN, + Float8E4M3FNUZ, + Float8E4M3B11FNUZ, + FloatTF32, x87DoubleExtended, }; diff --git a/src/zig_clang.cpp b/src/zig_clang.cpp index fe91d5022c..015e1a42c7 100644 --- a/src/zig_clang.cpp +++ b/src/zig_clang.cpp @@ -3986,3 +3986,17 @@ bool ZigClangIsLLVMUsingSeparateLibcxx() { return EC.category() != std::generic_category(); } +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEhalf == llvm::APFloatBase::S_IEEEhalf, ""); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_BFloat == llvm::APFloatBase::S_BFloat); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEsingle == llvm::APFloatBase::S_IEEEsingle); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEdouble == llvm::APFloatBase::S_IEEEdouble); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_IEEEquad == llvm::APFloatBase::S_IEEEquad); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_PPCDoubleDouble == llvm::APFloatBase::S_PPCDoubleDouble); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E5M2 == llvm::APFloatBase::S_Float8E5M2); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ == llvm::APFloatBase::S_Float8E5M2FNUZ); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3FN == llvm::APFloatBase::S_Float8E4M3FN); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ == llvm::APFloatBase::S_Float8E4M3FNUZ); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ == llvm::APFloatBase::S_Float8E4M3B11FNUZ); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_FloatTF32 == llvm::APFloatBase::S_FloatTF32); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_x87DoubleExtended == llvm::APFloatBase::S_x87DoubleExtended); +static_assert((llvm::APFloatBase::Semantics)ZigClangAPFloatBase_Semantics_MaxSemantics == llvm::APFloatBase::S_MaxSemantics); diff --git a/src/zig_clang.h b/src/zig_clang.h index f15166d834..ff58d7bde8 100644 --- a/src/zig_clang.h +++ b/src/zig_clang.h @@ -1219,9 +1219,16 @@ enum ZigClangAPFloatBase_Semantics { ZigClangAPFloatBase_Semantics_BFloat, ZigClangAPFloatBase_Semantics_IEEEsingle, ZigClangAPFloatBase_Semantics_IEEEdouble, - ZigClangAPFloatBase_Semantics_x87DoubleExtended, ZigClangAPFloatBase_Semantics_IEEEquad, ZigClangAPFloatBase_Semantics_PPCDoubleDouble, + ZigClangAPFloatBase_Semantics_Float8E5M2, + ZigClangAPFloatBase_Semantics_Float8E5M2FNUZ, + ZigClangAPFloatBase_Semantics_Float8E4M3FN, + ZigClangAPFloatBase_Semantics_Float8E4M3FNUZ, + ZigClangAPFloatBase_Semantics_Float8E4M3B11FNUZ, + ZigClangAPFloatBase_Semantics_FloatTF32, + ZigClangAPFloatBase_Semantics_x87DoubleExtended, + ZigClangAPFloatBase_Semantics_MaxSemantics = ZigClangAPFloatBase_Semantics_x87DoubleExtended, }; enum ZigClangStringLiteral_StringKind {