From 760bf7aa373ddcfefe8557e85b95c57a22ed067b Mon Sep 17 00:00:00 2001 From: Caroline Newcombe Date: Wed, 13 Nov 2024 14:05:20 -0600 Subject: [PATCH] Update Fortran return for complex data types (Cray and Nvidia compilers) --- Makefile.system | 8 +++++--- common_arm64.h | 2 +- common_x86_64.h | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile.system b/Makefile.system index 8351b8efb..21a0fc3ca 100644 --- a/Makefile.system +++ b/Makefile.system @@ -1392,15 +1392,17 @@ endif endif ifeq ($(F_COMPILER), CRAY) -CCOMMON_OPT += -DF_INTERFACE_INTEL +CCOMMON_OPT += -DF_INTERFACE_CRAYFC FCOMMON_OPT += -hnopattern ifdef INTERFACE64 ifneq ($(INTERFACE64), 0) FCOMMON_OPT += -s integer64 endif endif -ifneq ($(USE_OPENMP), 1) -FCOMMON_OPT += -O noomp +ifeq ($(USE_OPENMP), 1) +FCOMMON_OPT += -fopenmp +else +FCOMMON_OPT += -fno-openmp endif endif diff --git a/common_arm64.h b/common_arm64.h index 3e72e2a32..595a01995 100644 --- a/common_arm64.h +++ b/common_arm64.h @@ -44,7 +44,7 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define RMB __asm__ __volatile__ ("dmb ishld" : : : "memory") #endif -#if defined( F_INTERFACE_FLANG) || defined(F_INTERFACE_PGI) +#if defined( F_INTERFACE_FLANG) || (defined(F_INTERFACE_PGI) && (defined(__NVCOMPILER) && (__NVCOMPILER_MAJOR__ < 23 || (__NVCOMPILER_MAJOR__ == 23 && __NVCOMPILER_MINOR__ < 9)))) #define RETURN_BY_STACK #else #define RETURN_BY_COMPLEX diff --git a/common_x86_64.h b/common_x86_64.h index 21cd198f3..143e188a7 100644 --- a/common_x86_64.h +++ b/common_x86_64.h @@ -283,6 +283,10 @@ static __inline unsigned int blas_quickdivide(unsigned int x, unsigned int y){ #define RETURN_BY_STACK #endif +#ifdef F_INTERFACE_CRAYFC +#define RETURN_BY_PACKED +#endif + #ifdef F_INTERFACE_FUJITSU #define RETURN_BY_STACK #endif