[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2023-01-25 Thread Timm Bäder via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG62f43c3eae24: [clang][Interp] Support floating-point values (authored by tbaeder). Changed prior to commit:

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-19 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff accepted this revision. sepavloff added a comment. This revision is now accepted and ready to land. LGTM. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 483802. tbaeder marked 2 inline comments as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-17 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder marked 5 inline comments as done. tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:607 +if (*LT == PT_Float) { + if (!this->emitAddf(getRoundingMode(E), E)) +return false; sepavloff wrote: > As

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-15 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:607 +if (*LT == PT_Float) { + if (!this->emitAddf(getRoundingMode(E), E)) +return false; As discussed previously, compound assign operator cannot be

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-08 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 481190. tbaeder added a comment. Remove conversion in `Floating::add()` and tests that relied on it. Compound assignment operators can be properly implemented later. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-07 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:109 +Floating RHS = B; +if (!A.compatibleWith(B)) + RHS = B.toSemantics(A, RM); tbaeder wrote: > sepavloff wrote: > > Do we really need this check? In AST operands of

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-05 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. Ping CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-01 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 479262. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-01 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:152 + case CK_FloatingToIntegral: { +llvm::RoundingMode RM = getRoundingMode(CE); +Optional ToT = classify(CE->getType()); sepavloff wrote: > tbaeder wrote: > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-01 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:152 + case CK_FloatingToIntegral: { +llvm::RoundingMode RM = getRoundingMode(CE); +Optional ToT = classify(CE->getType()); tbaeder wrote: > sepavloff wrote: > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-12-01 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:152 + case CK_FloatingToIntegral: { +llvm::RoundingMode RM = getRoundingMode(CE); +Optional ToT = classify(CE->getType()); sepavloff wrote: > According to C standard

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-30 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:152 + case CK_FloatingToIntegral: { +llvm::RoundingMode RM = getRoundingMode(CE); +Optional ToT = classify(CE->getType()); According to C standard (6.3.1.4p1): ```

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-24 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 477862. tbaeder marked 10 inline comments as done. tbaeder added a comment. Remove some questionable (but unused) `Floating` API that didn't take floating-point semantics into account. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-23 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. In D134859#3945709 , @sepavloff wrote: > In D134859#3943926 , @tbaeder wrote: > >> FYI, I noticed the way the floating values are serialized doesn't work if >> the `APFloat`

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-22 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added a comment. In D134859#3943926 , @tbaeder wrote: > FYI, I noticed the way the floating values are serialized doesn't work if the > `APFloat` heap-allocated anything; those values aren't preserved through > (de)serialization of course. >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-22 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. FYI, I noticed the way the floating values are serialized doesn't work if the `APFloat` heap-allocated anything; those values aren't preserved through (de)serialization of course. Reproducer: constexpr double foo() { return __LDBL_MIN__; } CHANGES SINCE LAST

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-18 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. Ping CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-11 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 474676. tbaeder added a comment. Added the int-to-float conversion tests from https://reviews.llvm.org/D137719 CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-10 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 474551. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-09 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added a comment. Patch https://reviews.llvm.org/D137719 fixed int->float conversion. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-09 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Opcodes.td:502 + let Types = [AluTypeClass]; + let Args = [ArgFltSemantics]; + let HasGroup = 1; jcranmer-intel wrote: > tbaeder wrote: > > sepavloff wrote: > > > tbaeder wrote: > > > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-08 Thread Joshua Cranmer via Phabricator via cfe-commits
jcranmer-intel added inline comments. Comment at: clang/lib/AST/Interp/Opcodes.td:502 + let Types = [AluTypeClass]; + let Args = [ArgFltSemantics]; + let HasGroup = 1; tbaeder wrote: > sepavloff wrote: > > tbaeder wrote: > > > jcranmer-intel wrote: > > > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-07 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 473608. tbaeder added a comment. Report overflows when converting floats to integers. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-07 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 473595. tbaeder added a comment. Return `opStatus` from `convertToInteger` as well, and add a test case to `floats.cpp` that tests float-to-integer conversion. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-07 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Opcodes.td:502 + let Types = [AluTypeClass]; + let Args = [ArgFltSemantics]; + let HasGroup = 1; sepavloff wrote: > tbaeder wrote: > > jcranmer-intel wrote: > > > Integer-to-floating point

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-05 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 473409. tbaeder added a comment. Added a `const-fpfeatures.cpp` test and added semantics converstion to `::add` as an example. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files:

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-05 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/Opcodes.td:502 + let Types = [AluTypeClass]; + let Args = [ArgFltSemantics]; + let HasGroup = 1; tbaeder wrote: > jcranmer-intel wrote: > > Integer-to-floating point conversion is dependent on

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-05 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 473404. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-05 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.cpp:487 + if (S.inConstantContext()) +return true; + jcranmer-intel wrote: > Not sure I understand the conditions that cause `S.inConstantContext()` to be > true, which gives me some

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-04 Thread Joshua Cranmer via Phabricator via cfe-commits
jcranmer-intel added inline comments. Comment at: clang/lib/AST/Interp/Interp.cpp:487 + if (S.inConstantContext()) +return true; + Not sure I understand the conditions that cause `S.inConstantContext()` to be true, which gives me some cause for concern.

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-11-03 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. Ping CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471816. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471814. tbaeder added a comment. Moved the tests to their own file and moved the `isConstantContext()` changes to `InterpState` to their own NFC commit. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 471565. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/ExprConstant.cpp clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-28 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/PrimType.h:39 PT_Bool, + PT_Float, PT_Ptr, sepavloff wrote: > tbaeder wrote: > > sepavloff wrote: > > > In contrast to other members of this enumeration, `PT_Float` does not > > > designate

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-27 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/PrimType.h:39 PT_Bool, + PT_Float, PT_Ptr, tbaeder wrote: > sepavloff wrote: > > In contrast to other members of this enumeration, `PT_Float` does not > > designate a concrete type, and it

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-27 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/PrimType.h:39 PT_Bool, + PT_Float, PT_Ptr, sepavloff wrote: > In contrast to other members of this enumeration, `PT_Float` does not > designate a concrete type, and it must creates problems.

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-27 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/PrimType.h:39 PT_Bool, + PT_Float, PT_Ptr, In contrast to other members of this enumeration, `PT_Float` does not designate a concrete type, and it must creates problems. For example, how

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-26 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. Ping CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-21 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:612 + case PT_Float: +assert(false); } I left the implementation of this out since `visitZeroInitializer()` is dead code right now anyway and the patch is already large

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-21 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 469527. tbaeder marked 5 inline comments as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/ExprConstant.cpp clang/lib/AST/Interp/Boolean.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-20 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 469173. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/ExprConstant.cpp clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-20 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 469166. tbaeder added a comment. Another (and even longer) version. Introduce special opcodes for floating point operations and pass the rounding mode to them. Also create special int->float and float->int casts so we can handle that properly. This makes

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-19 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:54-62 + explicit operator int8_t() const { return toAPSInt().getExtValue(); } + explicit operator uint8_t() const { return toAPSInt().getExtValue(); } + explicit operator int16_t() const { return

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:54-62 + explicit operator int8_t() const { return toAPSInt().getExtValue(); } + explicit operator uint8_t() const { return toAPSInt().getExtValue(); } + explicit operator int16_t() const { return

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-19 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:54-62 + explicit operator int8_t() const { return toAPSInt().getExtValue(); } + explicit operator uint8_t() const { return toAPSInt().getExtValue(); } + explicit operator int16_t() const { return

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-19 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/ByteCodeExprGen.cpp:144 + +if (!this->emitCast(*FromT, PT_Float, CE)) + return false; sepavloff wrote: > Does this two-stage conversion make sense? In contrast to things like > `PT_Sint8`

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-18 Thread Serge Pavlov via Phabricator via cfe-commits
sepavloff added inline comments. Comment at: clang/lib/AST/Interp/Boolean.h:59 explicit operator bool() const { return V; } + explicit operator double() const { return V; } Is there any reason why `operator double` exists, but `operator float` does not?

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-12 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added a comment. Any other opinions on the new approach? CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 ___ cfe-commits mailing list cfe-commits@lists.llvm.org

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-07 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 466031. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-07 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 466027. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 465968. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:33-34 + /// Primitive representing limits. + // static constexpr auto Min = std::numeric_limits::min(); + // static constexpr auto Max = std::numeric_limits::max(); + jcranmer-intel

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 465967. tbaeder marked 2 inline comments as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Interp.cpp:421 +bool CastFP(InterpState , CodePtr OpPC, const llvm::fltSemantics *Sem) { + Floating F = S.Stk.pop(); jcranmer-intel wrote: > FWIW, `const llvm::fltSemantics &` is the usual way

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Joshua Cranmer via Phabricator via cfe-commits
jcranmer-intel added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:33-34 + /// Primitive representing limits. + // static constexpr auto Min = std::numeric_limits::min(); + // static constexpr auto Max = std::numeric_limits::max(); + tbaeder

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 465708. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 465703. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/CMakeLists.txt clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:33-34 + /// Primitive representing limits. + // static constexpr auto Min = std::numeric_limits::min(); + // static constexpr auto Max = std::numeric_limits::max(); + This is currently

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-06 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 465702. tbaeder added a comment. Another try, this time without any underlying host type. There are a few things I'm uncertain about. The tests are obviously not enough, especially now that I had to add another `CastFP` opcode to cast floats between

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-05 Thread David Blaikie via Phabricator via cfe-commits
dblaikie added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; tbaeder wrote: > dblaikie wrote: > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-05 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; dblaikie wrote: > jcranmer-intel wrote: >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-04 Thread David Blaikie via Phabricator via cfe-commits
dblaikie added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; jcranmer-intel wrote: > aaron.ballman

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-04 Thread Joshua Cranmer via Phabricator via cfe-commits
jcranmer-intel added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; aaron.ballman wrote: > tbaeder

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-04 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added subscribers: foad, RKSimon, sepavloff, dblaikie, chandlerc. aaron.ballman added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64>

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-04 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; aaron.ballman wrote: > tbaeder wrote: > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-04 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; tbaeder wrote: > jcranmer-intel

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-04 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; jcranmer-intel wrote: > tbaeder wrote: > >

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-03 Thread Joshua Cranmer via Phabricator via cfe-commits
jcranmer-intel added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; tbaeder wrote: > jcranmer-intel

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-10-01 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:27-29 + template struct Repr; + template <> struct Repr<32> { using Type = float; }; + template <> struct Repr<64> { using Type = double; }; jcranmer-intel wrote: > aaron.ballman

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-30 Thread Joshua Cranmer via Phabricator via cfe-commits
jcranmer-intel added a comment. Some extra constexpr tests that may be interesting: - Constant expressions that produce floating point exceptions other than `FE_INEXACT`. - Subnormal values as operands, as well as operations with normal operands that produce denormal values (i.e., check for

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-30 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added a reviewer: jcranmer-intel. aaron.ballman added a subscriber: jcranmer-intel. aaron.ballman added a comment. I've not given this a full review yet, but I do have some comments on a partial review. Mostly, I'm concerned we're going to have different semantics when evaluating

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 464161. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-30 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 464156. tbaeder marked an inline comment as done. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-29 Thread Shafik Yaghmour via Phabricator via cfe-commits
shafik added inline comments. Comment at: clang/lib/AST/Interp/Floating.h:80 + bool isMinusOne() const { return V == -1; } + + ComparisonCategoryResult compare(const Floating ) const { `bool isNaN() const { return V != V; }` CHANGES SINCE LAST ACTION

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 463846. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 463807. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder added inline comments. Comment at: clang/lib/AST/Interp/Context.cpp:130 + if (T->isFloatingType()) { +unsigned Bytes = getASTContext().getTypeSize(T); +if (Bytes == 32) Comment at: clang/lib/AST/Interp/Floating.h:106 + //

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder updated this revision to Diff 463785. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D134859/new/ https://reviews.llvm.org/D134859 Files: clang/lib/AST/Interp/Boolean.h clang/lib/AST/Interp/ByteCodeExprGen.cpp clang/lib/AST/Interp/ByteCodeExprGen.h

[PATCH] D134859: [clang][Interp] Implement basic support for floating point values

2022-09-29 Thread Timm Bäder via Phabricator via cfe-commits
tbaeder created this revision. tbaeder added reviewers: aaron.ballman, erichkeane, shafik, tahonermann. Herald added a project: All. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This only handles floats for now, so 32 bit