annotate gcc/config/rs6000/mm_malloc.h @ 138:fc828634a951

merge
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 08 Nov 2018 14:17:14 +0900
parents 84e7813d76e9
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
1 /* Copyright (C) 2004-2018 Free Software Foundation, Inc.
111
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 This file is part of GCC.
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 GCC is free software; you can redistribute it and/or modify
kono
parents:
diff changeset
6 it under the terms of the GNU General Public License as published by
kono
parents:
diff changeset
7 the Free Software Foundation; either version 3, or (at your option)
kono
parents:
diff changeset
8 any later version.
kono
parents:
diff changeset
9
kono
parents:
diff changeset
10 GCC is distributed in the hope that it will be useful,
kono
parents:
diff changeset
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
kono
parents:
diff changeset
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
kono
parents:
diff changeset
13 GNU General Public License for more details.
kono
parents:
diff changeset
14
kono
parents:
diff changeset
15 Under Section 7 of GPL version 3, you are granted additional
kono
parents:
diff changeset
16 permissions described in the GCC Runtime Library Exception, version
kono
parents:
diff changeset
17 3.1, as published by the Free Software Foundation.
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 You should have received a copy of the GNU General Public License and
kono
parents:
diff changeset
20 a copy of the GCC Runtime Library Exception along with this program;
kono
parents:
diff changeset
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
kono
parents:
diff changeset
22 <http://www.gnu.org/licenses/>. */
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 #ifndef _MM_MALLOC_H_INCLUDED
kono
parents:
diff changeset
25 #define _MM_MALLOC_H_INCLUDED
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 #include <stdlib.h>
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 /* We can't depend on <stdlib.h> since the prototype of posix_memalign
kono
parents:
diff changeset
30 may not be visible. */
kono
parents:
diff changeset
31 #ifndef __cplusplus
kono
parents:
diff changeset
32 extern int posix_memalign (void **, size_t, size_t);
kono
parents:
diff changeset
33 #else
kono
parents:
diff changeset
34 extern "C" int posix_memalign (void **, size_t, size_t) throw ();
kono
parents:
diff changeset
35 #endif
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 static __inline void *
kono
parents:
diff changeset
38 _mm_malloc (size_t size, size_t alignment)
kono
parents:
diff changeset
39 {
kono
parents:
diff changeset
40 /* PowerPC64 ELF V2 ABI requires quadword alignment. */
kono
parents:
diff changeset
41 size_t vec_align = sizeof (__vector float);
kono
parents:
diff changeset
42 /* Linux GLIBC malloc alignment is at least 2 X ptr size. */
kono
parents:
diff changeset
43 size_t malloc_align = (sizeof (void *) + sizeof (void *));
kono
parents:
diff changeset
44 void *ptr;
kono
parents:
diff changeset
45
kono
parents:
diff changeset
46 if (alignment == malloc_align && alignment == vec_align)
kono
parents:
diff changeset
47 return malloc (size);
kono
parents:
diff changeset
48 if (alignment < vec_align)
kono
parents:
diff changeset
49 alignment = vec_align;
kono
parents:
diff changeset
50 if (posix_memalign (&ptr, alignment, size) == 0)
kono
parents:
diff changeset
51 return ptr;
kono
parents:
diff changeset
52 else
kono
parents:
diff changeset
53 return NULL;
kono
parents:
diff changeset
54 }
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 static __inline void
kono
parents:
diff changeset
57 _mm_free (void * ptr)
kono
parents:
diff changeset
58 {
kono
parents:
diff changeset
59 free (ptr);
kono
parents:
diff changeset
60 }
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 #endif /* _MM_MALLOC_H_INCLUDED */