Three optimizations that eliminate expensive FP bit-blasting:
1. fma(rm, ±0, y, z): decompose into simpler operations instead of
building the full FMA bit-blast circuit. When z is a concrete
non-zero value, simplifies to ite(isFinite(y), z, NaN).
2. isNaN/isInf/isNormal applied to to_fp(rm, to_real(int_expr)):
convert to pure integer constraints. For integers, to_fp never
produces NaN or subnormals, so classification reduces to
overflow threshold checks based on the rounding mode.
3. Push classification functions (isNaN, isInf, isNormal) through
ite when both branches are concrete FP numerals.
Together these transform the original formula from requiring full
FP bit-blasting (timeout) to pure integer/real reasoning (instant).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Introduce X-macro-based trace tag definition
- Created trace_tags.def to centralize TRACE tag definitions
- Each tag includes a symbolic name and description
- Set up enum class TraceTag for type-safe usage in TRACE macros
* Add script to generate Markdown documentation from trace_tags.def
- Python script parses trace_tags.def and outputs trace_tags.md
* Refactor TRACE_NEW to prepend TraceTag and pass enum to is_trace_enabled
* trace: improve trace tag handling system with hierarchical tagging
- Introduce hierarchical tag-class structure: enabling a tag class activates all child tags
- Unify TRACE, STRACE, SCTRACE, and CTRACE under enum TraceTag
- Implement initial version of trace_tag.def using X(tag, tag_class, description)
(class names and descriptions to be refined in a future update)
* trace: replace all string-based TRACE tags with enum TraceTag
- Migrated all TRACE, STRACE, SCTRACE, and CTRACE macros to use enum TraceTag values instead of raw string literals
* trace : add cstring header
* trace : Add Markdown documentation generation from trace_tags.def via mk_api_doc.py
* trace : rename macro parameter 'class' to 'tag_class' and remove Unicode comment in trace_tags.h.
* trace : Add TODO comment for future implementation of tag_class activation
* trace : Disable code related to tag_class until implementation is ready (#7663).