From 566c3ca2de98761f9039e49ca5f68ee1a9ad73c4 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Mon, 8 Feb 2021 15:45:11 -0800 Subject: [PATCH] ape: sync flaot.h macros with u.h The float.h macros got out of sync with u.h, some of them missing and some of them being incorrect. This change brings them back in line. --- 386/include/ape/float.h | 4 +++- 68020/include/ape/float.h | 2 ++ arm/include/ape/float.h | 44 +++++++++++++++++++++---------------- arm64/include/ape/float.h | 43 ++++++++++++++++++++---------------- mips/include/ape/float.h | 4 +++- power/include/ape/float.h | 43 ++++++++++++++++++++++++++---------- sparc/include/ape/float.h | 6 +++-- sparc64/include/ape/float.h | 6 +++-- 8 files changed, 97 insertions(+), 55 deletions(-) diff --git a/386/include/ape/float.h b/386/include/ape/float.h index 4df158e51..6de1e7bb4 100644 --- a/386/include/ape/float.h +++ b/386/include/ape/float.h @@ -52,9 +52,10 @@ union FPdbleword #ifdef _PLAN9_SOURCE /* FCR */ #define FPINEX (1<<5) -#define FPOVFL (1<<3) #define FPUNFL ((1<<4)|(1<<1)) +#define FPOVFL (1<<3) #define FPZDIV (1<<2) +#define FPINVAL (1<<0) #define FPRNR (0<<10) #define FPRZ (3<<10) #define FPRPINF (2<<10) @@ -69,5 +70,6 @@ union FPdbleword #define FPAOVFL FPOVFL #define FPAUNFL FPUNFL #define FPAZDIV FPZDIV +#define FPAINVAL FPINVAL #endif #endif /* __FLOAT */ diff --git a/68020/include/ape/float.h b/68020/include/ape/float.h index 4b56ec172..9c27df3da 100644 --- a/68020/include/ape/float.h +++ b/68020/include/ape/float.h @@ -58,6 +58,7 @@ union FPdbleword #define FPZDIV (1<<10) #define FPRNR (0<<4) #define FPRZ (1<<4) +#define FPINVAL (3<<13) #define FPRPINF (3<<4) #define FPRNINF (2<<4) #define FPRMASK (3<<4) @@ -70,5 +71,6 @@ union FPdbleword #define FPAOVFL FPOVFL #define FPAUNFL FPUNFL #define FPAZDIV FPZDIV +#define FPAINVAL FPINVAL #endif #endif /* __FLOAT */ diff --git a/arm/include/ape/float.h b/arm/include/ape/float.h index 4df158e51..6b95aa967 100644 --- a/arm/include/ape/float.h +++ b/arm/include/ape/float.h @@ -50,24 +50,30 @@ union FPdbleword #define Sudden_Underflow 1 #endif #ifdef _PLAN9_SOURCE -/* FCR */ -#define FPINEX (1<<5) -#define FPOVFL (1<<3) -#define FPUNFL ((1<<4)|(1<<1)) -#define FPZDIV (1<<2) -#define FPRNR (0<<10) -#define FPRZ (3<<10) -#define FPRPINF (2<<10) -#define FPRNINF (1<<10) -#define FPRMASK (3<<10) -#define FPPEXT (3<<8) -#define FPPSGL (0<<8) -#define FPPDBL (2<<8) -#define FPPMASK (3<<8) -/* FSR */ -#define FPAINEX FPINEX -#define FPAOVFL FPOVFL -#define FPAUNFL FPUNFL -#define FPAZDIV FPZDIV +/* VFP FPSCR (exceptions) */ +#define FPINEX (1<<12) +#define FPUNFL (1<<11) +#define FPOVFL (1<<10) +#define FPZDIV (1<<9) +#define FPINVAL (1<<8) + +/* VFP FPSCR (rounding) */ +#define FPRNR (0<<22) +#define FPRPINF (1<<22) +#define FPRNINF (2<<22) +#define FPRZ (3<<22) + +#define FPRMASK (3<<22) + +/* VFP FPSCR (status) */ +#define FPPEXT 0 +#define FPPSGL 0 +#define FPPDBL 0 +#define FPPMASK 0 +#define FPAINEX (1<<4) +#define FPAUNFL (1<<3) +#define FPAOVFL (1<<2) +#define FPAZDIV (1<<1) +#define FPAINVAL (1<<0) #endif #endif /* __FLOAT */ diff --git a/arm64/include/ape/float.h b/arm64/include/ape/float.h index 4df158e51..297477895 100644 --- a/arm64/include/ape/float.h +++ b/arm64/include/ape/float.h @@ -50,24 +50,29 @@ union FPdbleword #define Sudden_Underflow 1 #endif #ifdef _PLAN9_SOURCE -/* FCR */ -#define FPINEX (1<<5) -#define FPOVFL (1<<3) -#define FPUNFL ((1<<4)|(1<<1)) -#define FPZDIV (1<<2) -#define FPRNR (0<<10) -#define FPRZ (3<<10) -#define FPRPINF (2<<10) -#define FPRNINF (1<<10) -#define FPRMASK (3<<10) -#define FPPEXT (3<<8) -#define FPPSGL (0<<8) -#define FPPDBL (2<<8) -#define FPPMASK (3<<8) -/* FSR */ -#define FPAINEX FPINEX -#define FPAOVFL FPOVFL -#define FPAUNFL FPUNFL -#define FPAZDIV FPZDIV +/* FPCR (control) */ +#define FPINEX (1<<12) +#define FPUNFL (1<<11) +#define FPOVFL (1<<10) +#define FPZDIV (1<<9) +#define FPINVAL (1<<8) + +#define FPRNR (0<<22) +#define FPRPINF (1<<22) +#define FPRNINF (2<<22) +#define FPRZ (3<<22) + +#define FPRMASK (3<<22) + +/* FPSR (status) */ +#define FPPEXT 0 +#define FPPSGL 0 +#define FPPDBL 0 +#define FPPMASK 0 +#define FPAINEX (1<<4) +#define FPAUNFL (1<<3) +#define FPAOVFL (1<<2) +#define FPAZDIV (1<<1) +#define FPAINVAL (1<<0) #endif #endif /* __FLOAT */ diff --git a/mips/include/ape/float.h b/mips/include/ape/float.h index c0992af79..2f7cf2b2c 100644 --- a/mips/include/ape/float.h +++ b/mips/include/ape/float.h @@ -52,9 +52,10 @@ union FPdbleword #ifdef _PLAN9_SOURCE /* FCR */ #define FPINEX (1<<7) -#define FPOVFL (1<<9) #define FPUNFL (1<<8) +#define FPOVFL (1<<9) #define FPZDIV (1<<10) +#define FPINVAL (1<<11) #define FPRNR (0<<0) #define FPRZ (1<<0) #define FPRPINF (2<<0) @@ -69,5 +70,6 @@ union FPdbleword #define FPAOVFL (1<<4) #define FPAUNFL (1<<3) #define FPAZDIV (1<<5) +#define FPAINVAL (1<<6) #endif #endif /* __FLOAT */ diff --git a/power/include/ape/float.h b/power/include/ape/float.h index c0992af79..4e3121fc8 100644 --- a/power/include/ape/float.h +++ b/power/include/ape/float.h @@ -50,24 +50,45 @@ union FPdbleword #define Sudden_Underflow 1 #endif #ifdef _PLAN9_SOURCE -/* FCR */ -#define FPINEX (1<<7) -#define FPOVFL (1<<9) -#define FPUNFL (1<<8) -#define FPZDIV (1<<10) +/* FPSCR */ +#define FPSFX (1<<31) /* exception summary (sticky) */ +#define FPSEX (1<<30) /* enabled exception summary */ +#define FPSVX (1<<29) /* invalid operation exception summary */ +#define FPSOX (1<<28) /* overflow exception OX (sticky) */ +#define FPSUX (1<<27) /* underflow exception UX (sticky) */ +#define FPSZX (1<<26) /* zero divide exception ZX (sticky) */ +#define FPSXX (1<<25) /* inexact exception XX (sticky) */ +#define FPSVXSNAN (1<<24) /* invalid operation exception for SNaN (sticky) */ +#define FPSVXISI (1<<23) /* invalid operation exception for ∞-∞ (sticky) */ +#define FPSVXIDI (1<<22) /* invalid operation exception for ∞/∞ (sticky) */ +#define FPSVXZDZ (1<<21) /* invalid operation exception for 0/0 (sticky) */ +#define FPSVXIMZ (1<<20) /* invalid operation exception for ∞*0 (sticky) */ +#define FPSVXVC (1<<19) /* invalid operation exception for invalid compare (sticky) */ +#define FPSFR (1<<18) /* fraction rounded */ +#define FPSFI (1<<17) /* fraction inexact */ +#define FPSFPRF (1<<16) /* floating point result class */ +#define FPSFPCC (0xF<<12) /* <, >, =, unordered */ +#define FPVXCVI (1<<8) /* enable exception for invalid integer convert (sticky) */ +#define FPVE (1<<7) /* invalid operation exception enable */ +#define FPOVFL (1<<6) /* enable overflow exceptions */ +#define FPUNFL (1<<5) /* enable underflow */ +#define FPZDIV (1<<4) /* enable zero divide */ +#define FPINEX (1<<3) /* enable inexact exceptions */ +#define FPRMASK (3<<0) /* rounding mode */ #define FPRNR (0<<0) #define FPRZ (1<<0) #define FPRPINF (2<<0) #define FPRNINF (3<<0) -#define FPRMASK (3<<0) #define FPPEXT 0 #define FPPSGL 0 #define FPPDBL 0 #define FPPMASK 0 -/* FSR */ -#define FPAINEX (1<<2) -#define FPAOVFL (1<<4) -#define FPAUNFL (1<<3) -#define FPAZDIV (1<<5) +#define FPINVAL FPVE + +#define FPAOVFL FPSOX +#define FPAINEX FPSXX +#define FPAUNFL FPSUX +#define FPAZDIV FPSZX +#define FPAINVAL FPSVX #endif #endif /* __FLOAT */ diff --git a/sparc/include/ape/float.h b/sparc/include/ape/float.h index f0ce62f86..074c77e70 100644 --- a/sparc/include/ape/float.h +++ b/sparc/include/ape/float.h @@ -57,6 +57,7 @@ union FPdbleword #define FPZDIV (1<<24) #define FPRNR (0<<30) #define FPRZ (1<<30) +#define FPINVAL (1<<27) #define FPRPINF (2<<30) #define FPRNINF (3<<30) #define FPRMASK (3<<30) @@ -66,8 +67,9 @@ union FPdbleword #define FPPMASK 0 /* FSR */ #define FPAINEX (1<<5) -#define FPAOVFL (1<<8) -#define FPAUNFL (1<<7) #define FPAZDIV (1<<6) +#define FPAUNFL (1<<7) +#define FPAOVFL (1<<8) +#define FPAINVAL (1<<9) #endif #endif /* __FLOAT */ diff --git a/sparc64/include/ape/float.h b/sparc64/include/ape/float.h index f0ce62f86..074c77e70 100644 --- a/sparc64/include/ape/float.h +++ b/sparc64/include/ape/float.h @@ -57,6 +57,7 @@ union FPdbleword #define FPZDIV (1<<24) #define FPRNR (0<<30) #define FPRZ (1<<30) +#define FPINVAL (1<<27) #define FPRPINF (2<<30) #define FPRNINF (3<<30) #define FPRMASK (3<<30) @@ -66,8 +67,9 @@ union FPdbleword #define FPPMASK 0 /* FSR */ #define FPAINEX (1<<5) -#define FPAOVFL (1<<8) -#define FPAUNFL (1<<7) #define FPAZDIV (1<<6) +#define FPAUNFL (1<<7) +#define FPAOVFL (1<<8) +#define FPAINVAL (1<<9) #endif #endif /* __FLOAT */