InstCombine: Handle exp/exp2/exp10 in SimplifyDemandedFPClass
I'm working on optimizing out the tail sequences in the
implementations of the 4 different flavors of pow. These
include chains of selects on the various edge cases.
Related to #64870
ValueTracking: Add baseline tests for computeKnownFPClass exp
This is already handled, but misses opportunities. Test cases
where the input is known positive or negative.
ValueTracking: Avoid calling computeKnownFPClass on matched constant
The fmul case already tries to match a literal value, we don't
need to match it twice.
ValueTracking: Improve computeKnownFPClass fmul handling
Improve known non-nan sign bit tracking. Handle cases with
a known 0 or inf input of indeterminate sign.
The tails of some library functions have sign management
for special cases.
InstCombine: Handle canonicalize in SimplifyDemandedFPClass
Doesn't try to handle PositiveZero flushing mode, but I
don't believe it is incorrect with it.
emulators/hercules4sdl: bugfix update to 4.9.1.
Release notes for SDL Hyperion 4.9.1 from https://sdl-hercules-390.github.io/html/hercrnot.html
Critical flaw in CCKD Garbage Collector / Dasd Hardener logic fixed
Unknown to the Hercules team at the time, there existed a critcal flaw (bug) in the CCKD "Garbage Collector" and "Dasd Hardener" logic that would, if allowed to execute simultaneously with each other, cause one to unexpectedly interfere with the other, resulting in Hercules potentially hanging or crashing.
Modifications to Hercules 4.9.1 have been made to ensure that this can no longer occur, by ensuring that neither is able to execute at the same time as the other. Instead, each now runs by itself (alone) until it reaches a stable point in its logic at the end of its "pass", before then allowing the other to execute until it too reaches a stable point in its own logic at the end of its own corresponding "pass". Processing continues in this alternating fashion for for as long as each are enabled.
With this fix (workaround) now in place, it is now once again safe to have both the CCKD Garbage Collector and Dasd Hardener to both be set to enabled if so desired. Note that the default enabled/disabled setting for each have not changed however: the default for the Garbage Collector is still disabled and the default for the Dasd Hardener is still enabled.
ValueTracking: Avoid calling computeKnownFPClass on matched constant
The fmul case already tries to match a literal value, we don't
need to match it twice.
ValueTracking: Improve computeKnownFPClass fmul handling
Improve known non-nan sign bit tracking. Handle cases with
a known 0 or inf input of indeterminate sign.
The tails of some library functions have sign management
for special cases.
[clang][NFC] Use constructor instead of factory function in `CFGStmtMap` (#172530)
`CFGStmtMap::Build` accepts pointers and returns a pointer to
dynamically allocated memory. In the one location where the type is
actually constructed, the pointers are guaranteed to be non-null. By
accepting references to statically enforce this, we can remove the only
way for the construction to fail.
By making this change, we also allow our user to decide how they want to
own the memory (either directly or indirectly). The user does not
actually need dynamic allocation here, so we replace the
`std::unique_ptr` with `std::optional`.
This simplifies the code by requiring fewer checks, makes comments on
what happens redundant because the code can obviously do only one thing,
avoids potential bugs, and improves performance by allocating less.