aboutsummaryrefslogtreecommitdiff
path: root/libcilkrts/runtime/c_reducers.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcilkrts/runtime/c_reducers.c')
-rw-r--r--libcilkrts/runtime/c_reducers.c207
1 files changed, 36 insertions, 171 deletions
diff --git a/libcilkrts/runtime/c_reducers.c b/libcilkrts/runtime/c_reducers.c
index 5ed23582154..0e775ec2990 100644
--- a/libcilkrts/runtime/c_reducers.c
+++ b/libcilkrts/runtime/c_reducers.c
@@ -2,186 +2,51 @@
*
*************************************************************************
*
- * Copyright (C) 2010-2011
- * Intel Corporation
- *
- * This file is part of the Intel Cilk Plus Library. This library is free
- * software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
+ * @copyright
+ * Copyright (C) 2010-2011
+ * Intel Corporation
+ *
+ * @copyright
+ * This file is part of the Intel Cilk Plus Library. This library is free
+ * software; you can redistribute it and/or modify it under the
+ * terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 3, or (at your option)
+ * any later version.
+ *
+ * @copyright
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * @copyright
+ * Under Section 7 of GPL version 3, you are granted additional
+ * permissions described in the GCC Runtime Library Exception, version
+ * 3.1, as published by the Free Software Foundation.
+ *
+ * @copyright
+ * You should have received a copy of the GNU General Public License and
+ * a copy of the GCC Runtime Library Exception along with this program;
+ * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
+ * <http://www.gnu.org/licenses/>.
*
**************************************************************************/
/* Implementation of C reducers */
-#include <cilk/reducer_opadd.h>
-#include <cilk/reducer_opand.h>
-#include <cilk/reducer_opor.h>
-#include <cilk/reducer_opxor.h>
-#include <cilk/reducer_max.h>
-#include <cilk/reducer_min.h>
-#include <limits.h>
-#include <math.h> /* HUGE_VAL */
-
-#ifndef _MSC_VER
-# include <stdint.h> /* WCHAR_MIN */
-#else
-# include <wchar.h> /* WCHAR_MIN */
-#endif
-
-/* Floating-point constants */
-#ifndef HUGE_VALF
- static const unsigned int __huge_valf[] = {0x7f800000};
-# define HUGE_VALF (*((const float *)__huge_valf))
-#endif
-
-#ifndef HUGE_VALL
- static const unsigned int __huge_vall[] = {0, 0, 0x00007f80, 0};
-# define HUGE_VALL (*((const long double *)__huge_vall))
-#endif
-
// Disable warning about integer conversions losing significant bits.
// The code is correct as is.
+#ifdef __INTEL_COMPILER
#pragma warning(disable:2259)
+#endif
-CILK_C_REDUCER_OPADD_IMP(char,char)
-CILK_C_REDUCER_OPADD_IMP(unsigned char,uchar)
-CILK_C_REDUCER_OPADD_IMP(signed char,schar)
-CILK_C_REDUCER_OPADD_IMP(wchar_t,wchar_t)
-CILK_C_REDUCER_OPADD_IMP(short,short)
-CILK_C_REDUCER_OPADD_IMP(unsigned short,ushort)
-CILK_C_REDUCER_OPADD_IMP(int,int)
-CILK_C_REDUCER_OPADD_IMP(unsigned int,uint)
-CILK_C_REDUCER_OPADD_IMP(unsigned int,unsigned) // alternate name
-CILK_C_REDUCER_OPADD_IMP(long,long)
-CILK_C_REDUCER_OPADD_IMP(unsigned long,ulong)
-CILK_C_REDUCER_OPADD_IMP(long long,longlong)
-CILK_C_REDUCER_OPADD_IMP(unsigned long long,ulonglong)
-CILK_C_REDUCER_OPADD_IMP(float,float)
-CILK_C_REDUCER_OPADD_IMP(double,double)
-CILK_C_REDUCER_OPADD_IMP(long double,longdouble)
-
-CILK_C_REDUCER_OPAND_IMP(char,char)
-CILK_C_REDUCER_OPAND_IMP(unsigned char,uchar)
-CILK_C_REDUCER_OPAND_IMP(signed char,schar)
-CILK_C_REDUCER_OPAND_IMP(wchar_t,wchar_t)
-CILK_C_REDUCER_OPAND_IMP(short,short)
-CILK_C_REDUCER_OPAND_IMP(unsigned short,ushort)
-CILK_C_REDUCER_OPAND_IMP(int,int)
-CILK_C_REDUCER_OPAND_IMP(unsigned int,uint)
-CILK_C_REDUCER_OPAND_IMP(unsigned int,unsigned) // alternate name
-CILK_C_REDUCER_OPAND_IMP(long,long)
-CILK_C_REDUCER_OPAND_IMP(unsigned long,ulong)
-CILK_C_REDUCER_OPAND_IMP(long long,longlong)
-CILK_C_REDUCER_OPAND_IMP(unsigned long long,ulonglong)
-
-CILK_C_REDUCER_OPOR_IMP(char,char)
-CILK_C_REDUCER_OPOR_IMP(unsigned char,uchar)
-CILK_C_REDUCER_OPOR_IMP(signed char,schar)
-CILK_C_REDUCER_OPOR_IMP(wchar_t,wchar_t)
-CILK_C_REDUCER_OPOR_IMP(short,short)
-CILK_C_REDUCER_OPOR_IMP(unsigned short,ushort)
-CILK_C_REDUCER_OPOR_IMP(int,int)
-CILK_C_REDUCER_OPOR_IMP(unsigned int,uint)
-CILK_C_REDUCER_OPOR_IMP(unsigned int,unsigned) // alternate name
-CILK_C_REDUCER_OPOR_IMP(long,long)
-CILK_C_REDUCER_OPOR_IMP(unsigned long,ulong)
-CILK_C_REDUCER_OPOR_IMP(long long,longlong)
-CILK_C_REDUCER_OPOR_IMP(unsigned long long,ulonglong)
-
-CILK_C_REDUCER_OPXOR_IMP(char,char)
-CILK_C_REDUCER_OPXOR_IMP(unsigned char,uchar)
-CILK_C_REDUCER_OPXOR_IMP(signed char,schar)
-CILK_C_REDUCER_OPXOR_IMP(wchar_t,wchar_t)
-CILK_C_REDUCER_OPXOR_IMP(short,short)
-CILK_C_REDUCER_OPXOR_IMP(unsigned short,ushort)
-CILK_C_REDUCER_OPXOR_IMP(int,int)
-CILK_C_REDUCER_OPXOR_IMP(unsigned int,uint)
-CILK_C_REDUCER_OPXOR_IMP(unsigned int,unsigned) // alternate name
-CILK_C_REDUCER_OPXOR_IMP(long,long)
-CILK_C_REDUCER_OPXOR_IMP(unsigned long,ulong)
-CILK_C_REDUCER_OPXOR_IMP(long long,longlong)
-CILK_C_REDUCER_OPXOR_IMP(unsigned long long,ulonglong)
-
-CILK_C_REDUCER_MAX_IMP(char,char,CHAR_MIN)
-CILK_C_REDUCER_MAX_IMP(unsigned char,uchar,0)
-CILK_C_REDUCER_MAX_IMP(signed char,schar,SCHAR_MIN)
-CILK_C_REDUCER_MAX_IMP(wchar_t,wchar_t,WCHAR_MIN)
-CILK_C_REDUCER_MAX_IMP(short,short,SHRT_MIN)
-CILK_C_REDUCER_MAX_IMP(unsigned short,ushort,0)
-CILK_C_REDUCER_MAX_IMP(int,int,INT_MIN)
-CILK_C_REDUCER_MAX_IMP(unsigned int,uint,0)
-CILK_C_REDUCER_MAX_IMP(unsigned int,unsigned,0) // alternate name
-CILK_C_REDUCER_MAX_IMP(long,long,LONG_MIN)
-CILK_C_REDUCER_MAX_IMP(unsigned long,ulong,0)
-CILK_C_REDUCER_MAX_IMP(long long,longlong,LLONG_MIN)
-CILK_C_REDUCER_MAX_IMP(unsigned long long,ulonglong,0)
-CILK_C_REDUCER_MAX_IMP(float,float,-HUGE_VALF)
-CILK_C_REDUCER_MAX_IMP(double,double,-HUGE_VAL)
-CILK_C_REDUCER_MAX_IMP(long double,longdouble,-HUGE_VALL)
-CILK_C_REDUCER_MAX_INDEX_IMP(char,char,CHAR_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(unsigned char,uchar,0)
-CILK_C_REDUCER_MAX_INDEX_IMP(signed char,schar,SCHAR_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(wchar_t,wchar_t,WCHAR_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(short,short,SHRT_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(unsigned short,ushort,0)
-CILK_C_REDUCER_MAX_INDEX_IMP(int,int,INT_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(unsigned int,uint,0)
-CILK_C_REDUCER_MAX_INDEX_IMP(unsigned int,unsigned,0) // alternate name
-CILK_C_REDUCER_MAX_INDEX_IMP(long,long,LONG_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(unsigned long,ulong,0)
-CILK_C_REDUCER_MAX_INDEX_IMP(long long,longlong,LLONG_MIN)
-CILK_C_REDUCER_MAX_INDEX_IMP(unsigned long long,ulonglong,0)
-CILK_C_REDUCER_MAX_INDEX_IMP(float,float,-HUGE_VALF)
-CILK_C_REDUCER_MAX_INDEX_IMP(double,double,-HUGE_VAL)
-CILK_C_REDUCER_MAX_INDEX_IMP(long double,longdouble,-HUGE_VALL)
+#define CILK_C_DEFINE_REDUCERS
-CILK_C_REDUCER_MIN_IMP(char,char,CHAR_MAX)
-CILK_C_REDUCER_MIN_IMP(unsigned char,uchar,CHAR_MIN)
-CILK_C_REDUCER_MIN_IMP(signed char,schar,SCHAR_MAX)
-CILK_C_REDUCER_MIN_IMP(wchar_t,wchar_t,WCHAR_MAX)
-CILK_C_REDUCER_MIN_IMP(short,short,SHRT_MAX)
-CILK_C_REDUCER_MIN_IMP(unsigned short,ushort,USHRT_MAX)
-CILK_C_REDUCER_MIN_IMP(int,int,INT_MAX)
-CILK_C_REDUCER_MIN_IMP(unsigned int,uint,UINT_MAX)
-CILK_C_REDUCER_MIN_IMP(unsigned int,unsigned,UINT_MAX) // alternate name
-CILK_C_REDUCER_MIN_IMP(long,long,LONG_MAX)
-CILK_C_REDUCER_MIN_IMP(unsigned long,ulong,ULONG_MAX)
-CILK_C_REDUCER_MIN_IMP(long long,longlong,LLONG_MAX)
-CILK_C_REDUCER_MIN_IMP(unsigned long long,ulonglong,ULLONG_MAX)
-CILK_C_REDUCER_MIN_IMP(float,float,HUGE_VALF)
-CILK_C_REDUCER_MIN_IMP(double,double,HUGE_VAL)
-CILK_C_REDUCER_MIN_IMP(long double,longdouble,HUGE_VALL)
-CILK_C_REDUCER_MIN_INDEX_IMP(char,char,CHAR_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(unsigned char,uchar,CHAR_MIN)
-CILK_C_REDUCER_MIN_INDEX_IMP(signed char,schar,SCHAR_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(wchar_t,wchar_t,WCHAR_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(short,short,SHRT_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(unsigned short,ushort,USHRT_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(int,int,INT_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(unsigned int,uint,UINT_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(unsigned int,unsigned,UINT_MAX) // alternate name
-CILK_C_REDUCER_MIN_INDEX_IMP(long,long,LONG_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(unsigned long,ulong,ULONG_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(long long,longlong,LLONG_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(unsigned long long,ulonglong,ULLONG_MAX)
-CILK_C_REDUCER_MIN_INDEX_IMP(float,float,HUGE_VALF)
-CILK_C_REDUCER_MIN_INDEX_IMP(double,double,HUGE_VAL)
-CILK_C_REDUCER_MIN_INDEX_IMP(long double,longdouble,HUGE_VALL)
+#include <cilk/reducer_opadd.h>
+#include <cilk/reducer_opand.h>
+#include <cilk/reducer_opmul.h>
+#include <cilk/reducer_opor.h>
+#include <cilk/reducer_opxor.h>
+#include <cilk/reducer_min_max.h>
/* End reducer_opadd.c */