5 const omp_alloctrait_t traits2
[]
6 = { { omp_atk_alignment
, 16 },
7 { omp_atk_sync_hint
, omp_atv_default
},
8 { omp_atk_access
, omp_atv_default
},
9 { omp_atk_pool_size
, 1024 },
10 { omp_atk_fallback
, omp_atv_default_mem_fb
},
11 { omp_atk_partition
, omp_atv_environment
} };
12 omp_alloctrait_t traits3
[]
13 = { { omp_atk_sync_hint
, omp_atv_uncontended
},
14 { omp_atk_alignment
, 32 },
15 { omp_atk_access
, omp_atv_all
},
16 { omp_atk_pool_size
, 512 },
17 { omp_atk_fallback
, omp_atv_allocator_fb
},
18 { omp_atk_fb_data
, 0 },
19 { omp_atk_partition
, omp_atv_default
} };
20 const omp_alloctrait_t traits4
[]
21 = { { omp_atk_alignment
, 128 },
22 { omp_atk_pool_size
, 1024 },
23 { omp_atk_fallback
, omp_atv_null_fb
} };
28 int *volatile p
= (int *) omp_aligned_alloc (sizeof (int), 3 * sizeof (int), omp_default_mem_alloc
);
31 omp_alloctrait_t traits
[3]
32 = { { omp_atk_alignment
, 64 },
33 { omp_atk_fallback
, omp_atv_null_fb
},
34 { omp_atk_pool_size
, 4096 } };
35 omp_allocator_handle_t a
, a2
;
37 if ((((uintptr_t) p
) % __alignof (int)) != 0)
42 omp_free (p
, omp_default_mem_alloc
);
43 p
= (int *) omp_aligned_alloc (2 * sizeof (int), 2 * sizeof (int), omp_default_mem_alloc
);
44 if ((((uintptr_t) p
) % (2 * sizeof (int))) != 0)
48 omp_free (p
, omp_null_allocator
);
49 omp_set_default_allocator (omp_default_mem_alloc
);
50 p
= (int *) omp_aligned_alloc (1, sizeof (int), omp_null_allocator
);
51 if ((((uintptr_t) p
) % __alignof (int)) != 0)
54 omp_free (p
, omp_get_default_allocator ());
56 a
= omp_init_allocator (omp_default_mem_space
, 3, traits
);
57 if (a
== omp_null_allocator
)
59 p
= (int *) omp_aligned_alloc (32, 3072, a
);
60 if ((((uintptr_t) p
) % 64) != 0)
63 p
[3071 / sizeof (int)] = 2;
64 if (omp_aligned_alloc (8, 3072, a
) != NULL
)
67 p
= (int *) omp_aligned_alloc (128, 3072, a
);
68 if ((((uintptr_t) p
) % 128) != 0)
71 p
[3071 / sizeof (int)] = 4;
72 omp_free (p
, omp_null_allocator
);
73 omp_set_default_allocator (a
);
74 if (omp_get_default_allocator () != a
)
76 p
= (int *) omp_aligned_alloc (64, 3072, omp_null_allocator
);
77 if (omp_aligned_alloc (8, 3072, omp_null_allocator
) != NULL
)
80 omp_destroy_allocator (a
);
82 a
= omp_init_allocator (omp_default_mem_space
,
83 sizeof (traits2
) / sizeof (traits2
[0]),
85 if (a
== omp_null_allocator
)
87 if (traits3
[5].key
!= omp_atk_fb_data
)
89 traits3
[5].value
= (uintptr_t) a
;
90 a2
= omp_init_allocator (omp_default_mem_space
,
91 sizeof (traits3
) / sizeof (traits3
[0]),
93 if (a2
== omp_null_allocator
)
95 p
= (int *) omp_aligned_alloc (4, 420, a2
);
96 if ((((uintptr_t) p
) % 32) != 0)
99 p
[419 / sizeof (int)] = 6;
100 q
= (int *) omp_aligned_alloc (8, 768, a2
);
101 if ((((uintptr_t) q
) % 16) != 0)
104 q
[767 / sizeof (int)] = 8;
105 r
= (int *) omp_aligned_alloc (8, 512, a2
);
106 if ((((uintptr_t) r
) % 8) != 0)
109 r
[511 / sizeof (int)] = 10;
110 omp_free (p
, omp_null_allocator
);
112 omp_free (r
, omp_null_allocator
);
113 omp_destroy_allocator (a2
);
114 omp_destroy_allocator (a
);
116 a
= omp_init_allocator (omp_default_mem_space
,
117 sizeof (traits4
) / sizeof (traits4
[0]),
119 if (a
== omp_null_allocator
)
121 if (traits3
[5].key
!= omp_atk_fb_data
)
123 traits3
[5].value
= (uintptr_t) a
;
124 a2
= omp_init_allocator (omp_default_mem_space
,
125 sizeof (traits3
) / sizeof (traits3
[0]),
127 if (a2
== omp_null_allocator
)
129 omp_set_default_allocator (a2
);
131 p
= static_cast <int *> (omp_aligned_alloc (4, 420));
133 p
= (int *) omp_aligned_alloc (4, 420, omp_null_allocator
);
135 if ((((uintptr_t) p
) % 32) != 0)
138 p
[419 / sizeof (int)] = 6;
139 q
= (int *) omp_aligned_alloc (64, 768, omp_null_allocator
);
140 if ((((uintptr_t) q
) % 128) != 0)
143 q
[767 / sizeof (int)] = 8;
144 if (omp_aligned_alloc (8, 768, omp_null_allocator
) != NULL
)
151 omp_free (p
, omp_null_allocator
);
152 omp_free (q
, omp_null_allocator
);
153 omp_free (NULL
, omp_null_allocator
);
155 omp_free (NULL
, omp_null_allocator
);
156 omp_destroy_allocator (a2
);
157 omp_destroy_allocator (a
);