arch/mips/math-emu/ieee754int.h
Source file repositories/reference/linux-study-clean/arch/mips/math-emu/ieee754int.h
File Facts
- System
- Linux kernel
- Corpus path
arch/mips/math-emu/ieee754int.h- Extension
.h- Size
- 3578 bytes
- Lines
- 150
- Domain
- Architecture Layer
- Bucket
- arch/mips
- Inferred role
- Architecture Layer: implementation source
- Status
- source implementation candidate
Why This File Exists
CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
- CPU and platform-specific kernel glue: boot entry, traps, syscall entry, interrupts, page tables, context switch, and low-level barriers.
Dependency Surface
ieee754.h
Detected Declarations
enum maddf_flagsfunction ieee754_clearcxfunction ieee754_setcxfunction ieee754_setandtestcxfunction ieee754_class_nan
Annotated Snippet
if (vm) { \
ve = SP_EMIN; \
vc = IEEE754_CLASS_DNORM; \
} else \
vc = IEEE754_CLASS_ZERO; \
} else { \
ve -= SP_EBIAS; \
vm |= SP_HIDDEN_BIT; \
vc = IEEE754_CLASS_NORM; \
} \
}
#define EXPLODEXSP EXPLODESP(x, xc, xs, xe, xm)
#define EXPLODEYSP EXPLODESP(y, yc, ys, ye, ym)
#define EXPLODEZSP EXPLODESP(z, zc, zs, ze, zm)
#define COMPXDP \
u64 xm; int xe; int xs __maybe_unused; int xc
#define COMPYDP \
u64 ym; int ye; int ys; int yc
#define COMPZDP \
u64 zm; int ze; int zs; int zc
#define EXPLODEDP(v, vc, vs, ve, vm) \
{ \
vm = DPMANT(v); \
vs = DPSIGN(v); \
ve = DPBEXP(v); \
if (ve == DP_EMAX+1+DP_EBIAS) { \
if (vm == 0) \
vc = IEEE754_CLASS_INF; \
else if (ieee754_csr.nan2008 ^ !(vm & DP_MBIT(DP_FBITS - 1))) \
vc = IEEE754_CLASS_QNAN; \
else \
vc = IEEE754_CLASS_SNAN; \
} else if (ve == DP_EMIN-1+DP_EBIAS) { \
if (vm) { \
ve = DP_EMIN; \
vc = IEEE754_CLASS_DNORM; \
} else \
vc = IEEE754_CLASS_ZERO; \
} else { \
ve -= DP_EBIAS; \
vm |= DP_HIDDEN_BIT; \
vc = IEEE754_CLASS_NORM; \
} \
}
#define EXPLODEXDP EXPLODEDP(x, xc, xs, xe, xm)
#define EXPLODEYDP EXPLODEDP(y, yc, ys, ye, ym)
#define EXPLODEZDP EXPLODEDP(z, zc, zs, ze, zm)
#define FLUSHDP(v, vc, vs, ve, vm) \
if (vc==IEEE754_CLASS_DNORM) { \
if (ieee754_csr.nod) { \
ieee754_setcx(IEEE754_INEXACT); \
vc = IEEE754_CLASS_ZERO; \
ve = DP_EMIN-1+DP_EBIAS; \
vm = 0; \
v = ieee754dp_zero(vs); \
} \
}
#define FLUSHSP(v, vc, vs, ve, vm) \
if (vc==IEEE754_CLASS_DNORM) { \
if (ieee754_csr.nod) { \
ieee754_setcx(IEEE754_INEXACT); \
vc = IEEE754_CLASS_ZERO; \
ve = SP_EMIN-1+SP_EBIAS; \
vm = 0; \
v = ieee754sp_zero(vs); \
} \
}
#define FLUSHXDP FLUSHDP(x, xc, xs, xe, xm)
#define FLUSHYDP FLUSHDP(y, yc, ys, ye, ym)
#define FLUSHZDP FLUSHDP(z, zc, zs, ze, zm)
#define FLUSHXSP FLUSHSP(x, xc, xs, xe, xm)
#define FLUSHYSP FLUSHSP(y, yc, ys, ye, ym)
#define FLUSHZSP FLUSHSP(z, zc, zs, ze, zm)
#endif /* __IEEE754INT_H */
Annotation
- Immediate include surface: `ieee754.h`.
- Detected declarations: `enum maddf_flags`, `function ieee754_clearcx`, `function ieee754_setcx`, `function ieee754_setandtestcx`, `function ieee754_class_nan`.
- Atlas domain: Architecture Layer / arch/mips.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.