From 281de9c2d56a910fd4321785f9a8c97fc647b8a5 Mon Sep 17 00:00:00 2001 From: Steven Munroe Date: Thu, 24 Aug 2017 17:46:01 +0000 Subject: [PATCH] Adds the powerpc equivalent mm_malloc.h header which is needed by xmmintrin.h... Adds the powerpc equivalent mm_malloc.h header which is needed by xmmintrin.h and cleans up some noisy warnings from the previous MMX commit. From-SVN: r251339 --- gcc/ChangeLog | 4 ++ gcc/config/rs6000/mm_malloc.h | 62 +++++++++++++++++++ gcc/testsuite/ChangeLog | 5 ++ .../gcc.target/powerpc/mmx-packuswb-1.c | 2 + 4 files changed, 73 insertions(+) create mode 100644 gcc/config/rs6000/mm_malloc.h diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ac7cf9243c7..93ad528214b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2017-08-24 Steven Munroe + + * config/rs6000/mm_malloc.h: New file. + 2017-08-24 Bin Cheng PR tree-optimization/81913 diff --git a/gcc/config/rs6000/mm_malloc.h b/gcc/config/rs6000/mm_malloc.h new file mode 100644 index 00000000000..a4115e6d788 --- /dev/null +++ b/gcc/config/rs6000/mm_malloc.h @@ -0,0 +1,62 @@ +/* Copyright (C) 2004-2017 Free Software Foundation, Inc. + + This file is part of GCC. + + GCC 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. + + GCC 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 + . */ + +#ifndef _MM_MALLOC_H_INCLUDED +#define _MM_MALLOC_H_INCLUDED + +#include + +/* We can't depend on since the prototype of posix_memalign + may not be visible. */ +#ifndef __cplusplus +extern int posix_memalign (void **, size_t, size_t); +#else +extern "C" int posix_memalign (void **, size_t, size_t) throw (); +#endif + +static __inline void * +_mm_malloc (size_t size, size_t alignment) +{ + /* PowerPC64 ELF V2 ABI requires quadword alignment. */ + size_t vec_align = sizeof (__vector float); + /* Linux GLIBC malloc alignment is at least 2 X ptr size. */ + size_t malloc_align = (sizeof (void *) + sizeof (void *)); + void *ptr; + + if (alignment == malloc_align && alignment == vec_align) + return malloc (size); + if (alignment < vec_align) + alignment = vec_align; + if (posix_memalign (&ptr, alignment, size) == 0) + return ptr; + else + return NULL; +} + +static __inline void +_mm_free (void * ptr) +{ + free (ptr); +} + +#endif /* _MM_MALLOC_H_INCLUDED */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 908212fcf03..7ea69198002 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-08-24 Steven Munroe + + * gcc.target/powerpc/mmx-packuswb-1.c [NO_WARN_X86_INTRINSICS]: + Define. Suppress warning during tests. + 2017-08-24 Uros Bizjak * lib/target-supports.exp: Group together target-dependant checks. diff --git a/gcc/testsuite/gcc.target/powerpc/mmx-packuswb-1.c b/gcc/testsuite/gcc.target/powerpc/mmx-packuswb-1.c index 029d5687d71..de8ff5bc7a4 100644 --- a/gcc/testsuite/gcc.target/powerpc/mmx-packuswb-1.c +++ b/gcc/testsuite/gcc.target/powerpc/mmx-packuswb-1.c @@ -3,6 +3,8 @@ /* { dg-require-effective-target lp64 } */ /* { dg-require-effective-target p8vector_hw } */ +#define NO_WARN_X86_INTRINSICS 1 + #ifndef CHECK_H #define CHECK_H "mmx-check.h" #endif -- 2.30.2