media/libvpx/vpx_ports/mem.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

michael@0 1 /*
michael@0 2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
michael@0 3 *
michael@0 4 * Use of this source code is governed by a BSD-style license
michael@0 5 * that can be found in the LICENSE file in the root of the source
michael@0 6 * tree. An additional intellectual property rights grant can be found
michael@0 7 * in the file PATENTS. All contributing project authors may
michael@0 8 * be found in the AUTHORS file in the root of the source tree.
michael@0 9 */
michael@0 10
michael@0 11
michael@0 12 #ifndef VPX_PORTS_MEM_H
michael@0 13 #define VPX_PORTS_MEM_H
michael@0 14
michael@0 15 #include "vpx_config.h"
michael@0 16 #include "vpx/vpx_integer.h"
michael@0 17
michael@0 18 #if (defined(__GNUC__) && __GNUC__) || defined(__SUNPRO_C)
michael@0 19 #define DECLARE_ALIGNED(n,typ,val) typ val __attribute__ ((aligned (n)))
michael@0 20 #elif defined(_MSC_VER)
michael@0 21 #define DECLARE_ALIGNED(n,typ,val) __declspec(align(n)) typ val
michael@0 22 #else
michael@0 23 #warning No alignment directives known for this compiler.
michael@0 24 #define DECLARE_ALIGNED(n,typ,val) typ val
michael@0 25 #endif
michael@0 26 #endif
michael@0 27
michael@0 28
michael@0 29 /* Declare an aligned array on the stack, for situations where the stack
michael@0 30 * pointer may not have the alignment we expect. Creates an array with a
michael@0 31 * modified name, then defines val to be a pointer, and aligns that pointer
michael@0 32 * within the array.
michael@0 33 */
michael@0 34 #define DECLARE_ALIGNED_ARRAY(a,typ,val,n)\
michael@0 35 typ val##_[(n)+(a)/sizeof(typ)+1];\
michael@0 36 typ *val = (typ*)((((intptr_t)val##_)+(a)-1)&((intptr_t)-(a)))
michael@0 37
michael@0 38
michael@0 39 /* Indicates that the usage of the specified variable has been audited to assure
michael@0 40 * that it's safe to use uninitialized. Silences 'may be used uninitialized'
michael@0 41 * warnings on gcc.
michael@0 42 */
michael@0 43 #if defined(__GNUC__) && __GNUC__
michael@0 44 #define UNINITIALIZED_IS_SAFE(x) x=x
michael@0 45 #else
michael@0 46 #define UNINITIALIZED_IS_SAFE(x) x
michael@0 47 #endif

mercurial