arch/parisc/math-emu/cnv_float.h
Source file repositories/reference/linux-study-clean/arch/parisc/math-emu/cnv_float.h
File Facts
- System
- Linux kernel
- Corpus path
arch/parisc/math-emu/cnv_float.h- Extension
.h- Size
- 12223 bytes
- Lines
- 364
- Domain
- Architecture Layer
- Bucket
- arch/parisc
- 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
- No C-style include directives detected by the generator.
Detected Declarations
- No top-level syscall, struct, function, initcall, or export declaration detected by the generator.
Annotated Snippet
if (exp >= -2) { \
if (exp == 0) { \
inexact = Dallp2(srcB) << 3; \
guard = inexact >> 31; \
sticky = inexact << 1; \
Shiftdouble(Dmantissap1(srcA),Dmantissap2(srcB),29,dest); \
odd = dest << 31; \
if (inexact) { \
switch(Rounding_mode()) { \
case ROUNDPLUS: \
if (Dbl_iszero_sign(srcA)) { \
dest++; \
if (Sgl_isone_hidden(dest)) \
tiny = FALSE; \
dest--; \
} \
break; \
case ROUNDMINUS: \
if (Dbl_isone_sign(srcA)) { \
dest++; \
if (Sgl_isone_hidden(dest)) \
tiny = FALSE; \
dest--; \
} \
break; \
case ROUNDNEAREST: \
if (guard && (sticky || odd)) { \
dest++; \
if (Sgl_isone_hidden(dest)) \
tiny = FALSE; \
dest--; \
} \
break; \
} \
} \
/* shift right by one to get correct result */ \
guard = odd; \
sticky = inexact; \
inexact |= guard; \
dest >>= 1; \
Deposit_dsign(srcA,0); \
Shiftdouble(Dallp1(srcA),Dallp2(srcB),30,dest); \
odd = dest << 31; \
} \
else { \
inexact = Dallp2(srcB) << (2 + exp); \
guard = inexact >> 31; \
sticky = inexact << 1; \
Deposit_dsign(srcA,0); \
if (exp == -2) dest = Dallp1(srcA); \
else Variable_shift_double(Dallp1(srcA),Dallp2(srcB),30-exp,dest); \
odd = dest << 31; \
} \
} \
else { \
Deposit_dsign(srcA,0); \
if (exp > (1 - SGL_P)) { \
dest = Dallp1(srcA) >> (- 2 - exp); \
inexact = Dallp1(srcA) << (34 + exp); \
guard = inexact >> 31; \
sticky = (inexact << 1) | Dallp2(srcB); \
inexact |= Dallp2(srcB); \
odd = dest << 31; \
} \
else { \
dest = 0; \
inexact = Dallp1(srcA) | Dallp2(srcB); \
if (exp == (1 - SGL_P)) { \
guard = Dhidden(srcA); \
sticky = Dmantissap1(srcA) | Dallp2(srcB); \
} \
else { \
guard = 0; \
sticky = inexact; \
} \
odd = 0; \
} \
} \
exp = 0
#define Dbl_isinexact_to_fix(dbl_valueA,dbl_valueB,exponent) \
(exponent < (DBL_P-33) ? \
Dallp2(dbl_valueB) || Dallp1(dbl_valueA) << (DBL_EXP_LENGTH+1+exponent) : \
(exponent < (DBL_P-1) ? Dallp2(dbl_valueB) << (exponent + (33-DBL_P)) : \
FALSE))
#define Dbl_isoverflow_to_int(exponent,dbl_valueA,dbl_valueB) \
((exponent > SGL_FX_MAX_EXP + 1) || Dsign(dbl_valueA)==0 || \
Dmantissap1(dbl_valueA)!=0 || (Dallp2(dbl_valueB)>>21)!=0 )
Annotation
- Atlas domain: Architecture Layer / arch/parisc.
- 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.