aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNigel Stephens <nigel@mips.com>2007-06-14 22:51:54 +0000
committerChao-ying Fu <fu@mips.com>2007-06-14 22:51:54 +0000
commitce518d5fa7fd171112d3661f7d9117d84f6097f7 (patch)
tree686e8289de58fbce6f71816b0e1257b607bce3e8
parent5217bbb1da9b105f3c1c93c6f4e0169ab8e25572 (diff)
* config/fixed-bit.c: Rename FRACT_CONVERT, UNSIGNED_FRACT_CONVERT,
SAT_FRACT, UNSIGNED_SAT_FRACT to FRACT, FRACTUNS, SATFRACT, SATFRACTUNS. Add L_* defines for each function to support fine-grain building. * config/fixed-bit.h: Rename FRACT_CONVERT, UNSIGNED_FRACT_CONVERT, SAT_FRACT, UNSIGNED_SAT_FRACT to FRACT, FRACTUNS, SATFRACT, SATFRACTUNS. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/fixed-point@125724 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/fixed-bit.c120
-rw-r--r--gcc/config/fixed-bit.h68
3 files changed, 104 insertions, 94 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ff73a785a9d..9cb48309aed 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,13 @@
+2007-06-14 Nigel Stephens <nigel@mips.com>
+
+ * config/fixed-bit.c: Rename FRACT_CONVERT, UNSIGNED_FRACT_CONVERT,
+ SAT_FRACT, UNSIGNED_SAT_FRACT to FRACT, FRACTUNS, SATFRACT,
+ SATFRACTUNS.
+ Add L_* defines for each function to support fine-grain building.
+ * config/fixed-bit.h: Rename FRACT_CONVERT, UNSIGNED_FRACT_CONVERT,
+ SAT_FRACT, UNSIGNED_SAT_FRACT to FRACT, FRACTUNS, SATFRACT,
+ SATFRACTUNS.
+
2007-06-13 Chao-ying Fu <fu@mips.com>
Nigel Stephens <nigel@mips.com>
diff --git a/gcc/config/fixed-bit.c b/gcc/config/fixed-bit.c
index 97319948b02..cb0c95b5a41 100644
--- a/gcc/config/fixed-bit.c
+++ b/gcc/config/fixed-bit.c
@@ -58,7 +58,7 @@ Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
#include "config/fixed-bit.h"
-#if defined(FIXED_ADD)
+#if defined(FIXED_ADD) && defined(L_add)
FIXED_C_TYPE
FIXED_ADD (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -76,7 +76,7 @@ FIXED_ADD (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_ADD */
-#if defined(FIXED_SSADD)
+#if defined(FIXED_SSADD) && defined(L_ssadd)
FIXED_C_TYPE
FIXED_SSADD (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -104,7 +104,7 @@ FIXED_SSADD (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_SSADD */
-#if defined(FIXED_USADD)
+#if defined(FIXED_USADD) && defined(L_usadd)
FIXED_C_TYPE
FIXED_USADD (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -130,7 +130,7 @@ FIXED_USADD (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_USADD */
-#if defined(FIXED_SUB)
+#if defined(FIXED_SUB) && defined(L_sub)
FIXED_C_TYPE
FIXED_SUB (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -148,7 +148,7 @@ FIXED_SUB (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_SUB */
-#if defined(FIXED_SSSUB)
+#if defined(FIXED_SSSUB) && defined(L_sssub)
FIXED_C_TYPE
FIXED_SSSUB (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -176,7 +176,7 @@ FIXED_SSSUB (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_SSSUB */
-#if defined(FIXED_USSUB)
+#if defined(FIXED_USSUB) && defined(L_ussub)
FIXED_C_TYPE
FIXED_USSUB (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -196,7 +196,7 @@ FIXED_USSUB (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_USSUB */
-#if defined(FIXED_SATURATE1)
+#if defined(FIXED_SATURATE1) && defined(L_saturate1)
void
FIXED_SATURATE1 (DINT_C_TYPE *a)
{
@@ -216,7 +216,7 @@ FIXED_SATURATE1 (DINT_C_TYPE *a)
}
#endif /* FIXED_SATURATE1 */
-#if defined(FIXED_SATURATE2)
+#if defined(FIXED_SATURATE2) && defined(L_saturate2)
void
FIXED_SATURATE2 (INT_C_TYPE *high, INT_C_TYPE *low)
{
@@ -252,7 +252,7 @@ FIXED_SATURATE2 (INT_C_TYPE *high, INT_C_TYPE *low)
}
#endif /* FIXED_SATURATE2 */
-#if defined(FIXED_MULHELPER)
+#if defined(FIXED_MULHELPER) && defined(L_mulhelper)
FIXED_C_TYPE
FIXED_MULHELPER (FIXED_C_TYPE a, FIXED_C_TYPE b, word_type satp)
{
@@ -369,7 +369,7 @@ FIXED_MULHELPER (FIXED_C_TYPE a, FIXED_C_TYPE b, word_type satp)
}
#endif /* FIXED_MULHELPER */
-#if defined(FIXED_MUL)
+#if defined(FIXED_MUL) && defined(L_mul)
FIXED_C_TYPE
FIXED_MUL (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -377,7 +377,7 @@ FIXED_MUL (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_MUL */
-#if defined(FIXED_SSMUL)
+#if defined(FIXED_SSMUL) && defined(L_ssmul)
FIXED_C_TYPE
FIXED_SSMUL (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -385,7 +385,7 @@ FIXED_SSMUL (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_SSMUL */
-#if defined(FIXED_USMUL)
+#if defined(FIXED_USMUL) && defined(L_usmul)
FIXED_C_TYPE
FIXED_USMUL (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -393,7 +393,7 @@ FIXED_USMUL (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_USMUL */
-#if defined(FIXED_DIVHELPER)
+#if defined(FIXED_DIVHELPER) && defined(L_divhelper)
FIXED_C_TYPE
FIXED_DIVHELPER (FIXED_C_TYPE a, FIXED_C_TYPE b, word_type satp)
{
@@ -507,7 +507,7 @@ FIXED_DIVHELPER (FIXED_C_TYPE a, FIXED_C_TYPE b, word_type satp)
}
#endif /* FIXED_DIVHELPER */
-#if defined(FIXED_DIV)
+#if defined(FIXED_DIV) && defined(L_div)
FIXED_C_TYPE
FIXED_DIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -516,7 +516,7 @@ FIXED_DIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
#endif /* FIXED_DIV */
-#if defined(FIXED_UDIV)
+#if defined(FIXED_UDIV) && defined(L_udiv)
FIXED_C_TYPE
FIXED_UDIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -524,7 +524,7 @@ FIXED_UDIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_UDIV */
-#if defined(FIXED_SSDIV)
+#if defined(FIXED_SSDIV) && defined(L_ssdiv)
FIXED_C_TYPE
FIXED_SSDIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -532,7 +532,7 @@ FIXED_SSDIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_SSDIV */
-#if defined(FIXED_USDIV)
+#if defined(FIXED_USDIV) && defined(L_usdiv)
FIXED_C_TYPE
FIXED_USDIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -540,7 +540,7 @@ FIXED_USDIV (FIXED_C_TYPE a, FIXED_C_TYPE b)
}
#endif /* FIXED_USDIV */
-#if defined(FIXED_NEG)
+#if defined(FIXED_NEG) && defined(L_neg)
FIXED_C_TYPE
FIXED_NEG (FIXED_C_TYPE a)
{
@@ -557,7 +557,7 @@ FIXED_NEG (FIXED_C_TYPE a)
}
#endif /* FIXED_NEG */
-#if defined(FIXED_SSNEG)
+#if defined(FIXED_SSNEG) && defined(L_ssneg)
FIXED_C_TYPE
FIXED_SSNEG (FIXED_C_TYPE a)
{
@@ -585,7 +585,7 @@ FIXED_SSNEG (FIXED_C_TYPE a)
}
#endif /* FIXED_SSNEG */
-#if defined(FIXED_USNEG)
+#if defined(FIXED_USNEG) && defined(L_usneg)
FIXED_C_TYPE
FIXED_USNEG (FIXED_C_TYPE a __attribute__ ((__unused__)))
{
@@ -597,7 +597,7 @@ FIXED_USNEG (FIXED_C_TYPE a __attribute__ ((__unused__)))
}
#endif /* FIXED_USNEG */
-#if defined(FIXED_ASHLHELPER)
+#if defined(FIXED_ASHLHELPER) && defined(L_ashlhelper)
FIXED_C_TYPE
FIXED_ASHLHELPER (FIXED_C_TYPE a, word_type b, word_type satp)
{
@@ -649,7 +649,7 @@ FIXED_ASHLHELPER (FIXED_C_TYPE a, word_type b, word_type satp)
}
#endif /* FIXED_ASHLHELPER */
-#if defined(FIXED_ASHL)
+#if defined(FIXED_ASHL) && defined(L_ashl)
FIXED_C_TYPE
FIXED_ASHL (FIXED_C_TYPE a, word_type b)
{
@@ -657,7 +657,7 @@ FIXED_ASHL (FIXED_C_TYPE a, word_type b)
}
#endif /* FIXED_ASHL */
-#if defined(FIXED_ASHR)
+#if defined(FIXED_ASHR) && defined(L_ashr)
FIXED_C_TYPE
FIXED_ASHR (FIXED_C_TYPE a, word_type b)
{
@@ -674,7 +674,7 @@ FIXED_ASHR (FIXED_C_TYPE a, word_type b)
}
#endif /* FIXED_ASHR */
-#if defined(FIXED_LSHR)
+#if defined(FIXED_LSHR) && defined(L_lshr)
FIXED_C_TYPE
FIXED_LSHR (FIXED_C_TYPE a, word_type b)
{
@@ -691,7 +691,7 @@ FIXED_LSHR (FIXED_C_TYPE a, word_type b)
}
#endif /* FIXED_LSHR */
-#if defined(FIXED_SSASHL)
+#if defined(FIXED_SSASHL) && defined(L_ssashl)
FIXED_C_TYPE
FIXED_SSASHL (FIXED_C_TYPE a, word_type b)
{
@@ -699,7 +699,7 @@ FIXED_SSASHL (FIXED_C_TYPE a, word_type b)
}
#endif /* FIXED_SSASHL */
-#if defined(FIXED_USASHL)
+#if defined(FIXED_USASHL) && defined(L_usashl)
FIXED_C_TYPE
FIXED_USASHL (FIXED_C_TYPE a, word_type b)
{
@@ -707,7 +707,7 @@ FIXED_USASHL (FIXED_C_TYPE a, word_type b)
}
#endif /* FIXED_USASHL */
-#if defined(FIXED_CMP)
+#if defined(FIXED_CMP) && defined(L_cmp)
word_type
FIXED_CMP (FIXED_C_TYPE a, FIXED_C_TYPE b)
{
@@ -725,9 +725,9 @@ FIXED_CMP (FIXED_C_TYPE a, FIXED_C_TYPE b)
#endif /* FIXED_CMP */
/* Fixed -> Fixed. */
-#if defined(FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 4
+#if defined(FRACT) && defined(L_fract) && FROM_TYPE == 4 && TO_TYPE == 4
TO_FIXED_C_TYPE
-FRACT_CONVERT (FROM_FIXED_C_TYPE a)
+FRACT (FROM_FIXED_C_TYPE a)
{
TO_FIXED_C_TYPE c;
FROM_INT_C_TYPE x;
@@ -751,12 +751,12 @@ FRACT_CONVERT (FROM_FIXED_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* FRACT_CONVERT && FROM_TYPE == 4 && TO_TYPE == 4 */
+#endif /* FRACT && FROM_TYPE == 4 && TO_TYPE == 4 */
/* Fixed -> Fixed with saturation. */
-#if defined(SAT_FRACT) && FROM_TYPE == 4 && TO_TYPE == 4
+#if defined(SATFRACT) && defined(L_satfract) && FROM_TYPE == 4 && TO_TYPE == 4
TO_FIXED_C_TYPE
-SAT_FRACT (FROM_FIXED_C_TYPE a)
+SATFRACT (FROM_FIXED_C_TYPE a)
{
TO_FIXED_C_TYPE c;
TO_INT_C_TYPE z;
@@ -867,12 +867,12 @@ SAT_FRACT (FROM_FIXED_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(SAT_FRACT) && FROM_TYPE == 4 && TO_TYPE == 4 */
+#endif /* defined(SATFRACT) && FROM_TYPE == 4 && TO_TYPE == 4 */
/* Fixed -> Int. */
-#if defined(FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 1
+#if defined(FRACT) && defined(L_fract) && FROM_TYPE == 4 && TO_TYPE == 1
TO_INT_C_TYPE
-FRACT_CONVERT (FROM_FIXED_C_TYPE a)
+FRACT (FROM_FIXED_C_TYPE a)
{
FROM_INT_C_TYPE x;
TO_INT_C_TYPE z;
@@ -901,12 +901,12 @@ FRACT_CONVERT (FROM_FIXED_C_TYPE a)
z = (TO_INT_C_TYPE) x;
return z;
}
-#endif /* defined(FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 1 */
+#endif /* defined(FRACT) && FROM_TYPE == 4 && TO_TYPE == 1 */
/* Fixed -> Unsigned int. */
-#if defined(UNSIGNED_FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 2
+#if defined(FRACTUNS) && defined(L_fractuns) && FROM_TYPE == 4 && TO_TYPE == 2
TO_INT_C_TYPE
-UNSIGNED_FRACT_CONVERT (FROM_FIXED_C_TYPE a)
+FRACTUNS (FROM_FIXED_C_TYPE a)
{
FROM_INT_C_TYPE x;
TO_INT_C_TYPE z;
@@ -935,12 +935,12 @@ UNSIGNED_FRACT_CONVERT (FROM_FIXED_C_TYPE a)
z = (TO_INT_C_TYPE) x;
return z;
}
-#endif /* defined(UNSIGNED_FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 2 */
+#endif /* defined(FRACTUNS) && FROM_TYPE == 4 && TO_TYPE == 2 */
/* Int -> Fixed. */
-#if defined(FRACT_CONVERT) && FROM_TYPE == 1 && TO_TYPE == 4
+#if defined(FRACT) && defined(L_fract) && FROM_TYPE == 1 && TO_TYPE == 4
TO_FIXED_C_TYPE
-FRACT_CONVERT (FROM_INT_C_TYPE a)
+FRACT (FROM_INT_C_TYPE a)
{
TO_FIXED_C_TYPE c;
TO_INT_C_TYPE z;
@@ -957,12 +957,12 @@ FRACT_CONVERT (FROM_INT_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(FRACT_CONVERT) && FROM_TYPE == 1 && TO_TYPE == 4 */
+#endif /* defined(FRACT) && FROM_TYPE == 1 && TO_TYPE == 4 */
/* Signed int -> Fixed with saturation. */
-#if defined(SAT_FRACT) && FROM_TYPE == 1 && TO_TYPE == 4
+#if defined(SATFRACT) && defined(L_satfract) &&FROM_TYPE == 1 && TO_TYPE == 4
TO_FIXED_C_TYPE
-SAT_FRACT (FROM_INT_C_TYPE a)
+SATFRACT (FROM_INT_C_TYPE a)
{
TO_FIXED_C_TYPE c;
TO_INT_C_TYPE z;
@@ -1045,12 +1045,12 @@ SAT_FRACT (FROM_INT_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(SAT_FRACT) && FROM_TYPE == 1 && TO_TYPE == 4 */
+#endif /* defined(SATFRACT) && FROM_TYPE == 1 && TO_TYPE == 4 */
/* Unsigned int -> Fixed. */
-#if defined(UNSIGNED_FRACT_CONVERT) && FROM_TYPE == 2 && TO_TYPE == 4
+#if defined(FRACTUNS) && defined(L_fractuns) &&FROM_TYPE == 2 && TO_TYPE == 4
TO_FIXED_C_TYPE
-UNSIGNED_FRACT_CONVERT (FROM_INT_C_TYPE a)
+FRACTUNS (FROM_INT_C_TYPE a)
{
TO_FIXED_C_TYPE c;
TO_INT_C_TYPE z;
@@ -1067,12 +1067,12 @@ UNSIGNED_FRACT_CONVERT (FROM_INT_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(UNSIGNED_FRACT_CONVERT) && FROM_TYPE == 2 && TO_TYPE == 4 */
+#endif /* defined(FRACTUNS) && FROM_TYPE == 2 && TO_TYPE == 4 */
/* Unsigned int -> Fixed with saturation. */
-#if defined(UNSIGNED_SAT_FRACT) && FROM_TYPE == 2 && TO_TYPE == 4
+#if defined(SATFRACTUNS) && defined(L_satfractuns) && FROM_TYPE == 2 && TO_TYPE == 4
TO_FIXED_C_TYPE
-UNSIGNED_SAT_FRACT (FROM_INT_C_TYPE a)
+SATFRACTUNS (FROM_INT_C_TYPE a)
{
TO_FIXED_C_TYPE c;
TO_INT_C_TYPE z;
@@ -1134,12 +1134,12 @@ UNSIGNED_SAT_FRACT (FROM_INT_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(UNSIGNED_SAT_FRACT) && FROM_TYPE == 2 && TO_TYPE == 4 */
+#endif /* defined(SATFRACTUNS) && FROM_TYPE == 2 && TO_TYPE == 4 */
/* Fixed -> Float. */
-#if defined(FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 3
+#if defined(FRACT) && defined(L_fract) && FROM_TYPE == 4 && TO_TYPE == 3
TO_FLOAT_C_TYPE
-FRACT_CONVERT (FROM_FIXED_C_TYPE a)
+FRACT (FROM_FIXED_C_TYPE a)
{
FROM_INT_C_TYPE x;
TO_FLOAT_C_TYPE z;
@@ -1148,12 +1148,12 @@ FRACT_CONVERT (FROM_FIXED_C_TYPE a)
z = z / BASE;
return z;
}
-#endif /* defined(FRACT_CONVERT) && FROM_TYPE == 4 && TO_TYPE == 3 */
+#endif /* defined(FRACT) && FROM_TYPE == 4 && TO_TYPE == 3 */
/* Float -> Fixed. */
-#if defined(FRACT_CONVERT) && FROM_TYPE == 3 && TO_TYPE == 4
+#if defined(FRACT) && defined(L_fract) && FROM_TYPE == 3 && TO_TYPE == 4
TO_FIXED_C_TYPE
-FRACT_CONVERT (FROM_FLOAT_C_TYPE a)
+FRACT (FROM_FLOAT_C_TYPE a)
{
FROM_FLOAT_C_TYPE temp;
TO_INT_C_TYPE z;
@@ -1168,12 +1168,12 @@ FRACT_CONVERT (FROM_FLOAT_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(FRACT_CONVERT) && FROM_TYPE == 3 && TO_TYPE == 4 */
+#endif /* defined(FRACT) && FROM_TYPE == 3 && TO_TYPE == 4 */
/* Float -> Fixed with saturation. */
-#if defined(SAT_FRACT) && FROM_TYPE == 3 && TO_TYPE == 4
+#if defined(SATFRACT) && defined(L_satfract) && FROM_TYPE == 3 && TO_TYPE == 4
TO_FIXED_C_TYPE
-SAT_FRACT (FROM_FLOAT_C_TYPE a)
+SATFRACT (FROM_FLOAT_C_TYPE a)
{
FROM_FLOAT_C_TYPE temp;
TO_INT_C_TYPE z;
@@ -1209,5 +1209,5 @@ SAT_FRACT (FROM_FLOAT_C_TYPE a)
memcpy (&c, &z, TO_FIXED_SIZE);
return c;
}
-#endif /* defined(SAT_FRACT) && FROM_TYPE == 3 && TO_TYPE == 4 */
+#endif /* defined(SATFRACT) && FROM_TYPE == 3 && TO_TYPE == 4 */
diff --git a/gcc/config/fixed-bit.h b/gcc/config/fixed-bit.h
index 4e168ffead1..2717bbc0fd8 100644
--- a/gcc/config/fixed-bit.h
+++ b/gcc/config/fixed-bit.h
@@ -1164,12 +1164,12 @@ extern FIXED_C_TYPE FIXED_USASHL (FIXED_C_TYPE, word_type);
#define FIXED_CONVERT_OP(OP,FROM,TO) OP ## FROM ## TO
#define FIXED_CONVERT_OP2(OP,FROM,TO) OP ## FROM ## TO ## 2
-#define FRACT_CONVERT_TEMP(N1,N2) FIXED_CONVERT_OP(__fract,N1,N2)
-#define FRACT_CONVERT2_TEMP(N1,N2) FIXED_CONVERT_OP2(__fract,N1,N2)
-#define SAT_FRACT_TEMP(N1,N2) FIXED_CONVERT_OP(__satfract,N1,N2)
-#define SAT_FRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(__satfract,N1,N2)
-#define UNSIGNED_FRACT_CONVERT_TEMP(N1,N2) FIXED_CONVERT_OP(__fractuns,N1,N2)
-#define UNSIGNED_SAT_FRACT_TEMP(N1,N2) FIXED_CONVERT_OP(__satfractuns,N1,N2)
+#define FRACT_TEMP(N1,N2) FIXED_CONVERT_OP(__fract,N1,N2)
+#define FRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(__fract,N1,N2)
+#define SATFRACT_TEMP(N1,N2) FIXED_CONVERT_OP(__satfract,N1,N2)
+#define SATFRACT2_TEMP(N1,N2) FIXED_CONVERT_OP2(__satfract,N1,N2)
+#define FRACTUNS_TEMP(N1,N2) FIXED_CONVERT_OP(__fractuns,N1,N2)
+#define SATFRACTUNS_TEMP(N1,N2) FIXED_CONVERT_OP(__satfractuns,N1,N2)
/* Define conversions from fixed-point to fixed-point. */
#if FROM_TYPE == 4 && TO_TYPE == 4
@@ -1185,29 +1185,31 @@ extern FIXED_C_TYPE FIXED_USASHL (FIXED_C_TYPE, word_type);
#endif
/* Check if FROM* and TO* are in the same machine class. */
-#if FROM_MODE_UNSIGNED == TO_MODE_UNSIGNED && ((FROM_IBITS == 0 && TO_IBITS == 0) || (FROM_IBITS != 0 && TO_IBITS != 0))
-#define FRACT_CONVERT FRACT_CONVERT2_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-#define SAT_FRACT SAT_FRACT2_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+#if ((FROM_MODE_UNSIGNED == TO_MODE_UNSIGNED) \
+ && ((FROM_IBITS == 0) == (TO_IBITS == 0)))
+/* Same modes: append '2' to conversion function names */
+#define FRACT FRACT2_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+#define SATFRACT SATFRACT2_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
#else
-#define FRACT_CONVERT FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-#define SAT_FRACT SAT_FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+/* Different modes: don't append '2' to conversion function names */
+#define FRACT FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+#define SATFRACT SATFRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
#endif
-extern TO_FIXED_C_TYPE FRACT_CONVERT (FROM_FIXED_C_TYPE);
-extern TO_FIXED_C_TYPE SAT_FRACT (FROM_FIXED_C_TYPE);
+extern TO_FIXED_C_TYPE FRACT (FROM_FIXED_C_TYPE);
+extern TO_FIXED_C_TYPE SATFRACT (FROM_FIXED_C_TYPE);
#endif /* FROM_TYPE == 4 && TO_TYPE == 4 */
/* Define conversions from fixed-point to signed integer. */
#if FROM_TYPE == 4 && TO_TYPE == 1
-#define FRACT_CONVERT FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-extern TO_INT_C_TYPE FRACT_CONVERT (FROM_FIXED_C_TYPE);
+#define FRACT FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+extern TO_INT_C_TYPE FRACT (FROM_FIXED_C_TYPE);
#endif /* FROM_TYPE == 4 && TO_TYPE == 1 */
/* Define conversions from fixed-point to unsigned integer. */
#if FROM_TYPE == 4 && TO_TYPE == 2
-#define UNSIGNED_FRACT_CONVERT \
- UNSIGNED_FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-extern TO_INT_C_TYPE UNSIGNED_FRACT_CONVERT (FROM_FIXED_C_TYPE);
+#define FRACTUNS FRACTUNS_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+extern TO_INT_C_TYPE FRACTUNS (FROM_FIXED_C_TYPE);
#endif /* FROM_TYPE == 4 && TO_TYPE == 2 */
/* Define conversions from fixed-point to floating-point. */
@@ -1215,8 +1217,8 @@ extern TO_INT_C_TYPE UNSIGNED_FRACT_CONVERT (FROM_FIXED_C_TYPE);
#define BASE1(NUM) 0x1.0p ## NUM
#define BASE2(NUM) BASE1(NUM)
#define BASE BASE2(FROM_FBITS)
-#define FRACT_CONVERT FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-extern TO_FLOAT_C_TYPE FRACT_CONVERT (FROM_FIXED_C_TYPE);
+#define FRACT FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+extern TO_FLOAT_C_TYPE FRACT (FROM_FIXED_C_TYPE);
#endif /* FROM_TYPE == 4 && TO_TYPE == 3 */
/* Define conversions from signed integer to fixed-point. */
@@ -1232,10 +1234,10 @@ extern TO_FLOAT_C_TYPE FRACT_CONVERT (FROM_FIXED_C_TYPE);
#define BIG_WIDTH TO_FIXED_WIDTH
#endif
-#define FRACT_CONVERT FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-#define SAT_FRACT SAT_FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-extern TO_FIXED_C_TYPE FRACT_CONVERT (FROM_INT_C_TYPE);
-extern TO_FIXED_C_TYPE SAT_FRACT (FROM_INT_C_TYPE);
+#define FRACT FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+#define SATFRACT SATFRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+extern TO_FIXED_C_TYPE FRACT (FROM_INT_C_TYPE);
+extern TO_FIXED_C_TYPE SATFRACT (FROM_INT_C_TYPE);
#endif /* FROM_TYPE == 1 && TO_TYPE == 4 */
/* Define conversions from unsigned integer to fixed-point. */
@@ -1251,12 +1253,10 @@ extern TO_FIXED_C_TYPE SAT_FRACT (FROM_INT_C_TYPE);
#define BIG_WIDTH TO_FIXED_WIDTH
#endif
-#define UNSIGNED_FRACT_CONVERT \
- UNSIGNED_FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-#define UNSIGNED_SAT_FRACT \
- UNSIGNED_SAT_FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-extern TO_FIXED_C_TYPE UNSIGNED_FRACT_CONVERT (FROM_INT_C_TYPE);
-extern TO_FIXED_C_TYPE UNSIGNED_SAT_FRACT (FROM_INT_C_TYPE);
+#define FRACTUNS FRACTUNS_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+#define SATFRACTUNS SATFRACTUNS_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+extern TO_FIXED_C_TYPE FRACTUNS (FROM_INT_C_TYPE);
+extern TO_FIXED_C_TYPE SATFRACTUNS (FROM_INT_C_TYPE);
#endif /* FROM_TYPE == 2 && TO_TYPE == 4 */
/* Define conversions from floating-point to fixed-point. */
@@ -1278,10 +1278,10 @@ extern TO_FIXED_C_TYPE UNSIGNED_SAT_FRACT (FROM_INT_C_TYPE);
#define FIXED_MIN 0.0
#endif
-#define FRACT_CONVERT FRACT_CONVERT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-#define SAT_FRACT SAT_FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
-extern TO_FIXED_C_TYPE FRACT_CONVERT (FROM_FLOAT_C_TYPE);
-extern TO_FIXED_C_TYPE SAT_FRACT (FROM_FLOAT_C_TYPE);
+#define FRACT FRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+#define SATFRACT SATFRACT_TEMP(FROM_MODE_NAME_S,TO_MODE_NAME_S)
+extern TO_FIXED_C_TYPE FRACT (FROM_FLOAT_C_TYPE);
+extern TO_FIXED_C_TYPE SATFRACT (FROM_FLOAT_C_TYPE);
#endif /* FROM_TYPE == 3 && TO_TYPE == 4 */
#endif /* defined (FROM_MODE_NAME_S) && defined (TO_MODE_NAME_S) */