Skip to content

Instantly share code, notes, and snippets.

@arichardson
Created June 21, 2017 13:43
Show Gist options
  • Save arichardson/98c725e6fd2cdd9738128507dc45fd17 to your computer and use it in GitHub Desktop.
Save arichardson/98c725e6fd2cdd9738128507dc45fd17 to your computer and use it in GitHub Desktop.
Crash repro
# 1 "<built-in>"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
/*!
***************************************************************************
* \file rdopt.c
*
* \brief
* Rate-Distortion optimized mode decision
*
* \author
* - Heiko Schwarz <hschwarz@hhi.de>
* - Valeri George <george@hhi.de>
* - Lowell Winger <lwinger@lsil.com>
* - Alexis Michael Tourapis <alexismt@ieee.org>
* \date
* 12. April 2001
**************************************************************************
*/
#if 0 /* expanded by -frewrite-includes */
#include <stdlib.h>
#endif /* expanded by -frewrite-includes */
# 19 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 1 3 4
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)stdlib.h 8.5 (Berkeley) 5/19/95
* $FreeBSD$
*/
#ifndef _STDLIB_H_
#define _STDLIB_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 1 3 4
/*-
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Berkeley Software Design, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)cdefs.h 8.8 (Berkeley) 1/9/95
* $FreeBSD$
*/
#ifndef _SYS_CDEFS_H_
#define _SYS_CDEFS_H_
/*
* Testing against Clang-specific extensions.
*/
#ifndef __has_attribute
#define __has_attribute(x) 0
#endif
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __has_extension
#define __has_extension __has_feature
#endif
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __has_feature
#define __has_feature(x) 0
#endif
# 51 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __has_include
#define __has_include(x) 0
#endif
# 54 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __has_builtin
#define __has_builtin(x) 0
#endif
# 57 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if defined(__cplusplus)
#define __BEGIN_DECLS extern "C" {
#define __END_DECLS }
#else
# 62 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __BEGIN_DECLS
#define __END_DECLS
#endif
# 65 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* This code has been put in place to help reduce the addition of
* compiler specific defines in FreeBSD code. It helps to aid in
* having a compiler-agnostic source tree.
*/
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
#if __GNUC__ >= 3 || defined(__INTEL_COMPILER)
#define __GNUCLIKE_ASM 3
#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
#else
# 78 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __GNUCLIKE_ASM 2
#endif
# 80 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __GNUCLIKE___TYPEOF 1
#define __GNUCLIKE___OFFSETOF 1
#define __GNUCLIKE___SECTION 1
#ifndef __INTEL_COMPILER
#define __GNUCLIKE_CTOR_SECTION_HANDLING 1
#endif
# 87 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
#if defined(__INTEL_COMPILER) && defined(__cplusplus) && \
__INTEL_COMPILER < 800
#undef __GNUCLIKE_BUILTIN_CONSTANT_P
#endif
# 93 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3)
#define __GNUCLIKE_BUILTIN_VARARGS 1
#define __GNUCLIKE_BUILTIN_STDARG 1
#define __GNUCLIKE_BUILTIN_VAALIST 1
#endif
# 99 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if defined(__GNUC__)
#define __GNUC_VA_LIST_COMPATIBILITY 1
#endif
# 103 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Compiler memory barriers, specific to gcc and clang.
*/
#if defined(__GNUC__)
#define __compiler_membar() __asm __volatile(" " : : : "memory")
#endif
# 110 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __INTEL_COMPILER
#define __GNUCLIKE_BUILTIN_NEXT_ARG 1
#define __GNUCLIKE_MATH_BUILTIN_RELOPS
#endif
# 115 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __GNUCLIKE_BUILTIN_MEMCPY 1
/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */
#define __CC_SUPPORTS_INLINE 1
#define __CC_SUPPORTS___INLINE 1
#define __CC_SUPPORTS___INLINE__ 1
#define __CC_SUPPORTS___FUNC__ 1
#define __CC_SUPPORTS_WARNING 1
#define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */
#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
#endif /* __GNUC__ || __INTEL_COMPILER */
# 131 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Macro to test if we're using a specific version of gcc or later.
*/
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
#define __GNUC_PREREQ__(ma, mi) \
(__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
#else
# 139 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __GNUC_PREREQ__(ma, mi) 0
#endif
# 141 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
* The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
* mode -- there must be no spaces between its arguments, and for nested
* __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also
* concatenate double-quoted strings produced by the __STRING macro, but
* this only works with ANSI C.
*
* __XSTRING is like __STRING, but it expands any macros in its argument
* first. It is only available with ANSI C.
*/
#if defined(__STDC__) || defined(__cplusplus)
#define __P(protos) protos /* full-blown ANSI C */
#define __CONCAT1(x,y) x ## y
#define __CONCAT(x,y) __CONCAT1(x,y)
#define __STRING(x) #x /* stringify without expanding x */
#define __XSTRING(x) __STRING(x) /* expand x, then stringify */
#define __const const /* define reserved names to standard */
#define __signed signed
#define __volatile volatile
#if defined(__cplusplus)
#define __inline inline /* convert to C++ keyword */
#else
# 167 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if !(defined(__CC_SUPPORTS___INLINE))
#define __inline /* delete GCC keyword */
#endif /* ! __CC_SUPPORTS___INLINE */
# 170 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* !__cplusplus */
# 171 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#else /* !(__STDC__ || __cplusplus) */
# 173 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __P(protos) () /* traditional C preprocessor */
#define __CONCAT(x,y) x/**/y
#define __STRING(x) "x"
#if !defined(__CC_SUPPORTS___INLINE)
#define __const /* delete pseudo-ANSI C keywords */
#define __inline
#define __signed
#define __volatile
/*
* In non-ANSI C environments, new programs will want ANSI-only C keywords
* deleted from the program and old programs will want them left alone.
* When using a compiler other than gcc, programs using the ANSI C keywords
* const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
* When using "gcc -traditional", we assume that this is the intent; if
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
*/
#ifndef NO_ANSI_KEYWORDS
#define const /* delete ANSI C keywords */
#define inline
#define signed
#define volatile
#endif /* !NO_ANSI_KEYWORDS */
# 196 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* !__CC_SUPPORTS___INLINE */
# 197 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* !(__STDC__ || __cplusplus) */
# 198 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Compiler-dependent macros to help declare dead (non-returning) and
* pure (no side effects) functions, and unused variables. They are
* null except for versions of gcc that are known to support the features
* properly (old versions of gcc-2 supported the dead and pure features
* in a different (wrong) way). If we do not provide an implementation
* for a given compiler, let the compile fail if it is told to use
* a feature that we cannot live without.
*/
#ifdef lint
#define __dead2
#define __pure2
#define __unused
#define __packed
#define __aligned(x)
#define __alloc_align(x)
#define __alloc_size(x)
#define __section(x)
#define __weak_symbol
#else
# 219 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __weak_symbol __attribute__((__weak__))
#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER)
#define __dead2
#define __pure2
#define __unused
#endif
# 225 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7 && !defined(__INTEL_COMPILER)
#define __dead2 __attribute__((__noreturn__))
#define __pure2 __attribute__((__const__))
#define __unused
/* XXX Find out what to do for __packed, __aligned and __section */
#endif
# 231 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(2, 7) || defined(__INTEL_COMPILER)
#define __dead2 __attribute__((__noreturn__))
#define __pure2 __attribute__((__const__))
#define __unused __attribute__((__unused__))
#define __used __attribute__((__used__))
#define __packed __attribute__((__packed__))
#define __aligned(x) __attribute__((__aligned__(x)))
#define __section(x) __attribute__((__section__(x)))
#endif
# 240 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__)
#define __alloc_size(x) __attribute__((__alloc_size__(x)))
#else
# 243 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __alloc_size(x)
#endif
# 245 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__)
#define __alloc_align(x) __attribute__((__alloc_align__(x)))
#else
# 248 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __alloc_align(x)
#endif
# 250 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* lint */
# 251 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if !__GNUC_PREREQ__(2, 95)
#define __alignof(x) __offsetof(struct { char __a; x __b; }, __b)
#endif
# 255 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Keywords added in C11.
*/
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L || defined(lint)
#if !__has_extension(c_alignas)
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
__has_extension(cxx_alignas)
#define _Alignas(x) alignas(x)
#else
# 267 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* XXX: Only emulates _Alignas(constant-expression); not _Alignas(type-name). */
#define _Alignas(x) __aligned(x)
#endif
# 270 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 271 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if defined(__cplusplus) && __cplusplus >= 201103L
#define _Alignof(x) alignof(x)
#else
# 275 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define _Alignof(x) __alignof(x)
#endif
# 277 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if !defined(__cplusplus) && !__has_extension(c_atomic) && \
!__has_extension(cxx_atomic)
/*
* No native support for _Atomic(). Place object in structure to prevent
* most forms of direct non-atomic access.
*/
#define _Atomic(T) struct { T volatile __val; }
#endif
# 286 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if defined(__cplusplus) && __cplusplus >= 201103L
#define _Noreturn [[noreturn]]
#else
# 290 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define _Noreturn __dead2
#endif
# 292 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if !__has_extension(c_static_assert)
#if (defined(__cplusplus) && __cplusplus >= 201103L) || \
__has_extension(cxx_static_assert)
#define _Static_assert(x, y) static_assert(x, y)
#elif __GNUC_PREREQ__(4,6)
# 298 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* Nothing, gcc 4.6 and higher has _Static_assert built-in */
#elif defined(__COUNTER__)
# 300 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define _Static_assert(x, y) __Static_assert(x, __COUNTER__)
#define __Static_assert(x, y) ___Static_assert(x, y)
#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1] \
__unused
#else
# 305 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define _Static_assert(x, y) struct __hack
#endif
# 307 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 308 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if !__has_extension(c_thread_local)
/*
* XXX: Some compilers (Clang 3.3, GCC 4.7) falsely announce C++11 mode
* without actually supporting the thread_local keyword. Don't check for
* the presence of C++11 when defining _Thread_local.
*/
#if /* (defined(__cplusplus) && __cplusplus >= 201103L) || */ \
__has_extension(cxx_thread_local)
#define _Thread_local thread_local
#else
# 319 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define _Thread_local __thread
#endif
# 321 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 322 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* __STDC_VERSION__ || __STDC_VERSION__ < 201112L */
# 324 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Emulation of C11 _Generic(). Unlike the previously defined C11
* keywords, it is not possible to implement this using exactly the same
* syntax. Therefore implement something similar under the name
* __generic(). Unlike _Generic(), this macro can only distinguish
* between a single type, so it requires nested invocations to
* distinguish multiple cases.
*/
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
__has_extension(c_generic_selections)
#define __generic(expr, t, yes, no) \
_Generic(expr, t: yes, default: no)
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
# 339 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __generic(expr, t, yes, no) \
__builtin_choose_expr( \
__builtin_types_compatible_p(__typeof(expr), t), yes, no)
#endif
# 343 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* C99 Static array indices in function parameter declarations. Syntax such as:
* void bar(int myArray[static 10]);
* is allowed in C99 but not in C++. Define __min_size appropriately so
* headers using it can be compiled in either language. Use like this:
* void bar(int myArray[__min_size(10)]);
*/
#if !defined(__cplusplus) && \
(defined(__clang__) || __GNUC_PREREQ__(4, 6)) && \
(!defined(__STDC_VERSION__) || (__STDC_VERSION__ >= 199901))
#define __min_size(x) static (x)
#else
# 356 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __min_size(x) (x)
#endif
# 358 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(2, 96)
#define __malloc_like __attribute__((__malloc__))
#define __pure __attribute__((__pure__))
#else
# 363 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __malloc_like
#define __pure
#endif
# 366 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
#define __always_inline __attribute__((__always_inline__))
#else
# 370 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __always_inline
#endif
# 372 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(3, 1)
#define __noinline __attribute__ ((__noinline__))
#else
# 376 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __noinline
#endif
# 378 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(3, 4)
#define __fastcall __attribute__((__fastcall__))
#define __result_use_check __attribute__((__warn_unused_result__))
#else
# 383 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __fastcall
#define __result_use_check
#endif
# 386 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(4, 1)
#define __returns_twice __attribute__((__returns_twice__))
#else
# 390 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __returns_twice
#endif
# 392 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(4, 6) || __has_builtin(__builtin_unreachable)
#define __unreachable() __builtin_unreachable()
#else
# 396 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __unreachable() ((void)0)
#endif
# 398 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* XXX: should use `#if __STDC_VERSION__ < 199901'. */
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
#define __func__ NULL
#endif
# 403 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if (defined(__INTEL_COMPILER) || (defined(__GNUC__) && __GNUC__ >= 2)) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901
#define __LONG_LONG_SUPPORTED
#endif
# 407 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* C++11 exposes a load of C99 stuff */
#if defined(__cplusplus) && __cplusplus >= 201103L
#define __LONG_LONG_SUPPORTED
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS
#endif
# 414 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
# 417 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 418 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* GCC 2.95 provides `__restrict' as an extension to C90 to support the
* C99-specific `restrict' type qualifier. We happen to use `__restrict' as
* a way to define the `restrict' type qualifier without disturbing older
* software that is unaware of C99 keywords.
*/
#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95)
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 || defined(lint)
#define __restrict
#else
# 429 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __restrict restrict
#endif
# 431 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 432 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* GNU C version 2.96 adds explicit branch prediction so that
* the CPU back-end can hint the processor and also so that
* code blocks can be reordered such that the predicted path
* sees a more linear flow, thus improving cache behavior, etc.
*
* The following two macros provide us with a way to utilize this
* compiler feature. Use __predict_true() if you expect the expression
* to evaluate to true, and __predict_false() if you expect the
* expression to evaluate to false.
*
* A few notes about usage:
*
* * Generally, __predict_false() error condition checks (unless
* you have some _strong_ reason to do otherwise, in which case
* document it), and/or __predict_true() `no-error' condition
* checks, assuming you want to optimize for the no-error case.
*
* * Other than that, if you don't know the likelihood of a test
* succeeding from empirical or other `hard' evidence, don't
* make predictions.
*
* * These are meant to be used in places that are run `a lot'.
* It is wasteful to make predictions in code that is run
* seldomly (e.g. at subsystem initialization time) as the
* basic block reordering that this affects can often generate
* larger code.
*/
#if __GNUC_PREREQ__(2, 96)
#define __predict_true(exp) __builtin_expect((exp), 1)
#define __predict_false(exp) __builtin_expect((exp), 0)
#else
# 465 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __predict_true(exp) (exp)
#define __predict_false(exp) (exp)
#endif
# 468 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if __GNUC_PREREQ__(4, 0)
#define __null_sentinel __attribute__((__sentinel__))
#define __exported __attribute__((__visibility__("default")))
#define __hidden __attribute__((__visibility__("hidden")))
#else
# 474 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __null_sentinel
#define __exported
#define __hidden
#endif
# 478 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h>
* require it.
*/
#if __GNUC_PREREQ__(4, 1)
#define __offsetof(type, field) __builtin_offsetof(type, field)
#else
# 486 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __cplusplus
#define __offsetof(type, field) \
((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field))
#else
# 490 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __offsetof(type, field) \
(__offsetof__ (reinterpret_cast <__size_t> \
(&reinterpret_cast <const volatile char &> \
(static_cast<type *> (0)->field))))
#endif
# 495 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 496 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __rangeof(type, start, end) \
(__offsetof(type, end) - __offsetof(type, start))
/*
* Given the pointer x to the member m of the struct s, return
* a pointer to the containing structure. When using GCC, we first
* assign pointer x to a local variable, to check that its type is
* compatible with member m.
*/
#if __GNUC_PREREQ__(3, 1)
#define __containerof(x, s, m) ({ \
const volatile __typeof(((s *)0)->m) *__x = (x); \
__DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\
})
#else
# 511 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __containerof(x, s, m) \
__DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m))
#endif
# 514 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Compiler-dependent macros to declare that functions take printf-like
* or scanf-like arguments. They are null except for versions of gcc
* that are known to support the features properly (old versions of gcc-2
* didn't permit keeping the keywords out of the application namespace).
*/
#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER)
#define __printflike(fmtarg, firstvararg)
#define __scanflike(fmtarg, firstvararg)
#define __format_arg(fmtarg)
#define __strfmonlike(fmtarg, firstvararg)
#define __strftimelike(fmtarg, firstvararg)
#else
# 528 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __printflike(fmtarg, firstvararg) \
__attribute__((__format__ (__printf__, fmtarg, firstvararg)))
#define __scanflike(fmtarg, firstvararg) \
__attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
#define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
#define __strfmonlike(fmtarg, firstvararg) \
__attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
#define __strftimelike(fmtarg, firstvararg) \
__attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
#endif
# 538 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */
#if defined(__FreeBSD_cc_version) && __FreeBSD_cc_version >= 300001 && \
defined(__GNUC__) && !defined(__INTEL_COMPILER)
#define __printf0like(fmtarg, firstvararg) \
__attribute__((__format__ (__printf0__, fmtarg, firstvararg)))
#else
# 545 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __printf0like(fmtarg, firstvararg)
#endif
# 547 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
#ifndef __INTEL_COMPILER
#define __strong_reference(sym,aliassym) \
extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
#endif
# 553 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifdef __STDC__
#define __weak_reference(sym,alias) \
__asm__(".weak " #alias); \
__asm__(".equ " #alias ", " #sym)
#define __warn_references(sym,msg) \
__asm__(".section .gnu.warning." #sym); \
__asm__(".asciz \"" msg "\""); \
__asm__(".previous")
#define __sym_compat(sym,impl,verid) \
__asm__(".symver " #impl ", " #sym "@" #verid)
#define __sym_default(sym,impl,verid) \
__asm__(".symver " #impl ", " #sym "@@" #verid)
#else
# 566 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __weak_reference(sym,alias) \
__asm__(".weak alias"); \
__asm__(".equ alias, sym")
#define __warn_references(sym,msg) \
__asm__(".section .gnu.warning.sym"); \
__asm__(".asciz \"msg\""); \
__asm__(".previous")
#define __sym_compat(sym,impl,verid) \
__asm__(".symver impl, sym@verid")
#define __sym_default(impl,sym,verid) \
__asm__(".symver impl, sym@@verid")
#endif /* __STDC__ */
# 578 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* __GNUC__ || __INTEL_COMPILER */
# 579 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __GLOBL1(sym) __asm__(".globl " #sym)
#define __GLOBL(sym) __GLOBL1(sym)
#if defined(__GNUC__) || defined(__INTEL_COMPILER)
#define __IDSTRING(name,string) __asm__(".ident\t\"" string "\"")
#else
# 586 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* The following definition might not work well if used in header files,
* but it should be better than nothing. If you want a "do nothing"
* version, then it should generate some harmless declaration, such as:
* #define __IDSTRING(name,string) struct __hack
*/
#define __IDSTRING(name,string) static const char name[] __unused = string
#endif
# 594 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Embed the rcs id of a source file in the resulting library. Note that in
* more recent ELF binutils, we use .ident allowing the ID to be stripped.
* Usage:
* __FBSDID("$FreeBSD$");
*/
#ifndef __FBSDID
#if !defined(lint) && !defined(STRIP_FBSDID)
#define __FBSDID(s) __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
#else
# 605 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __FBSDID(s) struct __hack
#endif
# 607 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 608 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __RCSID
#ifndef NO__RCSID
#define __RCSID(s) __IDSTRING(__CONCAT(__rcsid_,__LINE__),s)
#else
# 613 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __RCSID(s) struct __hack
#endif
# 615 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 616 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __RCSID_SOURCE
#ifndef NO__RCSID_SOURCE
#define __RCSID_SOURCE(s) __IDSTRING(__CONCAT(__rcsid_source_,__LINE__),s)
#else
# 621 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __RCSID_SOURCE(s) struct __hack
#endif
# 623 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 624 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __SCCSID
#ifndef NO__SCCSID
#define __SCCSID(s) __IDSTRING(__CONCAT(__sccsid_,__LINE__),s)
#else
# 629 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __SCCSID(s) struct __hack
#endif
# 631 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 632 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __COPYRIGHT
#ifndef NO__COPYRIGHT
#define __COPYRIGHT(s) __IDSTRING(__CONCAT(__copyright_,__LINE__),s)
#else
# 637 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __COPYRIGHT(s) struct __hack
#endif
# 639 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 640 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __DECONST
#if !__has_feature(capabilities)
#define __DECONST(type, var) ((type)(__uintptr_t)(const void *)(var))
#else
# 645 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __DECONST(type, var) ((type)(__intcap_t)(__capability const void *)(var))
#endif
# 647 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 648 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __DEVOLATILE
#if !__has_feature(capabilities)
#define __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var))
#else
# 653 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __DEVOLATILE(type, var) ((type)(__intcap_t)(__capability volatile void *)(var))
#endif
# 655 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 656 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifndef __DEQUALIFY
#if !__has_feature(capabilities)
#define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var))
#else
# 661 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __DEQUALIFY(type, var) ((type)(__intcap_t)(__capability const volatile void *)(var))
#endif
# 663 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 664 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*-
* The following definitions are an extension of the behavior originally
* implemented in <sys/_posix.h>, but with a different level of granularity.
* POSIX.1 requires that the macros we test be defined before any standard
* header file is included.
*
* Here's a quick run-down of the versions:
* defined(_POSIX_SOURCE) 1003.1-1988
* _POSIX_C_SOURCE == 1 1003.1-1990
* _POSIX_C_SOURCE == 2 1003.2-1992 C Language Binding Option
* _POSIX_C_SOURCE == 199309 1003.1b-1993
* _POSIX_C_SOURCE == 199506 1003.1c-1995, 1003.1i-1995,
* and the omnibus ISO/IEC 9945-1: 1996
* _POSIX_C_SOURCE == 200112 1003.1-2001
* _POSIX_C_SOURCE == 200809 1003.1-2008
*
* In addition, the X/Open Portability Guide, which is now the Single UNIX
* Specification, defines a feature-test macro which indicates the version of
* that specification, and which subsumes _POSIX_C_SOURCE.
*
* Our macros begin with two underscores to avoid namespace screwage.
*/
/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1
#undef _POSIX_C_SOURCE /* Probably illegal, but beyond caring now. */
#define _POSIX_C_SOURCE 199009
#endif
# 693 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */
#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199209
#endif
# 699 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* Deal with various X/Open Portability Guides and Single UNIX Spec. */
#ifdef _XOPEN_SOURCE
#if _XOPEN_SOURCE - 0 >= 700
#define __XSI_VISIBLE 700
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200809
#elif _XOPEN_SOURCE - 0 >= 600
# 707 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __XSI_VISIBLE 600
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 200112
#elif _XOPEN_SOURCE - 0 >= 500
# 711 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __XSI_VISIBLE 500
#undef _POSIX_C_SOURCE
#define _POSIX_C_SOURCE 199506
#endif
# 715 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 716 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Deal with all versions of POSIX. The ordering relative to the tests above is
* important.
*/
#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE)
#define _POSIX_C_SOURCE 198808
#endif
# 724 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#ifdef _POSIX_C_SOURCE
#if _POSIX_C_SOURCE >= 200809
#define __POSIX_VISIBLE 200809
#define __ISO_C_VISIBLE 1999
#elif _POSIX_C_SOURCE >= 200112
# 729 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 200112
#define __ISO_C_VISIBLE 1999
#elif _POSIX_C_SOURCE >= 199506
# 732 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 199506
#define __ISO_C_VISIBLE 1990
#elif _POSIX_C_SOURCE >= 199309
# 735 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 199309
#define __ISO_C_VISIBLE 1990
#elif _POSIX_C_SOURCE >= 199209
# 738 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 199209
#define __ISO_C_VISIBLE 1990
#elif _POSIX_C_SOURCE >= 199009
# 741 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 199009
#define __ISO_C_VISIBLE 1990
#else
# 744 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 198808
#define __ISO_C_VISIBLE 0
#endif /* _POSIX_C_SOURCE */
# 747 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#else
# 748 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*-
* Deal with _ANSI_SOURCE:
* If it is defined, and no other compilation environment is explicitly
* requested, then define our internal feature-test macros to zero. This
* makes no difference to the preprocessor (undefined symbols in preprocessing
* expressions are defined to have value zero), but makes it more convenient for
* a test program to print out the values.
*
* If a program mistakenly defines _ANSI_SOURCE and some other macro such as
* _POSIX_C_SOURCE, we will assume that it wants the broader compilation
* environment (and in fact we will never get here).
*/
#if defined(_ANSI_SOURCE) /* Hide almost everything. */
#define __POSIX_VISIBLE 0
#define __XSI_VISIBLE 0
#define __BSD_VISIBLE 0
#define __ISO_C_VISIBLE 1990
#define __EXT1_VISIBLE 0
#elif defined(_C99_SOURCE) /* Localism to specify strict C99 env. */
# 767 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 0
#define __XSI_VISIBLE 0
#define __BSD_VISIBLE 0
#define __ISO_C_VISIBLE 1999
#define __EXT1_VISIBLE 0
#elif defined(_C11_SOURCE) /* Localism to specify strict C11 env. */
# 773 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 0
#define __XSI_VISIBLE 0
#define __BSD_VISIBLE 0
#define __ISO_C_VISIBLE 2011
#define __EXT1_VISIBLE 0
#else /* Default environment: show everything. */
# 779 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __POSIX_VISIBLE 200809
#define __XSI_VISIBLE 700
#define __BSD_VISIBLE 1
#define __ISO_C_VISIBLE 2011
#define __EXT1_VISIBLE 1
#endif
# 785 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 786 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* User override __EXT1_VISIBLE */
#if defined(__STDC_WANT_LIB_EXT1__)
#undef __EXT1_VISIBLE
#if __STDC_WANT_LIB_EXT1__
#define __EXT1_VISIBLE 1
#else
# 793 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __EXT1_VISIBLE 0
#endif
# 795 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* __STDC_WANT_LIB_EXT1__ */
# 796 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#if defined(__mips) || defined(__powerpc64__) || defined(__riscv__)
#define __NO_TLS 1
#endif
# 800 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Old versions of GCC use non-standard ARM arch symbols; acle-compat.h
* translates them to __ARM_ARCH and the modern feature symbols defined by ARM.
*/
#if defined(__arm__) && !defined(__ARM_ARCH)
#if 0 /* expanded by -frewrite-includes */
#include <machine/acle-compat.h>
#endif /* expanded by -frewrite-includes */
# 806 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
# 807 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif
# 808 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Nullability qualifiers: currently only supported by Clang.
*/
#if !(defined(__clang__) && __has_feature(nullability))
#define _Nonnull
#define _Nullable
#define _Null_unspecified
#define __NULLABILITY_PRAGMA_PUSH
#define __NULLABILITY_PRAGMA_POP
#else
# 819 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __NULLABILITY_PRAGMA_PUSH _Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wnullability-completeness\"")
#define __NULLABILITY_PRAGMA_POP _Pragma("clang diagnostic pop")
#endif
# 823 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Type Safety Checking
*
* Clang provides additional attributes to enable checking type safety
* properties that cannot be enforced by the C type system.
*/
#if __has_attribute(__argument_with_type_tag__) && \
__has_attribute(__type_tag_for_datatype__) && !defined(lint)
#define __arg_type_tag(arg_kind, arg_idx, type_tag_idx) \
__attribute__((__argument_with_type_tag__(arg_kind, arg_idx, type_tag_idx)))
#define __datatype_type_tag(kind, type) \
__attribute__((__type_tag_for_datatype__(kind, type)))
#else
# 838 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __arg_type_tag(arg_kind, arg_idx, type_tag_idx)
#define __datatype_type_tag(kind, type)
#endif
# 841 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/*
* Lock annotations.
*
* Clang provides support for doing basic thread-safety tests at
* compile-time, by marking which locks will/should be held when
* entering/leaving a functions.
*
* Furthermore, it is also possible to annotate variables and structure
* members to enforce that they are only accessed when certain locks are
* held.
*/
#if __has_extension(c_thread_safety_attributes)
#define __lock_annotate(x) __attribute__((x))
#else
# 857 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __lock_annotate(x)
#endif
# 859 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
/* Structure implements a lock. */
#define __lockable __lock_annotate(lockable)
/* Function acquires an exclusive or shared lock. */
#define __locks_exclusive(...) \
__lock_annotate(exclusive_lock_function(__VA_ARGS__))
#define __locks_shared(...) \
__lock_annotate(shared_lock_function(__VA_ARGS__))
/* Function attempts to acquire an exclusive or shared lock. */
#define __trylocks_exclusive(...) \
__lock_annotate(exclusive_trylock_function(__VA_ARGS__))
#define __trylocks_shared(...) \
__lock_annotate(shared_trylock_function(__VA_ARGS__))
/* Function releases a lock. */
#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))
/* Function asserts that an exclusive or shared lock is held. */
#define __asserts_exclusive(...) \
__lock_annotate(assert_exclusive_lock(__VA_ARGS__))
#define __asserts_shared(...) \
__lock_annotate(assert_shared_lock(__VA_ARGS__))
/* Function requires that an exclusive or shared lock is or is not held. */
#define __requires_exclusive(...) \
__lock_annotate(exclusive_locks_required(__VA_ARGS__))
#define __requires_shared(...) \
__lock_annotate(shared_locks_required(__VA_ARGS__))
#define __requires_unlocked(...) \
__lock_annotate(locks_excluded(__VA_ARGS__))
/* Function should not be analyzed. */
#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
/* Guard variables and structure members by lock. */
#define __guarded_by(x) __lock_annotate(guarded_by(x))
#define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))
/* Specify that a file requires capabilities */
#if __has_feature(capabilities)
#define __REQUIRE_CAPABILITIES
#else
# 903 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#define __REQUIRE_CAPABILITIES \
_Pragma("GCC error \"This file requires a capability-aware compiler\"")
#endif
# 906 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
#endif /* !_SYS_CDEFS_H_ */
# 908 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/cdefs.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 1 3 4
/*-
* Copyright (c) 2003 Marcel Moolenaar
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef NULL
#if !defined(__cplusplus)
#define NULL ((void *)0)
#else
# 34 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#if __cplusplus >= 201103L
#define NULL nullptr
#elif defined(__GNUG__) && defined(__GNUC__) && __GNUC__ >= 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#define NULL __null
#else
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#if defined(__LP64__)
#define NULL (0L)
#else
# 42 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#define NULL 0
#endif /* __LP64__ */
# 44 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#endif /* __GNUG__ */
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#endif /* !__cplusplus */
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
#endif
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_null.h" 3 4
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 1 3 4
/*-
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS__TYPES_H_
#define _SYS__TYPES_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 32 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 3 4
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_types.h>
#endif /* expanded by -frewrite-includes */
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 1 3 4
/*-
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* From: @(#)ansi.h 8.2 (Berkeley) 1/4/94
* From: @(#)types.h 8.3 (Berkeley) 1/5/94
* from: src/sys/i386/include/_types.h,v 1.12 2005/07/02 23:13:31 thompsa
* $FreeBSD$
*/
#ifndef _MACHINE__TYPES_H_
#define _MACHINE__TYPES_H_
#ifndef _SYS_CDEFS_H_
#error this file needs sys/cdefs.h as a prerequisite
#endif
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
/*
* Basic types upon which most other types are built.
*/
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef short __int16_t;
typedef unsigned short __uint16_t;
typedef int __int32_t;
typedef unsigned int __uint32_t;
#ifdef __mips_n64
typedef long __int64_t;
typedef unsigned long __uint64_t;
#else
# 60 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#ifndef lint
__extension__
#endif
# 63 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
/* LONGLONG */
typedef long long __int64_t;
#ifndef lint
__extension__
#endif
# 68 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
/* LONGLONG */
typedef unsigned long long __uint64_t;
#endif
# 71 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
/*
* Standard type definitions.
*/
typedef __int32_t __clock_t; /* clock()... */
typedef double __double_t;
typedef float __float_t;
#ifdef __mips_n64
#ifndef __CHERI_PURE_CAPABILITY__
typedef __int64_t __critical_t;
typedef __int64_t __intfptr_t;
typedef __int64_t __intptr_t;
#else
# 84 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __intcap_t __critical_t;
typedef __intcap_t __intfptr_t;
typedef __intcap_t __intptr_t;
#endif
# 88 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#else
# 89 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __int32_t __critical_t;
typedef __int32_t __intfptr_t;
typedef __int32_t __intptr_t;
#endif
# 93 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __int64_t __intmax_t;
typedef __int32_t __int_fast8_t;
typedef __int32_t __int_fast16_t;
typedef __int32_t __int_fast32_t;
typedef __int64_t __int_fast64_t;
typedef __int8_t __int_least8_t;
typedef __int16_t __int_least16_t;
typedef __int32_t __int_least32_t;
typedef __int64_t __int_least64_t;
#if defined(__mips_n64) || defined(__mips_n32)
typedef __int64_t __register_t;
typedef __int64_t f_register_t;
#else
# 106 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __int32_t __register_t;
typedef __int32_t f_register_t;
#endif
# 109 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#ifdef __mips_n64
typedef __int64_t __ptrdiff_t;
typedef __int64_t __segsz_t;
typedef __uint64_t __size_t;
typedef __int64_t __ssize_t;
#ifndef __CHERI_PURE_CAPABILITY__
typedef __uint64_t __uintfptr_t;
typedef __uint64_t __uintptr_t;
#else
# 118 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __uintcap_t __uintfptr_t;
typedef __uintcap_t __uintptr_t;
#endif
# 121 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#else
# 122 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */
typedef __int32_t __segsz_t; /* segment size (in pages) */
typedef __uint32_t __size_t; /* sizeof() */
typedef __int32_t __ssize_t; /* byte count or error */
typedef __uint32_t __uintfptr_t;
typedef __uint32_t __uintptr_t;
#endif
# 129 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __int64_t __time_t; /* time()... */
typedef __uint64_t __uintmax_t;
typedef __uint32_t __uint_fast8_t;
typedef __uint32_t __uint_fast16_t;
typedef __uint32_t __uint_fast32_t;
typedef __uint64_t __uint_fast64_t;
typedef __uint8_t __uint_least8_t;
typedef __uint16_t __uint_least16_t;
typedef __uint32_t __uint_least32_t;
typedef __uint64_t __uint_least64_t;
#if defined(__mips_n64) || defined(__mips_n32)
typedef __uint64_t __u_register_t;
#else
# 142 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __uint32_t __u_register_t;
#endif
# 144 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#ifdef __mips_n64
typedef __uint64_t __vm_offset_t;
typedef __uint64_t __vm_size_t;
#else
# 148 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __uint32_t __vm_offset_t;
typedef __uint32_t __vm_size_t;
#endif
# 151 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#if defined(__mips_n64) || defined(__mips_n32) /* PHYSADDR_64_BIT */
typedef __uint64_t __vm_paddr_t;
#else
# 154 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef __uint32_t __vm_paddr_t;
#endif
# 156 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef int ___wchar_t;
#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
/*
* Unusual type definitions.
*/
#ifdef __GNUCLIKE_BUILTIN_VARARGS
typedef __builtin_va_list __va_list; /* internally known to gcc */
#else
# 168 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
typedef char * __va_list;
#endif /* __GNUCLIKE_BUILTIN_VARARGS */
# 170 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#if defined(__GNUC_VA_LIST_COMPATIBILITY) && !defined(__GNUC_VA_LIST) \
&& !defined(__NO_GNUC_VA_LIST)
#define __GNUC_VA_LIST
typedef __va_list __gnuc_va_list; /* compatibility w/GNU headers*/
#endif
# 175 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
#endif /* !_MACHINE__TYPES_H_ */
# 177 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_types.h" 3 4
# 34 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 2 3 4
/*
* Standard type definitions.
*/
typedef __int32_t __blksize_t; /* file block size */
typedef __int64_t __blkcnt_t; /* file block count */
typedef __int32_t __clockid_t; /* clock_gettime()... */
typedef __uint32_t __fflags_t; /* file flags */
typedef __uint64_t __fsblkcnt_t;
typedef __uint64_t __fsfilcnt_t;
typedef __uint32_t __gid_t;
typedef __int64_t __id_t; /* can hold a gid_t, pid_t, or uid_t */
typedef __uint64_t __ino_t; /* inode number */
typedef long __key_t; /* IPC key (for Sys V IPC) */
typedef __int32_t __lwpid_t; /* Thread ID (a.k.a. LWP) */
typedef __uint16_t __mode_t; /* permissions */
typedef int __accmode_t; /* access permissions */
typedef int __nl_item;
typedef __uint64_t __nlink_t; /* link count */
typedef __int64_t __off_t; /* file offset */
typedef __int64_t __off64_t; /* file offset (alias) */
typedef __int32_t __pid_t; /* process [group] */
typedef __int64_t __rlim_t; /* resource limit - intentionally */
/* signed, because of legacy code */
/* that uses -1 for RLIM_INFINITY */
typedef __uint8_t __sa_family_t;
typedef __uint32_t __socklen_t;
typedef long __suseconds_t; /* microseconds (signed) */
typedef struct __timer *__timer_t; /* timer_gettime()... */
typedef struct __mq *__mqd_t; /* mq_open()... */
typedef __uint32_t __uid_t;
typedef unsigned int __useconds_t; /* microseconds (unsigned) */
typedef int __cpuwhich_t; /* which parameter for cpuset. */
typedef int __cpulevel_t; /* level parameter for cpuset. */
typedef int __cpusetid_t; /* cpuset identifier. */
/*
* Unusual type definitions.
*/
/*
* rune_t is declared to be an ``int'' instead of the more natural
* ``unsigned long'' or ``long''. Two things are happening here. It is not
* unsigned so that EOF (-1) can be naturally assigned to it and used. Also,
* it looks like 10646 will be a 31 bit standard. This means that if your
* ints cannot hold 32 bits, you will be in trouble. The reason an int was
* chosen over a long is that the is*() and to*() routines take ints (says
* ANSI C), but they use __ct_rune_t instead of int.
*
* NOTE: rune_t is not covered by ANSI nor other standards, and should not
* be instantiated outside of lib/libc/locale. Use wchar_t. wint_t and
* rune_t must be the same type. Also, wint_t should be able to hold all
* members of the largest character set plus one extra value (WEOF), and
* must be at least 16 bits.
*/
typedef int __ct_rune_t; /* arg type for ctype funcs */
typedef __ct_rune_t __rune_t; /* rune_t (see above) */
typedef __ct_rune_t __wint_t; /* wint_t (see above) */
/* Clang already provides these types as built-ins, but only in C++ mode. */
#if !defined(__clang__) || !defined(__cplusplus)
typedef __uint_least16_t __char16_t;
typedef __uint_least32_t __char32_t;
#endif
# 97 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 3 4
/* In C++11, char16_t and char32_t are built-in types. */
#if defined(__cplusplus) && __cplusplus >= 201103L
#define _CHAR16_T_DECLARED
#define _CHAR32_T_DECLARED
#endif
# 102 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 3 4
typedef struct {
long long __max_align1 __aligned(_Alignof(long long));
long double __max_align2 __aligned(_Alignof(long double));
} __max_align_t;
typedef __uint64_t __dev_t; /* device number */
typedef __uint32_t __fixpt_t; /* fixed point number */
/*
* mbstate_t is an opaque object to keep conversion state during multibyte
* stream conversions.
*/
typedef union {
char __mbstate8[128];
__int64_t _mbstateL; /* for alignment */
} __mbstate_t;
typedef __uintmax_t __rman_res_t;
/*
* When the following macro is defined, the system uses 64-bit inode numbers.
* Programs can use this to avoid including <sys/param.h>, with its associated
* namespace pollution.
*/
#define __INO64
#endif /* !_SYS__TYPES_H_ */
# 131 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_types.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 2 3 4
__NULLABILITY_PRAGMA_PUSH
#if __BSD_VISIBLE
#ifndef _RUNE_T_DECLARED
typedef __rune_t rune_t;
#define _RUNE_T_DECLARED
#endif
# 47 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#endif
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 53 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#ifndef __cplusplus
#ifndef _WCHAR_T_DECLARED
typedef ___wchar_t wchar_t;
#define _WCHAR_T_DECLARED
#endif
# 59 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#endif
# 60 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
typedef struct {
int quot; /* quotient */
int rem; /* remainder */
} div_t;
typedef struct {
long quot;
long rem;
} ldiv_t;
#define EXIT_FAILURE 1
#define EXIT_SUCCESS 0
#define RAND_MAX 0x7ffffffd
__BEGIN_DECLS
#ifdef _XLOCALE_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_stdlib.h>
#endif /* expanded by -frewrite-includes */
# 78 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
# 79 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#endif
# 80 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
extern int __mb_cur_max;
extern int ___mb_cur_max(void);
#define MB_CUR_MAX ((size_t)___mb_cur_max())
_Noreturn void abort(void);
int abs(int) __pure2;
int atexit(void (* _Nonnull)(void));
double atof(const char *);
int atoi(const char *);
long atol(const char *);
void *bsearch(const void *, const void *, size_t,
size_t, int (*)(const void * _Nonnull, const void *));
void *calloc(size_t, size_t) __malloc_like __result_use_check
__alloc_size(1) __alloc_size(2);
div_t div(int, int) __pure2;
_Noreturn void exit(int);
void free(void *);
char *getenv(const char *);
long labs(long) __pure2;
ldiv_t ldiv(long, long) __pure2;
void *malloc(size_t) __malloc_like __result_use_check __alloc_size(1);
int mblen(const char *, size_t);
size_t mbstowcs(wchar_t * __restrict , const char * __restrict, size_t);
int mbtowc(wchar_t * __restrict, const char * __restrict, size_t);
void qsort(void *, size_t, size_t,
int (* _Nonnull)(const void *, const void *));
int rand(void);
void *realloc(void *, size_t) __result_use_check __alloc_size(2);
void srand(unsigned);
double strtod(const char * __restrict, char ** __restrict);
float strtof(const char * __restrict, char ** __restrict);
long strtol(const char * __restrict, char ** __restrict, int);
long double
strtold(const char * __restrict, char ** __restrict);
unsigned long
strtoul(const char * __restrict, char ** __restrict, int);
int system(const char *);
int wctomb(char *, wchar_t);
size_t wcstombs(char * __restrict, const wchar_t * __restrict, size_t);
/*
* Functions added in C99 which we make conditionally available in the
* BSD^C89 namespace if the compiler supports `long long'.
* The #if test is more complicated than it ought to be because
* __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long'
* is not supported in the compilation environment (which therefore means
* that it can't really be ISO C99).
*
* (The only other extension made by C99 in thie header is _Exit().)
*/
#if __ISO_C_VISIBLE >= 1999 || defined(__cplusplus)
#ifdef __LONG_LONG_SUPPORTED
/* LONGLONG */
typedef struct {
long long quot;
long long rem;
} lldiv_t;
/* LONGLONG */
long long
atoll(const char *);
/* LONGLONG */
long long
llabs(long long) __pure2;
/* LONGLONG */
lldiv_t lldiv(long long, long long) __pure2;
/* LONGLONG */
long long
strtoll(const char * __restrict, char ** __restrict, int);
/* LONGLONG */
unsigned long long
strtoull(const char * __restrict, char ** __restrict, int);
#endif /* __LONG_LONG_SUPPORTED */
# 153 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
_Noreturn void _Exit(int);
#endif /* __ISO_C_VISIBLE >= 1999 */
# 156 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
/*
* If we're in a mode greater than C99, expose C11 functions.
*/
#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1)
__alloc_size(2);
int at_quick_exit(void (*)(void));
_Noreturn void
quick_exit(int);
#endif /* __ISO_C_VISIBLE >= 2011 */
# 167 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
/*
* Extensions made by POSIX relative to C.
*/
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
char *realpath(const char * __restrict, char * __restrict);
#endif
# 173 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#if __POSIX_VISIBLE >= 199506
int rand_r(unsigned *); /* (TSF) */
#endif
# 176 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#if __POSIX_VISIBLE >= 200112
int posix_memalign(void **, size_t, size_t); /* (ADV) */
int setenv(const char *, const char *, int);
int unsetenv(const char *);
#endif
# 181 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
int getsubopt(char **, char *const *, char **);
#ifndef _MKDTEMP_DECLARED
char *mkdtemp(char *);
#define _MKDTEMP_DECLARED
#endif
# 188 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#ifndef _MKSTEMP_DECLARED
int mkstemp(char *);
#define _MKSTEMP_DECLARED
#endif
# 192 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
# 193 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
/*
* The only changes to the XSI namespace in revision 6 were the deletion
* of the ttyslot() and valloc() functions, which FreeBSD never declared
* in this header. For revision 7, ecvt(), fcvt(), and gcvt(), which
* FreeBSD also does not have, and mktemp(), are to be deleted.
*/
#if __XSI_VISIBLE
/* XXX XSI requires pollution from <sys/wait.h> here. We'd rather not. */
long a64l(const char *);
double drand48(void);
/* char *ecvt(double, int, int * __restrict, int * __restrict); */
double erand48(unsigned short[3]);
/* char *fcvt(double, int, int * __restrict, int * __restrict); */
/* char *gcvt(double, int, int * __restrict, int * __restrict); */
int grantpt(int);
char *initstate(unsigned int, char *, size_t);
long jrand48(unsigned short[3]);
char *l64a(long);
void lcong48(unsigned short[7]);
long lrand48(void);
#if !defined(_MKTEMP_DECLARED) && (__BSD_VISIBLE || __XSI_VISIBLE <= 600)
char *mktemp(char *);
#define _MKTEMP_DECLARED
#endif
# 218 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
long mrand48(void);
long nrand48(unsigned short[3]);
int posix_openpt(int);
char *ptsname(int);
int putenv(char *);
long random(void);
unsigned short
*seed48(unsigned short[3]);
char *setstate(/* const */ char *);
void srand48(long);
void srandom(unsigned int);
int unlockpt(int);
#endif /* __XSI_VISIBLE */
# 231 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#if __BSD_VISIBLE
extern const char *malloc_conf;
extern void (*malloc_message)(void *, const char *);
/*
* The alloca() function can't be implemented in C, and on some
* platforms it can't be implemented at all as a callable function.
* The GNU C compiler provides a built-in alloca() which we can use;
* in all other cases, provide a prototype, mainly to pacify various
* incarnations of lint. On platforms where alloca() is not in libc,
* programs which use it will fail to link when compiled with non-GNU
* compilers.
*/
#if __GNUC__ >= 2 || defined(__INTEL_COMPILER)
#undef alloca /* some GNU bits try to get cute and define this on their own */
#define alloca(sz) __builtin_alloca(sz)
#elif defined(lint)
# 249 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
void *alloca(size_t);
#endif
# 251 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
void abort2(const char *, int, void **) __dead2;
__uint32_t
arc4random(void);
void arc4random_addrandom(unsigned char *, int);
void arc4random_buf(void *, size_t);
void arc4random_stir(void);
__uint32_t
arc4random_uniform(__uint32_t);
#ifdef __BLOCKS__
int atexit_b(void (^ _Nonnull)(void));
void *bsearch_b(const void *, const void *, size_t,
size_t, int (^ _Nonnull)(const void *, const void *));
#endif
# 265 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
char *getbsize(int *, long *);
/* getcap(3) functions */
char *cgetcap(char *, const char *, int);
int cgetclose(void);
int cgetent(char **, char **, const char *);
int cgetfirst(char **, char **);
int cgetmatch(const char *, const char *);
int cgetnext(char **, char **);
int cgetnum(char *, const char *, long *);
int cgetset(const char *);
int cgetstr(char *, const char *, char **);
int cgetustr(char *, const char *, char **);
int daemon(int, int);
char *devname(__dev_t, __mode_t);
char *devname_r(__dev_t, __mode_t, char *, int);
char *fdevname(int);
char *fdevname_r(int, char *, int);
int getloadavg(double [], int);
const char *
getprogname(void);
int heapsort(void *, size_t, size_t,
int (* _Nonnull)(const void *, const void *));
#ifdef __BLOCKS__
int heapsort_b(void *, size_t, size_t,
int (^ _Nonnull)(const void *, const void *));
void qsort_b(void *, size_t, size_t,
int (^ _Nonnull)(const void *, const void *));
#endif
# 295 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
int l64a_r(long, char *, int);
int mergesort(void *, size_t, size_t, int (*)(const void *, const void *));
#ifdef __BLOCKS__
int mergesort_b(void *, size_t, size_t, int (^)(const void *, const void *));
#endif
# 300 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
int mkostemp(char *, int);
int mkostemps(char *, int, int);
void qsort_r(void *, size_t, size_t, void *,
int (*)(void *, const void *, const void *));
int radixsort(const unsigned char **, int, const unsigned char *,
unsigned);
void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size(2)
__alloc_size(3);
void *reallocf(void *, size_t) __alloc_size(2);
int rpmatch(const char *);
void setprogname(const char *);
int sradixsort(const unsigned char **, int, const unsigned char *,
unsigned);
void sranddev(void);
void srandomdev(void);
long long
strtonum(const char *, long long, long long, const char **);
/* Deprecated interfaces, to be removed. */
__int64_t
strtoq(const char *, char **, int);
__uint64_t
strtouq(const char *, char **, int);
#if __has_feature(capabilities)
long strtol_c(__capability const char * __restrict,
char * __capability * __capability __restrict, int);
long double
strtold_c(__capability const char * __restrict,
char * __capability * __restrict);
#endif
# 331 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
int timsort(void *base, size_t nel, size_t width,
int (*compar) (const void *, const void *));
extern char *suboptarg; /* getsubopt(3) external variable */
#endif /* __BSD_VISIBLE */
# 337 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
#if __EXT1_VISIBLE
#ifndef _ERRNO_T_DEFINED
#define _ERRNO_T_DEFINED
typedef int errno_t;
#endif
# 344 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
/* K.3.6 */
typedef void (*constraint_handler_t)(const char * __restrict,
void * __restrict, errno_t);
/* K.3.6.1.1 */
constraint_handler_t set_constraint_handler_s(constraint_handler_t handler);
/* K.3.6.1.2 */
_Noreturn void abort_handler_s(const char * __restrict, void * __restrict,
errno_t);
/* K3.6.1.3 */
void ignore_handler_s(const char * __restrict, void * __restrict, errno_t);
#endif /* __EXT1_VISIBLE */
# 356 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
__END_DECLS
__NULLABILITY_PRAGMA_POP
#endif /* !_STDLIB_H_ */
# 361 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdlib.h" 3 4
# 20 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include <math.h>
#endif /* expanded by -frewrite-includes */
# 20 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 1 3 4
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunPro, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* from: @(#)fdlibm.h 5.1 93/09/24
* $FreeBSD$
*/
#ifndef _MATH_H_
#define _MATH_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 20 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
# 21 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 21 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
# 22 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_limits.h>
#endif /* expanded by -frewrite-includes */
# 22 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_limits.h" 1 3 4
/*-
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)limits.h 8.3 (Berkeley) 1/4/94
* from: src/sys/i386/include/_limits.h,v 1.27 2005/01/06 22:18:15 imp
* $FreeBSD$
*/
#ifndef _MACHINE__LIMITS_H_
#define _MACHINE__LIMITS_H_
/*
* According to ANSI (section 2.2.4.2), the values below must be usable by
* #if preprocessing directives. Additionally, the expression must have the
* same type as would an expression that is an object of the corresponding
* type converted according to the integral promotions. The subtraction for
* INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
* unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
*/
#define __CHAR_BIT 8 /* number of bits in a char */
#define __SCHAR_MAX 0x7f /* max value for a signed char */
#define __SCHAR_MIN (-0x7f - 1) /* min value for a signed char */
#define __UCHAR_MAX 0xff /* max value for an unsigned char */
#define __USHRT_MAX 0xffff /* max value for an unsigned short */
#define __SHRT_MAX 0x7fff /* max value for a short */
#define __SHRT_MIN (-0x7fff - 1) /* min value for a short */
#define __UINT_MAX 0xffffffff /* max value for an unsigned int */
#define __INT_MAX 0x7fffffff /* max value for an int */
#define __INT_MIN (-0x7fffffff - 1) /* min value for an int */
#ifdef __mips_n64
#define __ULONG_MAX 0xffffffffffffffff
#define __LONG_MAX 0x7fffffffffffffff
#define __LONG_MIN (-0x7fffffffffffffff - 1)
#define __LONG_BIT 64
#else
# 67 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_limits.h" 3 4
#define __ULONG_MAX 0xffffffffUL /* max value for an unsigned long */
#define __LONG_MAX 0x7fffffffL /* max value for a long */
#define __LONG_MIN (-0x7fffffffL - 1) /* min value for a long */
#define __LONG_BIT 32
#endif
# 72 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_limits.h" 3 4
/* max value for an unsigned long long */
#define __ULLONG_MAX 0xffffffffffffffffULL
#define __LLONG_MAX 0x7fffffffffffffffLL /* max value for a long long */
#define __LLONG_MIN (-0x7fffffffffffffffLL - 1) /* min for a long long */
#define __SSIZE_MAX __LONG_MAX /* max value for a ssize_t */
#define __SIZE_T_MAX __ULONG_MAX /* max value for a size_t */
#define __OFF_MAX __LLONG_MAX /* max value for an off_t */
#define __OFF_MIN __LLONG_MIN /* min value for an off_t */
/* Quads and long longs are the same size. Ensure they stay in sync. */
#define __UQUAD_MAX __ULLONG_MAX /* max value for a uquad_t */
#define __QUAD_MAX __LLONG_MAX /* max value for a quad_t */
#define __QUAD_MIN __LLONG_MIN /* min value for a quad_t */
#define __WORD_BIT 32
#define __MINSIGSTKSZ (512 * 4)
#endif /* !_MACHINE__LIMITS_H_ */
# 95 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/_limits.h" 3 4
# 23 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 2 3 4
/*
* ANSI/POSIX
*/
extern const union __infinity_un {
unsigned char __uc[8];
double __ud;
} __infinity;
extern const union __nan_un {
unsigned char __uc[sizeof(float)];
float __uf;
} __nan;
#if __GNUC_PREREQ__(3, 3) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800)
#define __MATH_BUILTIN_CONSTANTS
#endif
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __GNUC_PREREQ__(3, 0) && !defined(__INTEL_COMPILER)
#define __MATH_BUILTIN_RELOPS
#endif
# 44 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#ifdef __MATH_BUILTIN_CONSTANTS
#define HUGE_VAL __builtin_huge_val()
#else
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define HUGE_VAL (__infinity.__ud)
#endif
# 50 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __ISO_C_VISIBLE >= 1999
#define FP_ILOGB0 (-__INT_MAX)
#define FP_ILOGBNAN __INT_MAX
#ifdef __MATH_BUILTIN_CONSTANTS
#define HUGE_VALF __builtin_huge_valf()
#define HUGE_VALL __builtin_huge_vall()
#define INFINITY __builtin_inff()
#define NAN __builtin_nanf("")
#else
# 61 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define HUGE_VALF (float)HUGE_VAL
#define HUGE_VALL (long double)HUGE_VAL
#define INFINITY HUGE_VALF
#define NAN (__nan.__uf)
#endif /* __MATH_BUILTIN_CONSTANTS */
# 66 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define MATH_ERRNO 1
#define MATH_ERREXCEPT 2
#define math_errhandling MATH_ERREXCEPT
#define FP_FAST_FMAF 1
/* Symbolic constants to classify floating point numbers. */
#define FP_INFINITE 0x01
#define FP_NAN 0x02
#define FP_NORMAL 0x04
#define FP_SUBNORMAL 0x08
#define FP_ZERO 0x10
#if (__STDC_VERSION__ >= 201112L && defined(__clang__)) || \
__has_extension(c_generic_selections)
#define __fp_type_select(x, f, d, ld) _Generic((x), \
float: f(x), \
double: d(x), \
long double: ld(x), \
volatile float: f(x), \
volatile double: d(x), \
volatile long double: ld(x), \
volatile const float: f(x), \
volatile const double: d(x), \
volatile const long double: ld(x), \
const float: f(x), \
const double: d(x), \
const long double: ld(x))
#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus)
# 96 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define __fp_type_select(x, f, d, ld) __builtin_choose_expr( \
__builtin_types_compatible_p(__typeof(x), long double), ld(x), \
__builtin_choose_expr( \
__builtin_types_compatible_p(__typeof(x), double), d(x), \
__builtin_choose_expr( \
__builtin_types_compatible_p(__typeof(x), float), f(x), (void)0)))
#else
# 103 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define __fp_type_select(x, f, d, ld) \
((sizeof(x) == sizeof(float)) ? f(x) \
: (sizeof(x) == sizeof(double)) ? d(x) \
: ld(x))
#endif
# 108 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define fpclassify(x) \
__fp_type_select(x, __fpclassifyf, __fpclassifyd, __fpclassifyl)
#define isfinite(x) __fp_type_select(x, __isfinitef, __isfinite, __isfinitel)
#define isinf(x) __fp_type_select(x, __isinff, __isinf, __isinfl)
#define isnan(x) \
__fp_type_select(x, __inline_isnanf, __inline_isnan, __inline_isnanl)
#define isnormal(x) __fp_type_select(x, __isnormalf, __isnormal, __isnormall)
#ifdef __MATH_BUILTIN_RELOPS
#define isgreater(x, y) __builtin_isgreater((x), (y))
#define isgreaterequal(x, y) __builtin_isgreaterequal((x), (y))
#define isless(x, y) __builtin_isless((x), (y))
#define islessequal(x, y) __builtin_islessequal((x), (y))
#define islessgreater(x, y) __builtin_islessgreater((x), (y))
#define isunordered(x, y) __builtin_isunordered((x), (y))
#else
# 125 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define isgreater(x, y) (!isunordered((x), (y)) && (x) > (y))
#define isgreaterequal(x, y) (!isunordered((x), (y)) && (x) >= (y))
#define isless(x, y) (!isunordered((x), (y)) && (x) < (y))
#define islessequal(x, y) (!isunordered((x), (y)) && (x) <= (y))
#define islessgreater(x, y) (!isunordered((x), (y)) && \
((x) > (y) || (y) > (x)))
#define isunordered(x, y) (isnan(x) || isnan(y))
#endif /* __MATH_BUILTIN_RELOPS */
# 133 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define signbit(x) __fp_type_select(x, __signbitf, __signbit, __signbitl)
typedef __double_t double_t;
typedef __float_t float_t;
#endif /* __ISO_C_VISIBLE >= 1999 */
# 139 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
/*
* XOPEN/SVID
*/
#if __BSD_VISIBLE || __XSI_VISIBLE
#define M_E 2.7182818284590452354 /* e */
#define M_LOG2E 1.4426950408889634074 /* log 2e */
#define M_LOG10E 0.43429448190325182765 /* log 10e */
#define M_LN2 0.69314718055994530942 /* log e2 */
#define M_LN10 2.30258509299404568402 /* log e10 */
#define M_PI 3.14159265358979323846 /* pi */
#define M_PI_2 1.57079632679489661923 /* pi/2 */
#define M_PI_4 0.78539816339744830962 /* pi/4 */
#define M_1_PI 0.31830988618379067154 /* 1/pi */
#define M_2_PI 0.63661977236758134308 /* 2/pi */
#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */
#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
#define MAXFLOAT ((float)3.40282346638528860e+38)
extern int signgam;
#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
# 161 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __BSD_VISIBLE
#if 0
/* Old value from 4.4BSD-Lite math.h; this is probably better. */
#define HUGE HUGE_VAL
#else
# 167 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#define HUGE MAXFLOAT
#endif
# 169 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#endif /* __BSD_VISIBLE */
# 170 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
/*
* Most of these functions depend on the rounding mode and have the side
* effect of raising floating-point exceptions, so they are not declared
* as __pure2. In C99, FENV_ACCESS affects the purity of these functions.
*/
__BEGIN_DECLS
/*
* ANSI/POSIX
*/
int __fpclassifyd(double) __pure2;
int __fpclassifyf(float) __pure2;
int __fpclassifyl(long double) __pure2;
int __isfinitef(float) __pure2;
int __isfinite(double) __pure2;
int __isfinitel(long double) __pure2;
int __isinff(float) __pure2;
int __isinf(double) __pure2;
int __isinfl(long double) __pure2;
int __isnormalf(float) __pure2;
int __isnormal(double) __pure2;
int __isnormall(long double) __pure2;
int __signbit(double) __pure2;
int __signbitf(float) __pure2;
int __signbitl(long double) __pure2;
static __inline int
__inline_isnan(__const double __x)
{
return (__x != __x);
}
static __inline int
__inline_isnanf(__const float __x)
{
return (__x != __x);
}
static __inline int
__inline_isnanl(__const long double __x)
{
return (__x != __x);
}
/*
* Version 2 of the Single UNIX Specification (UNIX98) defined isnan() and
* isinf() as functions taking double. C99, and the subsequent POSIX revisions
* (SUSv3, POSIX.1-2001, define it as a macro that accepts any real floating
* point type. If we are targeting SUSv2 and C99 or C11 (or C++11) then we
* expose the newer definition, assuming that the language spec takes
* precedence over the operating system interface spec.
*/
#if __XSI_VISIBLE > 0 && __XSI_VISIBLE < 600 && __ISO_C_VISIBLE < 1999
#undef isinf
#undef isnan
int isinf(double);
int isnan(double);
#endif
# 231 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
double acos(double);
double asin(double);
double atan(double);
double atan2(double, double);
double cos(double);
double sin(double);
double tan(double);
double cosh(double);
double sinh(double);
double tanh(double);
double exp(double);
double frexp(double, int *); /* fundamentally !__pure2 */
double ldexp(double, int);
double log(double);
double log10(double);
double modf(double, double *); /* fundamentally !__pure2 */
double pow(double, double);
double sqrt(double);
double ceil(double);
double fabs(double) __pure2;
double floor(double);
double fmod(double, double);
/*
* These functions are not in C90.
*/
#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE
double acosh(double);
double asinh(double);
double atanh(double);
double cbrt(double);
double erf(double);
double erfc(double);
double exp2(double);
double expm1(double);
double fma(double, double, double);
double hypot(double, double);
int ilogb(double) __pure2;
double lgamma(double);
long long llrint(double);
long long llround(double);
double log1p(double);
double log2(double);
double logb(double);
long lrint(double);
long lround(double);
double nan(const char *) __pure2;
double nextafter(double, double);
double remainder(double, double);
double remquo(double, double, int *);
double rint(double);
#endif /* __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999 || __XSI_VISIBLE */
# 288 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __BSD_VISIBLE || __XSI_VISIBLE
double j0(double);
double j1(double);
double jn(int, double);
double y0(double);
double y1(double);
double yn(int, double);
#if __XSI_VISIBLE <= 500 || __BSD_VISIBLE
double gamma(double);
#endif
# 300 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __XSI_VISIBLE <= 600 || __BSD_VISIBLE
double scalb(double, double);
#endif
# 304 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#endif /* __BSD_VISIBLE || __XSI_VISIBLE */
# 305 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __BSD_VISIBLE || __ISO_C_VISIBLE >= 1999
double copysign(double, double) __pure2;
double fdim(double, double);
double fmax(double, double) __pure2;
double fmin(double, double) __pure2;
double nearbyint(double);
double round(double);
double scalbln(double, long);
double scalbn(double, int);
double tgamma(double);
double trunc(double);
#endif
# 318 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
/*
* BSD math library entry points
*/
#if __BSD_VISIBLE
double drem(double, double);
int finite(double) __pure2;
int isnanf(float) __pure2;
/*
* Reentrant version of gamma & lgamma; passes signgam back by reference
* as the second argument; user must allocate space for signgam.
*/
double gamma_r(double, int *);
double lgamma_r(double, int *);
/*
* IEEE Test Vector
*/
double significand(double);
#endif /* __BSD_VISIBLE */
# 339 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
/* float versions of ANSI/POSIX functions */
#if __ISO_C_VISIBLE >= 1999
float acosf(float);
float asinf(float);
float atanf(float);
float atan2f(float, float);
float cosf(float);
float sinf(float);
float tanf(float);
float coshf(float);
float sinhf(float);
float tanhf(float);
float exp2f(float);
float expf(float);
float expm1f(float);
float frexpf(float, int *); /* fundamentally !__pure2 */
int ilogbf(float) __pure2;
float ldexpf(float, int);
float log10f(float);
float log1pf(float);
float log2f(float);
float logf(float);
float modff(float, float *); /* fundamentally !__pure2 */
float powf(float, float);
float sqrtf(float);
float ceilf(float);
float fabsf(float) __pure2;
float floorf(float);
float fmodf(float, float);
float roundf(float);
float erff(float);
float erfcf(float);
float hypotf(float, float);
float lgammaf(float);
float tgammaf(float);
float acoshf(float);
float asinhf(float);
float atanhf(float);
float cbrtf(float);
float logbf(float);
float copysignf(float, float) __pure2;
long long llrintf(float);
long long llroundf(float);
long lrintf(float);
long lroundf(float);
float nanf(const char *) __pure2;
float nearbyintf(float);
float nextafterf(float, float);
float remainderf(float, float);
float remquof(float, float, int *);
float rintf(float);
float scalblnf(float, long);
float scalbnf(float, int);
float truncf(float);
float fdimf(float, float);
float fmaf(float, float, float);
float fmaxf(float, float) __pure2;
float fminf(float, float) __pure2;
#endif
# 406 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
/*
* float versions of BSD math library entry points
*/
#if __BSD_VISIBLE
float dremf(float, float);
int finitef(float) __pure2;
float gammaf(float);
float j0f(float);
float j1f(float);
float jnf(int, float);
float scalbf(float, float);
float y0f(float);
float y1f(float);
float ynf(int, float);
/*
* Float versions of reentrant version of gamma & lgamma; passes
* signgam back by reference as the second argument; user must
* allocate space for signgam.
*/
float gammaf_r(float, int *);
float lgammaf_r(float, int *);
/*
* float version of IEEE Test Vector
*/
float significandf(float);
#endif /* __BSD_VISIBLE */
# 435 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
/*
* long double versions of ISO/POSIX math functions
*/
#if __ISO_C_VISIBLE >= 1999
long double acoshl(long double);
long double acosl(long double);
long double asinhl(long double);
long double asinl(long double);
long double atan2l(long double, long double);
long double atanhl(long double);
long double atanl(long double);
long double cbrtl(long double);
long double ceill(long double);
long double copysignl(long double, long double) __pure2;
long double coshl(long double);
long double cosl(long double);
long double erfcl(long double);
long double erfl(long double);
long double exp2l(long double);
long double expl(long double);
long double expm1l(long double);
long double fabsl(long double) __pure2;
long double fdiml(long double, long double);
long double floorl(long double);
long double fmal(long double, long double, long double);
long double fmaxl(long double, long double) __pure2;
long double fminl(long double, long double) __pure2;
long double fmodl(long double, long double);
long double frexpl(long double, int *); /* fundamentally !__pure2 */
long double hypotl(long double, long double);
int ilogbl(long double) __pure2;
long double ldexpl(long double, int);
long double lgammal(long double);
long long llrintl(long double);
long long llroundl(long double);
long double log10l(long double);
long double log1pl(long double);
long double log2l(long double);
long double logbl(long double);
long double logl(long double);
long lrintl(long double);
long lroundl(long double);
long double modfl(long double, long double *); /* fundamentally !__pure2 */
long double nanl(const char *) __pure2;
long double nearbyintl(long double);
long double nextafterl(long double, long double);
double nexttoward(double, long double);
float nexttowardf(float, long double);
long double nexttowardl(long double, long double);
long double powl(long double, long double);
long double remainderl(long double, long double);
long double remquol(long double, long double, int *);
long double rintl(long double);
long double roundl(long double);
long double scalblnl(long double, long);
long double scalbnl(long double, int);
long double sinhl(long double);
long double sinl(long double);
long double sqrtl(long double);
long double tanhl(long double);
long double tanl(long double);
long double tgammal(long double);
long double truncl(long double);
#endif /* __ISO_C_VISIBLE >= 1999 */
# 500 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
#if __BSD_VISIBLE
long double lgammal_r(long double, int *);
#endif
# 504 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
__END_DECLS
#endif /* !_MATH_H_ */
# 508 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/math.h" 3 4
# 21 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include <assert.h>
#endif /* expanded by -frewrite-includes */
# 21 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 1 3 4
/*-
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)assert.h 8.2 (Berkeley) 1/21/94
* $FreeBSD$
*/
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 3 4
/*
* Unlike other ANSI header files, <assert.h> may usefully be included
* multiple times, with and without NDEBUG defined.
*/
#undef assert
#undef _assert
#ifdef NDEBUG
#define assert(e) ((void)0)
#define _assert(e) ((void)0)
#else
# 52 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 3 4
#define _assert(e) assert(e)
#define assert(e) ((e) ? (void)0 : __assert(__func__, __FILE__, \
__LINE__, #e))
#endif /* NDEBUG */
# 57 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 3 4
#ifndef _ASSERT_H_
#define _ASSERT_H_
/*
* Static assertions. In principle we could define static_assert for
* C++ older than C++11, but this breaks if _Static_assert is
* implemented as a macro.
*
* C++ template parameters may contain commas, even if not enclosed in
* parentheses, causing the _Static_assert macro to be invoked with more
* than two parameters.
*/
#if __ISO_C_VISIBLE >= 2011 && !defined(__cplusplus)
#define static_assert _Static_assert
#endif
# 73 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 3 4
__BEGIN_DECLS
void __assert(const char *, const char *, int, const char *) __dead2;
__END_DECLS
#endif /* !_ASSERT_H_ */
# 79 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/assert.h" 3 4
# 22 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include <limits.h>
#endif /* expanded by -frewrite-includes */
# 22 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 1 3 4
/*-
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)limits.h 8.2 (Berkeley) 1/4/94
* $FreeBSD$
*/
#ifndef _LIMITS_H_
#define _LIMITS_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __POSIX_VISIBLE
#define _POSIX_ARG_MAX 4096
#define _POSIX_LINK_MAX 8
#define _POSIX_MAX_CANON 255
#define _POSIX_MAX_INPUT 255
#define _POSIX_NAME_MAX 14
#define _POSIX_PIPE_BUF 512
#define _POSIX_SSIZE_MAX 32767
#define _POSIX_STREAM_MAX 8
#if __POSIX_VISIBLE >= 200112
#define _POSIX_CHILD_MAX 25
#define _POSIX_NGROUPS_MAX 8
#define _POSIX_OPEN_MAX 20
#define _POSIX_PATH_MAX 256
#define _POSIX_TZNAME_MAX 6
#else
# 55 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#define _POSIX_CHILD_MAX 6
#define _POSIX_NGROUPS_MAX 0
#define _POSIX_OPEN_MAX 16
#define _POSIX_PATH_MAX 255
#define _POSIX_TZNAME_MAX 3
#endif
# 61 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __POSIX_VISIBLE >= 200112
#define BC_BASE_MAX 99 /* max ibase/obase values in bc(1) */
#define BC_DIM_MAX 2048 /* max array elements in bc(1) */
#define BC_SCALE_MAX 99 /* max scale value in bc(1) */
#define BC_STRING_MAX 1000 /* max const string length in bc(1) */
#define CHARCLASS_NAME_MAX 14 /* max character class name size */
#define COLL_WEIGHTS_MAX 10 /* max weights for order keyword */
#define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */
#define LINE_MAX 2048 /* max bytes in an input line */
#define RE_DUP_MAX 255 /* max RE's in interval notation */
#define _POSIX2_BC_BASE_MAX 99
#define _POSIX2_BC_DIM_MAX 2048
#define _POSIX2_BC_SCALE_MAX 99
#define _POSIX2_BC_STRING_MAX 1000
#define _POSIX2_CHARCLASS_NAME_MAX 14
#define _POSIX2_COLL_WEIGHTS_MAX 2
#define _POSIX2_EQUIV_CLASS_MAX 2
#define _POSIX2_EXPR_NEST_MAX 32
#define _POSIX2_LINE_MAX 2048
#define _POSIX2_RE_DUP_MAX 255
#endif
# 84 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#endif
# 85 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __POSIX_VISIBLE >= 199309
#define _POSIX_AIO_LISTIO_MAX 2
#define _POSIX_AIO_MAX 1
#define _POSIX_DELAYTIMER_MAX 32
#define _POSIX_MQ_OPEN_MAX 8
#define _POSIX_MQ_PRIO_MAX 32
#define _POSIX_RTSIG_MAX 8
#define _POSIX_SEM_NSEMS_MAX 256
#define _POSIX_SEM_VALUE_MAX 32767
#define _POSIX_SIGQUEUE_MAX 32
#define _POSIX_TIMER_MAX 32
#define _POSIX_CLOCKRES_MIN 20000000
#endif
# 100 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __POSIX_VISIBLE >= 199506
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
#define _POSIX_THREAD_KEYS_MAX 128
#define _POSIX_THREAD_THREADS_MAX 64
#endif
# 106 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __POSIX_VISIBLE >= 200112
#define _POSIX_HOST_NAME_MAX 255
#define _POSIX_LOGIN_NAME_MAX 9
#define _POSIX_SS_REPL_MAX 4
#define _POSIX_SYMLINK_MAX 255
#define _POSIX_SYMLOOP_MAX 8
#define _POSIX_TRACE_EVENT_NAME_MAX 30
#define _POSIX_TRACE_NAME_MAX 8
#define _POSIX_TRACE_SYS_MAX 8
#define _POSIX_TRACE_USER_EVENT_MAX 32
#define _POSIX_TTY_NAME_MAX 9
#define _POSIX_RE_DUP_MAX _POSIX2_RE_DUP_MAX
#endif
# 121 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809
#define NL_ARGMAX 65536 /* max # of position args for printf */
#define NL_MSGMAX 32767
#define NL_SETMAX 255
#define NL_TEXTMAX 2048
#endif
# 128 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#if __XSI_VISIBLE
#define _XOPEN_IOV_MAX 16
#define _XOPEN_NAME_MAX 255
#define _XOPEN_PATH_MAX 1024
#define PASS_MAX 128 /* _PASSWORD_LEN from <pwd.h> */
#define NL_LANGMAX 31 /* max LANG name length */
#define NL_NMAX 1
#endif
# 138 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#define MB_LEN_MAX 6 /* 31-bit UTF-8 */
#if 0 /* expanded by -frewrite-includes */
#include <sys/limits.h>
#endif /* expanded by -frewrite-includes */
# 141 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 1 3 4
/*-
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS_LIMITS_H_
#define _SYS_LIMITS_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 35 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <machine/_limits.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#define CHAR_BIT __CHAR_BIT /* number of bits in a char */
#define SCHAR_MAX __SCHAR_MAX /* max value for a signed char */
#define SCHAR_MIN __SCHAR_MIN /* min value for a signed char */
#define UCHAR_MAX __UCHAR_MAX /* max value for an unsigned char */
#ifdef __CHAR_UNSIGNED__
#define CHAR_MAX UCHAR_MAX /* max value for a char */
#define CHAR_MIN 0 /* min value for a char */
#else
# 49 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#define CHAR_MAX SCHAR_MAX
#define CHAR_MIN SCHAR_MIN
#endif
# 52 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#define USHRT_MAX __USHRT_MAX /* max value for an unsigned short */
#define SHRT_MAX __SHRT_MAX /* max value for a short */
#define SHRT_MIN __SHRT_MIN /* min value for a short */
#define UINT_MAX __UINT_MAX /* max value for an unsigned int */
#define INT_MAX __INT_MAX /* max value for an int */
#define INT_MIN __INT_MIN /* min value for an int */
#define ULONG_MAX __ULONG_MAX /* max for an unsigned long */
#define LONG_MAX __LONG_MAX /* max for a long */
#define LONG_MIN __LONG_MIN /* min for a long */
#ifdef __LONG_LONG_SUPPORTED
#define ULLONG_MAX __ULLONG_MAX /* max for an unsigned long long */
#define LLONG_MAX __LLONG_MAX /* max for a long long */
#define LLONG_MIN __LLONG_MIN /* min for a long long */
#endif
# 70 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#if __POSIX_VISIBLE || __XSI_VISIBLE
#define SSIZE_MAX __SSIZE_MAX /* max value for an ssize_t */
#endif
# 74 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
#define SIZE_T_MAX __SIZE_T_MAX /* max value for a size_t */
#define OFF_MAX __OFF_MAX /* max value for an off_t */
#define OFF_MIN __OFF_MIN /* min value for an off_t */
#endif
# 81 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#if __BSD_VISIBLE
#define GID_MAX UINT_MAX /* max value for a gid_t */
#define UID_MAX UINT_MAX /* max value for a uid_t */
#define UQUAD_MAX (__UQUAD_MAX) /* max value for a uquad_t */
#define QUAD_MAX (__QUAD_MAX) /* max value for a quad_t */
#define QUAD_MIN (__QUAD_MIN) /* min value for a quad_t */
#endif
# 90 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809
#define LONG_BIT __LONG_BIT
#define WORD_BIT __WORD_BIT
#endif
# 95 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#if __POSIX_VISIBLE
#define MQ_PRIO_MAX 64
#endif
# 99 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
#endif /* !_SYS_LIMITS_H_ */
# 101 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/limits.h" 3 4
# 142 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 2 3 4
#if __POSIX_VISIBLE
#if 0 /* expanded by -frewrite-includes */
#include <sys/syslimits.h>
#endif /* expanded by -frewrite-includes */
# 144 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 1 3 4
/*-
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)syslimits.h 8.1 (Berkeley) 6/2/93
* $FreeBSD$
*/
#ifndef _SYS_SYSLIMITS_H_
#define _SYS_SYSLIMITS_H_
#if !defined(_KERNEL) && !defined(_LIMITS_H_) && !defined(_SYS_PARAM_H_)
#ifndef _SYS_CDEFS_H_
#error this file needs sys/cdefs.h as a prerequisite
#endif
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
#ifdef __CC_SUPPORTS_WARNING
#warning "No user-serviceable parts inside."
#endif
# 43 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
#endif
# 44 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
/*
* Do not add any new variables here. (See the comment at the end of
* the file for why.)
*/
#define ARG_MAX 262144 /* max bytes for an exec function */
#ifndef CHILD_MAX
#define CHILD_MAX 40 /* max simultaneous processes */
#endif
# 53 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
#define LINK_MAX 32767 /* max file link count */
#define MAX_CANON 255 /* max bytes in term canon input line */
#define MAX_INPUT 255 /* max bytes in terminal input */
#define NAME_MAX 255 /* max bytes in a file name */
#ifndef NGROUPS_MAX
#define NGROUPS_MAX 1023 /* max supplemental group id's */
#endif
# 60 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
#ifndef OPEN_MAX
#define OPEN_MAX 64 /* max open files per process */
#endif
# 63 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
#define PATH_MAX 1024 /* max bytes in pathname */
#define PIPE_BUF 512 /* max bytes for atomic pipe writes */
#define IOV_MAX 1024 /* max elements in i/o vector */
/*
* We leave the following values undefined to force applications to either
* assume conservative values or call sysconf() to get the current value.
*
* HOST_NAME_MAX
*
* (We should do this for most of the values currently defined here,
* but many programs are not prepared to deal with this yet.)
*/
#endif
# 77 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/syslimits.h" 3 4
# 145 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 2 3 4
#endif
# 146 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
#endif /* !_LIMITS_H_ */
# 148 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/limits.h" 3 4
# 23 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include <memory.h>
#endif /* expanded by -frewrite-includes */
# 23 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/memory.h" 1 3 4
/*
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)memory.h 8.1 (Berkeley) 6/2/93
*
* $FreeBSD$
*/
#if 0 /* expanded by -frewrite-includes */
#include <string.h>
#endif /* expanded by -frewrite-includes */
# 34 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/memory.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 1 3 4
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)string.h 8.1 (Berkeley) 6/2/93
* $FreeBSD$
*/
#ifndef _STRING_H_
#define _STRING_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
/*
* Prototype functions which were historically defined in <string.h>, but
* are required by POSIX to be prototyped in <strings.h>.
*/
#if __BSD_VISIBLE
#if 0 /* expanded by -frewrite-includes */
#include <strings.h>
#endif /* expanded by -frewrite-includes */
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 1 3 4
/*-
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _STRINGS_H_
#define _STRINGS_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 32 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
# 34 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
__BEGIN_DECLS
#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
int bcmp(const void *, const void *, size_t) __pure; /* LEGACY */
void bcopy(const void *, void *, size_t); /* LEGACY */
void bzero(void *, size_t); /* LEGACY */
#endif
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
#if __BSD_VISIBLE
void explicit_bzero(void *, size_t);
#endif
# 49 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
#if __XSI_VISIBLE
int ffs(int) __pure2;
#endif
# 52 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
#if __BSD_VISIBLE
int ffsl(long) __pure2;
int ffsll(long long) __pure2;
int fls(int) __pure2;
int flsl(long) __pure2;
int flsll(long long) __pure2;
#endif
# 59 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
#if __BSD_VISIBLE || __POSIX_VISIBLE <= 200112
char *index(const char *, int) __pure; /* LEGACY */
char *rindex(const char *, int) __pure; /* LEGACY */
#endif
# 63 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
int strcasecmp(const char *, const char *) __pure;
int strncasecmp(const char *, const char *, size_t) __pure;
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_strings.h>
#endif /* expanded by -frewrite-includes */
# 67 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_strings.h" 1 3 4
/*-
* Copyright (c) 2011, 2012 The FreeBSD Foundation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct _xlocale *locale_t;
#endif
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_strings.h" 3 4
/*
* This file is included from both strings.h and xlocale.h. We need to expose
* the declarations unconditionally if we are included from xlocale.h, but only
* if we are in POSIX2008 mode if included from string.h.
*/
#ifndef _XLOCALE_STRINGS1_H
#define _XLOCALE_STRINGS1_H
/*
* POSIX2008 functions
*/
int strcasecmp_l(const char *, const char *, locale_t);
int strncasecmp_l(const char *, const char *, size_t, locale_t);
#endif /* _XLOCALE_STRINGS1_H */
# 49 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_strings.h" 3 4
# 68 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 2 3 4
#endif
# 69 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
__END_DECLS
#endif /* _STRINGS_H_ */
# 72 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/strings.h" 3 4
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 2 3 4
#endif
# 47 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 52 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
__BEGIN_DECLS
#if __XSI_VISIBLE >= 600
void *memccpy(void * __restrict, const void * __restrict, int, size_t);
#endif
# 57 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
void *memchr(const void *, int, size_t) __pure;
#if __BSD_VISIBLE
void *memrchr(const void *, int, size_t) __pure;
#endif
# 61 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
int memcmp(const void *, const void *, size_t) __pure;
void *memcpy(void * __restrict, const void * __restrict, size_t);
#if __BSD_VISIBLE
void *memmem(const void *, size_t, const void *, size_t) __pure;
#endif
# 66 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
void *memmove(void *, const void *, size_t);
void *memset(void *, int, size_t);
#if __POSIX_VISIBLE >= 200809
char *stpcpy(char * __restrict, const char * __restrict);
char *stpncpy(char * __restrict, const char * __restrict, size_t);
#endif
# 72 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __BSD_VISIBLE
char *strcasestr(const char *, const char *) __pure;
#endif
# 75 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
char *strcat(char * __restrict, const char * __restrict);
char *strchr(const char *, int) __pure;
#if __BSD_VISIBLE
char *strchrnul(const char*, int) __pure;
#endif
# 80 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
int strcmp(const char *, const char *) __pure;
int strcoll(const char *, const char *);
char *strcpy(char * __restrict, const char * __restrict);
size_t strcspn(const char *, const char *) __pure;
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
char *strdup(const char *) __malloc_like;
#endif
# 87 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
char *strerror(int);
#if __POSIX_VISIBLE >= 200112
int strerror_r(int, char *, size_t);
#endif
# 91 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __BSD_VISIBLE
size_t strlcat(char * __restrict, const char * __restrict, size_t);
size_t strlcpy(char * __restrict, const char * __restrict, size_t);
#endif
# 95 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
size_t strlen(const char *) __pure;
#if __BSD_VISIBLE
void strmode(int, char *);
#endif
# 99 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
char *strncat(char * __restrict, const char * __restrict, size_t);
int strncmp(const char *, const char *, size_t) __pure;
char *strncpy(char * __restrict, const char * __restrict, size_t);
#if __POSIX_VISIBLE >= 200809
char *strndup(const char *, size_t) __malloc_like;
size_t strnlen(const char *, size_t) __pure;
#endif
# 106 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __BSD_VISIBLE
char *strnstr(const char *, const char *, size_t) __pure;
#endif
# 109 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
char *strpbrk(const char *, const char *) __pure;
char *strrchr(const char *, int) __pure;
#if __BSD_VISIBLE
char *strsep(char **, const char *);
#endif
# 114 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __POSIX_VISIBLE >= 200809
char *strsignal(int);
#endif
# 117 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
size_t strspn(const char *, const char *) __pure;
char *strstr(const char *, const char *) __pure;
char *strtok(char * __restrict, const char * __restrict);
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500
char *strtok_r(char *, const char *, char **);
#endif
# 123 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
size_t strxfrm(char * __restrict, const char * __restrict, size_t);
#if __BSD_VISIBLE
#ifndef _SWAB_DECLARED
#define _SWAB_DECLARED
#ifndef _SSIZE_T_DECLARED
typedef __ssize_t ssize_t;
#define _SSIZE_T_DECLARED
#endif /* _SIZE_T_DECLARED */
# 133 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
void swab(const void * __restrict, void * __restrict, ssize_t);
#endif /* _SWAB_DECLARED */
# 136 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __has_feature(capabilities)
__capability const void *
memchr_c_const(__capability const void *, int, size_t) __pure;
__capability void
*memchr_c(__capability const void *, int, size_t) __pure;
int memcmp_c(__capability const void *, __capability const void *, size_t)
__pure;
__capability void
*memcpy_c(__capability void * __restrict,
__capability const void * __restrict, size_t);
void *memcpy_c_fromcap(void * __restrict,
__capability const void * __restrict, size_t);
__capability void
*memcpy_c_tocap(__capability void * __restrict,
const void * __restrict, size_t);
__capability void
*memmove_c(__capability void * __restrict,
__capability const void * __restrict, size_t);
__capability void
*memset_c(__capability void *, int, size_t);
__capability char
*strchr_c(__capability const char *, int) __pure;
int strcmp_c(__capability const char *,
__capability const char *s2) __pure;
__capability char
*strcpy_c(__capability char * __restrict,
__capability const char * __restrict);
int strncmp_c(__capability const char *, __capability const char *,
size_t) __pure;
__capability char
*strncpy_c(__capability char * __restrict, __capability const char * __restrict,
size_t);
char *strncpy_c_fromcap(char * __restrict,
__capability const char * __restrict, size_t);
__capability char
*strncpy_c_tocap(__capability char * __restrict,
const char * __restrict, size_t);
size_t strnlen_c(__capability const char *, size_t) __pure;
#endif
# 177 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
int timingsafe_bcmp(const void *, const void *, size_t);
int timingsafe_memcmp(const void *, const void *, size_t);
#endif /* __BSD_VISIBLE */
# 181 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_string.h>
#endif /* expanded by -frewrite-includes */
# 183 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_string.h" 1 3 4
/*-
* Copyright (c) 2011, 2012 The FreeBSD Foundation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct _xlocale *locale_t;
#endif
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_string.h" 3 4
/*
* This file is included from both string.h and xlocale.h. We need to expose
* the declarations unconditionally if we are included from xlocale.h, but only
* if we are in POSIX2008 mode if included from string.h.
*/
#ifndef _XLOCALE_STRING1_H
#define _XLOCALE_STRING1_H
/*
* POSIX2008 functions
*/
int strcoll_l(const char *, const char *, locale_t);
size_t strxfrm_l(char *, const char *, size_t, locale_t);
#endif /* _XLOCALE_STRING1_H */
# 49 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_string.h" 3 4
/*
* xlocale extensions
*/
#ifdef _XLOCALE_H_
#ifndef _XLOCALE_STRING2_H
#define _XLOCALE_STRING2_H
char *strcasestr_l(const char *, const char *, locale_t);
#endif /* _XLOCALE_STRING2_H */
# 59 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_string.h" 3 4
#endif /* _XLOCALE_H_ */
# 60 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_string.h" 3 4
# 184 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 2 3 4
#endif
# 185 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#if __EXT1_VISIBLE
#ifndef _RSIZE_T_DEFINED
#define _RSIZE_T_DEFINED
typedef size_t rsize_t;
#endif
# 192 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
#ifndef _ERRNO_T_DEFINED
#define _ERRNO_T_DEFINED
typedef int errno_t;
#endif
# 197 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
/* ISO/IEC 9899:2011 K.3.7.4.1.1 */
errno_t memset_s(void *, rsize_t, int, rsize_t);
#endif /* __EXT1_VISIBLE */
# 201 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
__END_DECLS
#endif /* _STRING_H_ */
# 204 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/string.h" 3 4
# 35 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/memory.h" 2 3 4
# 24 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include <string.h>
#endif /* expanded by -frewrite-includes */
# 24 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 25 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
#if 0 /* expanded by -frewrite-includes */
#include "global.h"
#endif /* expanded by -frewrite-includes */
# 26 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 1
/*!
************************************************************************
* \file
* global.h
*
* \brief
* global definitions for H.264 encoder.
*
* \author
* Copyright (C) 1999 Telenor Satellite Services,Norway
* Ericsson Radio Systems, Sweden
*
* Inge Lille-Langoy <inge.lille-langoy@telenor.com>
*
* Telenor Satellite Services
* Keysers gt.13 tel.: +47 23 13 86 98
* N-0130 Oslo,Norway fax.: +47 22 77 79 80
*
* Rickard Sjoberg <rickard.sjoberg@era.ericsson.se>
*
* Ericsson Radio Systems
* KI/ERA/T/VV
* 164 80 Stockholm, Sweden
*
************************************************************************
*/
#ifndef _GLOBAL_H_
#define _GLOBAL_H_
#if 0 /* expanded by -frewrite-includes */
#include <stdio.h>
#endif /* expanded by -frewrite-includes */
# 31 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 1 3 4
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Chris Torek.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)stdio.h 8.5 (Berkeley) 4/29/95
* $FreeBSD$
*/
#ifndef _STDIO_H_
#define _STDIO_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
# 41 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 41 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
# 42 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
__NULLABILITY_PRAGMA_PUSH
typedef __off_t fpos_t;
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 51 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 200809
#ifndef _OFF_T_DECLARED
#define _OFF_T_DECLARED
typedef __off_t off_t;
#endif
# 57 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef _SSIZE_T_DECLARED
#define _SSIZE_T_DECLARED
typedef __ssize_t ssize_t;
#endif
# 61 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#endif
# 62 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef _OFF64_T_DECLARED
#define _OFF64_T_DECLARED
typedef __off64_t off64_t;
#endif
# 67 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
#ifndef _VA_LIST_DECLARED
typedef __va_list va_list;
#define _VA_LIST_DECLARED
#endif
# 73 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#endif
# 74 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#define _FSTDIO /* Define for new stdio with functions. */
/*
* NB: to fit things in six character monocase externals, the stdio
* code uses the prefix `__s' for stdio objects, typically followed
* by a three-character attempt at a mnemonic.
*/
/* stdio buffers */
struct __sbuf {
unsigned char *_base;
int _size;
};
/*
* stdio state variables.
*
* The following always hold:
*
* if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
* _lbfsize is -_bf._size, else _lbfsize is 0
* if _flags&__SRD, _w is 0
* if _flags&__SWR, _r is 0
*
* This ensures that the getc and putc macros (or inline functions) never
* try to write or read from a file that is in `read' or `write' mode.
* (Moreover, they can, and do, automatically switch from read mode to
* write mode, and back, on "r+" and "w+" files.)
*
* _lbfsize is used only to make the inline line-buffered output stream
* code as compact as possible.
*
* _ub, _up, and _ur are used when ungetc() pushes back more characters
* than fit in the current _bf, or when ungetc() pushes back a character
* that does not match the previous one in _bf. When this happens,
* _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
* _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
*
* Certain members of __sFILE are accessed directly via macros or
* inline functions. To preserve ABI compat, these members must not
* be disturbed. These members are marked below with (*).
*/
struct __sFILE {
unsigned char *_p; /* (*) current position in (some) buffer */
int _r; /* (*) read space left for getc() */
int _w; /* (*) write space left for putc() */
short _flags; /* (*) flags, below; this FILE is free if 0 */
short _file; /* (*) fileno, if Unix descriptor, else -1 */
struct __sbuf _bf; /* (*) the buffer (at least 1 byte, if !NULL) */
int _lbfsize; /* (*) 0 or -_bf._size, for inline putc */
/* operations */
void *_cookie; /* (*) cookie passed to io functions */
int (* _Nullable _close)(void *);
int (* _Nullable _read)(void *, char *, int);
fpos_t (* _Nullable _seek)(void *, fpos_t, int);
int (* _Nullable _write)(void *, const char *, int);
/* separate buffer for long sequences of ungetc() */
struct __sbuf _ub; /* ungetc buffer */
unsigned char *_up; /* saved _p when _p is doing ungetc data */
int _ur; /* saved _r when _r is counting ungetc data */
/* tricks to meet minimum requirements even when malloc() fails */
unsigned char _ubuf[3]; /* guarantee an ungetc() buffer */
unsigned char _nbuf[1]; /* guarantee a getc() buffer */
/* separate buffer for fgetln() when line crosses buffer boundary */
struct __sbuf _lb; /* buffer for fgetln() */
/* Unix stdio files get aligned to block boundaries on fseek() */
int _blksize; /* stat.st_blksize (may be != _bf._size) */
fpos_t _offset; /* current lseek offset */
struct pthread_mutex *_fl_mutex; /* used for MT-safety */
struct pthread *_fl_owner; /* current owner */
int _fl_count; /* recursive lock count */
int _orientation; /* orientation for fwide() */
__mbstate_t _mbstate; /* multibyte conversion state */
int _flags2; /* additional flags */
};
#ifndef _STDFILE_DECLARED
#define _STDFILE_DECLARED
typedef struct __sFILE FILE;
#endif
# 160 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef _STDSTREAM_DECLARED
__BEGIN_DECLS
extern FILE *__stdinp;
extern FILE *__stdoutp;
extern FILE *__stderrp;
__END_DECLS
#define _STDSTREAM_DECLARED
#endif
# 168 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#define __SLBF 0x0001 /* line buffered */
#define __SNBF 0x0002 /* unbuffered */
#define __SRD 0x0004 /* OK to read */
#define __SWR 0x0008 /* OK to write */
/* RD and WR are never simultaneously asserted */
#define __SRW 0x0010 /* open for reading & writing */
#define __SEOF 0x0020 /* found EOF */
#define __SERR 0x0040 /* found error */
#define __SMBF 0x0080 /* _bf._base is from malloc */
#define __SAPP 0x0100 /* fdopen()ed in append mode */
#define __SSTR 0x0200 /* this is an sprintf/snprintf string */
#define __SOPT 0x0400 /* do fseek() optimization */
#define __SNPT 0x0800 /* do not do fseek() optimization */
#define __SOFF 0x1000 /* set iff _offset is in fact correct */
#define __SMOD 0x2000 /* true => fgetln modified _p text */
#define __SALC 0x4000 /* allocate string space dynamically */
#define __SIGN 0x8000 /* ignore this file in _fwalk */
#define __S2OAP 0x0001 /* O_APPEND mode is set */
/*
* The following three definitions are for ANSI C, which took them
* from System V, which brilliantly took internal interface macros and
* made them official arguments to setvbuf(), without renaming them.
* Hence, these ugly _IOxxx names are *supposed* to appear in user code.
*
* Although numbered as their counterparts above, the implementation
* does not rely on this.
*/
#define _IOFBF 0 /* setvbuf should set fully buffered */
#define _IOLBF 1 /* setvbuf should set line buffered */
#define _IONBF 2 /* setvbuf should set unbuffered */
#define BUFSIZ 1024 /* size of buffer used by setbuf */
#define EOF (-1)
/*
* FOPEN_MAX is a minimum maximum, and is the number of streams that
* stdio can provide without attempting to allocate further resources
* (which could fail). Do not use this for anything.
*/
/* must be == _POSIX_STREAM_MAX <limits.h> */
#ifndef FOPEN_MAX
#define FOPEN_MAX 20 /* must be <= OPEN_MAX <sys/syslimits.h> */
#endif
# 214 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#define FILENAME_MAX 1024 /* must be <= PATH_MAX <sys/syslimits.h> */
/* System V/ANSI C; this is the wrong way to do this, do *not* use these. */
#if __XSI_VISIBLE
#define P_tmpdir "/tmp/"
#endif
# 220 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#define L_tmpnam 1024 /* XXX must be == PATH_MAX */
#define TMP_MAX 308915776
#ifndef SEEK_SET
#define SEEK_SET 0 /* set file offset to offset */
#endif
# 226 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef SEEK_CUR
#define SEEK_CUR 1 /* set file offset to current plus offset */
#endif
# 229 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef SEEK_END
#define SEEK_END 2 /* set file offset to EOF plus offset */
#endif
# 232 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#define stdin __stdinp
#define stdout __stdoutp
#define stderr __stderrp
__BEGIN_DECLS
#ifdef _XLOCALE_H_
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_stdio.h>
#endif /* expanded by -frewrite-includes */
# 239 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
# 240 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#endif
# 241 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
/*
* Functions defined in ANSI C standard.
*/
void clearerr(FILE *);
int fclose(FILE *);
int feof(FILE *);
int ferror(FILE *);
int fflush(FILE *);
int fgetc(FILE *);
int fgetpos(FILE * __restrict, fpos_t * __restrict);
char *fgets(char * __restrict, int, FILE * __restrict);
FILE *fopen(const char * __restrict, const char * __restrict);
int fprintf(FILE * __restrict, const char * __restrict, ...) __printflike(2, 3);
int fputc(int, FILE *);
int fputs(const char * __restrict, FILE * __restrict);
size_t fread(void * __restrict, size_t, size_t, FILE * __restrict);
FILE *freopen(const char * __restrict, const char * __restrict, FILE * __restrict);
int fscanf(FILE * __restrict, const char * __restrict, ...) __scanflike(2, 3);;
int fseek(FILE *, long, int);
int fsetpos(FILE *, const fpos_t *);
long ftell(FILE *);
size_t fwrite(const void * __restrict, size_t, size_t, FILE * __restrict);
int getc(FILE *);
int getchar(void);
char *gets(char *);
void perror(const char *);
int printf(const char * __restrict, ...) __printflike(1, 2);
int putc(int, FILE *);
int putchar(int);
int puts(const char *);
int remove(const char *);
int rename(const char *, const char *);
void rewind(FILE *);
int scanf(const char * __restrict, ...) __scanflike(1, 2);
void setbuf(FILE * __restrict, char * __restrict);
int setvbuf(FILE * __restrict, char * __restrict, int, size_t);
int sprintf(char * __restrict, const char * __restrict, ...) __printflike(2, 3);
int sscanf(const char * __restrict, const char * __restrict, ...) __scanflike(2, 3);
FILE *tmpfile(void);
char *tmpnam(char *);
int ungetc(int, FILE *);
int vfprintf(FILE * __restrict, const char * __restrict,
__va_list);
int vprintf(const char * __restrict, __va_list);
int vsprintf(char * __restrict, const char * __restrict,
__va_list);
#if __ISO_C_VISIBLE >= 1999
int snprintf(char * __restrict, size_t, const char * __restrict,
...) __printflike(3, 4);
int vfscanf(FILE * __restrict, const char * __restrict, __va_list)
__scanflike(2, 0);
int vscanf(const char * __restrict, __va_list) __scanflike(1, 0);
int vsnprintf(char * __restrict, size_t, const char * __restrict,
__va_list) __printflike(3, 0);
int vsscanf(const char * __restrict, const char * __restrict, __va_list)
__scanflike(2, 0);
#endif
# 299 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
/*
* Functions defined in all versions of POSIX 1003.1.
*/
#if __BSD_VISIBLE || (__POSIX_VISIBLE && __POSIX_VISIBLE <= 199506)
#define L_cuserid 17 /* size for cuserid(3); MAXLOGNAME, legacy */
#endif
# 306 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE
#define L_ctermid 1024 /* size for ctermid(3); PATH_MAX */
char *ctermid(char *);
FILE *fdopen(int, const char *);
int fileno(FILE *);
#endif /* __POSIX_VISIBLE */
# 314 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 199209
int pclose(FILE *);
FILE *popen(const char *, const char *);
#endif
# 319 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 199506
int ftrylockfile(FILE *);
void flockfile(FILE *);
void funlockfile(FILE *);
/*
* These are normally used through macros as defined below, but POSIX
* requires functions as well.
*/
int getc_unlocked(FILE *);
int getchar_unlocked(void);
int putc_unlocked(int, FILE *);
int putchar_unlocked(int);
#endif
# 334 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __BSD_VISIBLE
void clearerr_unlocked(FILE *);
int feof_unlocked(FILE *);
int ferror_unlocked(FILE *);
int fileno_unlocked(FILE *);
#endif
# 340 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 500
int fseeko(FILE *, __off_t, int);
__off_t ftello(FILE *);
#endif
# 345 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __BSD_VISIBLE || __XSI_VISIBLE > 0 && __XSI_VISIBLE < 600
int getw(FILE *);
int putw(int, FILE *);
#endif /* BSD or X/Open before issue 6 */
# 350 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __XSI_VISIBLE
char *tempnam(const char *, const char *);
#endif
# 354 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 200809
FILE *fmemopen(void * __restrict, size_t, const char * __restrict);
ssize_t getdelim(char ** __restrict, size_t * __restrict, int,
FILE * __restrict);
FILE *open_memstream(char **, size_t *);
int renameat(int, const char *, int, const char *);
int vdprintf(int, const char * __restrict, __va_list) __printflike(2, 0);
/* _WITH_GETLINE to allow pre 11 sources to build on 11+ systems */
ssize_t getline(char ** __restrict, size_t * __restrict, FILE * __restrict);
int dprintf(int, const char * __restrict, ...) __printflike(2, 3);
#endif /* __POSIX_VISIBLE >= 200809 */
# 366 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
/*
* Routines that are purely local.
*/
#if __BSD_VISIBLE
int asprintf(char **, const char *, ...) __printflike(2, 3);
char *ctermid_r(char *);
void fcloseall(void);
int fdclose(FILE *, int *);
char *fgetln(FILE *, size_t *);
const char *fmtcheck(const char *, const char *) __format_arg(2);
int fpurge(FILE *);
void setbuffer(FILE *, char *, int);
int setlinebuf(FILE *);
int vasprintf(char **, const char *, __va_list)
__printflike(2, 0);
/*
* The system error table contains messages for the first sys_nerr
* positive errno values. Use strerror() or strerror_r() from <string.h>
* instead.
*/
extern const int sys_nerr;
extern const char * const sys_errlist[];
/*
* Stdio function-access interface.
*/
FILE *funopen(const void *,
int (* _Nullable)(void *, char *, int),
int (* _Nullable)(void *, const char *, int),
fpos_t (* _Nullable)(void *, fpos_t, int),
int (* _Nullable)(void *));
#define fropen(cookie, fn) funopen(cookie, fn, 0, 0, 0)
#define fwopen(cookie, fn) funopen(cookie, 0, fn, 0, 0)
typedef __ssize_t cookie_read_function_t(void *, char *, size_t);
typedef __ssize_t cookie_write_function_t(void *, const char *, size_t);
typedef int cookie_seek_function_t(void *, off64_t *, int);
typedef int cookie_close_function_t(void *);
typedef struct {
cookie_read_function_t *read;
cookie_write_function_t *write;
cookie_seek_function_t *seek;
cookie_close_function_t *close;
} cookie_io_functions_t;
FILE *fopencookie(void *, const char *, cookie_io_functions_t);
/*
* Portability hacks. See <sys/types.h>.
*/
#ifndef _FTRUNCATE_DECLARED
#define _FTRUNCATE_DECLARED
int ftruncate(int, __off_t);
#endif
# 421 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef _LSEEK_DECLARED
#define _LSEEK_DECLARED
__off_t lseek(int, __off_t, int);
#endif
# 425 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef _MMAP_DECLARED
#define _MMAP_DECLARED
void *mmap(void *, size_t, int, int, int, __off_t);
#endif
# 429 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#ifndef _TRUNCATE_DECLARED
#define _TRUNCATE_DECLARED
int truncate(const char *, __off_t);
#endif
# 433 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#endif /* __BSD_VISIBLE */
# 434 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
/*
* Functions internal to the implementation.
*/
int __srget(FILE *);
int __swbuf(int, FILE *);
/*
* The __sfoo macros are here so that we can
* define function versions in the C library.
*/
#define __sgetc(p) (--(p)->_r < 0 ? __srget(p) : (int)(*(p)->_p++))
#if defined(__GNUC__) && defined(__STDC__)
static __inline int __sputc(int _c, FILE *_p) {
if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
return (*_p->_p++ = _c);
else
return (__swbuf(_c, _p));
}
#else
# 454 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
/*
* This has been tuned to generate reasonable code on the vax using pcc.
*/
#define __sputc(c, p) \
(--(p)->_w < 0 ? \
(p)->_w >= (p)->_lbfsize ? \
(*(p)->_p = (c)), *(p)->_p != '\n' ? \
(int)*(p)->_p++ : \
__swbuf('\n', p) : \
__swbuf((int)(c), p) : \
(*(p)->_p = (c), (int)*(p)->_p++))
#endif
# 466 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
extern int __isthreaded;
#ifndef __cplusplus
#define __sfeof(p) (((p)->_flags & __SEOF) != 0)
#define __sferror(p) (((p)->_flags & __SERR) != 0)
#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
#define __sfileno(p) ((p)->_file)
#define feof(p) (!__isthreaded ? __sfeof(p) : (feof)(p))
#define ferror(p) (!__isthreaded ? __sferror(p) : (ferror)(p))
#define clearerr(p) (!__isthreaded ? __sclearerr(p) : (clearerr)(p))
#if __POSIX_VISIBLE
#define fileno(p) (!__isthreaded ? __sfileno(p) : (fileno)(p))
#endif
# 484 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#define getc(fp) (!__isthreaded ? __sgetc(fp) : (getc)(fp))
#define putc(x, fp) (!__isthreaded ? __sputc(x, fp) : (putc)(x, fp))
#define getchar() getc(stdin)
#define putchar(x) putc(x, stdout)
#if __BSD_VISIBLE
/*
* See ISO/IEC 9945-1 ANSI/IEEE Std 1003.1 Second Edition 1996-07-12
* B.8.2.7 for the rationale behind the *_unlocked() macros.
*/
#define feof_unlocked(p) __sfeof(p)
#define ferror_unlocked(p) __sferror(p)
#define clearerr_unlocked(p) __sclearerr(p)
#define fileno_unlocked(p) __sfileno(p)
#endif
# 501 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#if __POSIX_VISIBLE >= 199506
#define getc_unlocked(fp) __sgetc(fp)
#define putc_unlocked(x, fp) __sputc(x, fp)
#define getchar_unlocked() getc_unlocked(stdin)
#define putchar_unlocked(x) putc_unlocked(x, stdout)
#endif
# 508 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
#endif /* __cplusplus */
# 509 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
__END_DECLS
__NULLABILITY_PRAGMA_POP
#endif /* !_STDIO_H_ */
# 514 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/stdio.h" 3 4
# 32 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <time.h>
#endif /* expanded by -frewrite-includes */
# 32 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 1 3 4
/*
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)time.h 8.3 (Berkeley) 1/21/94
*/
/*
* $FreeBSD$
*/
#ifndef _TIME_H_
#define _TIME_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 44 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
# 47 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE > 0 && __POSIX_VISIBLE < 200112 || __BSD_VISIBLE
/*
* Frequency of the clock ticks reported by times(). Deprecated - use
* sysconf(_SC_CLK_TCK) instead. (Removed in 1003.1-2001.)
*/
#define CLK_TCK 128
#endif
# 55 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
/* Frequency of the clock ticks reported by clock(). */
#define CLOCKS_PER_SEC 128
#ifndef _CLOCK_T_DECLARED
typedef __clock_t clock_t;
#define _CLOCK_T_DECLARED
#endif
# 63 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#ifndef _TIME_T_DECLARED
typedef __time_t time_t;
#define _TIME_T_DECLARED
#endif
# 68 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 73 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE >= 199309
/*
* New in POSIX 1003.1b-1993.
*/
#ifndef _CLOCKID_T_DECLARED
typedef __clockid_t clockid_t;
#define _CLOCKID_T_DECLARED
#endif
# 82 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#ifndef _TIMER_T_DECLARED
typedef __timer_t timer_t;
#define _TIMER_T_DECLARED
#endif
# 87 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/timespec.h>
#endif /* expanded by -frewrite-includes */
# 88 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 1 3 4
/*-
* Copyright (c) 1982, 1986, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
* from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
* $FreeBSD$
*/
#ifndef _SYS_TIMESPEC_H_
#define _SYS_TIMESPEC_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 3 4
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timespec.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timespec.h" 1 3 4
/*-
* Copyright (c) 1982, 1986, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)time.h 8.5 (Berkeley) 5/4/95
* from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
* $FreeBSD$
*/
#ifndef _SYS__TIMESPEC_H_
#define _SYS__TIMESPEC_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timespec.h" 3 4
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timespec.h" 3 4
#ifndef _TIME_T_DECLARED
typedef __time_t time_t;
#define _TIME_T_DECLARED
#endif
# 43 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timespec.h" 3 4
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
};
#endif /* !_SYS__TIMESPEC_H_ */
# 50 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timespec.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 2 3 4
#if __BSD_VISIBLE
#define TIMEVAL_TO_TIMESPEC(tv, ts) \
do { \
(ts)->tv_sec = (tv)->tv_sec; \
(ts)->tv_nsec = (tv)->tv_usec * 1000; \
} while (0)
#define TIMESPEC_TO_TIMEVAL(tv, ts) \
do { \
(tv)->tv_sec = (ts)->tv_sec; \
(tv)->tv_usec = (ts)->tv_nsec / 1000; \
} while (0)
#endif /* __BSD_VISIBLE */
# 53 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 3 4
/*
* Structure defined by POSIX.1b to be like a itimerval, but with
* timespecs. Used in the timer_*() system calls.
*/
struct itimerspec {
struct timespec it_interval;
struct timespec it_value;
};
#endif /* _SYS_TIMESPEC_H_ */
# 64 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/timespec.h" 3 4
# 89 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 2 3 4
#endif /* __POSIX_VISIBLE >= 199309 */
# 90 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE >= 200112
#ifndef _PID_T_DECLARED
typedef __pid_t pid_t;
#define _PID_T_DECLARED
#endif
# 96 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#endif
# 97 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
/* These macros are also in sys/time.h. */
#if !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112
#define CLOCK_REALTIME 0
#ifdef __BSD_VISIBLE
#define CLOCK_VIRTUAL 1
#define CLOCK_PROF 2
#endif
# 105 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#define CLOCK_MONOTONIC 4
#define CLOCK_UPTIME 5 /* FreeBSD-specific. */
#define CLOCK_UPTIME_PRECISE 7 /* FreeBSD-specific. */
#define CLOCK_UPTIME_FAST 8 /* FreeBSD-specific. */
#define CLOCK_REALTIME_PRECISE 9 /* FreeBSD-specific. */
#define CLOCK_REALTIME_FAST 10 /* FreeBSD-specific. */
#define CLOCK_MONOTONIC_PRECISE 11 /* FreeBSD-specific. */
#define CLOCK_MONOTONIC_FAST 12 /* FreeBSD-specific. */
#define CLOCK_SECOND 13 /* FreeBSD-specific. */
#define CLOCK_THREAD_CPUTIME_ID 14
#define CLOCK_PROCESS_CPUTIME_ID 15
#endif /* !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 */
# 117 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112
#if __BSD_VISIBLE
#define TIMER_RELTIME 0x0 /* relative timer */
#endif
# 122 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#define TIMER_ABSTIME 0x1 /* absolute timer */
#endif /* !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112 */
# 124 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
struct tm {
int tm_sec; /* seconds after the minute [0-60] */
int tm_min; /* minutes after the hour [0-59] */
int tm_hour; /* hours since midnight [0-23] */
int tm_mday; /* day of the month [1-31] */
int tm_mon; /* months since January [0-11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday [0-6] */
int tm_yday; /* days since January 1 [0-365] */
int tm_isdst; /* Daylight Savings Time flag */
long tm_gmtoff; /* offset from UTC in seconds */
char *tm_zone; /* timezone abbreviation */
};
#if __POSIX_VISIBLE
extern char *tzname[];
#endif
# 142 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
__BEGIN_DECLS
char *asctime(const struct tm *);
clock_t clock(void);
char *ctime(const time_t *);
double difftime(time_t, time_t);
/* XXX missing: getdate() */
struct tm *gmtime(const time_t *);
struct tm *localtime(const time_t *);
time_t mktime(struct tm *);
size_t strftime(char * __restrict, size_t, const char * __restrict,
const struct tm * __restrict);
time_t time(time_t *);
#if __POSIX_VISIBLE >= 200112
struct sigevent;
int timer_create(clockid_t, struct sigevent *__restrict, timer_t *__restrict);
int timer_delete(timer_t);
int timer_gettime(timer_t, struct itimerspec *);
int timer_getoverrun(timer_t);
int timer_settime(timer_t, int, const struct itimerspec *__restrict,
struct itimerspec *__restrict);
#endif
# 164 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE
void tzset(void);
#endif
# 167 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE >= 199309
int clock_getres(clockid_t, struct timespec *);
int clock_gettime(clockid_t, struct timespec *);
int clock_settime(clockid_t, const struct timespec *);
int nanosleep(const struct timespec *, struct timespec *);
#endif /* __POSIX_VISIBLE >= 199309 */
# 174 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE >= 200112
int clock_getcpuclockid(pid_t, clockid_t *);
int clock_nanosleep(clockid_t, int, const struct timespec *, struct timespec *);
#endif
# 179 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE >= 199506
char *asctime_r(const struct tm *, char *);
char *ctime_r(const time_t *, char *);
struct tm *gmtime_r(const time_t *, struct tm *);
struct tm *localtime_r(const time_t *, struct tm *);
#endif
# 186 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __XSI_VISIBLE
char *strptime(const char * __restrict, const char * __restrict,
struct tm * __restrict);
#endif
# 191 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __BSD_VISIBLE
char *timezone(int, int); /* XXX XSI conflict */
void tzsetwall(void);
time_t timelocal(struct tm * const);
time_t timegm(struct tm * const);
int timer_oshandle_np(timer_t timerid);
#endif /* __BSD_VISIBLE */
# 199 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
#if __POSIX_VISIBLE >= 200809 || defined(_XLOCALE_H_)
#if 0 /* expanded by -frewrite-includes */
#include <xlocale/_time.h>
#endif /* expanded by -frewrite-includes */
# 201 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_time.h" 1 3 4
/*-
* Copyright (c) 2011, 2012 The FreeBSD Foundation
* All rights reserved.
*
* This software was developed by David Chisnall under sponsorship from
* the FreeBSD Foundation.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _LOCALE_T_DEFINED
#define _LOCALE_T_DEFINED
typedef struct _xlocale *locale_t;
#endif
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_time.h" 3 4
/*
* This file is included from both locale.h and xlocale.h. We need to expose
* the declarations unconditionally if we are included from xlocale.h, but only
* if we are in POSIX2008 mode if included from locale.h.
*/
#ifndef _XLOCALE_LOCALE1_H
#define _XLOCALE_LOCALE1_H
size_t strftime_l(char * __restrict, size_t, const char * __restrict,
const struct tm * __restrict, locale_t) __strftimelike(3, 0);
#endif /* _XLOCALE_LOCALE1_H */
# 49 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_time.h" 3 4
#ifdef _XLOCALE_H_
#ifndef _XLOCALE_LOCALE2_H
#define _XLOCALE_LOCALE2_H
char *strptime_l(const char * __restrict, const char * __restrict,
struct tm * __restrict, locale_t);
#endif /* _XLOCALE_LOCALE2_H */
# 58 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_time.h" 3 4
#endif /* _XLOCALE_H_ */
# 59 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/xlocale/_time.h" 3 4
# 202 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 2 3 4
#endif
# 203 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
__END_DECLS
#endif /* !_TIME_H_ */
# 206 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/time.h" 3 4
# 33 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "win32.h"
#endif /* expanded by -frewrite-includes */
# 34 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h" 1
/*!
************************************************************************
* \file
* win32.h
*
* \brief
* win32 definitions for H.264 encoder.
*
* \author
*
************************************************************************
*/
#ifndef _WIN32_H_
#define _WIN32_H_
#if 0 /* expanded by -frewrite-includes */
# include <fcntl.h>
#endif /* expanded by -frewrite-includes */
# 17 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 1 3 4
/*-
* Copyright (c) 1983, 1990, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)fcntl.h 8.3 (Berkeley) 1/21/94
* $FreeBSD$
*/
#ifndef _SYS_FCNTL_H_
#define _SYS_FCNTL_H_
/*
* This file includes the definitions for open and fcntl
* described by POSIX for <fcntl.h>; it also includes
* related kernel definitions.
*/
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 47 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
# 49 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#ifndef _MODE_T_DECLARED
typedef __mode_t mode_t;
#define _MODE_T_DECLARED
#endif
# 54 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#ifndef _OFF_T_DECLARED
typedef __off_t off_t;
#define _OFF_T_DECLARED
#endif
# 59 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#ifndef _PID_T_DECLARED
typedef __pid_t pid_t;
#define _PID_T_DECLARED
#endif
# 64 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/*
* File status flags: these are used by open(2), fcntl(2).
* They are also used (indirectly) in the kernel file structure f_flags,
* which is a superset of the open/fcntl flags. Open flags and f_flags
* are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
* Open/fcntl flags begin with O_; kernel-internal flags begin with F.
*/
/* open-only flags */
#define O_RDONLY 0x0000 /* open for reading only */
#define O_WRONLY 0x0001 /* open for writing only */
#define O_RDWR 0x0002 /* open for reading and writing */
#define O_ACCMODE 0x0003 /* mask for above modes */
/*
* Kernel encoding of open mode; separate read and write bits that are
* independently testable: 1 greater than the above.
*
* XXX
* FREAD and FWRITE are excluded from the #ifdef _KERNEL so that TIOCFLUSH,
* which was documented to use FREAD/FWRITE, continues to work.
*/
#if __BSD_VISIBLE
#define FREAD 0x0001
#define FWRITE 0x0002
#endif
# 90 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#define O_NONBLOCK 0x0004 /* no delay */
#define O_APPEND 0x0008 /* set append mode */
#if __BSD_VISIBLE
#define O_SHLOCK 0x0010 /* open with shared file lock */
#define O_EXLOCK 0x0020 /* open with exclusive file lock */
#define O_ASYNC 0x0040 /* signal pgrp when data ready */
#define O_FSYNC 0x0080 /* synchronous writes */
#endif
# 98 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#define O_SYNC 0x0080 /* POSIX synonym for O_FSYNC */
#if __POSIX_VISIBLE >= 200809
#define O_NOFOLLOW 0x0100 /* don't follow symlinks */
#endif
# 102 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#define O_CREAT 0x0200 /* create if nonexistent */
#define O_TRUNC 0x0400 /* truncate to zero length */
#define O_EXCL 0x0800 /* error if already exists */
#ifdef _KERNEL
#define FHASLOCK 0x4000 /* descriptor holds advisory lock */
#endif
# 108 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/* Defined by POSIX 1003.1; BSD default, but must be distinct from O_RDONLY. */
#define O_NOCTTY 0x8000 /* don't assign controlling terminal */
#if __BSD_VISIBLE
/* Attempt to bypass buffer cache */
#define O_DIRECT 0x00010000
#endif
# 116 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200809
#define O_DIRECTORY 0x00020000 /* Fail if not directory */
#define O_EXEC 0x00040000 /* Open for execute only */
#endif
# 121 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#ifdef _KERNEL
#define FEXEC O_EXEC
#endif
# 124 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200809
/* Defined by POSIX 1003.1-2008; BSD default, but reserve for future use. */
#define O_TTY_INIT 0x00080000 /* Restore default termios attributes */
#define O_CLOEXEC 0x00100000
#endif
# 131 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __BSD_VISIBLE
#define O_VERIFY 0x00200000 /* open only after verification */
#endif
# 135 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/*
* XXX missing O_DSYNC, O_RSYNC.
*/
#ifdef _KERNEL
/* Only for devfs d_close() flags. */
#define FLASTCLOSE O_DIRECTORY
#define FREVOKE O_VERIFY
/* Only for fo_close() from half-succeeded open */
#define FOPENFAILED O_TTY_INIT
/* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */
#define FFLAGS(oflags) ((oflags) & O_EXEC ? (oflags) : (oflags) + 1)
#define OFLAGS(fflags) ((fflags) & O_EXEC ? (fflags) : (fflags) - 1)
/* bits to save after open */
#define FMASK (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK|O_DIRECT|FEXEC)
/* bits settable by fcntl(F_SETFL, ...) */
#define FCNTLFLAGS (FAPPEND|FASYNC|FFSYNC|FNONBLOCK|FRDAHEAD|O_DIRECT)
#if defined(COMPAT_FREEBSD7) || defined(COMPAT_FREEBSD6) || \
defined(COMPAT_FREEBSD5) || defined(COMPAT_FREEBSD4)
/*
* Set by shm_open(3) in older libc's to get automatic MAP_ASYNC
* behavior for POSIX shared memory objects (which are otherwise
* implemented as plain files).
*/
#define FPOSIXSHM O_NOFOLLOW
#undef FCNTLFLAGS
#define FCNTLFLAGS (FAPPEND|FASYNC|FFSYNC|FNONBLOCK|FPOSIXSHM|FRDAHEAD| \
O_DIRECT)
#endif
# 169 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#endif
# 170 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/*
* The O_* flags used to have only F* names, which were used in the kernel
* and by fcntl. We retain the F* names for the kernel f_flag field
* and for backward compatibility for fcntl. These flags are deprecated.
*/
#if __BSD_VISIBLE
#define FAPPEND O_APPEND /* kernel/compat */
#define FASYNC O_ASYNC /* kernel/compat */
#define FFSYNC O_FSYNC /* kernel */
#define FNONBLOCK O_NONBLOCK /* kernel */
#define FNDELAY O_NONBLOCK /* compat */
#define O_NDELAY O_NONBLOCK /* compat */
#endif
# 184 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/*
* We are out of bits in f_flag (which is a short). However,
* the flag bits not set in FMASK are only meaningful in the
* initial open syscall. Those bits can thus be given a
* different meaning for fcntl(2).
*/
#if __BSD_VISIBLE
/* Read ahead */
#define FRDAHEAD O_CREAT
#endif
# 195 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200809
/*
* Magic value that specify the use of the current working directory
* to determine the target of relative file paths in the openat() and
* similar syscalls.
*/
#define AT_FDCWD -100
/*
* Miscellaneous flags for the *at() syscalls.
*/
#define AT_EACCESS 0x100 /* Check access using effective user and group ID */
#define AT_SYMLINK_NOFOLLOW 0x200 /* Do not follow symbolic links */
#define AT_SYMLINK_FOLLOW 0x400 /* Follow symbolic link */
#define AT_REMOVEDIR 0x800 /* Remove directory instead of file */
#endif
# 212 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/*
* Constants used for fcntl(2)
*/
/* command values */
#define F_DUPFD 0 /* duplicate file descriptor */
#define F_GETFD 1 /* get file descriptor flags */
#define F_SETFD 2 /* set file descriptor flags */
#define F_GETFL 3 /* get file status flags */
#define F_SETFL 4 /* set file status flags */
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
#define F_GETOWN 5 /* get SIGIO/SIGURG proc/pgrp */
#define F_SETOWN 6 /* set SIGIO/SIGURG proc/pgrp */
#endif
# 227 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __BSD_VISIBLE
#define F_OGETLK 7 /* get record locking information */
#define F_OSETLK 8 /* set record locking information */
#define F_OSETLKW 9 /* F_SETLK; wait if blocked */
#define F_DUP2FD 10 /* duplicate file descriptor to arg */
#endif
# 233 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#define F_GETLK 11 /* get record locking information */
#define F_SETLK 12 /* set record locking information */
#define F_SETLKW 13 /* F_SETLK; wait if blocked */
#if __BSD_VISIBLE
#define F_SETLK_REMOTE 14 /* debugging support for remote locks */
#define F_READAHEAD 15 /* read ahead */
#define F_RDAHEAD 16 /* Darwin compatible read ahead */
#endif
# 241 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200809
#define F_DUPFD_CLOEXEC 17 /* Like F_DUPFD, but FD_CLOEXEC is set */
#endif
# 244 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __BSD_VISIBLE
#define F_DUP2FD_CLOEXEC 18 /* Like F_DUP2FD, but FD_CLOEXEC is set */
#endif
# 247 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/* file descriptor flags (F_GETFD, F_SETFD) */
#define FD_CLOEXEC 1 /* close-on-exec flag */
/* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
#define F_RDLCK 1 /* shared or read lock */
#define F_UNLCK 2 /* unlock */
#define F_WRLCK 3 /* exclusive or write lock */
#if __BSD_VISIBLE
#define F_UNLCKSYS 4 /* purge locks for a given system ID */
#define F_CANCEL 5 /* cancel an async lock request */
#endif
# 259 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#ifdef _KERNEL
#define F_WAIT 0x010 /* Wait until lock is granted */
#define F_FLOCK 0x020 /* Use flock(2) semantics for lock */
#define F_POSIX 0x040 /* Use POSIX semantics for lock */
#define F_REMOTE 0x080 /* Lock owner is remote NFS client */
#define F_NOINTR 0x100 /* Ignore signals when waiting */
#endif
# 266 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
/*
* Advisory file segment locking data type -
* information passed to system by user
*/
struct flock {
off_t l_start; /* starting offset */
off_t l_len; /* len = 0 means until end of file */
pid_t l_pid; /* lock owner */
short l_type; /* lock type: read/write, etc. */
short l_whence; /* type of l_start */
int l_sysid; /* remote system id or zero for local */
};
#if __BSD_VISIBLE
/*
* Old advisory file segment locking data type,
* before adding l_sysid.
*/
struct __oflock {
off_t l_start; /* starting offset */
off_t l_len; /* len = 0 means until end of file */
pid_t l_pid; /* lock owner */
short l_type; /* lock type: read/write, etc. */
short l_whence; /* type of l_start */
};
#endif
# 293 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __BSD_VISIBLE
/* lock operations for flock(2) */
#define LOCK_SH 0x01 /* shared file lock */
#define LOCK_EX 0x02 /* exclusive file lock */
#define LOCK_NB 0x04 /* don't block when locking */
#define LOCK_UN 0x08 /* unlock file */
#endif
# 301 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200112
/*
* Advice to posix_fadvise
*/
#define POSIX_FADV_NORMAL 0 /* no special treatment */
#define POSIX_FADV_RANDOM 1 /* expect random page references */
#define POSIX_FADV_SEQUENTIAL 2 /* expect sequential page references */
#define POSIX_FADV_WILLNEED 3 /* will need these pages */
#define POSIX_FADV_DONTNEED 4 /* dont need these pages */
#define POSIX_FADV_NOREUSE 5 /* access data only once */
#endif
# 313 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#ifndef _KERNEL
__BEGIN_DECLS
int open(const char *, int, ...);
int creat(const char *, mode_t);
int fcntl(int, int, ...);
#if __BSD_VISIBLE
int flock(int, int);
#endif
# 322 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200809
int openat(int, const char *, int, ...);
#endif
# 325 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#if __POSIX_VISIBLE >= 200112
int posix_fadvise(int, off_t, off_t, int);
int posix_fallocate(int, off_t, off_t);
#endif
# 329 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
__END_DECLS
#endif
# 331 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
#endif /* !_SYS_FCNTL_H_ */
# 333 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/fcntl.h" 3 4
# 18 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h" 2
#if 0 /* expanded by -frewrite-includes */
# include <stdio.h>
#endif /* expanded by -frewrite-includes */
# 18 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 19 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#if defined(WIN32)
#if 0 /* expanded by -frewrite-includes */
# include <io.h>
#endif /* expanded by -frewrite-includes */
# 21 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 22 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#if 0 /* expanded by -frewrite-includes */
# include <sys/types.h>
#endif /* expanded by -frewrite-includes */
# 22 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 23 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#if 0 /* expanded by -frewrite-includes */
# include <sys/stat.h>
#endif /* expanded by -frewrite-includes */
# 23 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 24 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# define strcasecmp _strcmpi
# define snprintf _snprintf
# define open _open
# define close _close
# define read _read
# define write _write
# define lseek _lseeki64
# define fsync _commit
# define tell _tell
# define TIMEB _timeb
# define ftime _ftime
# define OPENFLAGS_WRITE _O_WRONLY|_O_CREAT|_O_BINARY|_O_TRUNC
# define OPEN_PERMISSIONS _S_IREAD | _S_IWRITE
# define OPENFLAGS_READ _O_RDONLY|_O_BINARY
# define inline _inline
#else
# 41 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#if 0 /* expanded by -frewrite-includes */
# include <unistd.h>
#endif /* expanded by -frewrite-includes */
# 41 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 1 3 4
/*-
* Copyright (c) 1991, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)unistd.h 8.12 (Berkeley) 4/27/95
* $FreeBSD$
*/
#ifndef _UNISTD_H_
#define _UNISTD_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/types.h> /* XXX adds too much pollution. */
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 1 3 4
/*-
* Copyright (c) 1982, 1986, 1991, 1993, 1994
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)types.h 8.6 (Berkeley) 2/19/95
* $FreeBSD$
*/
#ifndef _SYS_TYPES_H_
#define _SYS_TYPES_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 41 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 42 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
/* Machine type dependent parameters. */
#if 0 /* expanded by -frewrite-includes */
#include <machine/endian.h>
#endif /* expanded by -frewrite-includes */
# 44 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 1 3 4
/*-
* Copyright (c) 1987, 1991 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)endian.h 7.8 (Berkeley) 4/3/91
* $FreeBSD$
*/
#ifndef _MACHINE_ENDIAN_H_
#define _MACHINE_ENDIAN_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#ifndef __ASSEMBLER__
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#endif
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#ifdef __cplusplus
extern "C" {
#endif
# 44 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
/*
* Definitions for byte order, according to byte significance from low
* address to high.
*/
#define _LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
#define _BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
#define _PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */
#ifdef __MIPSEB__
#define _BYTE_ORDER _BIG_ENDIAN
#else
# 56 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#define _BYTE_ORDER _LITTLE_ENDIAN
#endif /* __MIBSEB__ */
# 58 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
/*
* Deprecated variants that don't have enough underscores to be useful in more
* strict namespaces.
*/
#if __BSD_VISIBLE
#define LITTLE_ENDIAN _LITTLE_ENDIAN
#define BIG_ENDIAN _BIG_ENDIAN
#define PDP_ENDIAN _PDP_ENDIAN
#define BYTE_ORDER _BYTE_ORDER
#endif
# 69 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#ifndef __ASSEMBLER__
#if defined(__GNUCLIKE_BUILTIN_CONSTANT_P) && defined(__OPTIMIZE__)
#define __is_constant(x) __builtin_constant_p(x)
#else
# 74 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#define __is_constant(x) 0
#endif
# 76 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#define __bswap16_const(x) (((x) >> 8) | (((x) << 8) & 0xff00))
#define __bswap32_const(x) (((x) >> 24) | (((x) >> 8) & 0xff00) | \
(((x) << 8) & 0xff0000) | (((x) << 24) & 0xff000000))
#define __bswap64_const(x) (((x) >> 56) | (((x) >> 40) & 0xff00) | \
(((x) >> 24) & 0xff0000) | (((x) >> 8) & 0xff000000) | \
(((x) << 8) & ((__uint64_t)0xff << 32)) | \
(((x) << 24) & ((__uint64_t)0xff << 40)) | \
(((x) << 40) & ((__uint64_t)0xff << 48)) | (((x) << 56)))
static __inline __uint16_t
__bswap16_var(__uint16_t _x)
{
return ((_x >> 8) | ((_x << 8) & 0xff00));
}
static __inline __uint32_t
__bswap32_var(__uint32_t _x)
{
return ((_x >> 24) | ((_x >> 8) & 0xff00) | ((_x << 8) & 0xff0000) |
((_x << 24) & 0xff000000));
}
static __inline __uint64_t
__bswap64_var(__uint64_t _x)
{
return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |
((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) |
((_x << 24) & ((__uint64_t)0xff << 40)) |
((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
}
#define __bswap16(x) ((__uint16_t)(__is_constant((x)) ? \
__bswap16_const((__uint16_t)(x)) : __bswap16_var((__uint16_t)(x))))
#define __bswap32(x) ((__uint32_t)(__is_constant((x)) ? \
__bswap32_const((__uint32_t)(x)) : __bswap32_var((__uint32_t)(x))))
#define __bswap64(x) ((__uint64_t)(__is_constant((x)) ? \
__bswap64_const((__uint64_t)(x)) : __bswap64_var((__uint64_t)(x))))
#ifdef __MIPSEB__
#define __htonl(x) ((__uint32_t)(x))
#define __htons(x) ((__uint16_t)(x))
#define __ntohl(x) ((__uint32_t)(x))
#define __ntohs(x) ((__uint16_t)(x))
/*
* Define the order of 32-bit words in 64-bit words.
*/
/*
* XXXMIPS: Additional parentheses to make gcc more happy.
*/
#define _QUAD_HIGHWORD 0
#define _QUAD_LOWWORD 1
#else
# 132 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#define _QUAD_HIGHWORD 1
#define _QUAD_LOWWORD 0
#define __ntohl(x) (__bswap32((x)))
#define __ntohs(x) (__bswap16((x)))
#define __htonl(x) (__bswap32((x)))
#define __htons(x) (__bswap16((x)))
#endif /* _MIPSEB */
# 139 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#endif /* _ASSEMBLER_ */
# 141 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#ifdef __cplusplus
}
#endif
# 145 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
#endif /* !_MACHINE_ENDIAN_H_ */
# 147 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/machine/endian.h" 3 4
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 45 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_pthreadtypes.h>
#endif /* expanded by -frewrite-includes */
# 47 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_pthreadtypes.h" 1 3 4
/*
* Copyright (c) 1993, 1994 by Chris Provenzano, proven@mit.edu
* Copyright (c) 1995-1998 by John Birrell <jb@cimlogic.com.au>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Chris Provenzano.
* 4. The name of Chris Provenzano may not be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY CHRIS PROVENZANO ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL CHRIS PROVENZANO BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS__PTHREADTYPES_H_
#define _SYS__PTHREADTYPES_H_
/*
* Forward structure definitions.
*
* These are mostly opaque to the user.
*/
struct pthread;
struct pthread_attr;
struct pthread_cond;
struct pthread_cond_attr;
struct pthread_mutex;
struct pthread_mutex_attr;
struct pthread_once;
struct pthread_rwlock;
struct pthread_rwlockattr;
struct pthread_barrier;
struct pthread_barrier_attr;
struct pthread_spinlock;
/*
* Primitive system data type definitions required by P1003.1c.
*
* Note that P1003.1c specifies that there are no defined comparison
* or assignment operators for the types pthread_attr_t, pthread_cond_t,
* pthread_condattr_t, pthread_mutex_t, pthread_mutexattr_t.
*/
#ifndef _PTHREAD_T_DECLARED
typedef struct pthread *pthread_t;
#define _PTHREAD_T_DECLARED
#endif
# 68 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_pthreadtypes.h" 3 4
typedef struct pthread_attr *pthread_attr_t;
typedef struct pthread_mutex *pthread_mutex_t;
typedef struct pthread_mutex_attr *pthread_mutexattr_t;
typedef struct pthread_cond *pthread_cond_t;
typedef struct pthread_cond_attr *pthread_condattr_t;
typedef int pthread_key_t;
typedef struct pthread_once pthread_once_t;
typedef struct pthread_rwlock *pthread_rwlock_t;
typedef struct pthread_rwlockattr *pthread_rwlockattr_t;
typedef struct pthread_barrier *pthread_barrier_t;
typedef struct pthread_barrierattr *pthread_barrierattr_t;
typedef struct pthread_spinlock *pthread_spinlock_t;
/*
* Additional type definitions:
*
* Note that P1003.1c reserves the prefixes pthread_ and PTHREAD_ for
* use in header symbols.
*/
typedef void *pthread_addr_t;
typedef void *(*pthread_startroutine_t)(void *);
/*
* Once definitions.
*/
struct pthread_once {
int state;
pthread_mutex_t mutex;
};
#endif /* ! _SYS__PTHREADTYPES_H_ */
# 99 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_pthreadtypes.h" 3 4
# 48 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 2 3 4
#if __BSD_VISIBLE
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
#ifndef _KERNEL
typedef unsigned short ushort; /* Sys V compatibility */
typedef unsigned int uint; /* Sys V compatibility */
#endif
# 58 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#endif
# 59 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
/*
* XXX POSIX sized integrals that should appear only in <sys/stdint.h>.
*/
#if 0 /* expanded by -frewrite-includes */
#include <sys/_stdint.h>
#endif /* expanded by -frewrite-includes */
# 63 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 1 3 4
/*-
* Copyright (c) 2011 David E. O'Brien <obrien@FreeBSD.org>
* Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS__STDINT_H_
#define _SYS__STDINT_H_
#ifndef _INT8_T_DECLARED
typedef __int8_t int8_t;
#define _INT8_T_DECLARED
#endif
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _INT16_T_DECLARED
typedef __int16_t int16_t;
#define _INT16_T_DECLARED
#endif
# 42 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _INT32_T_DECLARED
typedef __int32_t int32_t;
#define _INT32_T_DECLARED
#endif
# 47 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _INT64_T_DECLARED
typedef __int64_t int64_t;
#define _INT64_T_DECLARED
#endif
# 52 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _UINT8_T_DECLARED
typedef __uint8_t uint8_t;
#define _UINT8_T_DECLARED
#endif
# 57 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _UINT16_T_DECLARED
typedef __uint16_t uint16_t;
#define _UINT16_T_DECLARED
#endif
# 62 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _UINT32_T_DECLARED
typedef __uint32_t uint32_t;
#define _UINT32_T_DECLARED
#endif
# 67 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _UINT64_T_DECLARED
typedef __uint64_t uint64_t;
#define _UINT64_T_DECLARED
#endif
# 72 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _INTPTR_T_DECLARED
typedef __intptr_t intptr_t;
#define _INTPTR_T_DECLARED
#endif
# 77 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _UINTPTR_T_DECLARED
typedef __uintptr_t uintptr_t;
#define _UINTPTR_T_DECLARED
#endif
# 81 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _INTMAX_T_DECLARED
typedef __intmax_t intmax_t;
#define _INTMAX_T_DECLARED
#endif
# 85 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _UINTMAX_T_DECLARED
typedef __uintmax_t uintmax_t;
#define _UINTMAX_T_DECLARED
#endif
# 89 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#ifndef _VADDR_T_DECLARED
#ifndef __CHERI_PURE_CAPABILITY__
typedef __uintptr_t vaddr_t;
#else
# 94 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
typedef __uint64_t vaddr_t;
#endif
# 96 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#define _VADDR_T_DECLARED
#endif
# 98 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
#endif /* !_SYS__STDINT_H_ */
# 100 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_stdint.h" 3 4
# 64 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 2 3 4
typedef __uint8_t u_int8_t; /* unsigned integrals (deprecated) */
typedef __uint16_t u_int16_t;
typedef __uint32_t u_int32_t;
typedef __uint64_t u_int64_t;
typedef __uint64_t u_quad_t; /* quads (deprecated) */
typedef __int64_t quad_t;
typedef quad_t * qaddr_t;
typedef char * caddr_t; /* core address */
typedef const char * c_caddr_t; /* core address, pointer to const */
#ifndef _BLKSIZE_T_DECLARED
typedef __blksize_t blksize_t;
#define _BLKSIZE_T_DECLARED
#endif
# 81 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __cpuwhich_t cpuwhich_t;
typedef __cpulevel_t cpulevel_t;
typedef __cpusetid_t cpusetid_t;
#ifndef _BLKCNT_T_DECLARED
typedef __blkcnt_t blkcnt_t;
#define _BLKCNT_T_DECLARED
#endif
# 90 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _CLOCK_T_DECLARED
typedef __clock_t clock_t;
#define _CLOCK_T_DECLARED
#endif
# 95 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _CLOCKID_T_DECLARED
typedef __clockid_t clockid_t;
#define _CLOCKID_T_DECLARED
#endif
# 100 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __critical_t critical_t; /* Critical section value */
typedef __int64_t daddr_t; /* disk address */
#ifndef _DEV_T_DECLARED
typedef __dev_t dev_t; /* device number or struct cdev */
#define _DEV_T_DECLARED
#endif
# 108 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _FFLAGS_T_DECLARED
typedef __fflags_t fflags_t; /* file flags */
#define _FFLAGS_T_DECLARED
#endif
# 113 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __fixpt_t fixpt_t; /* fixed point number */
#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */
typedef __fsblkcnt_t fsblkcnt_t;
typedef __fsfilcnt_t fsfilcnt_t;
#define _FSBLKCNT_T_DECLARED
#endif
# 121 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _GID_T_DECLARED
typedef __gid_t gid_t; /* group id */
#define _GID_T_DECLARED
#endif
# 126 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _IN_ADDR_T_DECLARED
typedef __uint32_t in_addr_t; /* base type for internet address */
#define _IN_ADDR_T_DECLARED
#endif
# 131 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _IN_PORT_T_DECLARED
typedef __uint16_t in_port_t;
#define _IN_PORT_T_DECLARED
#endif
# 136 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _ID_T_DECLARED
typedef __id_t id_t; /* can hold a uid_t or pid_t */
#define _ID_T_DECLARED
#endif
# 141 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _INO_T_DECLARED
typedef __ino_t ino_t; /* inode number */
#define _INO_T_DECLARED
#endif
# 146 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _KEY_T_DECLARED
typedef __key_t key_t; /* IPC key (for Sys V IPC) */
#define _KEY_T_DECLARED
#endif
# 151 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _LWPID_T_DECLARED
typedef __lwpid_t lwpid_t; /* Thread ID (a.k.a. LWP) */
#define _LWPID_T_DECLARED
#endif
# 156 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _MODE_T_DECLARED
typedef __mode_t mode_t; /* permissions */
#define _MODE_T_DECLARED
#endif
# 161 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _ACCMODE_T_DECLARED
typedef __accmode_t accmode_t; /* access permissions */
#define _ACCMODE_T_DECLARED
#endif
# 166 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _NLINK_T_DECLARED
typedef __nlink_t nlink_t; /* link count */
#define _NLINK_T_DECLARED
#endif
# 171 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _OFF_T_DECLARED
typedef __off_t off_t; /* file offset */
#define _OFF_T_DECLARED
#endif
# 176 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _OFF64_T_DECLARED
typedef __off64_t off64_t; /* file offset (alias) */
#define _OFF64_T_DECLARED
#endif
# 181 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _PID_T_DECLARED
typedef __pid_t pid_t; /* process id */
#define _PID_T_DECLARED
#endif
# 186 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __register_t register_t;
#ifndef _RLIM_T_DECLARED
typedef __rlim_t rlim_t; /* resource limit */
#define _RLIM_T_DECLARED
#endif
# 193 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __int64_t sbintime_t;
typedef __segsz_t segsz_t; /* segment size (in pages) */
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 202 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _SSIZE_T_DECLARED
typedef __ssize_t ssize_t;
#define _SSIZE_T_DECLARED
#endif
# 207 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _SUSECONDS_T_DECLARED
typedef __suseconds_t suseconds_t; /* microseconds (signed) */
#define _SUSECONDS_T_DECLARED
#endif
# 212 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _TIME_T_DECLARED
typedef __time_t time_t;
#define _TIME_T_DECLARED
#endif
# 217 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _TIMER_T_DECLARED
typedef __timer_t timer_t;
#define _TIMER_T_DECLARED
#endif
# 222 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _MQD_T_DECLARED
typedef __mqd_t mqd_t;
#define _MQD_T_DECLARED
#endif
# 227 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __u_register_t u_register_t;
#ifndef _UID_T_DECLARED
typedef __uid_t uid_t; /* user id */
#define _UID_T_DECLARED
#endif
# 234 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _USECONDS_T_DECLARED
typedef __useconds_t useconds_t; /* microseconds (unsigned) */
#define _USECONDS_T_DECLARED
#endif
# 239 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _CAP_IOCTL_T_DECLARED
#define _CAP_IOCTL_T_DECLARED
typedef unsigned long cap_ioctl_t;
#endif
# 244 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _CAP_RIGHTS_T_DECLARED
#define _CAP_RIGHTS_T_DECLARED
struct cap_rights;
typedef struct cap_rights cap_rights_t;
#endif
# 251 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef __vm_offset_t vm_offset_t;
typedef __int64_t vm_ooffset_t;
typedef __vm_paddr_t vm_paddr_t;
typedef __uint64_t vm_pindex_t;
typedef __vm_size_t vm_size_t;
typedef __rman_res_t rman_res_t;
#ifdef _KERNEL
typedef int boolean_t;
typedef struct device *device_t;
typedef __intfptr_t intfptr_t;
/*
* XXX this is fixed width for historical reasons. It should have had type
* __int_fast32_t. Fixed-width types should not be used unless binary
* compatibility is essential. Least-width types should be used even less
* since they provide smaller benefits.
*
* XXX should be MD.
*
* XXX this is bogus in -current, but still used for spl*().
*/
typedef __uint32_t intrmask_t; /* Interrupt mask (spl, xxx_imask...) */
typedef __uintfptr_t uintfptr_t;
typedef __uint64_t uoff_t;
typedef char vm_memattr_t; /* memory attribute codes */
typedef struct vm_page *vm_page_t;
#if !defined(__bool_true_false_are_defined) && !defined(__cplusplus)
#define __bool_true_false_are_defined 1
#define false 0
#define true 1
#if __STDC_VERSION__ < 199901L && __GNUC__ < 3 && !defined(__INTEL_COMPILER)
typedef int _Bool;
#endif
# 289 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
typedef _Bool bool;
#endif /* !__bool_true_false_are_defined && !__cplusplus */
# 291 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#define offsetof(type, field) __offsetof(type, field)
#endif /* !_KERNEL */
# 295 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
/*
* The following are all things that really shouldn't exist in this header,
* since its purpose is to provide typedefs, not miscellaneous doodads.
*/
#ifdef __POPCNT__
#define __bitcount64(x) __builtin_popcountll((__uint64_t)(x))
#define __bitcount32(x) __builtin_popcount((__uint32_t)(x))
#define __bitcount16(x) __builtin_popcount((__uint16_t)(x))
#define __bitcountl(x) __builtin_popcountl((unsigned long)(x))
#define __bitcount(x) __builtin_popcount((unsigned int)(x))
#else
# 308 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
/*
* Population count algorithm using SWAR approach
* - "SIMD Within A Register".
*/
static __inline __uint16_t
__bitcount16(__uint16_t _x)
{
_x = (_x & 0x5555) + ((_x & 0xaaaa) >> 1);
_x = (_x & 0x3333) + ((_x & 0xcccc) >> 2);
_x = (_x + (_x >> 4)) & 0x0f0f;
_x = (_x + (_x >> 8)) & 0x00ff;
return (_x);
}
static __inline __uint32_t
__bitcount32(__uint32_t _x)
{
_x = (_x & 0x55555555) + ((_x & 0xaaaaaaaa) >> 1);
_x = (_x & 0x33333333) + ((_x & 0xcccccccc) >> 2);
_x = (_x + (_x >> 4)) & 0x0f0f0f0f;
_x = (_x + (_x >> 8));
_x = (_x + (_x >> 16)) & 0x000000ff;
return (_x);
}
#ifdef __LP64__
static __inline __uint64_t
__bitcount64(__uint64_t _x)
{
_x = (_x & 0x5555555555555555) + ((_x & 0xaaaaaaaaaaaaaaaa) >> 1);
_x = (_x & 0x3333333333333333) + ((_x & 0xcccccccccccccccc) >> 2);
_x = (_x + (_x >> 4)) & 0x0f0f0f0f0f0f0f0f;
_x = (_x + (_x >> 8));
_x = (_x + (_x >> 16));
_x = (_x + (_x >> 32)) & 0x000000ff;
return (_x);
}
#define __bitcountl(x) __bitcount64((unsigned long)(x))
#else
# 351 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
static __inline __uint64_t
__bitcount64(__uint64_t _x)
{
return (__bitcount32(_x >> 32) + __bitcount32(_x));
}
#define __bitcountl(x) __bitcount32((unsigned long)(x))
#endif
# 360 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#define __bitcount(x) __bitcount32((unsigned int)(x))
#endif
# 362 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#if __BSD_VISIBLE
#if 0 /* expanded by -frewrite-includes */
#include <sys/select.h>
#endif /* expanded by -frewrite-includes */
# 365 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 1 3 4
/*-
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS_SELECT_H_
#define _SYS_SELECT_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 35 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_sigset.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_sigset.h" 1 3 4
/*-
* Copyright (c) 1982, 1986, 1989, 1991, 1993
* The Regents of the University of California. All rights reserved.
* (c) UNIX System Laboratories, Inc.
* All or some portions of this file are derived from material licensed
* to the University of California by American Telephone and Telegraph
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
* the permission of UNIX System Laboratories, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)signal.h 8.4 (Berkeley) 5/4/95
* $FreeBSD$
*/
#ifndef _SYS__SIGSET_H_
#define _SYS__SIGSET_H_
/*
* sigset_t macros.
*/
#define _SIG_WORDS 4
#define _SIG_MAXSIG 128
#define _SIG_IDX(sig) ((sig) - 1)
#define _SIG_WORD(sig) (_SIG_IDX(sig) >> 5)
#define _SIG_BIT(sig) (1 << (_SIG_IDX(sig) & 31))
#define _SIG_VALID(sig) ((sig) <= _SIG_MAXSIG && (sig) > 0)
typedef struct __sigset {
__uint32_t __bits[_SIG_WORDS];
} __sigset_t;
#if defined(_KERNEL) && defined(COMPAT_43)
typedef unsigned int osigset_t;
#endif
# 58 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_sigset.h" 3 4
#endif /* !_SYS__SIGSET_H_ */
# 60 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_sigset.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_timeval.h>
#endif /* expanded by -frewrite-includes */
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timeval.h" 1 3 4
/*-
* Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _SYS__TIMEVAL_H_
#define _SYS__TIMEVAL_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 32 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timeval.h" 3 4
# 33 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timeval.h" 3 4
#ifndef _SUSECONDS_T_DECLARED
typedef __suseconds_t suseconds_t;
#define _SUSECONDS_T_DECLARED
#endif
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timeval.h" 3 4
#ifndef _TIME_T_DECLARED
typedef __time_t time_t;
#define _TIME_T_DECLARED
#endif
# 43 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timeval.h" 3 4
/*
* Structure returned by gettimeofday(2) system call, and used in other calls.
*/
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* and microseconds */
};
#endif /* !_SYS__TIMEVAL_H_ */
# 53 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/_timeval.h" 3 4
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/timespec.h>
#endif /* expanded by -frewrite-includes */
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
# 41 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
typedef unsigned long __fd_mask;
#if __BSD_VISIBLE
typedef __fd_mask fd_mask;
#endif
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#ifndef _SIGSET_T_DECLARED
#define _SIGSET_T_DECLARED
typedef __sigset_t sigset_t;
#endif
# 51 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
/*
* Select uses bit masks of file descriptors in longs. These macros
* manipulate such bit fields (the filesystem macros use chars).
* FD_SETSIZE may be defined by the user, but the default here should
* be enough for most uses.
*/
#ifndef FD_SETSIZE
#define FD_SETSIZE 1024
#endif
# 61 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#define _NFDBITS (sizeof(__fd_mask) * 8) /* bits per mask */
#if __BSD_VISIBLE
#define NFDBITS _NFDBITS
#endif
# 66 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#ifndef _howmany
#define _howmany(x, y) (((x) + ((y) - 1)) / (y))
#endif
# 70 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
typedef struct fd_set {
__fd_mask __fds_bits[_howmany(FD_SETSIZE, _NFDBITS)];
} fd_set;
#if __BSD_VISIBLE
#define fds_bits __fds_bits
#endif
# 77 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#define __fdset_mask(n) ((__fd_mask)1 << ((n) % _NFDBITS))
#define FD_CLR(n, p) ((p)->__fds_bits[(n)/_NFDBITS] &= ~__fdset_mask(n))
#if __BSD_VISIBLE
#define FD_COPY(f, t) (void)(*(t) = *(f))
#endif
# 83 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#define FD_ISSET(n, p) (((p)->__fds_bits[(n)/_NFDBITS] & __fdset_mask(n)) != 0)
#define FD_SET(n, p) ((p)->__fds_bits[(n)/_NFDBITS] |= __fdset_mask(n))
#define FD_ZERO(p) do { \
fd_set *_p; \
__size_t _n; \
\
_p = (p); \
_n = _howmany(FD_SETSIZE, _NFDBITS); \
while (_n > 0) \
_p->__fds_bits[--_n] = 0; \
} while (0)
#ifndef _KERNEL
__BEGIN_DECLS
int pselect(int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict,
const struct timespec *__restrict, const sigset_t *__restrict);
#ifndef _SELECT_DECLARED
#define _SELECT_DECLARED
/* XXX missing restrict type-qualifier */
int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
#endif
# 105 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
__END_DECLS
#endif /* !_KERNEL */
# 107 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
#endif /* _SYS_SELECT_H_ */
# 109 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/select.h" 3 4
# 366 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 2 3 4
/*
* minor() gives a cookie instead of an index since we don't want to
* change the meanings of bits 0-15 or waste time and space shifting
* bits 16-31 for devices that don't use them.
*/
#define major(x) ((int)(((u_int)(x) >> 8)&0xff)) /* major number */
#define minor(x) ((int)((x)&0xffff00ff)) /* minor number */
#define makedev(x,y) ((dev_t)(((x) << 8) | (y))) /* create dev_t */
/*
* These declarations belong elsewhere, but are repeated here and in
* <stdio.h> to give broken programs a better chance of working with
* 64-bit off_t's.
*/
#ifndef _KERNEL
__BEGIN_DECLS
#ifndef _FTRUNCATE_DECLARED
#define _FTRUNCATE_DECLARED
int ftruncate(int, off_t);
#endif
# 387 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _LSEEK_DECLARED
#define _LSEEK_DECLARED
off_t lseek(int, off_t, int);
#endif
# 391 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _MMAP_DECLARED
#define _MMAP_DECLARED
void * mmap(void *, size_t, int, int, int, off_t);
#endif
# 395 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#ifndef _TRUNCATE_DECLARED
#define _TRUNCATE_DECLARED
int truncate(const char *, off_t);
#endif
# 399 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
__END_DECLS
#endif /* !_KERNEL */
# 401 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#endif /* __BSD_VISIBLE */
# 403 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
#endif /* !_SYS_TYPES_H_ */
# 405 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/types.h" 3 4
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/unistd.h>
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
# 1 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 1 3 4
/*-
* Copyright (c) 1989, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)unistd.h 8.2 (Berkeley) 1/7/94
* $FreeBSD$
*/
#ifndef _SYS_UNISTD_H_
#define _SYS_UNISTD_H_
#if 0 /* expanded by -frewrite-includes */
#include <sys/cdefs.h>
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
# 37 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
/*
* POSIX options and option groups we unconditionally do or don't
* implement. Those options which are implemented (or not) entirely
* in user mode are defined in <unistd.h>. Please keep this list in
* alphabetical order.
*
* Anything which is defined as zero below **must** have an
* implementation for the corresponding sysconf() which is able to
* determine conclusively whether or not the feature is supported.
* Anything which is defined as other than -1 below **must** have
* complete headers, types, and function declarations as specified by
* the POSIX standard; however, if the relevant sysconf() function
* returns -1, the functions may be stubbed out.
*/
#define _POSIX_ADVISORY_INFO 200112L
#define _POSIX_ASYNCHRONOUS_IO 200112L
#define _POSIX_CHOWN_RESTRICTED 1
#define _POSIX_CLOCK_SELECTION (-1)
#define _POSIX_CPUTIME 200112L
#define _POSIX_FSYNC 200112L
#define _POSIX_IPV6 0
#define _POSIX_JOB_CONTROL 1
#define _POSIX_MAPPED_FILES 200112L
#define _POSIX_MEMLOCK (-1)
#define _POSIX_MEMLOCK_RANGE 200112L
#define _POSIX_MEMORY_PROTECTION 200112L
#define _POSIX_MESSAGE_PASSING 200112L
#define _POSIX_MONOTONIC_CLOCK 200112L
#define _POSIX_NO_TRUNC 1
#define _POSIX_PRIORITIZED_IO (-1)
#define _POSIX_PRIORITY_SCHEDULING 0
#define _POSIX_RAW_SOCKETS 200112L
#define _POSIX_REALTIME_SIGNALS 200112L
#define _POSIX_SEMAPHORES 200112L
#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
#define _POSIX_SPORADIC_SERVER (-1)
#define _POSIX_SYNCHRONIZED_IO (-1)
#define _POSIX_TIMEOUTS 200112L
#define _POSIX_TIMERS 200112L
#define _POSIX_TYPED_MEMORY_OBJECTS (-1)
#define _POSIX_VDISABLE 0xff
#if __XSI_VISIBLE
#define _XOPEN_SHM 1
#define _XOPEN_STREAMS (-1)
#endif
# 84 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
/*
* Although we have saved user/group IDs, we do not use them in setuid
* as described in POSIX 1003.1, because the feature does not work for
* root. We use the saved IDs in seteuid/setegid, which are not currently
* part of the POSIX 1003.1 specification. XXX revisit for 1003.1-2001
* as this is now mandatory.
*/
#ifdef _NOT_AVAILABLE
#define _POSIX_SAVED_IDS 1 /* saved set-user-ID and set-group-ID */
#endif
# 95 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
/* Define the POSIX.1 version we target for compliance. */
#define _POSIX_VERSION 200112L
/* access function */
#define F_OK 0 /* test for existence of file */
#define X_OK 0x01 /* test for execute or search permission */
#define W_OK 0x02 /* test for write permission */
#define R_OK 0x04 /* test for read permission */
/* whence values for lseek(2) */
#ifndef SEEK_SET
#define SEEK_SET 0 /* set file offset to offset */
#define SEEK_CUR 1 /* set file offset to current plus offset */
#define SEEK_END 2 /* set file offset to EOF plus offset */
#endif
# 111 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
#if __BSD_VISIBLE
#define SEEK_DATA 3 /* set file offset to next data past offset */
#define SEEK_HOLE 4 /* set file offset to next hole past offset */
#endif
# 115 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
#ifndef _POSIX_SOURCE
/* whence values for lseek(2); renamed by POSIX 1003.1 */
#define L_SET SEEK_SET
#define L_INCR SEEK_CUR
#define L_XTND SEEK_END
#endif
# 122 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
/* configurable pathname variables */
#define _PC_LINK_MAX 1
#define _PC_MAX_CANON 2
#define _PC_MAX_INPUT 3
#define _PC_NAME_MAX 4
#define _PC_PATH_MAX 5
#define _PC_PIPE_BUF 6
#define _PC_CHOWN_RESTRICTED 7
#define _PC_NO_TRUNC 8
#define _PC_VDISABLE 9
#if __POSIX_VISIBLE >= 199309
#define _PC_ASYNC_IO 53
#define _PC_PRIO_IO 54
#define _PC_SYNC_IO 55
#endif
# 139 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
#if __POSIX_VISIBLE >= 200112
#define _PC_ALLOC_SIZE_MIN 10
#define _PC_FILESIZEBITS 12
#define _PC_REC_INCR_XFER_SIZE 14
#define _PC_REC_MAX_XFER_SIZE 15
#define _PC_REC_MIN_XFER_SIZE 16
#define _PC_REC_XFER_ALIGN 17
#define _PC_SYMLINK_MAX 18
#endif
# 149 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
#if __BSD_VISIBLE
#define _PC_ACL_EXTENDED 59
#define _PC_ACL_PATH_MAX 60
#define _PC_CAP_PRESENT 61
#define _PC_INF_PRESENT 62
#define _PC_MAC_PRESENT 63
#define _PC_ACL_NFS4 64
#endif
# 158 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
/* From OpenSolaris, used by SEEK_DATA/SEEK_HOLE. */
#define _PC_MIN_HOLE_SIZE 21
#if __BSD_VISIBLE
/*
* rfork() options.
*
* XXX currently, some operations without RFPROC set are not supported.
*/
#define RFNAMEG (1<<0) /* UNIMPL new plan9 `name space' */
#define RFENVG (1<<1) /* UNIMPL copy plan9 `env space' */
#define RFFDG (1<<2) /* copy fd table */
#define RFNOTEG (1<<3) /* UNIMPL create new plan9 `note group' */
#define RFPROC (1<<4) /* change child (else changes curproc) */
#define RFMEM (1<<5) /* share `address space' */
#define RFNOWAIT (1<<6) /* give child to init */
#define RFCNAMEG (1<<10) /* UNIMPL zero plan9 `name space' */
#define RFCENVG (1<<11) /* UNIMPL zero plan9 `env space' */
#define RFCFDG (1<<12) /* close all fds, zero fd table */
#define RFTHREAD (1<<13) /* enable kernel thread support */
#define RFSIGSHARE (1<<14) /* share signal handlers */
#define RFLINUXTHPN (1<<16) /* do linux clone exit parent notification */
#define RFSTOPPED (1<<17) /* leave child in a stopped state */
#define RFHIGHPID (1<<18) /* use a pid higher than 10 (idleproc) */
#define RFTSIGZMB (1<<19) /* select signal for exit parent notification */
#define RFTSIGSHIFT 20 /* selected signal number is in bits 20-27 */
#define RFTSIGMASK 0xFF
#define RFTSIGNUM(flags) (((flags) >> RFTSIGSHIFT) & RFTSIGMASK)
#define RFTSIGFLAGS(signum) ((signum) << RFTSIGSHIFT)
#define RFPROCDESC (1<<28) /* return a process descriptor */
#define RFPPWAIT (1<<31) /* parent sleeps until child exits (vfork) */
#define RFFLAGS (RFFDG | RFPROC | RFMEM | RFNOWAIT | RFCFDG | \
RFTHREAD | RFSIGSHARE | RFLINUXTHPN | RFSTOPPED | RFHIGHPID | RFTSIGZMB | \
RFPROCDESC | RFPPWAIT)
#define RFKERNELONLY (RFSTOPPED | RFHIGHPID | RFPPWAIT | RFPROCDESC)
#endif /* __BSD_VISIBLE */
# 196 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
#endif /* !_SYS_UNISTD_H_ */
# 198 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/sys/unistd.h" 3 4
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_null.h>
#endif /* expanded by -frewrite-includes */
# 39 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <sys/_types.h>
#endif /* expanded by -frewrite-includes */
# 40 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
# 41 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _GID_T_DECLARED
typedef __gid_t gid_t;
#define _GID_T_DECLARED
#endif
# 46 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _OFF_T_DECLARED
typedef __off_t off_t;
#define _OFF_T_DECLARED
#endif
# 51 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _PID_T_DECLARED
typedef __pid_t pid_t;
#define _PID_T_DECLARED
#endif
# 56 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
# 61 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _SSIZE_T_DECLARED
typedef __ssize_t ssize_t;
#define _SSIZE_T_DECLARED
#endif
# 66 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _UID_T_DECLARED
typedef __uid_t uid_t;
#define _UID_T_DECLARED
#endif
# 71 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _USECONDS_T_DECLARED
typedef __useconds_t useconds_t;
#define _USECONDS_T_DECLARED
#endif
# 76 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#define STDIN_FILENO 0 /* standard input file descriptor */
#define STDOUT_FILENO 1 /* standard output file descriptor */
#define STDERR_FILENO 2 /* standard error file descriptor */
#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200112
#define F_ULOCK 0 /* unlock locked section */
#define F_LOCK 1 /* lock a section for exclusive use */
#define F_TLOCK 2 /* test and lock a section for exclusive use */
#define F_TEST 3 /* test a section for locks by other procs */
#endif
# 87 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/*
* POSIX options and option groups we unconditionally do or don't
* implement. This list includes those options which are exclusively
* implemented (or not) in user mode. Please keep this list in
* alphabetical order.
*
* Anything which is defined as zero below **must** have an
* implementation for the corresponding sysconf() which is able to
* determine conclusively whether or not the feature is supported.
* Anything which is defined as other than -1 below **must** have
* complete headers, types, and function declarations as specified by
* the POSIX standard; however, if the relevant sysconf() function
* returns -1, the functions may be stubbed out.
*/
#define _POSIX_BARRIERS 200112L
#define _POSIX_CPUTIME 200112L
#define _POSIX_READER_WRITER_LOCKS 200112L
#define _POSIX_REGEXP 1
#define _POSIX_SHELL 1
#define _POSIX_SPAWN 200112L
#define _POSIX_SPIN_LOCKS 200112L
#define _POSIX_THREAD_ATTR_STACKADDR 200112L
#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
#define _POSIX_THREAD_CPUTIME 200112L
#define _POSIX_THREAD_PRIO_INHERIT 200112L
#define _POSIX_THREAD_PRIO_PROTECT 200112L
#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L
#define _POSIX_THREAD_PROCESS_SHARED 200112L
#define _POSIX_THREAD_SAFE_FUNCTIONS -1
#define _POSIX_THREAD_SPORADIC_SERVER -1
#define _POSIX_THREADS 200112L
#define _POSIX_TRACE -1
#define _POSIX_TRACE_EVENT_FILTER -1
#define _POSIX_TRACE_INHERIT -1
#define _POSIX_TRACE_LOG -1
#define _POSIX2_C_BIND 200112L /* mandatory */
#define _POSIX2_C_DEV -1 /* need c99 utility */
#define _POSIX2_CHAR_TERM 1
#define _POSIX2_FORT_DEV -1 /* need fort77 utility */
#define _POSIX2_FORT_RUN 200112L
#define _POSIX2_LOCALEDEF -1
#define _POSIX2_PBS -1
#define _POSIX2_PBS_ACCOUNTING -1
#define _POSIX2_PBS_CHECKPOINT -1
#define _POSIX2_PBS_LOCATE -1
#define _POSIX2_PBS_MESSAGE -1
#define _POSIX2_PBS_TRACK -1
#define _POSIX2_SW_DEV -1 /* XXX ??? */
#define _POSIX2_UPE 200112L
#define _V6_ILP32_OFF32 -1
#define _V6_ILP32_OFFBIG 0
#define _V6_LP64_OFF64 0
#define _V6_LPBIG_OFFBIG -1
#if __XSI_VISIBLE
#define _XOPEN_CRYPT -1 /* XXX ??? */
#define _XOPEN_ENH_I18N -1 /* mandatory in XSI */
#define _XOPEN_LEGACY -1
#define _XOPEN_REALTIME -1
#define _XOPEN_REALTIME_THREADS -1
#define _XOPEN_UNIX -1
#endif
# 150 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/* Define the POSIX.2 version we target for compliance. */
#define _POSIX2_VERSION 199212L
/*
* POSIX-style system configuration variable accessors (for the
* sysconf function). The kernel does not directly implement the
* sysconf() interface; rather, a C library stub translates references
* to sysconf() into calls to sysctl() using a giant switch statement.
* Those that are marked `user' are implemented entirely in the C
* library and never query the kernel. pathconf() is implemented
* directly by the kernel so those are not defined here.
*/
#define _SC_ARG_MAX 1
#define _SC_CHILD_MAX 2
#define _SC_CLK_TCK 3
#define _SC_NGROUPS_MAX 4
#define _SC_OPEN_MAX 5
#define _SC_JOB_CONTROL 6
#define _SC_SAVED_IDS 7
#define _SC_VERSION 8
#define _SC_BC_BASE_MAX 9 /* user */
#define _SC_BC_DIM_MAX 10 /* user */
#define _SC_BC_SCALE_MAX 11 /* user */
#define _SC_BC_STRING_MAX 12 /* user */
#define _SC_COLL_WEIGHTS_MAX 13 /* user */
#define _SC_EXPR_NEST_MAX 14 /* user */
#define _SC_LINE_MAX 15 /* user */
#define _SC_RE_DUP_MAX 16 /* user */
#define _SC_2_VERSION 17 /* user */
#define _SC_2_C_BIND 18 /* user */
#define _SC_2_C_DEV 19 /* user */
#define _SC_2_CHAR_TERM 20 /* user */
#define _SC_2_FORT_DEV 21 /* user */
#define _SC_2_FORT_RUN 22 /* user */
#define _SC_2_LOCALEDEF 23 /* user */
#define _SC_2_SW_DEV 24 /* user */
#define _SC_2_UPE 25 /* user */
#define _SC_STREAM_MAX 26 /* user */
#define _SC_TZNAME_MAX 27 /* user */
#if __POSIX_VISIBLE >= 199309
#define _SC_ASYNCHRONOUS_IO 28
#define _SC_MAPPED_FILES 29
#define _SC_MEMLOCK 30
#define _SC_MEMLOCK_RANGE 31
#define _SC_MEMORY_PROTECTION 32
#define _SC_MESSAGE_PASSING 33
#define _SC_PRIORITIZED_IO 34
#define _SC_PRIORITY_SCHEDULING 35
#define _SC_REALTIME_SIGNALS 36
#define _SC_SEMAPHORES 37
#define _SC_FSYNC 38
#define _SC_SHARED_MEMORY_OBJECTS 39
#define _SC_SYNCHRONIZED_IO 40
#define _SC_TIMERS 41
#define _SC_AIO_LISTIO_MAX 42
#define _SC_AIO_MAX 43
#define _SC_AIO_PRIO_DELTA_MAX 44
#define _SC_DELAYTIMER_MAX 45
#define _SC_MQ_OPEN_MAX 46
#define _SC_PAGESIZE 47
#define _SC_RTSIG_MAX 48
#define _SC_SEM_NSEMS_MAX 49
#define _SC_SEM_VALUE_MAX 50
#define _SC_SIGQUEUE_MAX 51
#define _SC_TIMER_MAX 52
#endif
# 218 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __POSIX_VISIBLE >= 200112
#define _SC_2_PBS 59 /* user */
#define _SC_2_PBS_ACCOUNTING 60 /* user */
#define _SC_2_PBS_CHECKPOINT 61 /* user */
#define _SC_2_PBS_LOCATE 62 /* user */
#define _SC_2_PBS_MESSAGE 63 /* user */
#define _SC_2_PBS_TRACK 64 /* user */
#define _SC_ADVISORY_INFO 65
#define _SC_BARRIERS 66 /* user */
#define _SC_CLOCK_SELECTION 67
#define _SC_CPUTIME 68
#define _SC_FILE_LOCKING 69
#define _SC_GETGR_R_SIZE_MAX 70 /* user */
#define _SC_GETPW_R_SIZE_MAX 71 /* user */
#define _SC_HOST_NAME_MAX 72
#define _SC_LOGIN_NAME_MAX 73
#define _SC_MONOTONIC_CLOCK 74
#define _SC_MQ_PRIO_MAX 75
#define _SC_READER_WRITER_LOCKS 76 /* user */
#define _SC_REGEXP 77 /* user */
#define _SC_SHELL 78 /* user */
#define _SC_SPAWN 79 /* user */
#define _SC_SPIN_LOCKS 80 /* user */
#define _SC_SPORADIC_SERVER 81
#define _SC_THREAD_ATTR_STACKADDR 82 /* user */
#define _SC_THREAD_ATTR_STACKSIZE 83 /* user */
#define _SC_THREAD_CPUTIME 84 /* user */
#define _SC_THREAD_DESTRUCTOR_ITERATIONS 85 /* user */
#define _SC_THREAD_KEYS_MAX 86 /* user */
#define _SC_THREAD_PRIO_INHERIT 87 /* user */
#define _SC_THREAD_PRIO_PROTECT 88 /* user */
#define _SC_THREAD_PRIORITY_SCHEDULING 89 /* user */
#define _SC_THREAD_PROCESS_SHARED 90 /* user */
#define _SC_THREAD_SAFE_FUNCTIONS 91 /* user */
#define _SC_THREAD_SPORADIC_SERVER 92 /* user */
#define _SC_THREAD_STACK_MIN 93 /* user */
#define _SC_THREAD_THREADS_MAX 94 /* user */
#define _SC_TIMEOUTS 95 /* user */
#define _SC_THREADS 96 /* user */
#define _SC_TRACE 97 /* user */
#define _SC_TRACE_EVENT_FILTER 98 /* user */
#define _SC_TRACE_INHERIT 99 /* user */
#define _SC_TRACE_LOG 100 /* user */
#define _SC_TTY_NAME_MAX 101 /* user */
#define _SC_TYPED_MEMORY_OBJECTS 102
#define _SC_V6_ILP32_OFF32 103 /* user */
#define _SC_V6_ILP32_OFFBIG 104 /* user */
#define _SC_V6_LP64_OFF64 105 /* user */
#define _SC_V6_LPBIG_OFFBIG 106 /* user */
#define _SC_IPV6 118
#define _SC_RAW_SOCKETS 119
#define _SC_SYMLOOP_MAX 120
#endif
# 272 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __XSI_VISIBLE
#define _SC_ATEXIT_MAX 107 /* user */
#define _SC_IOV_MAX 56
#define _SC_PAGE_SIZE _SC_PAGESIZE
#define _SC_XOPEN_CRYPT 108 /* user */
#define _SC_XOPEN_ENH_I18N 109 /* user */
#define _SC_XOPEN_LEGACY 110 /* user */
#define _SC_XOPEN_REALTIME 111
#define _SC_XOPEN_REALTIME_THREADS 112
#define _SC_XOPEN_SHM 113
#define _SC_XOPEN_STREAMS 114
#define _SC_XOPEN_UNIX 115
#define _SC_XOPEN_VERSION 116
#define _SC_XOPEN_XCU_VERSION 117 /* user */
#endif
# 288 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __BSD_VISIBLE
#define _SC_NPROCESSORS_CONF 57
#define _SC_NPROCESSORS_ONLN 58
#define _SC_CPUSET_SIZE 122
#endif
# 294 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/* Extensions found in Solaris and Linux. */
#define _SC_PHYS_PAGES 121
/* Keys for the confstr(3) function. */
#if __POSIX_VISIBLE >= 199209
#define _CS_PATH 1 /* default value of PATH */
#endif
# 302 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __POSIX_VISIBLE >= 200112
#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 2
#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 3
#define _CS_POSIX_V6_ILP32_OFF32_LIBS 4
#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 5
#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 6
#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 7
#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 8
#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 9
#define _CS_POSIX_V6_LP64_OFF64_LIBS 10
#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 11
#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 12
#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 13
#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 14
#endif
# 318 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
__BEGIN_DECLS
/* 1003.1-1990 */
void _exit(int) __dead2;
int access(const char *, int);
unsigned int alarm(unsigned int);
int chdir(const char *);
int chown(const char *, uid_t, gid_t);
int close(int);
void closefrom(int);
int dup(int);
int dup2(int, int);
int execl(const char *, const char *, ...) __null_sentinel;
int execle(const char *, const char *, ...);
int execlp(const char *, const char *, ...) __null_sentinel;
int execv(const char *, char * const *);
int execve(const char *, char * const *, char * const *);
int execvp(const char *, char * const *);
pid_t fork(void);
long fpathconf(int, int);
char *getcwd(char *, size_t);
gid_t getegid(void);
uid_t geteuid(void);
gid_t getgid(void);
int getgroups(int, gid_t []);
char *getlogin(void);
pid_t getpgrp(void);
pid_t getpid(void);
pid_t getppid(void);
uid_t getuid(void);
int isatty(int);
int link(const char *, const char *);
#ifndef _LSEEK_DECLARED
#define _LSEEK_DECLARED
off_t lseek(int, off_t, int);
#endif
# 354 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
long pathconf(const char *, int);
int pause(void);
int pipe(int *);
ssize_t read(int, void *, size_t);
int rmdir(const char *);
int setgid(gid_t);
int setpgid(pid_t, pid_t);
pid_t setsid(void);
int setuid(uid_t);
unsigned int sleep(unsigned int);
long sysconf(int);
pid_t tcgetpgrp(int);
int tcsetpgrp(int, pid_t);
char *ttyname(int);
int ttyname_r(int, char *, size_t);
int unlink(const char *);
ssize_t write(int, const void *, size_t);
/* 1003.2-1992 */
#if __POSIX_VISIBLE >= 199209 || __XSI_VISIBLE
size_t confstr(int, char *, size_t);
#ifndef _GETOPT_DECLARED
#define _GETOPT_DECLARED
int getopt(int, char * const [], const char *);
extern char *optarg; /* getopt(3) external variables */
extern int optind, opterr, optopt;
#endif /* _GETOPT_DECLARED */
# 382 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#endif
# 383 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/* ISO/IEC 9945-1: 1996 */
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE
int fsync(int);
int fdatasync(int);
/*
* ftruncate() was in the POSIX Realtime Extension (it's used for shared
* memory), but truncate() was not.
*/
#ifndef _FTRUNCATE_DECLARED
#define _FTRUNCATE_DECLARED
int ftruncate(int, off_t);
#endif
# 397 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#endif
# 398 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __POSIX_VISIBLE >= 199506
int getlogin_r(char *, int);
#endif
# 402 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/* 1003.1-2001 */
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE
int fchown(int, uid_t, gid_t);
ssize_t readlink(const char * __restrict, char * __restrict, size_t);
#endif
# 408 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __POSIX_VISIBLE >= 200112
int gethostname(char *, size_t);
int setegid(gid_t);
int seteuid(uid_t);
#endif
# 413 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/* 1003.1-2008 */
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
int getsid(pid_t _pid);
int fchdir(int);
int getpgid(pid_t _pid);
int lchown(const char *, uid_t, gid_t);
ssize_t pread(int, void *, size_t, off_t);
ssize_t pwrite(int, const void *, size_t, off_t);
/* See comment at ftruncate() above. */
#ifndef _TRUNCATE_DECLARED
#define _TRUNCATE_DECLARED
int truncate(const char *, off_t);
#endif
# 428 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
# 429 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __POSIX_VISIBLE >= 200809
int faccessat(int, const char *, int, int);
int fchownat(int, const char *, uid_t, gid_t, int);
int fexecve(int, char *const [], char *const []);
int linkat(int, const char *, int, const char *, int);
ssize_t readlinkat(int, const char * __restrict, char * __restrict, size_t);
int symlinkat(const char *, int, const char *);
int unlinkat(int, const char *, int);
#endif /* __POSIX_VISIBLE >= 200809 */
# 439 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/*
* symlink() was originally in POSIX.1a, which was withdrawn after
* being overtaken by events (1003.1-2001). It was in XPG4.2, and of
* course has been in BSD since 4.2.
*/
#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE >= 402
int symlink(const char * __restrict, const char * __restrict);
#endif
# 448 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
/* X/Open System Interfaces */
#if __XSI_VISIBLE
char *crypt(const char *, const char *);
long gethostid(void);
int lockf(int, int, off_t);
int nice(int);
int setregid(gid_t, gid_t);
int setreuid(uid_t, uid_t);
#ifndef _SWAB_DECLARED
#define _SWAB_DECLARED
void swab(const void * __restrict, void * __restrict, ssize_t);
#endif /* _SWAB_DECLARED */
# 462 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
void sync(void);
#endif /* __XSI_VISIBLE */
# 466 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if (__XSI_VISIBLE && __XSI_VISIBLE <= 500) || __BSD_VISIBLE
int brk(const void *);
int chroot(const char *);
int getdtablesize(void);
int getpagesize(void) __pure2;
char *getpass(const char *);
void *sbrk(intptr_t);
#endif
# 475 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if (__XSI_VISIBLE && __XSI_VISIBLE <= 600) || __BSD_VISIBLE
char *getwd(char *); /* obsoleted by getcwd() */
useconds_t
ualarm(useconds_t, useconds_t);
int usleep(useconds_t);
pid_t vfork(void) __returns_twice;
#endif
# 483 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __BSD_VISIBLE
struct timeval; /* select(2) */
struct crypt_data {
int initialized; /* For compatibility with glibc. */
char __buf[256]; /* Buffer returned by crypt_r(). */
};
int acct(const char *);
int async_daemon(void);
int check_utility_compat(const char *);
const char *
crypt_get_format(void);
char *crypt_r(const char *, const char *, struct crypt_data *);
int crypt_set_format(const char *);
int dup3(int, int, int);
int eaccess(const char *, int);
void endusershell(void);
int exect(const char *, char * const *, char * const *);
int execvP(const char *, const char *, char * const *);
int feature_present(const char *);
char *fflagstostr(u_long);
int getdomainname(char *, int);
int getgrouplist(const char *, gid_t, gid_t *, int *);
int getloginclass(char *, size_t);
mode_t getmode(const void *, mode_t);
int getosreldate(void);
int getpeereid(int, uid_t *, gid_t *);
int getresgid(gid_t *, gid_t *, gid_t *);
int getresuid(uid_t *, uid_t *, uid_t *);
char *getusershell(void);
int initgroups(const char *, gid_t);
int iruserok(unsigned long, int, const char *, const char *);
int iruserok_sa(const void *, int, int, const char *, const char *);
int issetugid(void);
void __FreeBSD_libc_enter_restricted_mode(void);
long lpathconf(const char *, int);
#ifndef _MKDTEMP_DECLARED
char *mkdtemp(char *);
#define _MKDTEMP_DECLARED
#endif
# 525 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _MKNOD_DECLARED
int mknod(const char *, mode_t, dev_t);
#define _MKNOD_DECLARED
#endif
# 529 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#ifndef _MKSTEMP_DECLARED
int mkstemp(char *);
#define _MKSTEMP_DECLARED
#endif
# 533 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
int mkstemps(char *, int);
#ifndef _MKTEMP_DECLARED
char *mktemp(char *);
#define _MKTEMP_DECLARED
#endif
# 538 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
int nfssvc(int, void *);
int nlm_syscall(int, int, int, char **);
int pipe2(int *, int);
int profil(char *, size_t, vm_offset_t, int);
int rcmd(char **, int, const char *, const char *, const char *, int *);
int rcmd_af(char **, int, const char *,
const char *, const char *, int *, int);
int rcmdsh(char **, int, const char *,
const char *, const char *, const char *);
char *re_comp(const char *);
int re_exec(const char *);
int reboot(int);
int revoke(const char *);
pid_t rfork(int);
pid_t rfork_thread(int, void *, int (*)(void *), void *);
int rresvport(int *);
int rresvport_af(int *, int);
int ruserok(const char *, int, const char *, const char *);
#if __BSD_VISIBLE
#ifndef _SELECT_DECLARED
#define _SELECT_DECLARED
int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
#endif
# 561 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#endif
# 562 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
int setdomainname(const char *, int);
int setgroups(int, const gid_t *);
void sethostid(long);
int sethostname(const char *, int);
int setlogin(const char *);
int setloginclass(const char *);
void *setmode(const char *);
int setpgrp(pid_t, pid_t); /* obsoleted by setpgid() */
void setproctitle(const char *_fmt, ...) __printf0like(1, 2);
int setresgid(gid_t, gid_t, gid_t);
int setresuid(uid_t, uid_t, uid_t);
int setrgid(gid_t);
int setruid(uid_t);
void setusershell(void);
int strtofflags(char **, u_long *, u_long *);
int swapon(const char *);
int swapoff(const char *);
int syscall(int, ...);
off_t __syscall(quad_t, ...);
int undelete(const char *);
int unwhiteout(const char *);
void *valloc(size_t); /* obsoleted by malloc() */
#ifndef _OPTRESET_DECLARED
#define _OPTRESET_DECLARED
extern int optreset; /* getopt(3) external variable */
#endif
# 589 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#if __has_feature(capabilities)
ssize_t write_c(int, __capability const void *, size_t);
#endif
# 593 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
#endif /* __BSD_VISIBLE */
# 594 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
__END_DECLS
#endif /* !_UNISTD_H_ */
# 597 "/local/scratch/alr48/cheri/output-release/sdk256/sysroot/usr/include/unistd.h" 3 4
# 42 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h" 2
#if 0 /* expanded by -frewrite-includes */
# include <strings.h>
#endif /* expanded by -frewrite-includes */
# 42 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 43 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# define TIMEB timeb
# define OPENFLAGS_WRITE O_WRONLY|O_CREAT|O_TRUNC
# define OPENFLAGS_READ O_RDONLY
# define OPEN_PERMISSIONS S_IRUSR | S_IWUSR
# if __STDC_VERSION__ >= 199901L
/* "inline" is a keyword */
# else
# 51 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# define inline /* nothing */
# endif
# 53 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#endif
# 54 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#if defined(WIN32) && !defined(__GNUC__)
typedef __int64 int64;
# define FORMAT_OFF_T "I64d"
# ifndef INT64_MIN
# define INT64_MIN (-9223372036854775807i64 - 1i64)
# endif
# 61 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#else
# 62 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
typedef long long int64;
# define FORMAT_OFF_T "lld"
# ifndef INT64_MIN
# define INT64_MIN (-9223372036854775807LL - 1LL)
# endif
# 67 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#endif
# 68 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
#endif
# 70 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/win32.h"
# 35 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "defines.h"
#endif /* expanded by -frewrite-includes */
# 35 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/defines.h" 1
/*!
**************************************************************************
* \file defines.h
*
* \brief
* Header file containing some useful global definitions
*
* \author
* Detlev Marpe
* Copyright (C) 2000 HEINRICH HERTZ INSTITUTE All Rights Reserved.
*
* \date
* 21. March 2001
**************************************************************************
*/
#ifndef _DEFINES_H_
#define _DEFINES_H_
#if defined _DEBUG
#define TRACE 0 //!< 0:Trace off 1:Trace on 2:detailed CABAC context information
#else
# 25 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/defines.h"
#define TRACE 0 //!< 0:Trace off 1:Trace on 2:detailed CABAC context information
#endif
# 27 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/defines.h"
#define GET_METIME 1 //!< Enables or disables ME computation time
#define DUMP_DPB 0 //!< Dump dbp for debug purposes
typedef unsigned char byte; //!< byte type definition
#define RC_MAX_TEMPORAL_LEVELS 5
//#define BEST_NZ_COEFF 1 // yuwen 2005.11.03 => for high complexity mode decision (CAVLC, #TotalCoeff)
//FREXT Profile IDC definitions
#define FREXT_HP 100 //!< YUV 4:2:0/8 "High"
#define FREXT_Hi10P 110 //!< YUV 4:2:0/10 "High 10"
#define FREXT_Hi422 122 //!< YUV 4:2:2/10 "High 4:2:2"
#define FREXT_Hi444 144 //!< YUV 4:4:4/12 "High 4:4:4"
#define ZEROSNR 1
// CAVLC
#define LUMA 0
#define LUMA_INTRA16x16DC 1
#define LUMA_INTRA16x16AC 2
#define LEVEL_NUM 6
#define TOTRUN_NUM 15
#define RUNBEFORE_NUM 7
#define CAVLC_LEVEL_LIMIT 2063
//--- block types for CABAC
#define LUMA_16DC 0
#define LUMA_16AC 1
#define LUMA_8x8 2
#define LUMA_8x4 3
#define LUMA_4x8 4
#define LUMA_4x4 5
#define CHROMA_DC 6
#define CHROMA_AC 7
#define CHROMA_DC_2x4 8
#define CHROMA_DC_4x4 9
#define NUM_BLOCK_TYPES 10
#define _FULL_SEARCH_RANGE_
#define _ADAPT_LAST_GROUP_
#define _CHANGE_QP_
#define _LEAKYBUCKET_
// ---------------------------------------------------------------------------------
// FLAGS and DEFINES for new chroma intra prediction, Dzung Hoang
// Threshold values to zero out quantized transform coefficients.
// Recommend that _CHROMA_COEFF_COST_ be low to improve chroma quality
#define _LUMA_COEFF_COST_ 4 //!< threshold for luma coeffs
#define _CHROMA_COEFF_COST_ 4 //!< threshold for chroma coeffs, used to be 7
#define _LUMA_MB_COEFF_COST_ 5 //!< threshold for luma coeffs of inter Macroblocks
#define _LUMA_8x8_COEFF_COST_ 5 //!< threshold for luma coeffs of 8x8 Inter Partition
#define IMG_PAD_SIZE 20 //!< Number of pixels padded around the reference frame (>=4)
#define IMG_PAD_SIZE_TIMES4 80 //!< Number of pixels padded around the reference frame in subpel units(>=16)
#define MAX_VALUE 999999 //!< used for start value for some variables
#define INVALIDINDEX (-135792468)
#define P8x8 8
#define I4MB 9
#define I16MB 10
#define IBLOCK 11
#define SI4MB 12
#define I8MB 13
#define IPCM 14
#define MAXMODE 15
#define LAMBDA_ACCURACY_BITS 16
#define LAMBDA_FACTOR(lambda) ((int)((double)(1<<LAMBDA_ACCURACY_BITS)*lambda+0.5))
#define WEIGHTED_COST(factor,bits) (((factor)*(bits))>>LAMBDA_ACCURACY_BITS)
#define MV_COST(f,s,cx,cy,px,py) (WEIGHTED_COST(f,mvbits[((cx)<<(s))-px]+mvbits[((cy)<<(s))-py]))
#define MV_COST_SMP(f,cx,cy,px,py) (WEIGHTED_COST(f,mvbits[cx-px]+mvbits[cy-py]))
#define REF_COST(f,ref,list_offset) (WEIGHTED_COST(f,((listXsize[list_offset]<=1)? 0:refbits[(ref)])))
#define IS_INTRA(MB) ((MB)->mb_type==I4MB || (MB)->mb_type==I16MB || (MB)->mb_type==I8MB || (MB)->mb_type==IPCM)
#define IS_NEWINTRA(MB) ((MB)->mb_type==I16MB)
#define IS_OLDINTRA(MB) ((MB)->mb_type==I4MB)
#define IS_IPCM(MB) ((MB)->mb_type==IPCM)
#define IS_INTER(MB) ((MB)->mb_type!=I4MB && (MB)->mb_type!=I16MB && (MB)->mb_type!=I8MB)
#define IS_INTERMV(MB) ((MB)->mb_type!=I4MB && (MB)->mb_type!=I16MB && (MB)->mb_type!=I8MB && (MB)->mb_type!=0)
#define IS_DIRECT(MB) ((MB)->mb_type==0 && (img->type==B_SLICE))
#define IS_COPY(MB) ((MB)->mb_type==0 && (img->type==P_SLICE||img ->type==SP_SLICE))
#define IS_P8x8(MB) ((MB)->mb_type==P8x8)
// Quantization parameter range
#define MIN_QP 0
#define MAX_QP 51
#define SHIFT_QP 12
// Direct Mode types
#define DIR_TEMPORAL 0 //!< Temporal Direct Mode
#define DIR_SPATIAL 1 //!< Spatial Direct Mode
#define MAX_REFERENCE_PICTURES 32
#define BLOCK_SHIFT 2
#define BLOCK_SIZE 4
#define BLOCK_SIZE8x8 8
#define MB_BLOCK_SIZE 16
#define MB_BLOCK_SHIFT 4
// These variables relate to the subpel accuracy supported by the software (1/4)
#define BLOCK_SIZE_SP 16 // BLOCK_SIZE << 2
#define BLOCK_SIZE8x8_SP 32 // BLOCK_SIZE8x8 << 2
// number of intra prediction modes
#define NO_INTRA_PMODE 9
// 4x4 intra prediction modes
#define VERT_PRED 0
#define HOR_PRED 1
#define DC_PRED 2
#define DIAG_DOWN_LEFT_PRED 3
#define DIAG_DOWN_RIGHT_PRED 4
#define VERT_RIGHT_PRED 5
#define HOR_DOWN_PRED 6
#define VERT_LEFT_PRED 7
#define HOR_UP_PRED 8
// 16x16 intra prediction modes
#define VERT_PRED_16 0
#define HOR_PRED_16 1
#define DC_PRED_16 2
#define PLANE_16 3
// 8x8 chroma intra prediction modes
#define DC_PRED_8 0
#define HOR_PRED_8 1
#define VERT_PRED_8 2
#define PLANE_8 3
#define INIT_FRAME_RATE 30
#define EOS 1 //!< End Of Sequence
#define MVPRED_MEDIAN 0
#define MVPRED_L 1
#define MVPRED_U 2
#define MVPRED_UR 3
#define BLOCK_MULTIPLE 4 //(MB_BLOCK_SIZE/BLOCK_SIZE)
#define MB_BLOCK_PARTITIONS 16 //(BLOCK_MULTIPLE * BLOCK_MULTIPLE)
#define MB_PIXELS 256 //(MB_BLOCK_SIZE * MB_BLOCK_SIZE)
#define BLOCK_CONTEXT 64 //(4 * MB_BLOCK_PARTITIONS)
#define MAX_SYMBOLS_PER_MB 1200 //!< Maximum number of different syntax elements for one MB
// CAVLC needs more symbols per MB
#define MAX_PART_NR 3 /*!< Maximum number of different data partitions.
Some reasonable number which should reflect
what is currently defined in the SE2Partition map (elements.h) */
//Start code and Emulation Prevention need this to be defined in identical manner at encoder and decoder
#define ZEROBYTES_SHORTSTARTCODE 2 //indicates the number of zero bytes in the short start-code prefix
#define Q_BITS 15
#define DQ_BITS 6
#define DQ_ROUND (1<<(DQ_BITS-1))
#define Q_BITS_8 16
#define DQ_BITS_8 6
#define DQ_ROUND_8 (1<<(DQ_BITS_8-1))
// Context Adaptive Lagrange Multiplier (CALM)
#define CALM_MF_FACTOR_THRESHOLD 512.0
#endif
# 201 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/defines.h"
# 36 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "parsetcommon.h"
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/parsetcommon.h" 1
/*!
**************************************************************************************
* \file
* parsetcommon.h
* \brief
* Picture and Sequence Parameter Sets, structures common to encoder and decoder
* This code reflects JVT version xxx
* \date 25 November 2002
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
* - Stephan Wenger <stewe@cs.tu-berlin.de>
***************************************************************************************
*/
// In the JVT syntax, frequently flags are used that indicate the presence of
// certain pieces of information in the NALU. Here, these flags are also
// present. In the encoder, those bits indicate that the values signalled to
// be present are meaningful and that this part of the syntax should be
// written to the NALU. In the decoder, the flag indicates that information
// was received from the decoded NALU and should be used henceforth.
// The structure names were chosen as indicated in the JVT syntax
#ifndef _PARSETCOMMON_H_
#define _PARSETCOMMON_H_
#define MAXIMUMPARSETRBSPSIZE 1500
#define MAXIMUMPARSETNALUSIZE 1500
#define MAXSPS 32
#define MAXPPS 256
//! Boolean Type
#ifdef FALSE
# define Boolean int
#else
# 39 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/parsetcommon.h"
typedef enum {
FALSE,
TRUE
} Boolean;
#endif
# 44 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/parsetcommon.h"
#define MAXIMUMVALUEOFcpb_cnt 32
typedef struct
{
unsigned int cpb_cnt; // ue(v)
unsigned int bit_rate_scale; // u(4)
unsigned int cpb_size_scale; // u(4)
unsigned int bit_rate_value [MAXIMUMVALUEOFcpb_cnt]; // ue(v)
unsigned int cpb_size_value[MAXIMUMVALUEOFcpb_cnt]; // ue(v)
unsigned int vbr_cbr_flag[MAXIMUMVALUEOFcpb_cnt]; // u(1)
unsigned int initial_cpb_removal_delay_length_minus1; // u(5)
unsigned int cpb_removal_delay_length_minus1; // u(5)
unsigned int dpb_output_delay_length_minus1; // u(5)
unsigned int time_offset_length; // u(5)
} hrd_parameters_t;
typedef struct
{
Boolean aspect_ratio_info_present_flag; // u(1)
unsigned int aspect_ratio_idc; // u(8)
unsigned int sar_width; // u(16)
unsigned int sar_height; // u(16)
Boolean overscan_info_present_flag; // u(1)
Boolean overscan_appropriate_flag; // u(1)
Boolean video_signal_type_present_flag; // u(1)
unsigned int video_format; // u(3)
Boolean video_full_range_flag; // u(1)
Boolean colour_description_present_flag; // u(1)
unsigned int colour_primaries; // u(8)
unsigned int transfer_characteristics; // u(8)
unsigned int matrix_coefficients; // u(8)
Boolean chroma_location_info_present_flag; // u(1)
unsigned int chroma_location_frame; // ue(v)
unsigned int chroma_location_field; // ue(v)
Boolean timing_info_present_flag; // u(1)
unsigned int num_units_in_tick; // u(32)
unsigned int time_scale; // u(32)
Boolean fixed_frame_rate_flag; // u(1)
Boolean nal_hrd_parameters_present_flag; // u(1)
hrd_parameters_t nal_hrd_parameters; // hrd_paramters_t
Boolean vcl_hrd_parameters_present_flag; // u(1)
hrd_parameters_t vcl_hrd_parameters; // hrd_paramters_t
// if ((nal_hrd_parameters_present_flag || (vcl_hrd_parameters_present_flag))
Boolean low_delay_hrd_flag; // u(1)
Boolean bitstream_restriction_flag; // u(1)
Boolean motion_vectors_over_pic_boundaries_flag; // u(1)
unsigned int max_bytes_per_pic_denom; // ue(v)
unsigned int max_bits_per_mb_denom; // ue(v)
unsigned int log2_max_mv_length_vertical; // ue(v)
unsigned int log2_max_mv_length_horizontal; // ue(v)
unsigned int max_dec_frame_reordering; // ue(v)
unsigned int max_dec_frame_buffering; // ue(v)
} vui_seq_parameters_t;
#define MAXnum_slice_groups_minus1 8
typedef struct
{
Boolean Valid; // indicates the parameter set is valid
unsigned int pic_parameter_set_id; // ue(v)
unsigned int seq_parameter_set_id; // ue(v)
Boolean entropy_coding_mode_flag; // u(1)
Boolean transform_8x8_mode_flag; // u(1)
Boolean pic_scaling_matrix_present_flag; // u(1)
int pic_scaling_list_present_flag[8]; // u(1)
// if( pic_order_cnt_type < 2 ) in the sequence parameter set
Boolean pic_order_present_flag; // u(1)
unsigned int num_slice_groups_minus1; // ue(v)
unsigned int slice_group_map_type; // ue(v)
// if( slice_group_map_type = = 0 )
unsigned int run_length_minus1[MAXnum_slice_groups_minus1]; // ue(v)
// else if( slice_group_map_type = = 2 )
unsigned int top_left[MAXnum_slice_groups_minus1]; // ue(v)
unsigned int bottom_right[MAXnum_slice_groups_minus1]; // ue(v)
// else if( slice_group_map_type = = 3 || 4 || 5
Boolean slice_group_change_direction_flag; // u(1)
unsigned int slice_group_change_rate_minus1; // ue(v)
// else if( slice_group_map_type = = 6 )
unsigned int pic_size_in_map_units_minus1; // ue(v)
byte *slice_group_id; // complete MBAmap u(v)
int num_ref_idx_l0_active_minus1; // ue(v)
int num_ref_idx_l1_active_minus1; // ue(v)
Boolean weighted_pred_flag; // u(1)
unsigned int weighted_bipred_idc; // u(2)
int pic_init_qp_minus26; // se(v)
int pic_init_qs_minus26; // se(v)
int chroma_qp_index_offset; // se(v)
int cb_qp_index_offset; // se(v)
int cr_qp_index_offset; // se(v)
Boolean deblocking_filter_control_present_flag; // u(1)
Boolean constrained_intra_pred_flag; // u(1)
Boolean redundant_pic_cnt_present_flag; // u(1)
Boolean vui_pic_parameters_flag; // u(1)
} pic_parameter_set_rbsp_t;
#define MAXnum_ref_frames_in_pic_order_cnt_cycle 256
typedef struct
{
Boolean Valid; // indicates the parameter set is valid
unsigned int profile_idc; // u(8)
Boolean constrained_set0_flag; // u(1)
Boolean constrained_set1_flag; // u(1)
Boolean constrained_set2_flag; // u(1)
Boolean constrained_set3_flag; // u(1)
unsigned int level_idc; // u(8)
unsigned int seq_parameter_set_id; // ue(v)
unsigned int chroma_format_idc; // ue(v)
Boolean seq_scaling_matrix_present_flag; // u(1)
int seq_scaling_list_present_flag[8]; // u(1)
unsigned int bit_depth_luma_minus8; // ue(v)
unsigned int bit_depth_chroma_minus8; // ue(v)
unsigned int log2_max_frame_num_minus4; // ue(v)
unsigned int pic_order_cnt_type;
// if( pic_order_cnt_type == 0 )
unsigned int log2_max_pic_order_cnt_lsb_minus4; // ue(v)
// else if( pic_order_cnt_type == 1 )
Boolean delta_pic_order_always_zero_flag; // u(1)
int offset_for_non_ref_pic; // se(v)
int offset_for_top_to_bottom_field; // se(v)
unsigned int num_ref_frames_in_pic_order_cnt_cycle; // ue(v)
// for( i = 0; i < num_ref_frames_in_pic_order_cnt_cycle; i++ )
int offset_for_ref_frame[MAXnum_ref_frames_in_pic_order_cnt_cycle]; // se(v)
unsigned int num_ref_frames; // ue(v)
Boolean gaps_in_frame_num_value_allowed_flag; // u(1)
unsigned int pic_width_in_mbs_minus1; // ue(v)
unsigned int pic_height_in_map_units_minus1; // ue(v)
Boolean frame_mbs_only_flag; // u(1)
// if( !frame_mbs_only_flag )
Boolean mb_adaptive_frame_field_flag; // u(1)
Boolean direct_8x8_inference_flag; // u(1)
Boolean frame_cropping_flag; // u(1)
unsigned int frame_cropping_rect_left_offset; // ue(v)
unsigned int frame_cropping_rect_right_offset; // ue(v)
unsigned int frame_cropping_rect_top_offset; // ue(v)
unsigned int frame_cropping_rect_bottom_offset; // ue(v)
Boolean vui_parameters_present_flag; // u(1)
vui_seq_parameters_t vui_seq_parameters; // vui_seq_parameters_t
} seq_parameter_set_rbsp_t;
pic_parameter_set_rbsp_t *AllocPPS (void);
seq_parameter_set_rbsp_t *AllocSPS (void);
void FreePPS (pic_parameter_set_rbsp_t *pps);
void FreeSPS (seq_parameter_set_rbsp_t *sps);
#endif
# 199 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/parsetcommon.h"
# 37 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "q_matrix.h"
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/q_matrix.h" 1
/*!
***************************************************************************
* \file
* q_matrix.h
*
* \brief
* Headerfile for q_matrix array
*
* \date
* 07. Apr 2004
***************************************************************************
*/
#ifndef _Q_MATRIX_H_
#define _Q_MATRIX_H_
extern int ****LevelScale4x4Luma;
extern int *****LevelScale4x4Chroma;
extern int ****LevelScale8x8Luma;
extern int ****InvLevelScale4x4Luma;
extern int *****InvLevelScale4x4Chroma;
extern int ****InvLevelScale8x8Luma;
extern short ScalingList4x4input[6][16];
extern short ScalingList8x8input[2][64];
extern short ScalingList4x4[6][16];
extern short ScalingList8x8[2][64];
extern short UseDefaultScalingMatrix4x4Flag[6];
extern short UseDefaultScalingMatrix8x8Flag[2];
extern int *qp_per_matrix;
extern int *qp_rem_matrix;
void Init_QMatrix (void);
void CalculateQuantParam(void);
void CalculateQuant8Param(void);
void free_QMatrix(void);
#endif
# 44 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/q_matrix.h"
# 38 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "q_offsets.h"
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/q_offsets.h" 1
/*!
***************************************************************************
* \file
* q_offsets.h
*
* \brief
* Headerfile for q_offsets array
*
* \date
* 18. Nov 2004
***************************************************************************
*/
#ifndef _Q_OFFSETS_H_
#define _Q_OFFSETS_H_
extern int ****LevelOffset4x4Luma;
extern int *****LevelOffset4x4Chroma;
extern int ****LevelOffset8x8Luma;
extern short **OffsetList4x4;
extern short **OffsetList8x8;
extern const int OffsetBits;
extern int AdaptRndWeight;
extern int AdaptRndCrWeight;
void Init_QOffsetMatrix (void);
void CalculateOffsetParam(void);
void CalculateOffset8Param(void);
void free_QOffsets (void);
#endif
# 34 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/q_offsets.h"
# 39 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "minmax.h"
#endif /* expanded by -frewrite-includes */
# 39 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/minmax.h" 1
/*!
************************************************************************
* \file
* minmax.h
* \brief
* defines min and max macros for non WIN32 environments
************************************************************************
*/
#ifndef _MINMAX_
#define _MINMAX_
#if !defined(WIN32) || defined(__GNUC__)
#endif
# 15 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/minmax.h"
#endif
# 17 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/minmax.h"
# 40 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "ifunctions.h"
#endif /* expanded by -frewrite-includes */
# 40 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/ifunctions.h" 1
/*!
************************************************************************
* \file
* ifunctions.h
*
* \brief
* define some inline functions that are used within the encoder.
*
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
* - Karsten Sühring <suehring@hhi.de>
* - Alexis Tourapis <alexismt@ieee.org>
*
************************************************************************
*/
#ifndef _IFUNCTIONS_H_
#define _IFUNCTIONS_H_
static inline int imin(int a, int b)
{
return ((a) < (b)) ? (a) : (b);
}
static inline int imax(int a, int b)
{
return ((a) > (b)) ? (a) : (b);
}
static inline double dmin(double a, double b)
{
return ((a) < (b)) ? (a) : (b);
}
static inline double dmax(double a, double b)
{
return ((a) > (b)) ? (a) : (b);
}
static inline int64 i64min(int64 a, int64 b)
{
return ((a) < (b)) ? (a) : (b);
}
static inline int64 i64max(int64 a, int64 b)
{
return ((a) > (b)) ? (a) : (b);
}
static inline int iabs(int x)
{
return ((x) < 0) ? -(x) : (x);
}
static inline double dabs(double x)
{
return ((x) < 0) ? -(x) : (x);
}
static inline int isign(int x)
{
return ((x) < 0) ? -1 : 1;
}
static inline int isignab(int a, int b)
{
return ((b) < 0) ? -iabs(a) : iabs(a);
}
static inline int rshift_rnd(int x, int a)
{
return (a > 0) ? ((x + (1 << (a-1) )) >> a) : (x << (-a));
}
static inline unsigned int rshift_rnd_us(unsigned int x, unsigned int a)
{
return (a > 0) ? ((x + (1 << (a-1))) >> a) : x;
}
static inline int rshift_rnd_sf(int x, int a)
{
return ((x + (1 << (a-1) )) >> a);
}
static inline unsigned int rshift_rnd_us_sf(unsigned int x, unsigned int a)
{
return ((x + (1 << (a-1))) >> a);
}
static inline int iClip1(int high, int x)
{
x = imax(x, 0);
x = imin(x, high);
return x;
}
static inline int iClip3(int low, int high, int x)
{
x = imax(x, low);
x = imin(x, high);
return x;
}
static inline double dClip3(double low, double high, double x)
{
x = dmax(x, low);
x = dmin(x, high);
return x;
}
static inline int weighted_cost(int factor, int bits)
{
return (((factor)*(bits))>>LAMBDA_ACCURACY_BITS);
}
static inline int RSD(int x)
{
return ((x&2)?(x|1):(x&(~1)));
}
#endif
# 125 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/ifunctions.h"
# 41 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
/***********************************************************************
* T y p e d e f i n i t i o n s f o r T M L
***********************************************************************
*/
//typedef byte imgpel;
//typedef unsigned short distpel;
typedef unsigned short imgpel;
typedef int distpel;
enum {
YUV400 = 0,
YUV420 = 1,
YUV422 = 2,
YUV444 = 3
} color_formats;
enum {
LIST_0 = 0,
LIST_1 = 1,
BI_PRED = 2,
BI_PRED_L0 = 3,
BI_PRED_L1 = 4
};
enum {
ERROR_SAD = 0,
ERROR_SSE = 1,
ERROR_SATD = 2,
ERROR_PSATD = 3
};
enum {
ME_Y_ONLY = 0,
ME_YUV_FP = 1,
ME_YUV_FP_SP = 2
};
enum {
DISTORTION_MSE = 0,
DISTORTION_WEIGHTED_MSE = 1,
DISTORTION_OVERLAP_TRANSFORM = 2,
DISTORTION_EDGE_MSE = 3
};
//! Data Partitioning Modes
typedef enum
{
PAR_DP_1, //!< no data partitioning is supported
PAR_DP_3 //!< data partitioning with 3 partitions
} PAR_DP_TYPE;
//! Output File Types
typedef enum
{
PAR_OF_ANNEXB, //!< Annex B byte stream format
PAR_OF_RTP //!< RTP packets in outfile
} PAR_OF_TYPE;
//! Field Coding Types
typedef enum
{
FRAME_CODING,
FIELD_CODING,
ADAPTIVE_CODING,
FRAME_MB_PAIR_CODING
} CodingType;
//! definition of H.264 syntax elements
typedef enum
{
SE_HEADER,
SE_PTYPE,
SE_MBTYPE,
SE_REFFRAME,
SE_INTRAPREDMODE,
SE_MVD,
SE_CBP,
SE_LUM_DC_INTRA,
SE_CHR_DC_INTRA,
SE_LUM_AC_INTRA,
SE_CHR_AC_INTRA,
SE_LUM_DC_INTER,
SE_CHR_DC_INTER,
SE_LUM_AC_INTER,
SE_CHR_AC_INTER,
SE_DELTA_QUANT,
SE_BFRAME,
SE_EOS,
SE_MAX_ELEMENTS //!< number of maximum syntax elements
} SE_type; // substituting the definitions in elements.h
typedef enum
{
INTER_MB,
INTRA_MB_4x4,
INTRA_MB_16x16
} IntraInterDecision;
typedef enum
{
BITS_HEADER,
BITS_TOTAL_MB,
BITS_MB_MODE,
BITS_INTER_MB,
BITS_CBP_MB,
BITS_COEFF_Y_MB,
BITS_COEFF_UV_MB,
BITS_DELTA_QUANT_MB,
MAX_BITCOUNTER_MB
} BitCountType;
typedef enum
{
NO_SLICES,
FIXED_MB,
FIXED_RATE,
CALLBACK,
FMO
} SliceMode;
typedef enum
{
UVLC,
CABAC
} SymbolMode;
typedef enum
{
FULL_SEARCH = -1,
FAST_FULL_SEARCH = 0,
UM_HEX = 1,
UM_HEX_SIMPLE = 2,
EPZS = 3
} SearchType;
typedef enum
{
FRAME,
TOP_FIELD,
BOTTOM_FIELD
} PictureStructure; //!< New enum for field processing
typedef enum
{
P_SLICE = 0,
B_SLICE = 1,
I_SLICE = 2,
SP_SLICE = 3,
SI_SLICE = 4
} SliceType;
//Motion Estimation levels
typedef enum
{
F_PEL, //!< Full Pel refinement
H_PEL, //!< Half Pel refinement
Q_PEL //!< Quarter Pel refinement
} MELevel;
typedef enum
{
FAST_ACCESS = 0, //!< Fast/safe reference access
UMV_ACCESS = 1 //!< unconstrained reference access
} REF_ACCESS_TYPE;
typedef enum
{
IS_LUMA = 0,
IS_CHROMA = 1
} Component_Type;
typedef enum
{
RC_MODE_0 = 0,
RC_MODE_1 = 1,
RC_MODE_2 = 2,
RC_MODE_3 = 3
} RCModeType;
/***********************************************************************
* D a t a t y p e s f o r C A B A C
***********************************************************************
*/
//! struct to characterize the state of the arithmetic coding engine
typedef struct
{
unsigned int Elow, Erange;
unsigned int Ebuffer;
unsigned int Ebits_to_go;
unsigned int Ebits_to_follow;
byte *Ecodestrm;
int *Ecodestrm_len;
int C;
int E;
} EncodingEnvironment;
typedef EncodingEnvironment *EncodingEnvironmentPtr;
//! struct for context management
typedef struct
{
unsigned short state; // index into state-table CP
unsigned char MPS; // Least Probable Symbol 0/1 CP
unsigned long count;
} BiContextType;
typedef BiContextType *BiContextTypePtr;
/**********************************************************************
* C O N T E X T S F O R T M L S Y N T A X E L E M E N T S
**********************************************************************
*/
#define NUM_MB_TYPE_CTX 11
#define NUM_B8_TYPE_CTX 9
#define NUM_MV_RES_CTX 10
#define NUM_REF_NO_CTX 6
#define NUM_DELTA_QP_CTX 4
#define NUM_MB_AFF_CTX 4
#define NUM_TRANSFORM_SIZE_CTX 3
typedef struct
{
BiContextType mb_type_contexts [3][NUM_MB_TYPE_CTX];
BiContextType b8_type_contexts [2][NUM_B8_TYPE_CTX];
BiContextType mv_res_contexts [2][NUM_MV_RES_CTX];
BiContextType ref_no_contexts [2][NUM_REF_NO_CTX];
BiContextType delta_qp_contexts [NUM_DELTA_QP_CTX];
BiContextType mb_aff_contexts [NUM_MB_AFF_CTX];
BiContextType transform_size_contexts [NUM_TRANSFORM_SIZE_CTX];
} MotionInfoContexts;
#define NUM_IPR_CTX 2
#define NUM_CIPR_CTX 4
#define NUM_CBP_CTX 4
#define NUM_BCBP_CTX 4
#define NUM_MAP_CTX 15
#define NUM_LAST_CTX 15
#define NUM_ONE_CTX 5
#define NUM_ABS_CTX 5
typedef struct
{
BiContextType ipr_contexts [NUM_IPR_CTX];
BiContextType cipr_contexts[NUM_CIPR_CTX];
BiContextType cbp_contexts [3][NUM_CBP_CTX];
BiContextType bcbp_contexts[NUM_BLOCK_TYPES][NUM_BCBP_CTX];
BiContextType map_contexts [NUM_BLOCK_TYPES][NUM_MAP_CTX];
BiContextType last_contexts[NUM_BLOCK_TYPES][NUM_LAST_CTX];
BiContextType one_contexts [NUM_BLOCK_TYPES][NUM_ONE_CTX];
BiContextType abs_contexts [NUM_BLOCK_TYPES][NUM_ABS_CTX];
BiContextType fld_map_contexts [NUM_BLOCK_TYPES][NUM_MAP_CTX];
BiContextType fld_last_contexts[NUM_BLOCK_TYPES][NUM_LAST_CTX];
} TextureInfoContexts;
//*********************** end of data type definition for CABAC *******************
//! Pixel position for checking neighbors
typedef struct pix_pos
{
int available;
int mb_addr;
int x;
int y;
int pos_x;
int pos_y;
} PixelPos;
//! Buffer structure for decoded reference picture marking commands
typedef struct DecRefPicMarking_s
{
int memory_management_control_operation;
int difference_of_pic_nums_minus1;
int long_term_pic_num;
int long_term_frame_idx;
int max_long_term_frame_idx_plus1;
struct DecRefPicMarking_s *Next;
} DecRefPicMarking_t;
//! Syntax Element
typedef struct syntaxelement
{
int type; //!< type of syntax element for data part.
int value1; //!< numerical value of syntax element
int value2; //!< for blocked symbols, e.g. run/level
int len; //!< length of code
int inf; //!< info part of UVLC code
unsigned int bitpattern; //!< UVLC bitpattern
int context; //!< CABAC context
#if TRACE
#define TRACESTRING_SIZE 100 //!< size of trace string
char tracestring[TRACESTRING_SIZE]; //!< trace string
#endif
# 351 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
//!< for mapping of syntaxElement to UVLC
void (*mapping)(int value1, int value2, int* len_ptr, int* info_ptr);
} SyntaxElement;
//! Macroblock
typedef struct macroblock
{
int slice_nr;
int delta_qp;
int qp; //!< QP luma
int qpc[2]; //!< QP chroma
int qpsp ;
int bitcounter[MAX_BITCOUNTER_MB];
struct macroblock *mb_available_up; //!< pointer to neighboring MB (CABAC)
struct macroblock *mb_available_left; //!< pointer to neighboring MB (CABAC)
int mb_type;
int mvd[2][BLOCK_MULTIPLE][BLOCK_MULTIPLE][2]; //!< indices correspond to [list][block_y][block_x][x,y]
signed char intra_pred_modes[MB_BLOCK_PARTITIONS];
signed char intra_pred_modes8x8[MB_BLOCK_PARTITIONS]; //!< four 8x8 blocks in a macroblock
int cbp ;
int64 cbp_blk ; //!< 1 bit set for every 4x4 block with coefs (not implemented for INTRA)
int b8mode[4];
int b8pdir[4];
int64 cbp_bits;
int c_ipred_mode; //!< chroma intra prediction mode
int IntraChromaPredModeFlag;
int mb_field;
int is_field_mode;
int list_offset;
int mbAddrA, mbAddrB, mbAddrC, mbAddrD;
int mbAvailA, mbAvailB, mbAvailC, mbAvailD;
int all_blk_8x8;
int luma_transform_size_8x8_flag;
int NoMbPartLessThan8x8Flag;
short bi_pred_me;
// rate control
double actj; // macroblock activity measure for macroblock j
int prev_qp;
int prev_delta_qp;
int prev_cbp;
int predict_qp;
int predict_error;
int LFDisableIdc;
int LFAlphaC0Offset;
int LFBetaOffset;
int skip_flag;
} Macroblock;
//! Bitstream
typedef struct
{
int byte_pos; //!< current position in bitstream;
int bits_to_go; //!< current bitcounter
byte byte_buf; //!< current buffer for last written byte
int stored_byte_pos; //!< storage for position in bitstream;
int stored_bits_to_go; //!< storage for bitcounter
byte stored_byte_buf; //!< storage for buffer of last written byte
byte byte_buf_skip; //!< current buffer for last written byte
int byte_pos_skip; //!< storage for position in bitstream;
int bits_to_go_skip; //!< storage for bitcounter
byte *streamBuffer; //!< actual buffer for written bytes
int write_flag; //!< Bitstream contains data and needs to be written
#if TRACE
Boolean trace_enabled;
#endif
# 433 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
} Bitstream;
//! DataPartition
typedef struct datapartition
{
Bitstream *bitstream;
EncodingEnvironment ee_cabac;
EncodingEnvironment ee_recode;
} DataPartition;
//! Slice
typedef struct
{
int picture_id;
int qp;
int picture_type; //!< picture type
int start_mb_nr;
int max_part_nr; //!< number of different partitions
int num_mb; //!< number of MBs in the slice
DataPartition *partArr; //!< array of partitions
MotionInfoContexts *mot_ctx; //!< pointer to struct of context models for use in CABAC
TextureInfoContexts *tex_ctx; //!< pointer to struct of context models for use in CABAC
int ref_pic_list_reordering_flag_l0;
int *reordering_of_pic_nums_idc_l0;
int *abs_diff_pic_num_minus1_l0;
int *long_term_pic_idx_l0;
int ref_pic_list_reordering_flag_l1;
int *reordering_of_pic_nums_idc_l1;
int *abs_diff_pic_num_minus1_l1;
int *long_term_pic_idx_l1;
Boolean (*slice_too_big)(int bits_slice); //!< for use of callback functions
int field_ctx[3][2]; //GB
} Slice;
#define MAXSLICEPERPICTURE 100
typedef struct
{
int no_slices;
int idr_flag;
Slice *slices[MAXSLICEPERPICTURE];
int bits_per_picture;
float distortion_y;
float distortion_u;
float distortion_v;
} Picture;
Picture *top_pic;
Picture *bottom_pic;
Picture *frame_pic;
Picture *frame_pic_1;
Picture *frame_pic_2;
Picture *frame_pic_3;
Picture *frame_pic_si;
#ifdef _LEAKYBUCKET_
long *Bit_Buffer;
#endif
# 498 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
// global picture format dependend buffers, mem allocation in image.c
imgpel **imgY_org; //!< Reference luma image
imgpel ***imgUV_org; //!< Reference chroma image
int **imgY_sub_tmp; //!< Y picture temporary component (Quarter pel)
int **PicPos;
unsigned int log2_max_frame_num_minus4;
unsigned int log2_max_pic_order_cnt_lsb_minus4;
time_t me_tot_time,me_time;
pic_parameter_set_rbsp_t *active_pps;
seq_parameter_set_rbsp_t *active_sps;
int dsr_new_search_range; //!<Dynamic Search Range.
//////////////////////////////////////////////////////////////////////////
// B pictures
// motion vector : forward, backward, direct
int mb_adaptive; //!< For MB level field/frame coding tools
int MBPairIsField; //!< For MB level field/frame coding tools
//Weighted prediction
int ***wp_weight; // weight in [list][index][component] order
int ***wp_offset; // offset in [list][index][component] order
int ****wbp_weight; // weight in [list][fwd_index][bwd_idx][component] order
int luma_log_weight_denom;
int chroma_log_weight_denom;
int wp_luma_round;
int wp_chroma_round;
// global picture format dependend buffers, mem allocation in image.c (field picture)
imgpel **imgY_org_top;
imgpel **imgY_org_bot;
imgpel ***imgUV_org_top;
imgpel ***imgUV_org_bot;
imgpel **imgY_org_frm;
imgpel ***imgUV_org_frm;
imgpel **imgY_com; //!< Encoded luma images
imgpel ***imgUV_com; //!< Encoded croma images
signed char ***direct_ref_idx; //!< direct mode reference index buffer
signed char **direct_pdir; //!< direct mode reference index buffer
// Buffers for rd optimization with packet losses, Dim. Kontopodis
byte **pixel_map; //!< Shows the latest reference frame that is reliable for each pixel
byte **refresh_map; //!< Stores the new values for pixel_map
int intras; //!< Counts the intra updates in each frame.
int frame_ctr[5];
int frame_no, nextP_tr_fld, nextP_tr_frm;
time_t tot_time;
#define ET_SIZE 300 //!< size of error text buffer
char errortext[ET_SIZE]; //!< buffer for error message for exit with error()
// Residue Color Transform
signed char b8_ipredmode8x8[4][4], b8_intra_pred_modes8x8[16];
//! Info for the "decoders-in-the-encoder" used for rdoptimization with packet losses
typedef struct
{
int **resY; //!< Residue of Luminance
imgpel ***decY; //!< Decoded values at the simulated decoders
imgpel ****decref; //!< Reference frames of the simulated decoders
imgpel ***decY_best; //!< Decoded frames for the best mode for all decoders
imgpel **RefBlock;
byte **status_map;
byte **dec_mb_mode;
} Decoders;
extern Decoders *decs;
//! SNRParameters
typedef struct
{
float snr_y; //!< current Y SNR
float snr_u; //!< current U SNR
float snr_v; //!< current V SNR
float snr_y1; //!< SNR Y(dB) first frame
float snr_u1; //!< SNR U(dB) first frame
float snr_v1; //!< SNR V(dB) first frame
float snr_yt[5]; //!< SNR Y(dB) based on frame type
float snr_ut[5]; //!< SNR U(dB) based on frame type
float snr_vt[5]; //!< SNR V(dB) based on frame type
float snr_ya; //!< Average SNR Y(dB) remaining frames
float snr_ua; //!< Average SNR U(dB) remaining frames
float snr_va; //!< Average SNR V(dB) remaining frames
float sse_y; //!< SSE Y
float sse_u; //!< SSE U
float sse_v; //!< SSE V
float msse_y; //!< Average SSE Y
float msse_u; //!< Average SSE U
float msse_v; //!< Average SSE V
int frame_ctr; //!< number of coded frames
} SNRParameters;
#define FILE_NAME_SIZE 256
//! all input parameters
typedef struct
{
int ProfileIDC; //!< value of syntax element profile_idc
int LevelIDC; //!< value of syntax element level_idc
int no_frames; //!< number of frames to be encoded
int qp0; //!< QP of first frame
int qpN; //!< QP of remaining frames
int jumpd; //!< number of frames to skip in input sequence (e.g 2 takes frame 0,3,6,9...)
int DisableSubpelME; //!< Disable sub-pixel motion estimation
int search_range; /*!< search range - integer pel search and 16x16 blocks. The search window is
generally around the predicted vector. Max vector is 2xmcrange. For 8x8
and 4x4 block sizes the search range is 1/2 of that for 16x16 blocks. */
int num_ref_frames; //!< number of reference frames to be used
int P_List0_refs; //!< number of reference picture in list 0 in P pictures
int B_List0_refs; //!< number of reference picture in list 0 in B pictures
int B_List1_refs; //!< number of reference picture in list 1 in B pictures
int Log2MaxFNumMinus4; //!< value of syntax element log2_max_frame_num
int Log2MaxPOCLsbMinus4; //!< value of syntax element log2_max_pic_order_cnt_lsb_minus4
int img_width; //!< image width (must be a multiple of 16 pels)
int img_height; //!< image height (must be a multiple of 16 pels)
int yuv_format; //!< YUV format (0=4:0:0, 1=4:2:0, 2=4:2:2, 3=4:4:4)
int intra_upd; /*!< For error robustness. 0: no special action. 1: One GOB/frame is intra coded
as regular 'update'. 2: One GOB every 2 frames is intra coded etc.
In connection with this intra update, restrictions is put on motion vectors
to prevent errors to propagate from the past */
int blc_size[8][2]; //!< array for different block sizes
int part_size[8][2]; //!< array for different partition sizes
int blocktype_lut[4][4]; //!< array for different partition sizes
int slice_mode; //!< Indicate what algorithm to use for setting slices
int slice_argument; //!< Argument to the specified slice algorithm
int UseConstrainedIntraPred; //!< 0: Inter MB pixels are allowed for intra prediction 1: Not allowed
int infile_header; //!< If input file has a header set this to the length of the header
char infile[FILE_NAME_SIZE]; //!< YUV 4:2:0 input format
char outfile[FILE_NAME_SIZE]; //!< H.264 compressed output bitstream
char ReconFile[FILE_NAME_SIZE]; //!< Reconstructed Pictures
char TraceFile[FILE_NAME_SIZE]; //!< Trace Outputs
char QmatrixFile[FILE_NAME_SIZE]; //!< Q matrix cfg file
int intra_period; //!< Random Access period though intra
int EnableOpenGOP; //!< support for open gops.
int idr_enable; //!< Encode intra slices as IDR
int start_frame; //!< Encode sequence starting from Frame start_frame
int GenerateMultiplePPS;
int Generate_SEIVUI;
char SEIMessageText[500];
int VUISupport;
int ResendSPS;
int ResendPPS;
// B pictures
int successive_Bframe; //!< number of B frames that will be used
int PReplaceBSlice;
int qpB; //!< QP for non-reference B slice coded pictures
int qpBRSOffset; //!< QP for reference B slice coded pictures
int direct_spatial_mv_pred_flag; //!< Direct Mode type to be used (0: Temporal, 1: Spatial)
int directInferenceFlag; //!< Direct Mode Inference Flag
int BiPredMotionEstimation;
int BiPredMERefinements;
int BiPredMESearchRange;
int BiPredMESubPel;
// SP Pictures
int sp_periodicity; //!< The periodicity of SP-pictures
int qpsp; //!< SP Picture QP for prediction error
int qpsp_pred; //!< SP Picture QP for predicted block
int si_frame_indicator; //!< Flag indicating whether SI frames should be encoded rather than SP frames (0: not used, 1: used)
int sp2_frame_indicator; //!< Flag indicating whether switching SP frames should be encoded rather than SP frames (0: not used, 1: used)
int sp_output_indicator; //!< Flag indicating whether coefficients are output to allow future encoding of switchin SP frames (0: not used, 1: used)
char sp_output_filename[FILE_NAME_SIZE]; //!<Filename where SP coefficients are output
char sp2_input_filename1[FILE_NAME_SIZE]; //!<Filename of coefficients of the first bitstream when encoding SP frames to switch bitstreams
char sp2_input_filename2[FILE_NAME_SIZE]; //!<Filenames of coefficients of the second bitstream when encoding SP frames to switch bitstreams
int WeightedPrediction; //!< Weighted prediction for P frames (0: not used, 1: explicit)
int WeightedBiprediction; //!< Weighted prediction for B frames (0: not used, 1: explicit, 2: implicit)
int UseWeightedReferenceME; //!< Use Weighted Reference for ME.
int RDPictureDecision; //!< Perform RD optimal decision between various coded versions of same picture
int RDPictureIntra; //!< Enabled RD pic decision for intra as well.
int RDPSliceWeightOnly; //!< If enabled, does not check QP variations for P slices.
int RDPSliceBTest; //!< Tests B slice replacement for P.
int RDBSliceWeightOnly; //!< If enabled, does not check QP variations for B slices.
int SkipIntraInInterSlices; //!< Skip intra type checking in inter slices if best_mode is skip/direct
int BRefPictures; //!< B coded reference pictures replace P pictures (0: not used, 1: used)
int HierarchicalCoding;
int HierarchyLevelQPEnable;
char ExplicitHierarchyFormat[1024];//!< Explicit GOP format (HierarchicalCoding==3).
int ReferenceReorder; //!< Reordering based on Poc distances
int PocMemoryManagement; //!< Memory management based on Poc distances for hierarchical coding
int symbol_mode; //!< Specifies the mode the symbols are mapped on bits
int of_mode; //!< Specifies the mode of the output file
int partition_mode; //!< Specifies the mode of data partitioning
int InterSearch16x16;
int InterSearch16x8;
int InterSearch8x16;
int InterSearch8x8;
int InterSearch8x4;
int InterSearch4x8;
int InterSearch4x4;
int IntraDisableInterOnly;
int Intra4x4ParDisable;
int Intra4x4DiagDisable;
int Intra4x4DirDisable;
int Intra16x16ParDisable;
int Intra16x16PlaneDisable;
int ChromaIntraDisable;
int EnableIPCM;
double FrameRate;
int EPZSPattern;
int EPZSDual;
int EPZSFixed;
int EPZSTemporal;
int EPZSSpatialMem;
int EPZSMinThresScale;
int EPZSMaxThresScale;
int EPZSMedThresScale;
int EPZSSubPelGrid;
int EPZSSubPelME;
int EPZSSubPelMEBiPred;
int EPZSSubPelThresScale;
int chroma_qp_index_offset;
#ifdef _FULL_SEARCH_RANGE_
int full_search;
#endif
# 737 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
#ifdef _ADAPT_LAST_GROUP_
int last_frame;
#endif
# 740 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
#ifdef _CHANGE_QP_
int qpN2, qpB2, qp2start;
int qp02, qpBRS2Offset;
#endif
# 744 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
int rdopt;
int CtxAdptLagrangeMult; //!< context adaptive lagrangian multiplier
int FastCrIntraDecision;
int disthres;
int nobskip;
#ifdef _LEAKYBUCKET_
int NumberLeakyBuckets;
char LeakyBucketRateFile[FILE_NAME_SIZE];
char LeakyBucketParamFile[FILE_NAME_SIZE];
#endif
# 755 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
int PicInterlace; //!< picture adaptive frame/field
int MbInterlace; //!< macroblock adaptive frame/field
int IntraBottom; //!< Force Intra Bottom at GOP periods.
int LossRateA; //!< assumed loss probablility of partition A (or full slice), in per cent, used for loss-aware R/D optimization
int LossRateB; //!< assumed loss probablility of partition B, in per cent, used for loss-aware R/D
int LossRateC; //!< assumed loss probablility of partition C, in per cent, used for loss-aware R/D
int NoOfDecoders;
int RestrictRef;
int NumFramesInELSubSeq;
int NumFrameIn2ndIGOP;
int RandomIntraMBRefresh; //!< Number of pseudo-random intra-MBs per picture
int LFSendParameters;
int LFDisableIdc;
int LFAlphaC0Offset;
int LFBetaOffset;
int SparePictureOption;
int SPDetectionThreshold;
int SPPercentageThreshold;
// FMO
char SliceGroupConfigFileName[FILE_NAME_SIZE]; //!< Filename for config info fot type 0, 2, 6
int num_slice_groups_minus1; //!< "FmoNumSliceGroups" in encoder.cfg, same as FmoNumSliceGroups, which should be erased later
int slice_group_map_type;
int *top_left; //!< top_left and bottom_right store values indicating foregrounds
int *bottom_right;
byte *slice_group_id; //!< slice_group_id is for slice group type being 6
int *run_length_minus1; //!< run_length_minus1 is for slice group type being 0
int slice_group_change_direction_flag;
int slice_group_change_rate_minus1;
int slice_group_change_cycle;
int redundant_pic_flag; //! encoding of redundant pictures
int pic_order_cnt_type; //! POC type
int context_init_method;
int model_number;
int Transform8x8Mode;
int ReportFrameStats;
int DisplayEncParams;
int Verbose;
//! Rate Control on JVT standard
int RCEnable;
int bit_rate;
int SeinitialQP;
unsigned int basicunit;
int channel_type;
int RCUpdateMode;
double RCIoverPRatio;
double RCBoverPRatio;
double RCISliceBitRatio;
double RCBSliceBitRatio[RC_MAX_TEMPORAL_LEVELS];
int ScalingMatrixPresentFlag;
int ScalingListPresentFlag[8];
// Search Algorithm
SearchType SearchMode;
int UMHexDSR;//!< Dynamic Search Range
int UMHexScale;
//////////////////////////////////////////////////////////////////////////
// Fidelity Range Extensions
int BitDepthLuma;
int BitDepthChroma;
int img_height_cr;
int img_width_cr;
int rgb_input_flag;
int cb_qp_index_offset;
int cr_qp_index_offset;
// Lossless Coding
int lossless_qpprime_y_zero_flag;
// Lambda Params
int UseExplicitLambdaParams;
double LambdaWeight[6];
double FixedLambda[6];
char QOffsetMatrixFile[FILE_NAME_SIZE]; //!< Quantization Offset matrix cfg file
int OffsetMatrixPresentFlag; //!< Enable Explicit Quantization Offset Matrices
int AdaptiveRounding; //!< Adaptive Rounding parameter based on JVT-N011
int AdaptRndPeriod; //!< Set period for adaptive rounding of JVT-N011 in MBs
int AdaptRndChroma;
int AdaptRndWFactor[2][5]; //!< Weighting factors for luma component based on reference indicator and slice type
int AdaptRndCrWFactor[2][5]; //!< Weighting factors for chroma components based on reference indicator and slice type
// Fast Mode Decision
int EarlySkipEnable;
int SelectiveIntraEnable;
int DisposableP;
int DispPQPOffset;
//Redundant picture
int NumRedundantHierarchy; //!< number of entries to allocate redundant pictures in a GOP
int PrimaryGOPLength; //!< GOP length of primary pictures
int NumRefPrimary; //!< number of reference frames for primary picture
// Chroma interpolation and buffering
int ChromaMCBuffer;
int ChromaMEEnable;
int MEErrorMetric[3];
int ModeDecisionMetric;
} InputParameters;
//! ImageParameters
typedef struct
{
int number; //!< current image number to be encoded
int pn; //!< picture number
int LevelIndex; //!< mapped level idc
int current_mb_nr;
int current_slice_nr;
int type;
int structure; //!< picture structure
int num_ref_frames; //!< number of reference frames to be used
int max_num_references; //!< maximum number of reference pictures that may occur
int qp; //!< quant for the current frame
int qpsp; //!< quant for the prediction frame of SP-frame
int qp_scaled;
float framerate;
int width; //!< Number of pels
int width_padded; //!< Width in pels of padded picture
int width_blk; //!< Number of columns in blocks
int width_cr; //!< Number of pels chroma
int height; //!< Number of lines
int height_padded; //!< Number in lines of padded picture
int height_blk; //!< Number of lines in blocks
int height_cr; //!< Number of lines chroma
int height_cr_frame; //!< Number of lines chroma frame
int size; //!< Luma Picture size in pels
int size_cr; //!< Chroma Picture size in pels
int subblock_x; //!< current subblock horizontal
int subblock_y; //!< current subblock vertical
int is_intra_block;
int is_v_block;
int mb_y_upd;
int mb_y_intra; //!< which GOB to intra code
int block_c_x; //!< current block chroma vertical
signed char **ipredmode; //!< intra prediction mode
signed char **ipredmode8x8; //!< help storage for 8x8 modes, inserted by YV
int cod_counter; //!< Current count of number of skipped macroblocks in a row
int ***nz_coeff; //!< number of coefficients per block (CAVLC)
int mb_x; //!< current MB horizontal
int mb_y; //!< current MB vertical
int block_x; //!< current block horizontal
int block_y; //!< current block vertical
int pix_x; //!< current pixel horizontal
int pix_y; //!< current pixel vertical
int pix_c_x; //!< current pixel chroma horizontal
int pix_c_y; //!< current pixel chroma vertical
int opix_x; //!< current original picture pixel horizontal
int opix_y; //!< current original picture pixel vertical
int opix_c_x; //!< current original picture pixel chroma horizontal
int opix_c_y; //!< current original picture pixel chroma vertical
// some temporal buffers
imgpel mprr[9][16][16]; //!< all 9 prediction modes? // enlarged from 4 to 16 for ABT (is that neccessary?)
imgpel mprr_2[5][16][16]; //!< all 4 new intra prediction modes
imgpel mprr_3[9][8][8]; //!< all 9 prediction modes for 8x8 transformation
imgpel mprr_c[2][4][16][16]; //!< chroma intra prediction modes
imgpel mpr[16][16]; //!< current best prediction mode
int m7[16][16]; //!< the diff pixel values between orginal image and prediction
int ****cofAC; //!< AC coefficients [8x8block][4x4block][level/run][scan_pos]
int ***cofDC; //!< DC coefficients [yuv][level/run][scan_pos]
int ***fadjust4x4; //!< Transform coefficients for 4x4 luma. Excludes DC for I16x16
int ***fadjust8x8; //!< Transform coefficients for 8x8 luma
int ****fadjust4x4Cr; //!< Transform coefficients for 4x4 chroma. Excludes DC chroma.
int ****fadjust8x8Cr; //!< Transform coefficients for 4x4 chroma within 8x8 inter blocks.
Picture *currentPicture; //!< The coded picture currently in the works (typically frame_pic, top_pic, or bottom_pic)
Slice *currentSlice; //!< pointer to current Slice data struct
Macroblock *mb_data; //!< array containing all MBs of a whole frame
int *quad; //!< Array containing square values,used for snr computation */ /* Values are limited to 5000 for pixel differences over 70 (sqr(5000)).
int *intra_block;
int tr;
int fld_type; //!< top or bottom field
unsigned int fld_flag;
unsigned int rd_pass;
int direct_intraP_ref[4][4];
int pstruct_next_P;
int imgtr_next_P_frm;
int imgtr_last_P_frm;
int imgtr_next_P_fld;
int imgtr_last_P_fld;
// B pictures
double b_interval;
int p_interval;
int b_frame_to_code;
int fw_mb_mode;
int bw_mb_mode;
short****** pred_mv; //!< motion vector predictors for all block types and all reference frames
short****** all_mv; //!< replaces local all_mv
short****** bipred_mv1; //!< Biprediction MVs
short****** bipred_mv2; //!< Biprediction MVs
short bi_pred_me[MAXMODE];
int LFDisableIdc;
int LFAlphaC0Offset;
int LFBetaOffset;
int direct_spatial_mv_pred_flag; //!< Direct Mode type to be used (0: Temporal, 1: Spatial)
int num_ref_idx_l0_active;
int num_ref_idx_l1_active;
int field_mode; //!< For MB level field/frame -- field mode on flag
int top_field; //!< For MB level field/frame -- top field flag
int mvscale[6][MAX_REFERENCE_PICTURES];
int buf_cycle;
int i16offset;
int layer; //!< which layer this picture belonged to
int old_layer; //!< old layer number
int NoResidueDirect;
int AdaptiveRounding; //!< Adaptive Rounding parameter based on JVT-N011
int redundant_pic_cnt; // JVT-D101
int MbaffFrameFlag; //!< indicates frame with mb aff coding
//the following should probably go in sequence parameters
unsigned int pic_order_cnt_type;
// for poc mode 1
Boolean delta_pic_order_always_zero_flag;
int offset_for_non_ref_pic;
int offset_for_top_to_bottom_field;
unsigned int num_ref_frames_in_pic_order_cnt_cycle;
int offset_for_ref_frame[1];
//the following is for slice header syntax elements of poc
// for poc mode 0.
unsigned int pic_order_cnt_lsb;
int delta_pic_order_cnt_bottom;
// for poc mode 1.
int delta_pic_order_cnt[2];
unsigned int field_picture;
signed int toppoc; //!< poc for this frame or field
signed int bottompoc; //!< for completeness - poc of bottom field of a frame (always = poc+1)
signed int framepoc; //!< min (toppoc, bottompoc)
signed int ThisPOC; //!< current picture POC
unsigned int frame_num; //!< frame_num for this frame
unsigned int PicWidthInMbs;
unsigned int PicHeightInMapUnits;
unsigned int FrameHeightInMbs;
unsigned int PicSizeInMbs;
unsigned int FrameSizeInMbs;
//the following should probably go in picture parameters
Boolean pic_order_present_flag; // ????????
//the following are sent in the slice header
// int delta_pic_order_cnt[2];
int nal_reference_idc;
int adaptive_ref_pic_buffering_flag;
int no_output_of_prior_pics_flag;
int long_term_reference_flag;
DecRefPicMarking_t *dec_ref_pic_marking_buffer;
int model_number;
// rate control variables
int NumberofCodedMacroBlocks;
int BasicUnitQP;
int NumberofMBTextureBits;
int NumberofMBHeaderBits;
unsigned int BasicUnit;
int write_macroblock;
int bot_MB;
int write_mbaff_frame;
int DeblockCall;
int last_pic_bottom_field;
int last_has_mmco_5;
int pre_frame_num;
int slice_group_change_cycle;
int pic_unit_size_on_disk;
int bitdepth_luma;
int bitdepth_chroma;
int bitdepth_luma_qp_scale;
int bitdepth_chroma_qp_scale;
int bitdepth_lambda_scale;
int max_bitCount;
int max_qp_delta;
int min_qp_delta;
// Lagrangian Parameters
double **lambda_md; //!< Mode decision Lambda
double ***lambda_me; //!< Motion Estimation Lambda
int ***lambda_mf; //!< Integer formatted Motion Estimation Lambda
double **lambda_mf_factor; //!< Motion Estimation Lamda Scale Factor
unsigned int dc_pred_value_luma; //!< luma value for DC prediction (depends on luma pel bit depth)
unsigned int dc_pred_value_chroma; //!< chroma value for DC prediction (depends on chroma pel bit depth)
int max_imgpel_value; //!< max value that one picture element (pixel) can take (depends on pic_unit_bitdepth)
int max_imgpel_value_uv;
int num_blk8x8_uv;
int num_cdc_coeff;
int yuv_format;
int lossless_qpprime_flag;
int mb_cr_size_x;
int mb_cr_size_y;
int mb_size[3][2];
int chroma_qp_offset[2]; //!< offset for qp for chroma [0-Cb, 1-Cr]
int auto_crop_right;
int auto_crop_bottom;
short checkref;
int last_valid_reference;
int bytes_in_picture;
int AverageFrameQP;
int SumFrameQP;
int GopLevels;
} ImageParameters;
#define NUM_PIC_TYPE 5
//!< statistics
typedef struct
{
int quant0; //!< quant for the first frame
int quant1; //!< average quant for the remaining frames
float bitr; //!< bit rate for current frame, used only for output til terminal
float bitrate; //!< average bit rate for the sequence except first frame
int64 bit_ctr; //!< counter for bit usage
int64 bit_ctr_n; //!< bit usage for the current frame
int bit_slice; //!< number of bits in current slice
int stored_bit_slice; //!< keep number of bits in current slice (to restore status in case of MB re-encoding)
int bit_ctr_emulationprevention; //!< stored bits needed to prevent start code emulation
int b8_mode_0_use[NUM_PIC_TYPE][2];
int mode_use_transform_8x8[NUM_PIC_TYPE][MAXMODE];
int mode_use_transform_4x4[NUM_PIC_TYPE][MAXMODE];
int intra_chroma_mode[4];
// B pictures
int successive_Bframe;
int *mode_use_Bframe;
int *bit_use_mode_Bframe;
int64 bit_ctr_I;
int64 bit_ctr_P;
int64 bit_ctr_B;
float bitrate_I;
float bitrate_P;
float bitrate_B;
int64 mode_use [NUM_PIC_TYPE][MAXMODE]; //!< Macroblock mode usage for Intra frames
int64 bit_use_mode [NUM_PIC_TYPE][MAXMODE]; //!< statistics of bit usage
int64 bit_use_stuffingBits[NUM_PIC_TYPE];
int64 bit_use_mb_type [NUM_PIC_TYPE];
int64 bit_use_header [NUM_PIC_TYPE];
int64 tmp_bit_use_cbp [NUM_PIC_TYPE];
int64 bit_use_coeffY [NUM_PIC_TYPE];
int64 bit_use_coeffC [NUM_PIC_TYPE];
int64 bit_use_delta_quant [NUM_PIC_TYPE];
int em_prev_bits_frm;
int em_prev_bits_fld;
int *em_prev_bits;
int bit_ctr_parametersets;
int bit_ctr_parametersets_n;
} StatParameters;
//! For MB level field/frame coding tools
//! temporary structure to store MB data for field/frame coding
typedef struct
{
double min_rdcost;
imgpel rec_mbY[16][16]; // hold the Y component of reconstructed MB
imgpel rec_mbU[16][16], rec_mbV[16][16];
int ****cofAC;
int ***cofDC;
int mb_type;
short bi_pred_me;
int b8mode[4], b8pdir[4];
signed char **ipredmode;
signed char intra_pred_modes[16];
signed char intra_pred_modes8x8[16];
int cbp;
int64 cbp_blk;
int mode;
short ******pred_mv; //!< predicted motion vectors
short ******all_mv; //!< all modes motion vectors
signed char refar[2][4][4];//!< reference frame array [list][y][x]
int i16offset;
int c_ipred_mode;
int luma_transform_size_8x8_flag;
int NoMbPartLessThan8x8Flag;
int qp;
int prev_qp;
int prev_delta_qp;
int delta_qp;
int prev_cbp;
} RD_DATA;
//! Set Explicit GOP Parameters.
//! Currently only supports Enhancement GOP but could be easily extended
typedef struct
{
int slice_type; //! Slice type
int display_no; //! GOP Display order
int reference_idc; //! Is reference?
int slice_qp; //! Assigned QP
int hierarchy_layer; //! Hierarchy layer (used with GOP Hierarchy option 2)
int hierarchyPocDelta; //! Currently unused
} GOP_DATA;
typedef struct
{
int cost8x8;
int rec_resG_8x8[16][16];
int resTrans_R_8x8[16][16];
int resTrans_B_8x8[16][16];
int mprRGB_8x8[3][16][16];
short part8x8mode[4];
signed char part8x8pdir[4];
signed char part8x8fwref[4];
signed char part8x8bwref[4];
imgpel rec_mbY8x8[16][16];
imgpel mpr8x8[16][16];
int lrec[16][16]; // transform and quantized coefficients will be stored here for SP frames
} RD_8x8DATA;
typedef struct
{
double lambda_md; //!< Mode decision Lambda
double lambda_me[3]; //!< Motion Estimation Lambda
int lambda_mf[3]; //!< Integer formatted Motion Estimation Lambda
short valid[MAXMODE];
short list_offset[2];
short curr_mb_field;
short best_ref[2];
int best_mcost[2];
} RD_PARAMS;
GOP_DATA *gop_structure;
RD_DATA *rdopt;
RD_DATA rddata_top_frame_mb, rddata_bot_frame_mb; //!< For MB level field/frame coding tools
RD_DATA rddata_top_field_mb, rddata_bot_field_mb; //!< For MB level field/frame coding tools
extern InputParameters *input;
extern ImageParameters *img;
extern StatParameters *stats;
extern SNRParameters *snr;
// files
FILE *p_stat; //!< status file for the last encoding session
FILE *p_log; //!< SNR file
FILE *p_trace; //!< Trace file
int p_in; //!< original YUV file handle
int p_dec; //!< decoded image file handle
/***********************************************************************
* P r o t o t y p e s f o r T M L
***********************************************************************
*/
void intrapred_luma(int CurrPixX,int CurrPixY, int *left_available, int *up_available, int *all_available);
int dct_luma(int pos_mb1,int pos_mb2,int *cnt_nonz, int intra);
int dct_luma_sp(int pos_mb1,int pos_mb2,int *cnt_nonz);
void copyblock_sp(int pos_mb1,int pos_mb2);
int dct_chroma(int uv,int i11);
int dct_chroma_sp(int uv,int i11);
void intrapred_luma_16x16(void);
int dct_luma_16x16(int);
void init_poc(void);
void init_img(void);
void report(void);
int get_picture_type(void);
void DeblockFrame(ImageParameters *img, imgpel **, imgpel ***) ;
int distortion4x4(int*);
int distortion8x8(int*);
extern int* refbits;
extern int**** motion_cost;
double *mb16x16_cost_frame;
void Get_Direct_Motion_Vectors (void);
void PartitionMotionSearch (int, int, int*);
int BIDPartitionCost (int, int, short, short, int);
int writeAbpCoeffIndex (int, int, int, int);
void estimate_weighting_factor_B_slice(void);
void estimate_weighting_factor_P_slice(int offset);
int test_wp_P_slice(int offset);
int test_wp_B_slice(int method);
void poc_based_ref_management(int current_pic_num);
int picture_coding_decision (Picture *picture1, Picture *picture2, int qp);
unsigned CeilLog2( unsigned uiVal);
int GetDirectCost8x8 (int, int*);
int BPredPartitionCost (int, int, short, short, int, int);
int GetDirectCostMB (void);
int GetSkipCostMB (void);
void FindSkipModeMotionVector (void);
// dynamic mem allocation
int init_global_buffers(void);
void free_global_buffers(void);
void no_mem_exit (char *where);
int get_mem_mv (short*******);
void free_mem_mv (short******);
void free_img (void);
int get_mem_ACcoeff (int*****);
int get_mem_DCcoeff (int****);
void free_mem_ACcoeff (int****);
void free_mem_DCcoeff (int***);
int decide_fld_frame(float snr_frame_Y, float snr_field_Y, int bit_field, int bit_frame, double lambda_picture);
void combine_field(void);
Picture *malloc_picture(void);
void free_picture (Picture *pic);
int encode_one_slice(int SLiceGroupId, Picture *pic, int TotalCodedMBs); //! returns the number of MBs in the slice
void free_slice_list(Picture *currPic);
void report_stats_on_error(void);
#if TRACE
void trace2out(SyntaxElement *se);
void trace2out_cabac(SyntaxElement *se);
#endif
# 1333 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
void error(char *text, int code);
int start_sequence(void);
int rewrite_paramsets(void);
int terminate_sequence(void);
int start_slice(void);
int terminate_slice(int);
int write_PPS(int, int);
// B pictures
int get_fwMV(int *min_fw_sad, int tot_intra_sad);
void get_bwMV(int *min_bw_sad);
void get_bid(int *bid_sad, int fw_predframe_no);
void get_dir(int *dir_sad);
void compare_sad(int tot_intra_sad, int fw_sad, int bw_sad, int bid_sad, int dir_sad, int);
int BlkSize2CodeNumber(int blc_size_h, int blc_size_v);
void InitMotionVectorSearchModule(void);
int field_flag_inference(void);
void set_mbaff_parameters(void); // For MB AFF
void writeVlcByteAlign(Bitstream* currStream);
int writeMB_bits_for_4x4_luma (int, int, int);
int writeMB_bits_for_16x16_luma (void);
int writeMB_bits_for_luma (int);
int writeMB_bits_for_DC_chroma (int);
int writeMB_bits_for_AC_chroma (int);
int writeMB_bits_for_CBP (void);
int SingleUnifiedMotionSearch (int, int, int**, int***, int*****, int, int*****, double);
//============= rate-distortion optimization ===================
void clear_rdopt (void);
void init_rdopt (void);
void RD_Mode_Decision (void);
//============= rate-distortion opt with packet losses ===========
void decode_one_macroblock(void);
void decode_one_mb (int, Macroblock*);
void decode_one_b8block (int, int, int, int, int);
void Get_Reference_Block(imgpel **imY, int block_y, int block_x, int mvhor, int mvver, imgpel **out);
byte Get_Reference_Pixel(imgpel **imY, int y, int x);
int Half_Upsample(imgpel **imY, int j, int i);
void DecOneForthPix(imgpel **dY, imgpel ***dref);
void compute_residue(int mode);
void compute_residue_b8block (int, int);
void compute_residue_mb (int);
void UpdateDecoders(void);
void Build_Status_Map(byte **s_map);
void Error_Concealment(imgpel **inY, byte **s_map, imgpel ***refY);
void Conceal_Error(imgpel **inY, int mb_y, int mb_x, imgpel ***refY, byte **s_map);
//============= restriction of reference frames based on the latest intra-refreshes==========
void UpdatePixelMap(void);
//============= fast full integer search =======================
void ClearFastFullIntegerSearch (void);
void ResetFastFullIntegerSearch (void);
void process_2nd_IGOP(void);
void SetImgType(void);
// Tian Dong: for IGOPs
extern Boolean In2ndIGOP;
extern int start_frame_no_in_this_IGOP;
extern int start_tr_in_this_IGOP;
extern int FirstFrameIn2ndIGOP;
#define IMG_NUMBER (img->number - start_frame_no_in_this_IGOP)
void AllocNalPayloadBuffer(void);
void FreeNalPayloadBuffer(void);
void SODBtoRBSP(Bitstream *currStream);
int RBSPtoEBSP(byte *streamBuffer, int begin_bytepos, int end_bytepos, int min_num_bytes);
int Bytes_After_Header;
// Fast ME enable
int BlockMotionSearch (short,int,int,int,int,int, int*);
void low_complexity_encode_md (void);
void encode_one_macroblock_low (void);
void encode_one_macroblock_high (void);
void encode_one_macroblock_highfast (void);
void encode_one_macroblock_highloss (void);
void (*encode_one_macroblock) (void);
void set_chroma_qp(Macroblock *currMB);
#if 0 /* expanded by -frewrite-includes */
#include "context_ini.h"
#endif /* expanded by -frewrite-includes */
# 1423 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/context_ini.h" 1
/*!
*************************************************************************************
* \file context_ini.h
*
* \brief
* CABAC context initializations
*
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
* - Detlev Marpe <marpe@hhi.de>
* - Heiko Schwarz <hschwarz@hhi.de>
**************************************************************************************
*/
#ifndef _CONTEXT_INI_
#define _CONTEXT_INI_
void create_context_memory (void);
void free_context_memory (void);
void init_contexts (void);
void store_contexts (void);
void update_field_frame_contexts (int);
void update_rd_picture_contexts (int);
void SetCtxModelNumber (void);
#endif
# 32 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/context_ini.h"
# 1424 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h" 2
void store_coding_state_cs_cm(void);
void reset_coding_state_cs_cm(void);
int writeIPCMBytes(Bitstream *currStream);
int writePCMByteAlign(Bitstream *currStream);
int dct_luma_sp2(int pos_mb1,int pos_mb2,int *cnt_nonz);
int dct_chroma_sp2(int ,int);
int check_for_SI16(void);
int **lrec ;
int ***lrec_uv;
int si_frame_indicator;
int sp2_frame_indicator;
int number_sp2_frames;
//#define sp_output_indicator 0 //will be in the config file
//#define sp_output_filename "sp_stored.txt" // will be in the config file
void output_SP_coefficients(void);
void read_SP_coefficients(void);
int giRDOpt_B8OnlyFlag;
#ifdef BEST_NZ_COEFF
int gaaiMBAFF_NZCoeff[4][12];
#endif
# 1452 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
// Redundant picture
imgpel **imgY_tmp;
imgpel **imgUV_tmp[2];
int frameNuminGOP;
int redundant_coding;
int key_frame;
int redundant_ref_idx;
void Init_redundant_frame(void);
void Set_redundant_frame(void);
void encode_one_redundant_frame(void);
int img_pad_size_uv_x;
int img_pad_size_uv_y;
unsigned char chroma_mask_mv_y;
unsigned char chroma_mask_mv_x;
int chroma_shift_y, chroma_shift_x;
int shift_cr_x, shift_cr_y;
int img_padded_size_x;
int img_cr_padded_size_x;
// struct with pointers to the sub-images
typedef struct {
imgpel ****luma; // component 0 (usually Y, X, or R)
imgpel ****crcb[2]; // component 2 (usually U/V, Y/Z, or G/B)
} SubImageContainer;
int start_me_refinement_hp; // if set then recheck the center position when doing half-pel motion refinement
int start_me_refinement_qp; // if set then recheck the center position when doing quarter-pel motion refinement
#endif
# 1484 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/global.h"
# 27 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "rdopt_coding_state.h"
#endif /* expanded by -frewrite-includes */
# 28 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt_coding_state.h" 1
/*!
***************************************************************************
* \file
* rdopt_coding_state.h
*
* \author
* Heiko Schwarz
*
* \date
* 17. April 2001
*
* \brief
* Headerfile for storing/restoring coding state
* (for rd-optimized mode decision)
**************************************************************************
*/
#ifndef _RD_OPT_CS_H_
#define _RD_OPT_CS_H_
typedef struct {
// important variables of data partition array
int no_part;
EncodingEnvironment *encenv;
Bitstream *bitstream;
// contexts for binary arithmetic coding
int symbol_mode;
MotionInfoContexts *mot_ctx;
TextureInfoContexts *tex_ctx;
// bit counter
int bitcounter[MAX_BITCOUNTER_MB];
// elements of current macroblock
int mvd[2][BLOCK_MULTIPLE][BLOCK_MULTIPLE][2];
int64 cbp_bits;
} CSobj;
typedef CSobj* CSptr;
void delete_coding_state (CSptr); //!< delete structure
CSptr create_coding_state (void); //!< create structure
void store_coding_state (CSptr); //!< store parameters
void reset_coding_state (CSptr); //!< restore parameters
#endif
# 52 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt_coding_state.h"
# 29 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "memalloc.h"
#endif /* expanded by -frewrite-includes */
# 29 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/memalloc.h" 1
/*!
************************************************************************
* \file memalloc.h
*
* \brief
* Memory allocation and free helper funtions
*
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
************************************************************************
*/
#ifndef _MEMALLOC_H_
#define _MEMALLOC_H_
int get_mem2D(byte ***array2D, int rows, int columns);
int get_mem3D(byte ****array2D, int frames, int rows, int columns);
int get_mem2Dint(int ***array2D, int rows, int columns);
int get_mem3Dint(int ****array3D, int frames, int rows, int columns);
int get_mem4Dint(int *****array4D, int idx, int frames, int rows, int columns );
int get_mem5Dint(int ******array5D, int refs, int blocktype, int rows, int columns, int component);
int get_mem2Dint64(int64 ***array2D, int rows, int columns);
int get_mem3Dint64(int64 ****array3D, int frames, int rows, int columns);
int get_mem2Dshort(short ***array2D, int rows, int columns);
int get_mem3Dshort(short ****array3D, int frames, int rows, int columns);
int get_mem4Dshort(short *****array4D, int idx, int frames, int rows, int columns );
int get_mem5Dshort(short ******array5D, int refs, int blocktype, int rows, int columns, int component);
int get_mem6Dshort(short *******array6D, int list, int refs, int blocktype, int rows, int columns, int component);
int get_mem2Dpel(imgpel ***array2D, int rows, int columns);
int get_mem3Dpel(imgpel ****array3D, int frames, int rows, int columns);
int get_mem4Dpel(imgpel *****array4D, int sub_x, int sub_y, int rows, int columns);
int get_mem5Dpel(imgpel ******array5D, int dims, int sub_x, int sub_y, int rows, int columns);
int get_mem2Ddouble(double ***array2D, int rows, int columns);
int get_mem2Ddb_offset(double ***array2D, int rows, int columns, int offset);
int get_mem3Ddb_offset(double ****array2D, int rows, int columns, int pels, int offset);
int get_mem2Dint_offset(int ***array2D, int rows, int columns, int offset);
int get_mem3Dint_offset(int ****array3D, int rows, int columns, int pels, int offset);
void free_mem2D(byte **array2D);
void free_mem3D(byte ***array2D, int frames);
void free_mem2Dint(int **array2D);
void free_mem3Dint(int ***array3D, int frames);
void free_mem4Dint(int ****array4D, int idx, int frames);
void free_mem5Dint(int *****array5D, int refs, int blocktype, int rows);
void free_mem2Dint64(int64 **array2D);
void free_mem3Dint64(int64 ***array3D64, int frames);
void free_mem2Dshort(short **array2D);
void free_mem3Dshort(short ***array3D, int frames);
void free_mem4Dshort(short ****array4D, int idx, int frames);
void free_mem5Dshort(short *****array5D, int refs, int blocktype, int height);
void free_mem6Dshort(short ******array5D, int list, int refs, int blocktype, int height);
void free_mem2Dpel(imgpel **array2D);
void free_mem3Dpel(imgpel ***array3D, int frames);
void free_mem4Dpel(imgpel ****array4D, int sub_x, int sub_y);
void free_mem5Dpel(imgpel *****array5D, int dims, int sub_x, int sub_y);
void free_mem2Ddouble(double **array2D);
void free_mem2Ddb_offset(double **array2D, int offset);
void free_mem2Dint_offset(int **array2D, int offset);
void free_mem3Ddb_offset(double ***array3D, int rows, int columns, int offset);
void free_mem3Dint_offset(int ***array3D, int rows, int columns, int offset);
int init_top_bot_planes(imgpel **imgFrame, int rows, int columns, imgpel ***imgTopField, imgpel ***imgBotField);
void free_top_bot_planes(imgpel **imgTopField, imgpel **imgBotField);
void no_mem_exit(char *where);
#endif
# 81 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/memalloc.h"
# 30 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "mb_access.h"
#endif /* expanded by -frewrite-includes */
# 30 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/mb_access.h" 1
/*!
*************************************************************************************
* \file mb_access.h
*
* \brief
* Functions for macroblock neighborhoods
*
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
* - Karsten Sühring <suehring@hhi.de>
*************************************************************************************
*/
#ifndef _MB_ACCESS_H_
#define _MB_ACCESS_H_
void CheckAvailabilityOfNeighbors(void);
void (*getNeighbour)(unsigned int curr_mb_nr, int xN, int yN, int is_chroma, PixelPos *pix);
void getAffNeighbour(unsigned int curr_mb_nr, int xN, int yN, int is_chroma, PixelPos *pix);
void getNonAffNeighbour(unsigned int curr_mb_nr, int xN, int yN, int is_chroma, PixelPos *pix);
void getLuma4x4Neighbour (int curr_mb_nr, int block_x, int block_y, PixelPos *pix);
void getChroma4x4Neighbour (int curr_mb_nr, int block_x, int block_y, PixelPos *pix);
int mb_is_available(int mbAddr, int currMbAddr);
void get_mb_pos (int mb_addr, int *x, int*y, int is_chroma);
void (*get_mb_block_pos) (int mb_addr, int *x, int*y);
void get_mb_block_pos_normal (int mb_addr, int *x, int*y);
void get_mb_block_pos_mbaff (int mb_addr, int *x, int*y);
#endif
# 34 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/mb_access.h"
# 31 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "elements.h"
#endif /* expanded by -frewrite-includes */
# 31 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/elements.h" 1
/*!
**************************************************************************
* \file elements.h
* \brief Header file for elements in H.264 streams
* \date 6.10.2000,
* \version
* 1.1
*
* \note
* Version 1.0 included three partition modes, no DP, 2 partitionsper slice
* and 4 partitions per slice. As per document VCEG-N72 this is changed
* in version 1.1 to only two partition modes, one without DP and one with
* 3 partition per slice
*
* \author Sebastian Purreiter <sebastian.purreiter@mch.siemens.de>
* \author Stephan Wenger <stewe@cs.tu-berlin.de>
*
**************************************************************************
*/
#ifndef _ELEMENTS_H_
#define _ELEMENTS_H_
/*!
* definition of H.264 syntax elements
* order of elements follow dependencies for picture reconstruction
*/
#define MAXPARTITIONMODES 2 //!< maximum possible partition modes as defined in assignSE2partition[][]
/*!
* \brief lookup-table to assign different elements to partition
*
* \note here we defined up to 6 different partitions similar to
* document Q15-k-18 described in the PROGFRAMEMODE.
* The Sliceheader contains the PSYNC information. \par
*
* Elements inside a partition are not ordered. They are
* ordered by occurence in the stream.
* Assumption: Only partitionlosses are considered. \par
*
* The texture elements luminance and chrominance are
* not ordered in the progressive form
* This may be changed in image.c \par
*
* -IMPORTANT:
* Picture- or Sliceheaders must be assigned to partition 0. \par
* Furthermore partitions must follow syntax dependencies as
* outlined in document Q15-J-23.
*/
// A note on this table:
//
// While the assignment of values in enum data types is specified in C, it is not
// very ood style to have an "elementnumber", not even as a comment.
//
// Hence a copy of the relevant structure from global.h here
/*
typedef enum {
0 SE_HEADER,
1 SE_PTYPE,
2 SE_MBTYPE,
3 SE_REFFRAME,
4 SE_INTRAPREDMODE,
5 SE_MVD,
6 SE_CBP
7 SE_LUM_DC_INTRA,
8 SE_CHR_DC_INTRA,
9 SE_LUM_AC_INTRA,
10 SE_CHR_AC_INTRA,
12 SE_LUM_DC_INTER,
13 SE_CHR_DC_INTER,
14 SE_LUM_AC_INTER,
15 SE_CHR_AC_INTER,
16 SE_DELTA_QUANT,
18 SE_BFRAME,
19 SE_EOS,
20 SE_MAX_ELEMENTS */ // number of maximum syntax elements
//} SE_type;
extern int * assignSE2partition[2];
extern int assignSE2partition_NoDP[SE_MAX_ELEMENTS];
extern int assignSE2partition_DP[SE_MAX_ELEMENTS];
#endif
# 89 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/elements.h"
# 32 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "intrarefresh.h"
#endif /* expanded by -frewrite-includes */
# 32 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/intrarefresh.h" 1
/*!
***************************************************************************
*
* \file intrarefresh.h
*
* \brief
* Pseudo-Raqndom Intra macroblock refresh support
*
* \date
* 16 June 2002
*
* \author
* Stephan Wenger stewe@cs.tu-berlin.de
**************************************************************************/
#ifndef _INTRAREFRESH_H_
#define _INTRAREFRESH_H_
void RandomIntraInit(int xsize, int ysize, int refresh);
void RandomIntraUninit(void);
int RandomIntra (int mb); //! returns 1 for MBs that need forced Intra
void RandomIntraNewPicture (void); //! to be called once per picture
#endif //_INTRAREFRESH_H_
# 27 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/intrarefresh.h"
# 33 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "image.h"
#endif /* expanded by -frewrite-includes */
# 33 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/image.h" 1
/*!
************************************************************************
* \file image.h
*
* \brief
* headers for image processing
*
* \author
* Inge Lille-Langoy <inge.lille-langoy@telenor.com>
* Copyright (C) 1999 Telenor Satellite Services, Norway
************************************************************************
*/
#ifndef _IMAGE_H_
#define _IMAGE_H_
#if 0 /* expanded by -frewrite-includes */
#include "mbuffer.h"
#endif /* expanded by -frewrite-includes */
# 17 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/image.h"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/mbuffer.h" 1
/*!
***********************************************************************
* \file
* mbuffer.h
*
* \brief
* Frame buffer functions
*
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
* - Karsten Sühring <suehring@hhi.de>
***********************************************************************
*/
#ifndef _MBUFFER_H_
#define _MBUFFER_H_
#define MAX_LIST_SIZE 33
//! definition a picture (field or frame)
typedef struct storable_picture
{
PictureStructure structure;
int poc;
int top_poc;
int bottom_poc;
int frame_poc;
int order_num;
int64 ref_pic_num[6][MAX_LIST_SIZE];
int64 frm_ref_pic_num[6][MAX_LIST_SIZE];
int64 top_ref_pic_num[6][MAX_LIST_SIZE];
int64 bottom_ref_pic_num[6][MAX_LIST_SIZE];
unsigned frame_num;
int pic_num;
int long_term_pic_num;
int long_term_frame_idx;
int is_long_term;
int used_for_reference;
int is_output;
int non_existing;
int size_x, size_y, size_x_cr, size_y_cr;
int size_x_pad, size_y_pad;
int size_x_cr_pad, size_y_cr_pad;
int chroma_vector_adjustment;
int coded_frame;
int MbaffFrameFlag;
imgpel ** imgY; //!< Y picture component
imgpel **** imgY_sub; //!< Y picture component upsampled (Quarter pel)
imgpel **** imgY_sub_w; //!< Y picture component upsampled (Quarter pel) for weighted prediction
imgpel ***** imgUV_sub; //!< UV picture component upsampled (Quarter/One-Eighth pel)
imgpel *** imgUV; //!< U and V picture components
byte * mb_field; //!< field macroblock indicator
signed char *** ref_idx; //!< reference picture [list][subblock_y][subblock_x]
int64 *** ref_pic_id; //!< reference picture identifier [list][subblock_y][subblock_x]
// (not simply index)
int64 *** ref_id; //!< reference picture identifier [list][subblock_y][subblock_x]
// (not simply index)
short **** mv; //!< motion vector [list][subblock_x][subblock_y][component]
byte ** moving_block;
byte ** field_frame; //!< indicates if co_located is field or frame.
struct storable_picture *top_field; // for mb aff, if frame for referencing the top field
struct storable_picture *bottom_field; // for mb aff, if frame for referencing the bottom field
struct storable_picture *frame; // for mb aff, if field for referencing the combined frame
int chroma_format_idc;
int frame_mbs_only_flag;
int frame_cropping_flag;
int frame_cropping_rect_left_offset;
int frame_cropping_rect_right_offset;
int frame_cropping_rect_top_offset;
int frame_cropping_rect_bottom_offset;
} StorablePicture;
//! definition a picture (field or frame)
typedef struct colocated_params
{
int mb_adaptive_frame_field_flag;
int size_x, size_y;
int64 ref_pic_num[6][MAX_LIST_SIZE];
signed char *** ref_idx; //!< reference picture [list][subblock_y][subblock_x]
int64 *** ref_pic_id; //!< reference picture identifier [list][subblock_y][subblock_x]
short **** mv; //!< motion vector [list][subblock_x][subblock_y][component]
byte ** moving_block;
// Top field params
int64 top_ref_pic_num[6][MAX_LIST_SIZE];
signed char *** top_ref_idx; //!< reference picture [list][subblock_y][subblock_x]
int64 *** top_ref_pic_id; //!< reference picture identifier [list][subblock_y][subblock_x]
short **** top_mv; //!< motion vector [list][subblock_x][subblock_y][component]
byte ** top_moving_block;
// Bottom field params
int64 bottom_ref_pic_num[6][MAX_LIST_SIZE];
signed char *** bottom_ref_idx; //!< reference picture [list][subblock_y][subblock_x]
int64 *** bottom_ref_pic_id; //!< reference picture identifier [list][subblock_y][subblock_x]
short **** bottom_mv; //!< motion vector [list][subblock_x][subblock_y][component]
byte ** bottom_moving_block;
byte is_long_term;
byte ** field_frame; //!< indicates if co_located is field or frame.
} ColocatedParams;
//! Frame Stores for Decoded Picture Buffer
typedef struct frame_store
{
int is_used; //!< 0=empty; 1=top; 2=bottom; 3=both fields (or frame)
int is_reference; //!< 0=not used for ref; 1=top used; 2=bottom used; 3=both fields (or frame) used
int is_long_term; //!< 0=not used for ref; 1=top used; 2=bottom used; 3=both fields (or frame) used
int is_orig_reference; //!< original marking by nal_ref_idc: 0=not used for ref; 1=top used; 2=bottom used; 3=both fields (or frame) used
int is_non_existent;
unsigned frame_num;
int frame_num_wrap;
int long_term_frame_idx;
int is_output;
int poc;
StorablePicture *frame;
StorablePicture *top_field;
StorablePicture *bottom_field;
} FrameStore;
//! Decoded Picture Buffer
typedef struct decoded_picture_buffer
{
FrameStore **fs;
FrameStore **fs_ref;
FrameStore **fs_ltref;
unsigned size;
unsigned used_size;
unsigned ref_frames_in_buffer;
unsigned ltref_frames_in_buffer;
int last_output_poc;
int max_long_term_pic_idx;
int init_done;
FrameStore *last_picture;
} DecodedPictureBuffer;
extern DecodedPictureBuffer dpb;
extern StorablePicture **listX[6];
extern int listXsize[6];
void init_dpb(void);
void free_dpb(void);
FrameStore* alloc_frame_store(void);
void free_frame_store(FrameStore* f);
StorablePicture* alloc_storable_picture(PictureStructure type, int size_x, int size_y, int size_x_cr, int size_y_cr);
void free_storable_picture(StorablePicture* p);
void store_picture_in_dpb(StorablePicture* p);
void replace_top_pic_with_frame(StorablePicture* p);
void flush_dpb(void);
void dpb_split_field(FrameStore *fs);
void dpb_combine_field(FrameStore *fs);
void dpb_combine_field_yuv(FrameStore *fs);
void init_lists(int currSliceType, PictureStructure currPicStructure);
void reorder_ref_pic_list(StorablePicture **list, int *list_size,
int num_ref_idx_lX_active_minus1, int *reordering_of_pic_nums_idc,
int *abs_diff_pic_num_minus1, int *long_term_pic_idx);
void init_mbaff_lists(void);
void alloc_ref_pic_list_reordering_buffer(Slice *currSlice);
void free_ref_pic_list_reordering_buffer(Slice *currSlice);
void fill_frame_num_gap(ImageParameters *img);
ColocatedParams* alloc_colocated(int size_x, int size_y,int mb_adaptive_frame_field_flag);
void free_colocated(ColocatedParams* p);
void compute_colocated(ColocatedParams* p, StorablePicture **listX[6]);
#endif
# 194 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/mbuffer.h"
# 18 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/image.h" 2
extern StorablePicture *enc_picture;
extern StorablePicture *enc_frame_picture;
extern StorablePicture *enc_frame_picture2;
extern StorablePicture *enc_frame_picture3;
extern StorablePicture *enc_top_picture;
extern StorablePicture *enc_bottom_picture;
int encode_one_frame (void);
void report_frame_statistic(void);
Boolean dummy_slice_too_big(int bits_slice);
void copy_rdopt_data (int field_type); // For MB level field/frame coding tools
void UnifiedOneForthPix (StorablePicture *s);
#endif
# 34 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/image.h"
# 34 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "transform8x8.h"
#endif /* expanded by -frewrite-includes */
# 34 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/transform8x8.h" 1
/*!
***************************************************************************
*
* \file transform8x8.h
*
* \brief
* prototypes of 8x8 transform functions
*
* \date
* 9. October 2003
*
* \author
* Main contributors (see contributors.h for copyright, address and affiliation details)
* Yuri Vatis vatis@hhi.de
**************************************************************************/
#ifndef _TRANSFORM8X8_H_
#define _TRANSFORM8X8_H_
int Mode_Decision_for_new_Intra8x8Macroblock (double lambda, int *min_cost);
int Mode_Decision_for_new_8x8IntraBlocks (int b8, double lambda, int *min_cost);
void intrapred_luma8x8(int img_x,int img_y, int *left_available, int *up_available, int *all_available);
double RDCost_for_8x8IntraBlocks(int *c_nz, int b8, int ipmode, double lambda, double min_rdcost, int mostProbableMode);
int dct_luma8x8(int b8,int *coeff_cost, int intra);
void LowPassForIntra8x8Pred(imgpel *PredPel, int block_up_left, int block_up, int block_left);
#endif //_TRANSFORM8X8_H_
# 33 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/transform8x8.h"
# 35 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "cabac.h"
#endif /* expanded by -frewrite-includes */
# 35 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/cabac.h" 1
/*!
***************************************************************************
* \file
* cabac.h
*
* \brief
* Headerfile for entropy coding routines
*
* \author
* Detlev Marpe \n
* Copyright (C) 2000 HEINRICH HERTZ INSTITUTE All Rights Reserved.
*
* \date
* 21. Oct 2000 (Changes by Tobias Oelbaum 28.08.2001)
***************************************************************************
*/
#ifndef _CABAC_H_
#define _CABAC_H_
// CABAC
int get_pic_bin_count(void);
void reset_pic_bin_count(void);
void arienco_start_encoding(EncodingEnvironmentPtr eep, unsigned char *code_buffer, int *code_len);
int arienco_bits_written(EncodingEnvironmentPtr eep);
void arienco_done_encoding(EncodingEnvironmentPtr eep);
void biari_init_context (BiContextTypePtr ctx, const int* ini);
void rescale_cum_freq(BiContextTypePtr bi_ct);
void biari_encode_symbol(EncodingEnvironmentPtr eep, signed short symbol, BiContextTypePtr bi_ct );
void biari_encode_symbol_eq_prob(EncodingEnvironmentPtr eep, signed short symbol);
void biari_encode_symbol_final(EncodingEnvironmentPtr eep, signed short symbol);
MotionInfoContexts* create_contexts_MotionInfo(void);
TextureInfoContexts* create_contexts_TextureInfo(void);
void init_contexts_MotionInfo (MotionInfoContexts *enco_ctx);
void init_contexts_TextureInfo(TextureInfoContexts *enco_ctx);
void delete_contexts_MotionInfo(MotionInfoContexts *enco_ctx);
void delete_contexts_TextureInfo(TextureInfoContexts *enco_ctx);
void writeHeaderToBuffer(void);
void writeMB_typeInfo_CABAC(SyntaxElement *se, DataPartition *dp);
void writeIntraPredMode_CABAC(SyntaxElement *se, DataPartition *dp);
void writeB8_typeInfo_CABAC(SyntaxElement *se, DataPartition *dp);
void writeRefFrame_CABAC(SyntaxElement *se, DataPartition *dp);
void writeMVD_CABAC(SyntaxElement *se, DataPartition *dp);
void writeCBP_CABAC(SyntaxElement *se, DataPartition *dp);
void writeDquant_CABAC(SyntaxElement *se, DataPartition *dp);
void writeRunLevel_CABAC(SyntaxElement *se, DataPartition *dp);
void writeCIPredMode_CABAC(SyntaxElement *se, DataPartition *dp);
void print_ctx_TextureInfo(TextureInfoContexts *enco_ctx);
void writeMB_skip_flagInfo_CABAC(SyntaxElement *se, DataPartition *dp);
void writeFieldModeInfo_CABAC(SyntaxElement *se, DataPartition *dp); //GB
void writeCBP_BIT_CABAC (int b8, int bit, int cbp, Macroblock* currMB, int inter, EncodingEnvironmentPtr eep_dp);
void cabac_new_slice(void);
void CheckAvailabilityOfNeighborsCABAC(void);
void writeMB_transform_size_CABAC(SyntaxElement *se, DataPartition *dp);
#endif // CABAC_H
# 62 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/cabac.h"
# 36 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "vlc.h"
#endif /* expanded by -frewrite-includes */
# 36 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/vlc.h" 1
/*!
*************************************************************************************
* \file vlc.h
*
* \brief
* Prototypes for VLC coding funtions
* \author
* Karsten Suehring
*************************************************************************************
*/
#ifndef _VLC_H_
#define _VLC_H_
Boolean u_1 (char *tracestring, int value, Bitstream *bitstream);
int se_v (char *tracestring, int value, Bitstream *bitstream);
int ue_v (char *tracestring, int value, Bitstream *bitstream);
int u_v (int n, char *tracestring, int value, Bitstream *bitstream);
void levrun_linfo_c2x2(int level,int run,int *len,int *info);
void levrun_linfo_inter(int level,int run,int *len,int *info);
void writeSE_UVLC (SyntaxElement *se, DataPartition *dp);
void writeSE_SVLC (SyntaxElement *se, DataPartition *dp);
void writeSE_Fix (SyntaxElement *se, DataPartition *dp);
void writeSE_Flag (SyntaxElement *se, DataPartition *dp);
void writeSE_invFlag(SyntaxElement *se, DataPartition *dp);
void writeSE_Dummy (SyntaxElement *se, DataPartition *dp);
void writeCBP_VLC (SyntaxElement *se, DataPartition *dp);
void writeIntraPredMode_CAVLC(SyntaxElement *se, DataPartition *dp);
int writeSyntaxElement2Buf_UVLC(SyntaxElement *se, Bitstream* this_streamBuffer );
void writeUVLC2buffer(SyntaxElement *se, Bitstream *currStream);
int writeSyntaxElement2Buf_Fixed(SyntaxElement *se, Bitstream* this_streamBuffer );
int symbol2uvlc(SyntaxElement *se);
void ue_linfo(int n, int dummy, int *len,int *info);
void se_linfo(int mvd, int dummy, int *len,int *info);
void cbp_linfo_intra(int cbp, int dummy, int *len,int *info);
void cbp_linfo_inter(int cbp, int dummy, int *len,int *info);
// CAVLC
void CAVLC_init(void);
int writeSyntaxElement_VLC(SyntaxElement *se, DataPartition *this_dataPart);
int writeSyntaxElement_TotalZeros(SyntaxElement *se, DataPartition *this_dataPart);
int writeSyntaxElement_TotalZerosChromaDC(SyntaxElement *se, DataPartition *this_dataPart);
int writeSyntaxElement_Run(SyntaxElement *se, DataPartition *this_dataPart);
int writeSyntaxElement_NumCoeffTrailingOnes(SyntaxElement *se, DataPartition *this_dataPart);
int writeSyntaxElement_NumCoeffTrailingOnesChromaDC(SyntaxElement *se, DataPartition *this_dataPart);
int writeSyntaxElement_Level_VLC1(SyntaxElement *se, DataPartition *this_dataPart, int profile_idc);
int writeSyntaxElement_Level_VLCN(SyntaxElement *se, int vlc, DataPartition *this_dataPart, int profile_idc);
#endif
# 57 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/vlc.h"
# 37 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "me_umhex.h"
#endif /* expanded by -frewrite-includes */
# 37 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/me_umhex.h" 1
/*!
************************************************************************
*
* \file me_umhex.h
*
* \brief
* Macro definitions and global variables for UMHEX fast
* integer pel motion estimation and fractional pel motion estimation
*
* \author
* Main contributors: (see contributors.h for copyright, address and affiliation details)
* - Zhibo Chen <chenzhibo@tsinghua.org.cn>
* - JianFeng Xu <fenax@video.mdc.tsinghua.edu.cn>
* - Wenfang Fu <fwf@video.mdc.tsinghua.edu.cn>
* - Xiaozhong Xu <xxz@video.mdc.tsinghua.edu.cn>
*
* \date
* 2006.1
************************************************************************
*/
#ifndef _ME_UMHEX_H_
#define _ME_UMHEX_H_
#if 0 /* expanded by -frewrite-includes */
#include "mbuffer.h"
#endif /* expanded by -frewrite-includes */
# 26 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/me_umhex.h"
# 27 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/me_umhex.h"
#define EARLY_TERMINATION \
if ((min_mcost-pred_SAD)<pred_SAD*betaFourth_2) \
goto fourth_2_step; \
else if((min_mcost-pred_SAD)<pred_SAD*betaFourth_1) \
goto fourth_1_step;
#define SEARCH_ONE_PIXEL \
if(iabs(cand_x - center_x) <=search_range && iabs(cand_y - center_y)<= search_range)\
{ \
if(!McostState[cand_y-center_y+search_range][cand_x-center_x+search_range]) \
{ \
mcost = MV_COST (lambda_factor, mvshift, cand_x, cand_y, pred_x, pred_y); \
if(mcost<min_mcost) \
{ \
mcost += computeUniPred[dist_method](orig_pic, \
blocksize_y,blocksize_x, min_mcost - mcost, \
(cand_x << 2) + IMG_PAD_SIZE_TIMES4, (cand_y << 2) + IMG_PAD_SIZE_TIMES4); \
McostState[cand_y-center_y+search_range][cand_x-center_x+search_range] = 1; \
if (mcost < min_mcost) \
{ \
best_x = cand_x; \
best_y = cand_y; \
min_mcost = mcost; \
} \
} \
} \
}
#define SEARCH_ONE_PIXEL_BIPRED \
if(iabs(cand_x - center2_x) <=search_range && iabs(cand_y - center2_y)<= search_range)\
{ \
if(!McostState[cand_y-center2_y+search_range][cand_x-center2_x+search_range]) \
{ \
mcost = MV_COST (lambda_factor, mvshift, center1_x, center1_y, pred_x1, pred_y1);\
mcost += MV_COST (lambda_factor, mvshift, cand_x, cand_y, pred_x2, pred_y2); \
if(mcost<min_mcost) \
{ \
mcost += computeBiPred(cur_pic, blocksize_y, blocksize_x, \
min_mcost - mcost, \
(center1_x << 2) + IMG_PAD_SIZE_TIMES4, \
(center1_y << 2) + IMG_PAD_SIZE_TIMES4, \
(cand_x << 2) + IMG_PAD_SIZE_TIMES4, \
(cand_y << 2) + IMG_PAD_SIZE_TIMES4); \
McostState[cand_y-center2_y+search_range][cand_x-center2_x+search_range] = 1; \
if (mcost < min_mcost) \
{ \
best_x = cand_x; \
best_y = cand_y; \
min_mcost = mcost; \
} \
} \
} \
}
byte **McostState; //!< state for integer pel search
byte **SearchState; //!< state for fractional pel search
int ****fastme_ref_cost; //!< store SAD information needed for forward ref-frame prediction
int ***fastme_l0_cost; //!< store SAD information needed for forward median and uplayer prediction
int ***fastme_l1_cost; //!< store SAD information needed for backward median and uplayer prediction
int ***fastme_l0_cost_bipred; //!< store SAD information for bipred mode
int ***fastme_l1_cost_bipred; //!< store SAD information for bipred mode
int bipred_flag; //!< flag for bipred
int **fastme_best_cost; //!< for multi ref early termination threshold
int pred_SAD; //!< SAD prediction in use.
int pred_MV_ref[2], pred_MV_uplayer[2]; //!< pred motion vector by space or temporal correlation,Median is provided
int UMHEX_blocktype; //!< blocktype for UMHEX SetMotionVectorPredictor
int predict_point[5][2];
int SAD_a,SAD_b,SAD_c,SAD_d;
int Threshold_DSR_MB[8]; //!< Threshold for usage of DSR. DSR refer to JVT-Q088
//for early termination
float Bsize[8];
float AlphaFourth_1[8];
float AlphaFourth_2[8];
byte *flag_intra;
int flag_intra_SAD;
void UMHEX_DefineThreshold(void);
void UMHEX_DefineThresholdMB(void);
int UMHEX_get_mem(void);
void UMHEX_free_mem(void);
void UMHEX_decide_intrabk_SAD(void);
void UMHEX_skip_intrabk_SAD(int best_mode, int ref_max);
void UMHEX_setup(short ref, int list, int block_y, int block_x, int blocktype, short ******all_mv);
int // ==> minimum motion cost after search
UMHEXIntegerPelBlockMotionSearch (
imgpel *orig_pic, // <-- not used
short ref, // <-- reference frame (0... or -1 (backward))
int list, // <-- reference picture list
int pic_pix_x, // <-- absolute x-coordinate of regarded AxB block
int pic_pix_y, // <-- absolute y-coordinate of regarded AxB block
int blocktype, // <-- block type (1-16x16 ... 7-4x4)
short pred_mv_x, // <-- motion vector predictor (x) in sub-pel units
short pred_mv_y, // <-- motion vector predictor (y) in sub-pel units
short* mv_x, // --> motion vector (x) - in pel units
short* mv_y, // --> motion vector (y) - in pel units
int search_range, // <-- 1-d search range in pel units
int min_mcost, // <-- minimum motion cost (cost for center or huge value)
int lambda_factor);// <-- lagrangian parameter for determining motion cost
int // ==> minimum motion cost after search
UMHEXSubPelBlockMotionSearch (
imgpel* orig_pic, // <-- original pixel values for the AxB block
short ref, // <-- reference frame (0... or -1 (backward))
int list, // <-- reference picture list
int pic_pix_x, // <-- absolute x-coordinate of regarded AxB block
int pic_pix_y, // <-- absolute y-coordinate of regarded AxB block
int blocktype, // <-- block type (1-16x16 ... 7-4x4)
short pred_mv_x, // <-- motion vector predictor (x) in sub-pel units
short pred_mv_y, // <-- motion vector predictor (y) in sub-pel units
short* mv_x, // <--> in: search center (x) / out: motion vector (x) - in pel units
short* mv_y, // <--> in: search center (y) / out: motion vector (y) - in pel units
int search_pos2, // <-- search positions for half-pel search (default: 9)
int search_pos4, // <-- search positions for quarter-pel search (default: 9)
int min_mcost, // <-- minimum motion cost (cost for center or huge value)
int lambda_factor);// <-- lagrangian parameter for determining motion cost
extern int // ==> minimum motion cost after search
SubPelBlockMotionSearch (imgpel* orig_pic, // <-- original pixel values for the AxB block
short ref, // <-- reference frame (0... or -1 (backward))
int list,
int pic_pix_x, // <-- absolute x-coordinate of regarded AxB block
int pic_pix_y, // <-- absolute y-coordinate of regarded AxB block
int blocktype, // <-- block type (1-16x16 ... 7-4x4)
short pred_mv_x, // <-- motion vector predictor (x) in sub-pel units
short pred_mv_y, // <-- motion vector predictor (y) in sub-pel units
short* mv_x, // <--> in: search center (x) / out: motion vector (x) - in pel units
short* mv_y, // <--> in: search center (y) / out: motion vector (y) - in pel units
int search_pos2, // <-- search positions for half-pel search (default: 9)
int search_pos4, // <-- search positions for quarter-pel search (default: 9)
int min_mcost, // <-- minimum motion cost (cost for center or huge value)
int *lambda_factor // <-- lagrangian parameter for determining motion cost
);
int // ==> minimum motion cost after search
UMHEXBipredIntegerPelBlockMotionSearch (
imgpel* orig_pic, // <-- original pixel values for the AxB block
short ref, // <-- reference frame (0... or -1 (backward))
int list,
int pic_pix_x, // <-- absolute x-coordinate of regarded AxB block
int pic_pix_y, // <-- absolute y-coordinate of regarded AxB block
int blocktype, // <-- block type (1-16x16 ... 7-4x4)
short pred_mv_x1, // <-- motion vector predictor (x) in sub-pel units
short pred_mv_y1, // <-- motion vector predictor (y) in sub-pel units
short pred_mv_x2, // <-- motion vector predictor (x) in sub-pel units
short pred_mv_y2, // <-- motion vector predictor (y) in sub-pel units
short* mv_x, // <--> in: search center (x) / out: motion vector (x) - in pel units
short* mv_y, // <--> in: search center (y) / out: motion vector (y) - in pel units
short* s_mv_x, // <--> in: search center (x) / out: motion vector (x) - in pel units
short* s_mv_y, // <--> in: search center (y) / out: motion vector (y) - in pel units
int search_range, // <-- 1-d search range in pel units
int min_mcost, // <-- minimum motion cost (cost for center or huge value)
int lambda_factor // <-- lagrangian parameter for determining motion cost
);
void UMHEXSetMotionVectorPredictor (short pmv[2], signed char **refPic, short ***tmp_mv,
short ref_frame, int list, int block_x, int block_y,
int blockshape_x, int blockshape_y, int *search_range);
#endif
# 192 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/me_umhex.h"
# 38 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "ratectl.h" // head file for rate control
#endif /* expanded by -frewrite-includes */
# 38 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/ratectl.h" 1
/*!
***************************************************************************
* \file
* ratectl.h
*
* \author
* Zhengguo LI
*
* \date
* 14 Jan 2003
*
* \brief
* Headerfile for rate control
**************************************************************************
*/
#ifndef _RATE_CTL_H_
#define _RATE_CTL_H_
/* generic rate control variables */
typedef struct {
// RC flags
int TopFieldFlag;
int FieldControl;
int FieldFrame;
int NoGranularFieldRC;
// bits stats
int NumberofHeaderBits;
int NumberofTextureBits;
int NumberofBasicUnitHeaderBits;
int NumberofBasicUnitTextureBits;
// frame stats
int NumberofCodedBFrame;
int NumberofCodedPFrame;
int NumberofGOP;
int TotalQpforPPicture;
int NumberofPPicture;
// MAD stats
int64 TotalMADBasicUnit;
int *MADofMB;
// buffer and budget
int64 CurrentBufferFullness; //LIZG 25/10/2002
int RemainingBits;
// bit allocations for RC_MODE_3
int RCPSliceBits;
int RCISliceBits;
int RCBSliceBits[RC_MAX_TEMPORAL_LEVELS];
int temporal_levels;
int hierNb[RC_MAX_TEMPORAL_LEVELS];
int NPslice;
int NIslice;
} rc_generic;
// macroblock activity
int diffy[16][16];
int qp_mbaff[2][2], qp_mbaff[2][2];
int delta_qp_mbaff[2][2], delta_qp_mbaff[2][2];
// generic functions
int Qstep2QP( double Qstep );
double QP2Qstep( int QP );
int calc_MAD( void );
double ComputeFrameMAD( void );
void update_rc(Macroblock *currMB, short best_mode);
// rate control functions
// init/copy
void generic_alloc( rc_generic **prc );
void generic_free( rc_generic **prc );
void copy_rc_generic( rc_generic *dst, rc_generic *src );
// rate control CURRENT pointers
rc_generic *generic_RC;
// rate control object pointers for RDPictureDecision buffering...
rc_generic *generic_RC_init, *generic_RC_best;
#endif
# 80 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/ratectl.h"
# 39 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "mode_decision.h"
#endif /* expanded by -frewrite-includes */
# 39 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/mode_decision.h" 1
/*!
***************************************************************************
* \file
* mode_decision.h
*
* \author
* Alexis Michael Tourapis
*
* \date
* 21. February 2005
*
* \brief
* Headerfile for mode decision
**************************************************************************
*/
#ifndef _MODE_DECISION_H_
#define _MODE_DECISION_H_
extern CSptr cs_mb, cs_b8, cs_cm, cs_imb, cs_ib8, cs_ib4, cs_pc;
//extern imgpel mpr_8x8ts[16][16];
//extern imgpel rec_mbY[16][16], rec_mbU[16][16], rec_mbV[16][16]; // reconstruction values
extern RD_8x8DATA tr4x4, tr8x8;
// Adaptive Lagrangian variables
extern double mb16x16_cost;
extern double lambda_mf_factor;
extern const int LEVELMVLIMIT[17][6];
extern int ****cofAC_8x8ts; // [8x8block][4x4block][level/run][scan_pos]
extern int ****cofAC, ****cofAC8x8; // [8x8block][4x4block][level/run][scan_pos]
extern int QP2QUANT[40];
extern int cbp_blk8x8;
extern int cbp, cbp8x8, cnt_nonz_8x8;
extern int64 cbp_blk;
extern int64 cbp_blk8_8x8ts;
extern int cbp8_8x8ts;
extern int cnt_nonz8_8x8ts;
extern int qp_mbaff[2][2], qp_mbaff[2][2];
extern int delta_qp_mbaff[2][2],delta_qp_mbaff[2][2];
// Residue Color Transform
extern signed char b4_ipredmode[16], b4_intra_pred_modes[16];
extern short bi_pred_me;
extern short best_mode;
extern short best8x8mode [4]; // [block]
extern signed char best8x8pdir [MAXMODE][4]; // [mode][block]
extern signed char best8x8fwref[MAXMODE][4]; // [mode][block]
extern signed char best8x8bwref[MAXMODE][4]; // [mode][block]
extern imgpel pred[16][16];
extern void set_stored_macroblock_parameters (void);
extern void StoreMV8x8(int);
extern void RestoreMV8x8(int);
extern void store_macroblock_parameters (int);
extern void SetModesAndRefframeForBlocks (int);
extern void SetRefAndMotionVectors (int, int, int, int, int);
extern void StoreNewMotionVectorsBlock8x8(int, int, int, int, int, int, int);
extern void assign_enc_picture_params(int, signed char, int, int, int, int, int);
extern void update_refresh_map(int intra, int intra1, Macroblock *currMB);
extern void SetMotionVectorsMB (Macroblock*, int);
extern void SetCoeffAndReconstruction8x8 (Macroblock*);
extern void fast_mode_intra_decision(short *intra_skip, double min_rate);
extern int GetBestTransformP8x8(void);
extern int I16Offset (int, int);
extern int CheckReliabilityOfRef (int, int, int, int);
extern int Mode_Decision_for_Intra4x4Macroblock (double, int*);
extern int RDCost_for_macroblocks (double, int, double*, double*, int);
extern double RDCost_for_8x8blocks (int*, int64*, double, int, int, short, short, short);
extern double *mb16x16_cost_frame;
extern const int b8_mode_table[6];
extern const int mb_mode_table[9];
void rc_store_diff(int cpix_x, int cpix_y, imgpel prediction[16][16]);
void submacroblock_mode_decision(RD_PARAMS, RD_8x8DATA *, Macroblock *,int ***, int *, short, int, int *, int *, int *, int);
void init_enc_mb_params(Macroblock* currMB, RD_PARAMS *enc_mb, int intra, int bslice);
void list_prediction_cost(int list, int block, int mode, RD_PARAMS enc_mb, int bmcost[5], signed char best_ref[2]);
void determine_prediction_list(int, int [5], signed char [2], signed char *, int *, short *);
void compute_mode_RD_cost(int mode, Macroblock *currMB, RD_PARAMS enc_mb,
double *min_rdcost, double *min_rate,
int i16mode, short bslice, short *inter_skip);
void get_initial_mb16x16_cost(void);
void adjust_mb16x16_cost(int);
#endif
# 91 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/mode_decision.h"
# 40 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "fmo.h"
#endif /* expanded by -frewrite-includes */
# 40 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/fmo.h" 1
/*!
***************************************************************************
*
* \file fmo.h
*
* \brief
* Support for Flexible Macroblock Ordering
*
* \date
* 16 June 2002
*
* \author
* Stephan Wenger stewe@cs.tu-berlin.de
**************************************************************************/
#ifndef _FMO_H_
#define _FMO_H_
#define MAXSLICEGROUPIDS 8
int FmoInit(ImageParameters * img, pic_parameter_set_rbsp_t * pps, seq_parameter_set_rbsp_t * sps);
void FmoUninit (void);
int FmoFinit (seq_parameter_set_rbsp_t * sps);
int FmoMB2SliceGroup (int mb);
int FmoGetFirstMBOfSliceGroup (int SliceGroupID);
int FmoGetFirstMacroblockInSlice (int SliceGroup);
int FmoGetNextMBNr (int CurrentMbNr);
int FmoGetLastCodedMBOfSliceGroup (int SliceGroupID);
int FmoStartPicture (void);
int FmoEndPicture(void);
int FmoSliceGroupCompletelyCoded(int SliceGroupID);
void FmoSetLastMacroblockInSlice (int mb);
int FmoGetPreviousMBNr (int CurrentMbNr);
extern byte *MBAmap;
#endif
# 40 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/fmo.h"
# 41 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "macroblock.h"
#endif /* expanded by -frewrite-includes */
# 41 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/macroblock.h" 1
/*!
************************************************************************
* \file
* macroblock.h
*
* \brief
* Arrays for macroblock processing
*
* \author
* Inge Lille-Langoy <inge.lille-langoy@telenor.com> \n
* Telenor Satellite Services \n
* P.O.Box 6914 St.Olavs plass \n
* N-0130 Oslo, Norway
*
************************************************************************/
#ifndef _MACROBLOCK_H_
#define _MACROBLOCK_H_
void proceed2nextMacroblock(void);
void start_macroblock(int mb_addr, int mb_field);
void terminate_macroblock(Boolean *end_of_slice, Boolean *recode_macroblock);
void write_one_macroblock(int eos_bit);
void LumaPrediction4x4 (int, int, int, int, int, short, short);
void LumaPrediction4x4Bi (int, int, int, int, short, short, int );
int LumaResidualCoding8x8 (int*, int64*, int, short, int, int, short, short);
void LumaResidualCoding (void);
void ChromaResidualCoding (int*);
void IntraChromaPrediction (int*, int*, int*);
void IntraChromaRDDecision (RD_PARAMS);
int TransformDecision(int, int*);
int B8Mode2Value (int b8mode, int b8pdir);
int writeMBLayer (int rdopt, int *coeff_rate);
void write_terminating_bit (short bit);
int writeReferenceFrame (int mode, int i, int j, int fwd_flag, int ref);
int writeMotionVector8x8 (int i0, int j0, int i1, int j1, int refframe, int list_idx, int mv_mode);
int writeLumaCoeff4x4_CABAC (int, int, int);
int writeLumaCoeff8x8_CABAC (int, int);
int writeLumaCoeff8x8 (int, int, int);
int writeCoeff4x4_CAVLC (int block_type, int b8, int b4, int param);
int find_sad_16x16 (int *intra_mode);
#endif
# 58 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/macroblock.h"
# 42 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
#if 0 /* expanded by -frewrite-includes */
#include "symbol.h"
#endif /* expanded by -frewrite-includes */
# 42 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# 1 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/symbol.h" 1
/*!
***************************************************************************
*
* \file symbol.h
*
* \brief
* Generic Symbol writing interface
*
* \date
* 18 Jan 2006
*
* \author
* Karsten Suehring suehring@hhi.de
**************************************************************************/
extern void (*writeMB_typeInfo) (SyntaxElement *se, DataPartition *dP);
extern void (*writeIntraPredMode) (SyntaxElement *se, DataPartition *dP);
extern void (*writeB8_typeInfo) (SyntaxElement *se, DataPartition *dP);
extern void (*writeRefFrame[6]) (SyntaxElement *se, DataPartition *dP);
extern void (*writeMVD) (SyntaxElement *se, DataPartition *dP);
extern void (*writeCBP) (SyntaxElement *se, DataPartition *dP);
extern void (*writeDquant) (SyntaxElement *se, DataPartition *dP);
extern void (*writeCIPredMode) (SyntaxElement *se, DataPartition *dP);
extern void (*writeFieldModeInfo) (SyntaxElement *se, DataPartition *dP);
extern void (*writeMB_transform_size)(SyntaxElement *se, DataPartition *dP);
# 43 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c" 2
imgpel pred[16][16];
#define FASTMODE 1
//#define RESET_STATE
extern const int LEVELMVLIMIT[17][6];
extern int QP2QUANT[40];
const int AdaptRndCrPos[2][5] =
{
// P, B, I, SP, SI
{ 4, 7, 1, 4, 1}, // Intra MB
{ 10, 13, 10, 10, 10} // Inter MB
};
const int AdaptRndPos[4][5] =
{
// P, B, I, SP, SI
{ 3, 6, 0, 3, 0}, // 4x4 Intra MB
{ 1, 2, 0, 1, 2}, // 8x8 Intra MB
{ 9, 12, 9, 9, 9}, // 4x4 Inter MB
{ 3, 4, 3, 3, 3}, // 8x8 Inter MB
};
imgpel rec_mbY[16][16], rec_mbU[16][16], rec_mbV[16][16]; // reconstruction values
int lrec_rec[16][16],lrec_rec_U[16][16],lrec_rec_V[16][16]; // store the transf. and quantized coefficients for SP frames
static int diff[16];
static int diff4x4[64];
static int diff8x8[64];
RD_8x8DATA tr4x4, tr8x8;
int **bestInterFAdjust4x4=NULL, **bestIntraFAdjust4x4=NULL;
int **bestInterFAdjust8x8=NULL, **bestIntraFAdjust8x8=NULL;
int ***bestInterFAdjust4x4Cr=NULL, ***bestIntraFAdjust4x4Cr=NULL;
int **fadjust8x8=NULL, **fadjust4x4=NULL, ***fadjust4x4Cr=NULL, ***fadjust8x8Cr=NULL;
int ****cofAC=NULL, ****cofAC8x8=NULL; // [8x8block][4x4block][level/run][scan_pos]
int ***cofDC=NULL; // [yuv][level/run][scan_pos]
int **cofAC4x4=NULL, ****cofAC4x4intern=NULL; // [level/run][scan_pos]
int cbp, cbp8x8, cnt_nonz_8x8;
int64 cbp_blk;
int cbp_blk8x8;
signed char frefframe[4][4], brefframe[4][4];
int b8mode[4], b8pdir[4];
short best8x8mode [4]; // [block]
signed char best8x8pdir [MAXMODE][4]; // [mode][block]
signed char best8x8fwref [MAXMODE][4]; // [mode][block]
signed char best8x8bwref [MAXMODE][4]; // [mode][block]
CSptr cs_mb=NULL, cs_b8=NULL, cs_cm=NULL, cs_imb=NULL, cs_ib8=NULL, cs_ib4=NULL, cs_pc=NULL;
int best_c_imode;
int best_i16offset;
short best_mode;
short bi_pred_me;
//mixed transform sizes definitions
int luma_transform_size_8x8_flag;
short all_mv8x8[2][2][4][4][2]; //[8x8_data/temp_data][LIST][block_x][block_y][MVx/MVy]
short pred_mv8x8[2][2][4][4][2];
int ****cofAC_8x8ts = NULL; // [8x8block][4x4block][level/run][scan_pos]
int64 cbp_blk8_8x8ts;
int cbp8_8x8ts;
int cost8_8x8ts;
int cnt_nonz8_8x8ts;
// adaptive langrangian parameters
double mb16x16_cost;
double lambda_mf_factor;
void StoreMV8x8(int dir);
void RestoreMV8x8(int dir);
// end of mixed transform sizes definitions
//Adaptive Rounding update function
void update_offset_params(int mode, int luma_transform_size_8x8_flag);
signed char b4_ipredmode[16], b4_intra_pred_modes[16];
/*!
************************************************************************
* \brief
* delete structure for RD-optimized mode decision
************************************************************************
*/
void clear_rdopt ()
{
free_mem_DCcoeff (cofDC);
free_mem_ACcoeff (cofAC);
free_mem_ACcoeff (cofAC8x8);
free_mem_ACcoeff (cofAC4x4intern);
if (input->Transform8x8Mode)
{
free_mem_ACcoeff (cofAC_8x8ts);
}
if (input->AdaptiveRounding)
{
free_mem2Dint(bestInterFAdjust4x4);
free_mem2Dint(bestIntraFAdjust4x4);
free_mem2Dint(bestInterFAdjust8x8);
free_mem2Dint(bestIntraFAdjust8x8);
free_mem3Dint(bestInterFAdjust4x4Cr, 2);
free_mem3Dint(bestIntraFAdjust4x4Cr, 2);
free_mem2Dint(fadjust8x8);
free_mem2Dint(fadjust4x4);
free_mem3Dint(fadjust4x4Cr, 2);
free_mem3Dint(fadjust8x8Cr, 2);
}
// structure for saving the coding state
delete_coding_state (cs_mb);
delete_coding_state (cs_b8);
delete_coding_state (cs_cm);
delete_coding_state (cs_imb);
delete_coding_state (cs_ib8);
delete_coding_state (cs_ib4);
delete_coding_state (cs_pc);
}
/*!
************************************************************************
* \brief
* create structure for RD-optimized mode decision
************************************************************************
*/
void init_rdopt ()
{
rdopt = NULL;
get_mem_DCcoeff (&cofDC);
get_mem_ACcoeff (&cofAC);
get_mem_ACcoeff (&cofAC8x8);
get_mem_ACcoeff (&cofAC4x4intern);
cofAC4x4 = cofAC4x4intern[0][0];
if (input->Transform8x8Mode)
{
get_mem_ACcoeff (&cofAC_8x8ts);
}
switch (input->rdopt)
{
case 0:
encode_one_macroblock = encode_one_macroblock_low;
break;
case 1:
encode_one_macroblock = encode_one_macroblock_high;
break;
case 2:
encode_one_macroblock = encode_one_macroblock_highfast;
break;
case 3:
encode_one_macroblock = encode_one_macroblock_highloss;
break;
default:
encode_one_macroblock = encode_one_macroblock_high;
break;
}
if (input->AdaptiveRounding)
{
get_mem2Dint(&bestInterFAdjust4x4, 16, 16);
get_mem2Dint(&bestIntraFAdjust4x4, 16, 16);
get_mem2Dint(&bestInterFAdjust8x8, 16, 16);
get_mem2Dint(&bestIntraFAdjust8x8, 16, 16);
get_mem3Dint(&bestInterFAdjust4x4Cr, 2, img->mb_cr_size_y, img->mb_cr_size_x);
get_mem3Dint(&bestIntraFAdjust4x4Cr, 2, img->mb_cr_size_y, img->mb_cr_size_x);
get_mem2Dint(&fadjust8x8, 16, 16);
get_mem2Dint(&fadjust4x4, 16, 16);
get_mem3Dint(&fadjust4x4Cr, 2, img->mb_cr_size_y, img->mb_cr_size_x);
get_mem3Dint(&fadjust8x8Cr, 2, img->mb_cr_size_y, img->mb_cr_size_x);
}
// structure for saving the coding state
cs_mb = create_coding_state ();
cs_b8 = create_coding_state ();
cs_cm = create_coding_state ();
cs_imb = create_coding_state ();
cs_ib8 = create_coding_state ();
cs_ib4 = create_coding_state ();
cs_pc = create_coding_state ();
if (input->CtxAdptLagrangeMult == 1)
{
mb16x16_cost = CALM_MF_FACTOR_THRESHOLD;
lambda_mf_factor = 1.0;
}
}
/*!
*************************************************************************************
* \brief
* Updates the pixel map that shows, which reference frames are reliable for
* each MB-area of the picture.
*
* \note
* The new values of the pixel_map are taken from the temporary buffer refresh_map
*
*************************************************************************************
*/
void UpdatePixelMap()
{
int mx,my,y,x,i,j;
if (img->type==I_SLICE)
{
for (y=0; y<img->height; y++)
for (x=0; x<img->width; x++)
{
pixel_map[y][x]=1;
}
}
else
{
for (my=0; my<img->height >> 3; my++)
for (mx=0; mx<img->width >> 3; mx++)
{
j = my*8 + 8;
i = mx*8 + 8;
if (refresh_map[my][mx])
{
for (y=my*8; y<j; y++)
for (x=mx*8; x<i; x++)
pixel_map[y][x] = 1;
}
else
{
for (y=my*8; y<j; y++)
for (x=mx*8; x<i; x++)
{
pixel_map[y][x] = imin(pixel_map[y][x] + 1, input->num_ref_frames+1);
}
}
}
}
}
/*!
*************************************************************************************
* \brief
* Checks if a given reference frame is reliable for the current
* macroblock, given the motion vectors that the motion search has
* returned.
*
* \return
* If the return value is 1, the reference frame is reliable. If it
* is 0, then it is not reliable.
*
* \note
* A specific area in each reference frame is assumed to be unreliable
* if the same area has been intra-refreshed in a subsequent frame.
* The information about intra-refreshed areas is kept in the pixel_map.
*
*************************************************************************************
*/
int CheckReliabilityOfRef (int block, int list_idx, int ref, int mode)
{
int y,x, block_y, block_x, dy, dx, y_pos, x_pos, yy, xx, pres_x, pres_y;
int maxold_x = img->width-1;
int maxold_y = img->height-1;
int ref_frame = ref+1;
int by0 = (mode>=4?2*(block >> 1):mode==2?2*block:0);
int by1 = by0 + (mode>=4||mode==2?2:4);
int bx0 = (mode>=4?2*(block & 0x01):mode==3?2*block:0);
int bx1 = bx0 + (mode>=4||mode==3?2:4);
for (block_y=by0; block_y<by1; block_y++)
{
for (block_x=bx0; block_x<bx1; block_x++)
{
y_pos = img->all_mv[block_y][block_x][list_idx][ref][mode][1];
y_pos += (img->block_y + block_y) * BLOCK_SIZE * 4;
x_pos = img->all_mv[block_y][block_x][list_idx][ref][mode][0];
x_pos += (img->block_x + block_x) * BLOCK_SIZE * 4;
/* Here we specify which pixels of the reference frame influence
the reference values and check their reliability. This is
based on the function Get_Reference_Pixel */
dy = y_pos & 3;
dx = x_pos & 3;
y_pos = (y_pos-dy) >> 2;
x_pos = (x_pos-dx) >> 2;
if (dy==0 && dx==0) //full-pel
{
for (y=y_pos ; y < y_pos + BLOCK_SIZE ; y++)
for (x=x_pos ; x < x_pos + BLOCK_SIZE ; x++)
if (pixel_map[iClip3(0,maxold_y,y)][iClip3(0,maxold_x,x)] < ref_frame)
return 0;
}
else /* other positions */
{
if (dy == 0)
{
for (y = y_pos ; y < y_pos + BLOCK_SIZE ; y++)
{
pres_y = iClip3(0,maxold_y,y);
for (x = x_pos ; x < x_pos + BLOCK_SIZE ; x++)
{
for(xx = -2 ; xx < 4 ; xx++) {
pres_x = iClip3(0, maxold_x, x + xx);
if (pixel_map[pres_y][pres_x] < ref_frame)
return 0;
}
}
}
}
else if (dx == 0)
{
for (y = y_pos ; y < y_pos + BLOCK_SIZE ; y++)
for (x=x_pos ; x < x_pos + BLOCK_SIZE ; x++)
{
pres_x = iClip3(0,maxold_x,x);
for(yy=-2;yy<4;yy++) {
pres_y = iClip3(0,maxold_y, yy + y);
if (pixel_map[pres_y][pres_x] < ref_frame)
return 0;
}
}
}
else if (dx == 2)
{
for (y = y_pos ; y < y_pos + BLOCK_SIZE ; y++)
for (x = x_pos ; x < x_pos + BLOCK_SIZE ; x++)
{
for(yy=-2;yy<4;yy++) {
pres_y = iClip3(0,maxold_y, yy + y);
for(xx=-2;xx<4;xx++) {
pres_x = iClip3(0,maxold_x, xx + x);
if (pixel_map[pres_y][pres_x] < ref_frame)
return 0;
}
}
}
}
else if (dy == 2)
{
for (y = y_pos ; y < y_pos + BLOCK_SIZE ; y++)
for (x = x_pos ; x < x_pos + BLOCK_SIZE ; x++)
{
for(xx=-2;xx<4;xx++) {
pres_x = iClip3(0,maxold_x, xx + x);
for(yy=-2;yy<4;yy++) {
pres_y = iClip3(0,maxold_y, yy + y);
if (pixel_map[pres_y][pres_x] < ref_frame)
return 0;
}
}
}
}
else
{
for (y = y_pos ; y < y_pos + BLOCK_SIZE ; y++)
{
for (x = x_pos ; x < x_pos + BLOCK_SIZE ; x++)
{
pres_y = dy == 1 ? y : y + 1;
pres_y = iClip3(0,maxold_y,pres_y);
for(xx=-2;xx<4;xx++)
{
pres_x = iClip3(0,maxold_x,xx + x);
if (pixel_map[pres_y][pres_x] < ref_frame)
return 0;
}
pres_x = dx == 1 ? x : x + 1;
pres_x = iClip3(0,maxold_x,pres_x);
for(yy=-2;yy<4;yy++)
{
pres_y = iClip3(0,maxold_y, yy + y);
if (pixel_map[pres_y][pres_x] < ref_frame)
return 0;
}
}
}
}
}
}
}
return 1;
}
/*!
*************************************************************************************
* \brief
* R-D Cost for an 4x4 Intra block
*************************************************************************************
*/
double RDCost_for_4x4IntraBlocks (int* nonzero,
int b8,
int b4,
int ipmode,
double lambda,
double min_rdcost,
int mostProbableMode)
{
double rdcost;
int dummy, x, y, rate;
int64 distortion = 0;
int block_x = 8*(b8 & 0x01)+4*(b4 & 0x01);
int block_y = 8*(b8 >> 1)+4*(b4 >> 1);
int pic_pix_x = img->pix_x+block_x;
int pic_pix_y = img->pix_y+block_y;
int pic_opix_y = img->opix_y+block_y;
imgpel **imgY = enc_picture->imgY;
Slice *currSlice = img->currentSlice;
SyntaxElement se;
const int *partMap = assignSE2partition[input->partition_mode];
DataPartition *dataPart;
//===== perform DCT, Q, IQ, IDCT, Reconstruction =====
dummy = 0;
if(img->type!=SP_SLICE)
*nonzero = dct_luma (block_x, block_y, &dummy, 1);
else if(!si_frame_indicator && !sp2_frame_indicator)
{
*nonzero = dct_luma_sp(block_x, block_y, &dummy);
}
else
{
*nonzero = dct_luma_sp2(block_x, block_y, &dummy);
}
//===== get distortion (SSD) of 4x4 block =====
for (y=0; y<4; y++)
{
for (x=pic_pix_x; x<pic_pix_x+4; x++)
{
distortion += img->quad [imgY_org[pic_opix_y+y][x] - imgY[pic_pix_y+y][x]];
}
}
//===== RATE for INTRA PREDICTION MODE (SYMBOL MODE MUST BE SET TO UVLC) =====
se.value1 = (mostProbableMode == ipmode) ? -1 : ipmode < mostProbableMode ? ipmode : ipmode-1;
//--- set position and type ---
se.context = 4*b8 + b4;
se.type = SE_INTRAPREDMODE;
//--- choose data partition ---
dataPart = &(currSlice->partArr[partMap[SE_INTRAPREDMODE]]);
//--- encode and update rate ---
writeIntraPredMode (&se, dataPart);
rate = se.len;
//===== RATE for LUMINANCE COEFFICIENTS =====
if (input->symbol_mode == UVLC)
{
rate += writeCoeff4x4_CAVLC (LUMA, b8, b4, 0);
}
else
{
rate += writeLumaCoeff4x4_CABAC (b8, b4, 1);
}
//reset_coding_state (cs_cm);
rdcost = (double)distortion + lambda*(double)rate;
return rdcost;
}
/*!
*************************************************************************************
* \brief
* Mode Decision for an 4x4 Intra block
*************************************************************************************
*/
int Mode_Decision_for_4x4IntraBlocks (int b8, int b4, double lambda, int* min_cost)
{
int ipmode, best_ipmode = 0, i, j, k, y, cost, dummy;
int c_nz, nonzero = 0;
imgpel rec4x4[4][4];
double rdcost;
int block_x = 8 * (b8 & 0x01) + 4 * (b4 & 0x01);
int block_y = 8 * (b8 >> 1) + 4 * (b4 >> 1);
int pic_pix_x = img->pix_x + block_x;
int pic_pix_y = img->pix_y + block_y;
int pic_opix_x = img->opix_x + block_x;
int pic_opix_y = img->opix_y + block_y;
int pic_block_x = pic_pix_x >> 2;
int pic_block_y = pic_pix_y >> 2;
double min_rdcost = 1e30;
int left_available, up_available, all_available;
signed char upMode;
signed char leftMode;
int mostProbableMode;
PixelPos left_block;
PixelPos top_block;
int lrec4x4[4][4];
int fixedcost = (int) floor(4 * lambda );
#ifdef BEST_NZ_COEFF
int best_nz_coeff = 0;
int best_coded_block_flag = 0;
int bit_pos = 1 + ((((b8>>1)<<1)+(b4>>1))<<2) + (((b8&1)<<1)+(b4&1));
static int64 cbp_bits;
if (b8==0 && b4==0)
cbp_bits = 0;
#endif
# 566 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
getLuma4x4Neighbour(img->current_mb_nr, block_x - 1, block_y, &left_block);
getLuma4x4Neighbour(img->current_mb_nr, block_x, block_y-1, &top_block);
// constrained intra pred
if (input->UseConstrainedIntraPred)
{
left_block.available = left_block.available ? img->intra_block[left_block.mb_addr] : 0;
top_block.available = top_block.available ? img->intra_block[top_block.mb_addr] : 0;
}
upMode = top_block.available ? img->ipredmode[top_block.pos_y ][top_block.pos_x ] : -1;
leftMode = left_block.available ? img->ipredmode[left_block.pos_y][left_block.pos_x] : -1;
mostProbableMode = (upMode < 0 || leftMode < 0) ? DC_PRED : upMode < leftMode ? upMode : leftMode;
*min_cost = INT_MAX;
//===== INTRA PREDICTION FOR 4x4 BLOCK =====
intrapred_luma (pic_pix_x, pic_pix_y, &left_available, &up_available, &all_available);
//===== LOOP OVER ALL 4x4 INTRA PREDICTION MODES =====
for (ipmode=0; ipmode<NO_INTRA_PMODE; ipmode++)
{
int available_mode = (ipmode==DC_PRED) ||
((ipmode==VERT_PRED||ipmode==VERT_LEFT_PRED||ipmode==DIAG_DOWN_LEFT_PRED) && up_available ) ||
((ipmode==HOR_PRED||ipmode==HOR_UP_PRED) && left_available ) ||(all_available);
if (input->IntraDisableInterOnly==0 || img->type != I_SLICE)
{
if (input->Intra4x4ParDisable && (ipmode==VERT_PRED||ipmode==HOR_PRED))
continue;
if (input->Intra4x4DiagDisable && (ipmode==DIAG_DOWN_LEFT_PRED||ipmode==DIAG_DOWN_RIGHT_PRED))
continue;
if (input->Intra4x4DirDisable && ipmode>=VERT_RIGHT_PRED)
continue;
}
if( available_mode)
{
if (!input->rdopt)
{
for (k=j=0; j<4; j++)
{
int jj = pic_opix_y+j;
for (i=0; i<4; i++, k++)
{
diff[k] = imgY_org[jj][pic_opix_x+i] - img->mprr[ipmode][j][i];
}
}
cost = (ipmode == mostProbableMode) ? 0 : fixedcost;
cost += distortion4x4 (diff);
if (cost < *min_cost)
{
best_ipmode = ipmode;
*min_cost = cost;
}
}
else
{
// get prediction and prediction error
for (j=0; j<4; j++)
{
memcpy(&img->mpr[block_y+j][block_x], img->mprr[ipmode][j], BLOCK_SIZE * sizeof(imgpel));
for (i=0; i<4; i++)
{
img->m7[j][i] = (int) (imgY_org[pic_opix_y+j][pic_opix_x+i] - img->mprr[ipmode][j][i]);
}
}
//===== store the coding state =====
//store_coding_state (cs_cm);
// get and check rate-distortion cost
#ifdef BEST_NZ_COEFF
img->mb_data[img->current_mb_nr].cbp_bits = cbp_bits;
#endif
# 644 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
if ((rdcost = RDCost_for_4x4IntraBlocks (&c_nz, b8, b4, ipmode, lambda, min_rdcost, mostProbableMode)) < min_rdcost)
{
//--- set coefficients ---
memcpy(cofAC4x4[0],img->cofAC[b8][b4][0], 18 * sizeof(int));
memcpy(cofAC4x4[1],img->cofAC[b8][b4][1], 18 * sizeof(int));
//--- set reconstruction ---
for (y=0; y<4; y++)
{
memcpy(rec4x4[y],&enc_picture->imgY[pic_pix_y+y][pic_pix_x], BLOCK_SIZE * sizeof(imgpel));
if(img->type==SP_SLICE &&(!si_frame_indicator && !sp2_frame_indicator))
memcpy(lrec4x4[y],&lrec[pic_pix_y+y][pic_pix_x], BLOCK_SIZE * sizeof(int));// stores the mode coefficients
}
//--- flag if dct-coefficients must be coded ---
nonzero = c_nz;
//--- set best mode update minimum cost ---
min_rdcost = rdcost;
best_ipmode = ipmode;
#ifdef BEST_NZ_COEFF
best_nz_coeff = img->nz_coeff [img->current_mb_nr][block_x4][block_y4];
best_coded_block_flag = (int)((img->mb_data[img->current_mb_nr].cbp_bits>>bit_pos)&(int64)(1));
#endif
# 667 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
//store_coding_state (cs_ib4);
if (img->AdaptiveRounding)
{
for (j=0; j<4; j++)
memcpy(&fadjust4x4[block_y+j][block_x],&img->fadjust4x4[1][block_y+j][block_x], BLOCK_SIZE * sizeof(int));
}
}
#ifndef RESET_STATE
reset_coding_state (cs_cm);
#endif
# 678 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
}
}
}
#ifdef BEST_NZ_COEFF
img->nz_coeff [img->current_mb_nr][block_x4][block_y4] = best_nz_coeff;
cbp_bits &= (~(int64)(1<<bit_pos));
cbp_bits |= (int64)(best_coded_block_flag<<bit_pos);
#endif
# 687 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
//===== set intra mode prediction =====
img->ipredmode[pic_block_y][pic_block_x] = (signed char) best_ipmode;
img->mb_data[img->current_mb_nr].intra_pred_modes[4*b8+b4] =
(signed char) (mostProbableMode == best_ipmode ? -1 : (best_ipmode < mostProbableMode ? best_ipmode : best_ipmode-1));
if (!input->rdopt)
{
// get prediction and prediction error
for (j=0; j<4; j++)
{
int jj = pic_opix_y+j;
for (i=0; i<4; i++)
{
img->mpr[block_y+j][block_x+i] = img->mprr[best_ipmode][j][i];
img->m7[j][i] = imgY_org[jj][pic_opix_x+i] - img->mprr[best_ipmode][j][i];
}
}
nonzero = dct_luma (block_x, block_y, &dummy, 1);
}
else
{
//===== restore coefficients =====
for (j=0; j<2; j++)
{
memcpy (img->cofAC[b8][b4][j],cofAC4x4[j], 18 * sizeof(int));
}
//===== restore reconstruction and prediction (needed if single coeffs are removed) =====
for (y=0; y<BLOCK_SIZE; y++)
{
memcpy (&enc_picture->imgY[pic_pix_y+y][pic_pix_x],rec4x4[y], BLOCK_SIZE * sizeof(imgpel));
memcpy (&img->mpr[block_y+y][block_x],img->mprr[best_ipmode][y], BLOCK_SIZE * sizeof(imgpel));
if(img->type==SP_SLICE &&(!si_frame_indicator && !sp2_frame_indicator))
memcpy (&lrec[pic_pix_y+y][pic_pix_x],lrec4x4[y], BLOCK_SIZE * sizeof(int));//restore coefficients when encoding primary SP frame
}
if (img->AdaptiveRounding)
{
for (j=0; j<BLOCK_SIZE; j++)
memcpy (&img->fadjust4x4[1][block_y+j][block_x],&fadjust4x4[block_y+j][block_x], BLOCK_SIZE * sizeof(int));
}
}
return nonzero;
}
/*!
*************************************************************************************
* \brief
* Mode Decision for an 8x8 Intra block
*************************************************************************************
*/
int Mode_Decision_for_8x8IntraBlocks(int b8,double lambda,int *cost)
{
int nonzero=0, b4;
int cost4x4;
*cost = (int)floor(6.0 * lambda + 0.4999);
for (b4=0; b4<4; b4++)
{
if (Mode_Decision_for_4x4IntraBlocks (b8, b4, lambda, &cost4x4))
{
nonzero = 1;
}
*cost += cost4x4;
}
#ifdef RESET_STATE
//reset_coding_state (cs_cm);
#endif
# 758 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
return nonzero;
}
/*!
*************************************************************************************
* \brief
* 4x4 Intra mode decision for an macroblock
*************************************************************************************
*/
int Mode_Decision_for_Intra4x4Macroblock (double lambda, int* cost)
{
int cbp=0, b8, cost8x8;
for (*cost=0, b8=0; b8<4; b8++)
{
if (Mode_Decision_for_8x8IntraBlocks (b8, lambda, &cost8x8))
{
cbp |= (1<<b8);
}
*cost += cost8x8;
}
return cbp;
}
/*!
*************************************************************************************
* \brief
* R-D Cost for an 8x8 Partition
*************************************************************************************
*/
double RDCost_for_8x8blocks (int* cnt_nonz, // --> number of nonzero coefficients
int64* cbp_blk, // --> cbp blk
double lambda, // <-- lagrange multiplier
int block, // <-- 8x8 block number
int mode, // <-- partitioning mode
short pdir, // <-- prediction direction
short l0_ref, // <-- L0 reference picture
short l1_ref) // <-- L1 reference picture
{
int i, j, k;
int rate=0;
int64 distortion=0;
int dummy = 0, mrate;
int fw_mode, bw_mode;
int cbp = 0;
int pax = 8*(block & 0x01);
int pay = 8*(block >> 1);
int i0 = pax >> 2;
int j0 = pay >> 2;
int bframe = (img->type==B_SLICE);
int direct = (bframe && mode==0);
int b8value = B8Mode2Value (mode, pdir);
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
SyntaxElement se;
Slice *currSlice = img->currentSlice;
DataPartition *dataPart;
const int *partMap = assignSE2partition[input->partition_mode];
EncodingEnvironmentPtr eep_dp;
//=====
//===== GET COEFFICIENTS, RECONSTRUCTIONS, CBP
//=====
currMB->bi_pred_me=0;
if (direct)
{
if (direct_pdir[img->block_y+j0][img->block_x+i0]<0) // mode not allowed
return (1e20);
else
*cnt_nonz = LumaResidualCoding8x8 (&cbp, cbp_blk, block, direct_pdir[img->block_y+j0][img->block_x+i0], 0, 0,
(short)imax(0,direct_ref_idx[LIST_0][img->block_y+j0][img->block_x+i0]),
direct_ref_idx[LIST_1][img->block_y+j0][img->block_x+i0]);
}
else
{
if (pdir == 2 && active_pps->weighted_bipred_idc == 1)
{
int weight_sum = (active_pps->weighted_bipred_idc == 1)? wbp_weight[0][l0_ref][l1_ref][0] + wbp_weight[1][l0_ref][l1_ref][0] : 0;
if (weight_sum < -128 || weight_sum > 127)
{
return (1e20);
}
}
fw_mode = (pdir==0||pdir==2 ? mode : 0);
bw_mode = (pdir==1||pdir==2 ? mode : 0);
*cnt_nonz = LumaResidualCoding8x8 (&cbp, cbp_blk, block, pdir, fw_mode, bw_mode, l0_ref, l1_ref);
}
//===== get residue =====
if (input->rdopt==3 && img->type!=B_SLICE)
{
// We need the reconstructed prediction residue for the simulated decoders.
compute_residue_b8block (block, -1);
}
//=====
//===== GET DISTORTION
//=====
if (input->rdopt==3 && img->type!=B_SLICE)
{
for (k=0; k<input->NoOfDecoders ;k++)
{
decode_one_b8block (k, P8x8, block, mode, l0_ref);
for (j=img->opix_y+pay; j<img->opix_y+pay+8; j++)
for (i=img->opix_x+pax; i<img->opix_x+pax+8; i++)
{
distortion += img->quad[imgY_org[j][i] - decs->decY[k][j][i]];
}
}
distortion /= input->NoOfDecoders;
}
else
{
for (j=pay; j<pay+8; j++)
for (i=img->pix_x+pax; i<img->pix_x+pax+8; i++)
{
distortion += img->quad [imgY_org[img->opix_y+j][i] - enc_picture->imgY[img->pix_y+j][i]];
}
}
//=====
//===== GET RATE
//=====
//----- block 8x8 mode -----
if (input->symbol_mode == UVLC)
{
ue_linfo (b8value, dummy, &mrate, &dummy);
rate += mrate;
}
else
{
se.value1 = b8value;
se.type = SE_MBTYPE;
dataPart = &(currSlice->partArr[partMap[se.type]]);
writeB8_typeInfo(&se, dataPart);
rate += se.len;
}
//----- motion information -----
if (!direct)
{
if ((img->num_ref_idx_l0_active > 1 ) && (pdir==0 || pdir==2))
rate += writeReferenceFrame (mode, i0, j0, 1, l0_ref);
if(img->num_ref_idx_l1_active > 1 && img->type== B_SLICE)
{
if (pdir==1 || pdir==2)
{
rate += writeReferenceFrame (mode, i0, j0, 0, l1_ref);
}
}
if (pdir==0 || pdir==2)
{
rate += writeMotionVector8x8 (i0, j0, i0+2, j0+2, l0_ref,LIST_0, mode);
}
if (pdir==1 || pdir==2)
{
rate += writeMotionVector8x8 (i0, j0, i0+2, j0+2, l1_ref, LIST_1, mode);
}
}
//----- coded block pattern (for CABAC only) -----
if (input->symbol_mode == CABAC)
{
dataPart = &(currSlice->partArr[partMap[SE_CBP]]);
eep_dp = &(dataPart->ee_cabac);
mrate = arienco_bits_written (eep_dp);
writeCBP_BIT_CABAC (block, ((*cnt_nonz>0)?1:0), cbp8x8, currMB, 1, eep_dp);
mrate = arienco_bits_written (eep_dp) - mrate;
rate += mrate;
}
//----- luminance coefficients -----
if (*cnt_nonz)
{
rate += writeLumaCoeff8x8 (block, mode, currMB->luma_transform_size_8x8_flag);
}
return (double)distortion + lambda * (double)rate;
}
/*!
*************************************************************************************
* \brief
* Gets mode offset for intra16x16 mode
*************************************************************************************
*/
int I16Offset (int cbp, int i16mode)
{
return (cbp&15?13:1) + i16mode + ((cbp&0x30)>>2);
}
/*!
*************************************************************************************
* \brief
* Sets modes and reference frames for a macroblock
*************************************************************************************
*/
void SetModesAndRefframeForBlocks (int mode)
{
int i,j,k,l;
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
int bframe = (img->type==B_SLICE);
int block_x, block_y;
int cur_ref[2];
//--- macroblock type ---
currMB->mb_type = mode;
currMB->bi_pred_me= (mode == 1 ? img->bi_pred_me[mode] : 0);
//--- block 8x8 mode and prediction direction ---
switch (mode)
{
case 0:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = 0;
currMB->b8pdir[i] = (bframe ? direct_pdir[img->block_y + (i >> 1)*2][img->block_x + (i & 0x01)*2] : 0);
}
break;
case 1:
case 2:
case 3:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = mode;
currMB->b8pdir[i] = best8x8pdir[mode][i];
}
break;
case P8x8:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = best8x8mode[i];
currMB->b8pdir[i] = best8x8pdir[mode][i];
}
break;
case I4MB:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = IBLOCK;
currMB->b8pdir[i] = -1;
}
break;
case I16MB:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = 0;
currMB->b8pdir[i] = -1;
}
break;
case I8MB:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = I8MB;
currMB->b8pdir[i] = -1;
}
//switch to 8x8 transform
currMB->luma_transform_size_8x8_flag = 1;
break;
case IPCM:
for(i=0;i<4;i++)
{
currMB->b8mode[i] = IPCM;
currMB->b8pdir[i] = -1;
}
currMB->luma_transform_size_8x8_flag = 0;
break;
default:
printf ("Unsupported mode in SetModesAndRefframeForBlocks!\n");
exit (1);
}
#define IS_FW ((best8x8pdir[mode][k]==0 || best8x8pdir[mode][k]==2) && (mode!=P8x8 || best8x8mode[k]!=0 || !bframe))
#define IS_BW ((best8x8pdir[mode][k]==1 || best8x8pdir[mode][k]==2) && (mode!=P8x8 || best8x8mode[k]!=0))
//--- reference frame arrays ---
if (mode==0 || mode==I4MB || mode==I16MB || mode==I8MB)
{
if (bframe)
{
if (!mode)
{
for (j = img->block_y; j < img->block_y + 4; j++)
{
memcpy(&enc_picture->ref_idx[LIST_0][j][img->block_x],&direct_ref_idx[LIST_0][j][img->block_x], 4 * sizeof(char));
memcpy(&enc_picture->ref_idx[LIST_1][j][img->block_x],&direct_ref_idx[LIST_1][j][img->block_x], 4 * sizeof(char));
}
}
else
{
for (j = img->block_y; j < img->block_y + 4; j++)
{
memset(&enc_picture->ref_idx[LIST_0][j][img->block_x],-1, 4 * sizeof(char));
memset(&enc_picture->ref_idx[LIST_1][j][img->block_x],-1, 4 * sizeof(char));
}
}
}
else
{
if (!mode)
{
for (j = img->block_y; j < img->block_y + 4; j++)
memset(&enc_picture->ref_idx[LIST_0][j][img->block_x],0, 4 * sizeof(char));
}
else
{
for (j = img->block_y; j < img->block_y + 4; j++)
memset(&enc_picture->ref_idx[LIST_0][j][img->block_x],-1, 4 * sizeof(char));
}
}
}
else
{
if (bframe)
{
for (j=0;j<4;j++)
{
block_y = img->block_y + j;
for (i=0;i<4;i++)
{
block_x = img->block_x + i;
k = 2*(j >> 1) + (i >> 1);
l = 2*(j & 0x01) + (i & 0x01);
if(mode == P8x8 && best8x8mode[k]==0)
{
enc_picture->ref_idx[LIST_0][block_y][block_x] = direct_ref_idx[LIST_0][block_y][block_x];
enc_picture->ref_idx[LIST_1][block_y][block_x] = direct_ref_idx[LIST_1][block_y][block_x];
}
else if (mode ==1 && currMB->bi_pred_me && IS_FW && IS_BW)
{
enc_picture->ref_idx[LIST_0][block_y][block_x] = 0;
enc_picture->ref_idx[LIST_1][block_y][block_x] = 0;
}
else
{
enc_picture->ref_idx[LIST_0][block_y][block_x] = (IS_FW ? best8x8fwref[mode][k] : -1);
enc_picture->ref_idx[LIST_1][block_y][block_x] = (IS_BW ? best8x8bwref[mode][k] : -1);
}
}
}
}
else
{
for (j=0;j<4;j++)
{
block_y = img->block_y + j;
for (i=0;i<4;i++)
{
block_x = img->block_x + i;
k = 2*(j >> 1) + (i >> 1);
l = 2*(j & 0x01) + (i & 0x01);
enc_picture->ref_idx[LIST_0][block_y][block_x] = (IS_FW ? best8x8fwref[mode][k] : -1);
}
}
}
}
if (bframe)
{
for (j = img->block_y; j < img->block_y + 4; j++)
for (i = img->block_x; i < img->block_x + 4;i++)
{
cur_ref[LIST_0] = (int) enc_picture->ref_idx[LIST_0][j][i];
cur_ref[LIST_1] = (int) enc_picture->ref_idx[LIST_1][j][i];
enc_picture->ref_pic_id [LIST_0][j][i] = (cur_ref[LIST_0]>=0
? enc_picture->ref_pic_num[LIST_0 + currMB->list_offset][cur_ref[LIST_0]]
: -1);
enc_picture->ref_pic_id [LIST_1][j][i] = (cur_ref[LIST_1]>=0
? enc_picture->ref_pic_num[LIST_1 + currMB->list_offset][cur_ref[LIST_1]]
: -1);
}
}
else
{
for (j = img->block_y; j < img->block_y + 4; j++)
for (i = img->block_x; i < img->block_x + 4;i++)
{
cur_ref[LIST_0] = (int) enc_picture->ref_idx[LIST_0][j][i];
enc_picture->ref_pic_id [LIST_0][j][i] = (cur_ref[LIST_0]>=0
? enc_picture->ref_pic_num[LIST_0 + currMB->list_offset][cur_ref[LIST_0]]
: -1);
}
}
#undef IS_FW
#undef IS_BW
}
/*!
*************************************************************************************
* \brief
* Intra 16x16 mode decision
*************************************************************************************
*/
void Intra16x16_Mode_Decision (Macroblock* currMB, int* i16mode)
{
intrapred_luma_16x16 (); /* make intra pred for all 4 new modes */
find_sad_16x16 (i16mode); /* get best new intra mode */
currMB->cbp = dct_luma_16x16 (*i16mode);
}
/*!
*************************************************************************************
* \brief
* Sets Coefficients and reconstruction for an 8x8 block
*************************************************************************************
*/
void SetCoeffAndReconstruction8x8 (Macroblock* currMB)
{
int block, k, j, i;
int cur_ref[2];
//============= MIXED TRANSFORM SIZES FOR 8x8 PARTITION ==============
//--------------------------------------------------------------------
int l;
int bframe = img->type==B_SLICE;
if (currMB->luma_transform_size_8x8_flag)
{
//============= set mode and ref. frames ==============
for(i = 0;i<4;i++)
{
currMB->b8mode[i] = tr8x8.part8x8mode[i];
currMB->b8pdir[i] = tr8x8.part8x8pdir[i];
}
if (bframe)
{
for (j = 0;j<4;j++)
for (i = 0;i<4;i++)
{
k = 2*(j >> 1)+(i >> 1);
l = 2*(j & 0x01)+(i & 0x01);
enc_picture->ref_idx[LIST_0][img->block_y+j][img->block_x+i] = ((currMB->b8pdir[k] & 0x01) == 0) ? tr8x8.part8x8fwref[k] : - 1;
enc_picture->ref_idx[LIST_1][img->block_y+j][img->block_x+i] = (currMB->b8pdir[k] > 0) ? tr8x8.part8x8bwref[k] : - 1;
}
}
else
{
for (j = 0;j<4;j++)
for (i = 0;i<4;i++)
{
k = 2*(j >> 1)+(i >> 1);
l = 2*(j & 0x01)+(i & 0x01);
enc_picture->ref_idx[LIST_0][img->block_y+j][img->block_x+i] = tr8x8.part8x8fwref[k];
}
}
for (j = img->block_y;j<img->block_y + BLOCK_MULTIPLE;j++)
{
for (i = img->block_x;i<img->block_x + BLOCK_MULTIPLE;i++)
{
cur_ref[LIST_0] = (int) enc_picture->ref_idx[LIST_0][j][i];
enc_picture->ref_pic_id [LIST_0][j][i] =(cur_ref[LIST_0]>=0
? enc_picture->ref_pic_num[LIST_0 + currMB->list_offset][cur_ref[LIST_0]]
: -1);
}
}
if (bframe)
{
for (j = img->block_y; j < img->block_y + BLOCK_MULTIPLE; j++)
{
for (i = img->block_x;i<img->block_x + BLOCK_MULTIPLE;i++)
{
cur_ref[LIST_1] = (int) enc_picture->ref_idx[LIST_1][j][i];
enc_picture->ref_pic_id [LIST_1][j][i] = (cur_ref[LIST_1]>=0
? enc_picture->ref_pic_num[LIST_1 + currMB->list_offset][cur_ref[LIST_1]]
: -1);
}
}
}
//====== set the mv's for 8x8 partition with transform size 8x8 ======
//save the mv data for 4x4 transform
StoreMV8x8(1);
//set new mv data for 8x8 transform
RestoreMV8x8(0);
//============= get pre-calculated data ==============
//restore coefficients from 8x8 transform
for (block = 0; block<4; block++)
{
for (k = 0; k<4; k++)
for (j = 0; j<2; j++)
memcpy (img->cofAC[block][k][j],cofAC_8x8ts[block][k][j], 65 * sizeof(int));
}
//restore reconstruction
if (cnt_nonz8_8x8ts <= _LUMA_8x8_COEFF_COST_ &&
((img->qp_scaled)!=0 || img->lossless_qpprime_flag==0) &&
(img->type!=SP_SLICE))// modif ES added last condition (we probably never go there so is the next modification useful ? check)
{
currMB->cbp = 0;
currMB->cbp_blk = 0;
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy(&enc_picture->imgY[img->pix_y+j][img->pix_x], tr8x8.mpr8x8[j], MB_BLOCK_SIZE * sizeof(imgpel));
if(img->type==SP_SLICE &&(!si_frame_indicator && !sp2_frame_indicator ))
memcpy(&lrec[img->pix_y+j][img->pix_x],tr8x8.lrec[j], MB_BLOCK_SIZE * sizeof(int));
}
}
else
{
currMB->cbp = cbp8_8x8ts;
currMB->cbp_blk = cbp_blk8_8x8ts;
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy (&enc_picture->imgY[img->pix_y+j][img->pix_x],tr8x8.rec_mbY8x8[j], MB_BLOCK_SIZE * sizeof(imgpel));
if(img->type==SP_SLICE &&(!si_frame_indicator && !sp2_frame_indicator))
memcpy (&lrec[img->pix_y+j][img->pix_x],tr8x8.lrec[j], MB_BLOCK_SIZE * sizeof(int));
}
}
}
else
{
//============= get pre-calculated data ==============
//---------------------------------------------------
//--- restore coefficients ---
for (block = 0; block<4+img->num_blk8x8_uv; block++)
{
for (k = 0; k<4; k++)
for (j = 0; j<2; j++)
memcpy (img->cofAC[block][k][j],cofAC8x8[block][k][j], 65 * sizeof(int));
}
if (cnt_nonz_8x8<=5 && img->type!=SP_SLICE &&
((img->qp_scaled)!=0 || img->lossless_qpprime_flag==0))
{
currMB->cbp = 0;
currMB->cbp_blk = 0;
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy (&enc_picture->imgY[img->pix_y+j][img->pix_x],tr4x4.mpr8x8[j], MB_BLOCK_SIZE * sizeof(imgpel));
if(img->type ==SP_SLICE &&(!si_frame_indicator && !sp2_frame_indicator))
memcpy (&lrec[img->pix_y+j][img->pix_x],tr4x4.lrec[j], MB_BLOCK_SIZE * sizeof(int)); // restore coeff. SP frame
}
}
else
{
currMB->cbp = cbp8x8;
currMB->cbp_blk = cbp_blk8x8;
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy (&enc_picture->imgY[img->pix_y+j][img->pix_x],tr4x4.rec_mbY8x8[j], MB_BLOCK_SIZE * sizeof(imgpel));
if(img->type==SP_SLICE &&(!si_frame_indicator && !sp2_frame_indicator))
memcpy (&lrec[img->pix_y+j][img->pix_x],tr4x4.lrec[j], MB_BLOCK_SIZE * sizeof(int));
}
}
}
}
/*!
*************************************************************************************
* \brief
* Sets motion vectors for a macroblock
*************************************************************************************
*/
void SetMotionVectorsMB (Macroblock* currMB, int bframe)
{
int i, j, k, l, m, mode8, pdir8, ref, by, bx;
short ******all_mv = img->all_mv;
short ******pred_mv = img->pred_mv;
int bw_ref;
int jdiv, jmod;
if (!bframe)
{
for (j = 0; j<4; j++)
{
jmod = j & 0x01;
jdiv = j >> 1;
by = img->block_y+j;
for (i = 0; i<4; i++)
{
mode8 = currMB->b8mode[k=2*jdiv+(i>>1)];
l = 2*jmod + (i & 0x01);
bx = img->block_x+i;
pdir8 = currMB->b8pdir[k];
ref = enc_picture->ref_idx[LIST_0][by][bx];
if (pdir8>=0)
{
enc_picture->mv[LIST_0][by][bx][0] = all_mv [j][i][LIST_0][ ref][mode8][0];
enc_picture->mv[LIST_0][by][bx][1] = all_mv [j][i][LIST_0][ ref][mode8][1];
}
else
{
enc_picture->mv[LIST_0][by][bx][0] = 0;
enc_picture->mv[LIST_0][by][bx][1] = 0;
}
}
}
}
else
{
for (j = 0; j<4; j++)
{
jmod = j & 0x01;
jdiv = j >> 1;
by = img->block_y+j;
for (i = 0; i<4; i++)
{
mode8 = currMB->b8mode[k=2*jdiv+(i>>1)];
l = 2*jmod + (i & 0x01);
bx = img->block_x+i;
pdir8 = currMB->b8pdir[k];
ref = enc_picture->ref_idx[LIST_0][by][bx];
bw_ref = enc_picture->ref_idx[LIST_1][by][bx];
if (currMB->bi_pred_me && (pdir8 == 2) && currMB->mb_type==1)
{
all_mv = currMB->bi_pred_me == 1 ? img->bipred_mv1 : img->bipred_mv2;
ref = 0;
bw_ref = 0;
}
if (pdir8==-1) // intra
{
enc_picture->mv[LIST_0][by][bx][0] = 0;
enc_picture->mv[LIST_0][by][bx][1] = 0;
enc_picture->mv[LIST_1][by][bx][0] = 0;
enc_picture->mv[LIST_1][by][bx][1] = 0;
}
else if (pdir8==0) // list 0
{
enc_picture->mv[LIST_0][by][bx][0] = all_mv [j][i][LIST_0][ ref][mode8][0];
enc_picture->mv[LIST_0][by][bx][1] = all_mv [j][i][LIST_0][ ref][mode8][1];
enc_picture->mv[LIST_1][by][bx][0] = 0;
enc_picture->mv[LIST_1][by][bx][1] = 0;
enc_picture->ref_idx[LIST_1][by][bx] = -1;
}
else if (pdir8==1) // list 1
{
enc_picture->mv[LIST_0][by][bx][0] = 0;
enc_picture->mv[LIST_0][by][bx][1] = 0;
enc_picture->ref_idx[LIST_0][by][bx] = -1;
enc_picture->mv[LIST_1][by][bx][0] = all_mv [j][i][LIST_1][bw_ref][mode8][0];
enc_picture->mv[LIST_1][by][bx][1] = all_mv [j][i][LIST_1][bw_ref][mode8][1];
}
else if (pdir8==2) // bipredictive
{
enc_picture->mv[LIST_0][by][bx][0] = all_mv [j][i][LIST_0][ ref][mode8][0];
enc_picture->mv[LIST_0][by][bx][1] = all_mv [j][i][LIST_0][ ref][mode8][1];
enc_picture->mv[LIST_1][by][bx][0] = all_mv [j][i][LIST_1][bw_ref][mode8][0];
enc_picture->mv[LIST_1][by][bx][1] = all_mv [j][i][LIST_1][bw_ref][mode8][1];
}
else
{
error("invalid direction mode", 255);
}
}
}
}
// copy all the motion vectors into rdopt structure
// Can simplify this by copying the MV's of the best mode (TBD)
if(img->MbaffFrameFlag)
{
for(i = 0;i<4;i++)
{
for(j = 0;j<4;j++)
{
for (k = 0;k<2;k++)
{
for(l = 0;l<img->max_num_references;l++)
{
for(m = 0;m<9;m++)
{
rdopt->all_mv [j][i][k][l][m][0] = all_mv [j][i][k][l][m][0];
rdopt->pred_mv[j][i][k][l][m][0] = pred_mv[j][i][k][l][m][0];
rdopt->all_mv [j][i][k][l][m][1] = all_mv [j][i][k][l][m][1];
rdopt->pred_mv[j][i][k][l][m][1] = pred_mv[j][i][k][l][m][1];
}
}
}
}
}
}
}
/*!
*************************************************************************************
* \brief
* R-D Cost for a macroblock
*************************************************************************************
*/
int RDCost_for_macroblocks (double lambda, // <-- lagrange multiplier
int mode, // <-- modus (0-COPY/DIRECT, 1-16x16, 2-16x8, 3-8x16, 4-8x8(+), 5-Intra4x4, 6-Intra16x16)
double* min_rdcost, // <-> minimum rate-distortion cost
double* min_rate, // --> bitrate of mode which has minimum rate-distortion cost.
int i16mode )
{
int i, j, k; //, k, ****ip4;
int j1, j2;
int rate = 0, coeff_rate = 0;
int64 distortion = 0;
double rdcost;
int prev_mb_nr = FmoGetPreviousMBNr(img->current_mb_nr);
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
Macroblock *prevMB = (prev_mb_nr >= 0) ? &img->mb_data[prev_mb_nr] : NULL;
int bframe = (img->type==B_SLICE);
int tmp_cc;
int use_of_cc = (img->type!=I_SLICE && input->symbol_mode!=CABAC);
int cc_rate, dummy;
//=====
//===== SET REFERENCE FRAMES AND BLOCK MODES
//=====
SetModesAndRefframeForBlocks (mode);
//=====
//===== GET COEFFICIENTS, RECONSTRUCTIONS, CBP
//=====
if (bframe && mode==0)
{
int block_x=img->pix_x>>2;
int block_y=img->pix_y>>2;
for (j = block_y;j< block_y + 4;j++)
for (i = block_x;i<block_x + 4;i++)
if (direct_pdir[j][i] < 0)
return 0;
}
// Test MV limits for Skip Mode. This could be necessary for MBAFF case Frame MBs.
if ((img->MbaffFrameFlag) && (!currMB->mb_field) && (img->type==P_SLICE) && (mode==0) )
{
if ( img->all_mv[0][0][0][0][0][0] < -8192
|| img->all_mv[0][0][0][0][0][0] > 8191
|| img->all_mv[0][0][0][0][0][1] < LEVELMVLIMIT[img->LevelIndex][4]
|| img->all_mv[0][0][0][0][0][1] > LEVELMVLIMIT[img->LevelIndex][5])
return 0;
}
if (img->AdaptiveRounding)
{
memset(&(img->fadjust4x4[0][0][0]), 0, MB_PIXELS * sizeof(int));
memset(&(img->fadjust8x8[0][0][0]), 0, MB_PIXELS * sizeof(int));
memset(&(img->fadjust4x4Cr[0][0][0][0]), 0, img->mb_cr_size_y * img->mb_cr_size_x * sizeof(int));
memset(&(img->fadjust4x4Cr[0][1][0][0]), 0, img->mb_cr_size_y * img->mb_cr_size_x * sizeof(int));
}
if (mode<P8x8)
{
LumaResidualCoding ();
if(mode==0 && currMB->cbp!=0 && (img->type != B_SLICE || img->NoResidueDirect==1))
return 0;
if(mode==0 && currMB->cbp==0 && currMB->luma_transform_size_8x8_flag==1) //for B_skip, luma_transform_size_8x8_flag=0 only
return 0;
}
else if (mode==P8x8)
{
SetCoeffAndReconstruction8x8 (currMB);
}
else if (mode==I4MB)
{
currMB->cbp = Mode_Decision_for_Intra4x4Macroblock (lambda, &dummy);
}
else if (mode==I16MB)
{
Intra16x16_Mode_Decision (currMB, &i16mode);
}
else if(mode==I8MB)
{
currMB->cbp = Mode_Decision_for_new_Intra8x8Macroblock(lambda, &dummy);
}
else if(mode==IPCM)
{
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
j1 = j + img->opix_y;
j2 = j + img->pix_y;
for (i=img->opix_x; i<img->opix_x+MB_BLOCK_SIZE; i++)
enc_picture->imgY[j2][i] = imgY_org[j1][i];
}
if (img->yuv_format != YUV400)
{
// CHROMA
for (j = 0; j<img->mb_cr_size_y; j++)
{
j1 = j + img->opix_c_y;
j2 = j + img->pix_c_y;
for (i=img->opix_c_x; i<img->opix_c_x+img->mb_cr_size_x; i++)
{
enc_picture->imgUV[0][j2][i] = imgUV_org[0][j1][i];
enc_picture->imgUV[1][j2][i] = imgUV_org[1][j1][i];
}
}
}
for (j=0;j<4;j++)
for (i=0; i<(4+img->num_blk8x8_uv); i++)
img->nz_coeff[img->current_mb_nr][j][i] = 16;
}
if (input->rdopt==3 && img->type!=B_SLICE)
{
// We need the reconstructed prediction residue for the simulated decoders.
compute_residue_mb (mode==I16MB?i16mode:-1);
}
//Rate control
if (input->RCEnable)
{
if (mode == I16MB)
memcpy(pred,img->mprr_2[i16mode],MB_PIXELS * sizeof(imgpel));
else
memcpy(pred,img->mpr,MB_PIXELS * sizeof(imgpel));
}
img->i16offset = 0;
dummy = 0;
if ((img->yuv_format!=YUV400) && (mode != IPCM))
ChromaResidualCoding (&dummy);
if (mode==I16MB)
img->i16offset = I16Offset (currMB->cbp, i16mode);
//=====
//===== GET DISTORTION
//=====
// LUMA
if (input->rdopt==3 && img->type!=B_SLICE)
{
for (k = 0; k<input->NoOfDecoders ;k++)
{
decode_one_mb (k, currMB);
for (j = 0; j<MB_BLOCK_SIZE; j++)
{
for (i=img->opix_x; i<img->opix_x+MB_BLOCK_SIZE; i++)
distortion += img->quad [imgY_org[img->opix_y+j][i] - decs->decY[k][img->opix_y+j][i]];
}
}
distortion /= input->NoOfDecoders;
if (img->yuv_format != YUV400)
{
// CHROMA
for (j = 0; j<img->mb_cr_size_y; j++)
{
j1 = j + img->opix_c_y;
j2 = j + img->pix_c_y;
for (i=img->opix_c_x; i<img->opix_c_x+img->mb_cr_size_x; i++)
{
distortion += img->quad [imgUV_org[0][j1][i] - enc_picture->imgUV[0][j2][i]];
distortion += img->quad [imgUV_org[1][j1][i] - enc_picture->imgUV[1][j2][i]];
}
}
}
}
else
{
// LUMA
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
j1 = j + img->opix_y;
j2 = j + img->pix_y;
for (i=img->opix_x; i<img->opix_x+MB_BLOCK_SIZE; i++)
distortion += img->quad [imgY_org[j1][i] - enc_picture->imgY[j2][i]];
}
if (img->yuv_format != YUV400)
{
// CHROMA
for (j = 0; j<img->mb_cr_size_y; j++)
{
j1 = j + img->opix_c_y;
j2 = j + img->pix_c_y;
for (i=img->opix_c_x; i<img->opix_c_x+img->mb_cr_size_x; i++)
{
distortion += img->quad [imgUV_org[0][j1][i] - enc_picture->imgUV[0][j2][i]];
distortion += img->quad [imgUV_org[1][j1][i] - enc_picture->imgUV[1][j2][i]];
}
}
}
}
//===== S T O R E C O D I N G S T A T E =====
//---------------------------------------------------
store_coding_state (cs_cm);
//=====
//===== GET RATE
//=====
//----- macroblock header -----
if (use_of_cc)
{
if (currMB->mb_type!=0 || (bframe && currMB->cbp!=0))
{
// cod counter and macroblock mode are written ==> do not consider code counter
tmp_cc = img->cod_counter;
rate = writeMBLayer (1, &coeff_rate);
ue_linfo (tmp_cc, dummy, &cc_rate, &dummy);
rate -= cc_rate;
img->cod_counter = tmp_cc;
}
else
{
// cod counter is just increased ==> get additional rate
ue_linfo (img->cod_counter+1, dummy, &rate, &dummy);
ue_linfo (img->cod_counter, dummy, &cc_rate, &dummy);
rate -= cc_rate;
}
}
else
{
rate = writeMBLayer (1, &coeff_rate);
}
//===== R E S T O R E C O D I N G S T A T E =====
//-------------------------------------------------------
reset_coding_state (cs_cm);
rdcost = (double)distortion + lambda * dmax(0.5,(double)rate);
if (rdcost >= *min_rdcost ||
((img->qp_scaled)==0 && img->lossless_qpprime_flag==1 && distortion!=0))
{
#if FASTMODE
// Reordering RDCost comparison order of mode 0 and mode 1 in P_SLICE
// if RDcost of mode 0 and mode 1 is same, we choose best_mode is 0
// This might not always be good since mode 0 is more biased towards rate than quality.
if((img->type!=P_SLICE || mode != 0 || rdcost != *min_rdcost) || input->ProfileIDC>=FREXT_HP)
#endif
# 1712 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
return 0;
}
if ((img->MbaffFrameFlag) && (mode ? 0: ((img->type == B_SLICE) ? !currMB->cbp:1))) // AFF and current is skip
{
if (img->current_mb_nr & 0x01) //bottom
{
if (prevMB->mb_type ? 0:((img->type == B_SLICE) ? !prevMB->cbp:1)) //top is skip
{
if (!(field_flag_inference() == currMB->mb_field)) //skip only allowed when correct inference
return 0;
}
}
}
//===== U P D A T E M I N I M U M C O S T =====
//-----------------------------------------------------
*min_rdcost = rdcost;
*min_rate = lambda * (double)coeff_rate;
#ifdef BEST_NZ_COEFF
for (j=0;j<4;j++)
for (i=0; i<(4+img->num_blk8x8_uv); i++)
gaaiMBAFF_NZCoeff[j][i] = img->nz_coeff[img->current_mb_nr][j][i];
#endif
# 1738 "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
return 1;
}
/*!
*************************************************************************************
* \brief
* Store adaptive rounding parameters
*************************************************************************************
*/
void store_adaptive_rounding_parameters (int mode, Macroblock *currMB)
{
int j;
int is_inter = (mode != I4MB)&&(mode != I16MB)&&(mode != I8MB);
if (currMB->luma_transform_size_8x8_flag)
{
if ((mode == P8x8))
memcpy(&(bestInterFAdjust8x8[0][0]),&(img->fadjust8x8[2][0][0]),MB_PIXELS * sizeof(int));
else if (is_inter)
memcpy(&(bestInterFAdjust8x8[0][0]),&(img->fadjust8x8[0][0][0]),MB_PIXELS * sizeof(int));
else
memcpy(&(bestIntraFAdjust8x8[0][0]),&(img->fadjust8x8[1][0][0]),MB_PIXELS * sizeof(int));
}
else
{
if ((mode == P8x8))
memcpy(&(bestInterFAdjust4x4[0][0]),&(img->fadjust4x4[3][0][0]),MB_PIXELS * sizeof(int));
else if (is_inter)
memcpy(&(bestInterFAdjust4x4[0][0]),&(img->fadjust4x4[0][0][0]),MB_PIXELS * sizeof(int));
else
memcpy(&(bestIntraFAdjust4x4[0][0]),&(img->fadjust4x4[1 + mode == I16MB][0][0]),MB_PIXELS * sizeof(int));
}
if (input->AdaptRndChroma)
{
if (currMB->luma_transform_size_8x8_flag && mode == P8x8)
{
for (j = 0; j < img->mb_cr_size_y; j++)
{
memcpy(bestInterFAdjust4x4Cr[0][j],img->fadjust8x8Cr[0][0][j],img->mb_cr_size_x * sizeof(int));
memcpy(bestInterFAdjust4x4Cr[1][j],img->fadjust8x8Cr[0][1][j],img->mb_cr_size_x * sizeof(int));
}
}
else if (mode == P8x8)
{
for (j = 0; j < img->mb_cr_size_y; j++)
{
memcpy(bestInterFAdjust4x4Cr[0][j],img->fadjust4x4Cr[2][0][j],img->mb_cr_size_x * sizeof(int));
memcpy(bestInterFAdjust4x4Cr[1][j],img->fadjust4x4Cr[2][1][j],img->mb_cr_size_x * sizeof(int));
}
}
else if (is_inter)
{
for (j = 0; j < img->mb_cr_size_y; j++)
{
memcpy(bestInterFAdjust4x4Cr[0][j],img->fadjust4x4Cr[0][0][j],img->mb_cr_size_x * sizeof(int));
memcpy(bestInterFAdjust4x4Cr[1][j],img->fadjust4x4Cr[0][1][j],img->mb_cr_size_x * sizeof(int));
}
}
else
{
for (j = 0; j < img->mb_cr_size_y; j++)
{
memcpy(bestIntraFAdjust4x4Cr[0][j],img->fadjust4x4Cr[1][0][j],img->mb_cr_size_x * sizeof(int));
memcpy(bestIntraFAdjust4x4Cr[1][j],img->fadjust4x4Cr[1][1][j],img->mb_cr_size_x * sizeof(int));
}
}
}
}
/*!
*************************************************************************************
* \brief
* Store macroblock parameters
*************************************************************************************
*/
void store_macroblock_parameters (int mode)
{
int i, j, k, ****i4p, ***i3p;
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
int bframe = (img->type==B_SLICE);
//--- store best mode ---
best_mode = mode;
best_c_imode = currMB->c_ipred_mode;
best_i16offset = img->i16offset;
// If condition is not really necessary.
bi_pred_me = (mode == 1) ? currMB->bi_pred_me : 0;
memcpy(b8mode, currMB->b8mode, BLOCK_MULTIPLE * sizeof(int));
memcpy(b8pdir, currMB->b8pdir, BLOCK_MULTIPLE * sizeof(int));
memcpy(b4_intra_pred_modes,currMB->intra_pred_modes, MB_BLOCK_PARTITIONS * sizeof(char));
memcpy(b8_intra_pred_modes8x8,currMB->intra_pred_modes8x8, MB_BLOCK_PARTITIONS * sizeof(char));
for (j = 0 ; j < BLOCK_MULTIPLE; j++)
{
memcpy(&b4_ipredmode[j * BLOCK_MULTIPLE],&img->ipredmode[img->block_y + j][img->block_x],BLOCK_MULTIPLE * sizeof(char));
memcpy(b8_ipredmode8x8[j],&img->ipredmode8x8[img->block_y + j][img->block_x],BLOCK_MULTIPLE * sizeof(char));
}
//--- reconstructed blocks ----
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy(rec_mbY[j],&enc_picture->imgY[img->pix_y+j][img->pix_x], MB_BLOCK_SIZE * sizeof(imgpel));
}
if((img->type==SP_SLICE) && (si_frame_indicator==0 && sp2_frame_indicator==0))
{
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy(lrec_rec[j],&lrec[img->pix_y+j][img->pix_x], MB_BLOCK_SIZE * sizeof(int));//store coefficients SP frame
}
}
if (img->AdaptiveRounding)
store_adaptive_rounding_parameters (mode, currMB);
if (img->yuv_format != YUV400)
{
for (j = 0; j<img->mb_cr_size_y; j++)
{
memcpy(rec_mbU[j],&enc_picture->imgUV[0][img->pix_c_y+j][img->pix_c_x], img->mb_cr_size_x * sizeof(imgpel));
memcpy(rec_mbV[j],&enc_picture->imgUV[1][img->pix_c_y+j][img->pix_c_x], img->mb_cr_size_x * sizeof(imgpel));
}
if((img->type==SP_SLICE) && (si_frame_indicator==0 && sp2_frame_indicator==0))
{
//store uv coefficients SP frame
for (j = 0; j<img->mb_cr_size_y; j++)
{
memcpy(lrec_rec_U[j],&lrec_uv[0][img->pix_c_y+j][img->pix_c_x], img->mb_cr_size_x * sizeof(int));
memcpy(lrec_rec_V[j],&lrec_uv[1][img->pix_c_y+j][img->pix_c_x], img->mb_cr_size_x * sizeof(int));
}
}
}
//--- store results of decoders ---
if (input->rdopt==3 && img->type!=B_SLICE)
{
for (k = 0; k<input->NoOfDecoders; k++)
{
for (j=img->pix_y; j<img->pix_y+16; j++)
for (i=img->pix_x; i<img->pix_x+16; i++)
{
// Keep the decoded values of each MB for updating the ref frames
decs->decY_best[k][j][i] = decs->decY[k][j][i];
}
}
}
//--- coeff, cbp, kac ---
if (mode || bframe)
{
i4p=cofAC; cofAC=img->cofAC; img->cofAC=i4p;
i3p=cofDC; cofDC=img->cofDC; img->cofDC=i3p;
cbp = currMB->cbp;
cbp_blk = currMB->cbp_blk;
}
else
{
cbp_blk = cbp = 0;
}
//--- store transform size ---
luma_transform_size_8x8_flag = currMB->luma_transform_size_8x8_flag;
for (j = 0; j<4; j++)
memcpy(frefframe[j],&enc_picture->ref_idx[LIST_0][img->block_y+j][img->block_x], BLOCK_MULTIPLE * sizeof(char));
if (bframe)
{
for (j = 0; j<4; j++)
memcpy(brefframe[j],&enc_picture->ref_idx[LIST_1][img->block_y+j][img->block_x], BLOCK_MULTIPLE * sizeof(char));
}
}
/*!
*************************************************************************************
* \brief
* Set stored macroblock parameters
*************************************************************************************
*/
void set_stored_macroblock_parameters ()
{
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
imgpel **imgY = enc_picture->imgY;
imgpel ***imgUV = enc_picture->imgUV;
int mode = best_mode;
int bframe = (img->type==B_SLICE);
int i, j, k, ****i4p, ***i3p;
int block_x, block_y;
signed char **ipredmodes = img->ipredmode;
short *cur_mv;
//===== reconstruction values =====
for (j = 0; j < MB_BLOCK_SIZE; j++)
{
memcpy(&imgY[img->pix_y+j][img->pix_x],rec_mbY[j], MB_BLOCK_SIZE * sizeof(imgpel));
}
if((img->type==SP_SLICE) &&(si_frame_indicator==0 && sp2_frame_indicator==0 ))
{
for (j = 0; j < MB_BLOCK_SIZE; j++)
memcpy(&lrec[img->pix_y+j][img->pix_x],lrec_rec[j], MB_BLOCK_SIZE * sizeof(int)); //restore coeff SP frame
}
if(img->MbaffFrameFlag)
{
for (j = 0; j < MB_BLOCK_SIZE; j++)
memcpy(rdopt->rec_mbY[j],rec_mbY[j], MB_BLOCK_SIZE * sizeof(imgpel));
}
if (img->AdaptiveRounding)
{
update_offset_params(mode,luma_transform_size_8x8_flag);
}
if (img->yuv_format != YUV400)
{
for (j = 0; j<img->mb_cr_size_y; j++)
{
memcpy(&imgUV[0][img->pix_c_y+j][img->pix_c_x],rec_mbU[j], img->mb_cr_size_x * sizeof(imgpel));
memcpy(&imgUV[1][img->pix_c_y+j][img->pix_c_x],rec_mbV[j], img->mb_cr_size_x * sizeof(imgpel));
if((img->type==SP_SLICE) &&(!si_frame_indicator && !sp2_frame_indicator))
{
memcpy(&lrec_uv[0][img->pix_c_y+j][img->pix_c_x],lrec_rec_U[j], img->mb_cr_size_x * sizeof(int));
memcpy(&lrec_uv[1][img->pix_c_y+j][img->pix_c_x],lrec_rec_V[j], img->mb_cr_size_x * sizeof(int));
}
if(img->MbaffFrameFlag)
{
memcpy(rdopt->rec_mbU[j],rec_mbU[j], img->mb_cr_size_x * sizeof(imgpel));
memcpy(rdopt->rec_mbV[j],rec_mbV[j], img->mb_cr_size_x * sizeof(imgpel));
}
}
if((img->type==SP_SLICE) &&(!si_frame_indicator && !sp2_frame_indicator))
{
for (j = 0; j<img->mb_cr_size_y; j++)
{
memcpy(&lrec_uv[0][img->pix_c_y+j][img->pix_c_x],lrec_rec_U[j], img->mb_cr_size_x * sizeof(int));
memcpy(&lrec_uv[1][img->pix_c_y+j][img->pix_c_x],lrec_rec_V[j], img->mb_cr_size_x * sizeof(int));
}
}
if(img->MbaffFrameFlag)
{
for (j = 0; j<img->mb_cr_size_y; j++)
{
memcpy(rdopt->rec_mbU[j],rec_mbU[j], img->mb_cr_size_x * sizeof(imgpel));
memcpy(rdopt->rec_mbV[j],rec_mbV[j], img->mb_cr_size_x * sizeof(imgpel));
}
}
}
//===== coefficients and cbp =====
i4p=cofAC; cofAC=img->cofAC; img->cofAC=i4p;
i3p=cofDC; cofDC=img->cofDC; img->cofDC=i3p;
currMB->cbp = cbp;
currMB->cbp_blk = cbp_blk;
//==== macroblock type ====
currMB->mb_type = mode;
if(img->MbaffFrameFlag)
{
rdopt->mode = mode;
rdopt->i16offset = img->i16offset;
rdopt->cbp = cbp;
rdopt->cbp_blk = cbp_blk;
rdopt->mb_type = mode;
rdopt->prev_qp = currMB->prev_qp;
rdopt->prev_delta_qp = currMB->prev_delta_qp;
rdopt->delta_qp = currMB->delta_qp;
rdopt->qp = currMB->qp;
rdopt->prev_cbp = currMB->prev_cbp;
for(i = 0;i<4+img->num_blk8x8_uv;i++)
{
for(j = 0;j<4;j++)
for(k = 0;k<2;k++)
memcpy(rdopt->cofAC[i][j][k], img->cofAC[i][j][k], 65 * sizeof(int));
}
for(i = 0;i<3;i++)
for(k = 0;k<2;k++)
memcpy(rdopt->cofDC[i][k], img->cofDC[i][k], 18 * sizeof(int));
}
memcpy(currMB->b8mode,b8mode, BLOCK_MULTIPLE * sizeof(int));
memcpy(currMB->b8pdir,b8pdir, BLOCK_MULTIPLE * sizeof(int));
if(img->MbaffFrameFlag)
{
memcpy(rdopt->b8mode,b8mode, BLOCK_MULTIPLE * sizeof(int));
memcpy(rdopt->b8pdir,b8pdir, BLOCK_MULTIPLE * sizeof(int));
}
currMB->bi_pred_me = currMB->mb_type == 1 ? bi_pred_me : 0;
//if P8x8 mode and transform size 4x4 choosen, restore motion vector data for this transform size
if (mode == P8x8 && !luma_transform_size_8x8_flag && input->Transform8x8Mode)
RestoreMV8x8(1);
//==== transform size flag ====
if (((currMB->cbp & 15) == 0) && !(IS_OLDINTRA(currMB) || currMB->mb_type == I8MB))
currMB->luma_transform_size_8x8_flag = 0;
else
currMB->luma_transform_size_8x8_flag = luma_transform_size_8x8_flag;
rdopt->luma_transform_size_8x8_flag = currMB->luma_transform_size_8x8_flag;
if (input->rdopt==3 && img->type!=B_SLICE)
{
//! save the MB Mode of every macroblock
decs->dec_mb_mode[img->mb_y][img->mb_x] = mode;
}
//==== reference frames =====
for (j = 0; j < 4; j++)
{
block_y = img->block_y + j;
for (i = 0; i < 4; i++)
{
block_x = img->block_x + i;
k = 2*(j >> 1)+(i >> 1);
// backward prediction or intra
if ((currMB->b8pdir[k] == 1) || IS_INTRA(currMB))
{
enc_picture->ref_idx [LIST_0][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_0][block_y][block_x] = -1;
enc_picture->mv [LIST_0][block_y][block_x][0] = 0;
enc_picture->mv [LIST_0][block_y][block_x][1] = 0;
if(img->MbaffFrameFlag)
rdopt->refar[LIST_0][j][i] = -1;
}
else
{
if (currMB->bi_pred_me && (currMB->b8pdir[k] == 2) && currMB->mb_type==1)
{
cur_mv = currMB->bi_pred_me == 1
? img->bipred_mv1[j][i][LIST_0][0][currMB->b8mode[k]]
: img->bipred_mv2[j][i][LIST_0][0][currMB->b8mode[k]];
enc_picture->ref_idx [LIST_0][block_y][block_x] = 0;
enc_picture->ref_pic_id [LIST_0][block_y][block_x] = enc_picture->ref_pic_num[LIST_0 + currMB->list_offset][0];
enc_picture->mv [LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x][1] = cur_mv[1];
if(img->MbaffFrameFlag)
rdopt->refar[LIST_0][j][i] = 0;
}
else
{
cur_mv = img->all_mv[j][i][LIST_0][(short)frefframe[j][i]][currMB->b8mode[k]];
enc_picture->ref_idx [LIST_0][block_y][block_x] = frefframe[j][i];
enc_picture->ref_pic_id [LIST_0][block_y][block_x] = enc_picture->ref_pic_num[LIST_0 + currMB->list_offset][(short)frefframe[j][i]];
enc_picture->mv [LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x][1] = cur_mv[1];
if(img->MbaffFrameFlag)
rdopt->refar[LIST_0][j][i] = frefframe[j][i];
}
}
// forward prediction or intra
if ((currMB->b8pdir[k] == 0) || IS_INTRA(currMB))
{
enc_picture->ref_idx [LIST_1][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_1][block_y][block_x] = -1;
enc_picture->mv [LIST_1][block_y][block_x][0] = 0;
enc_picture->mv [LIST_1][block_y][block_x][1] = 0;
if(img->MbaffFrameFlag)
rdopt->refar[LIST_1][j][i] = -1;
}
}
}
if (bframe)
{
for (j=0; j<4; j++)
{
block_y = img->block_y + j;
for (i=0; i<4; i++)
{
block_x = img->block_x + i;
k = 2*(j >> 1)+(i >> 1);
// forward
if (IS_INTRA(currMB)||(currMB->b8pdir[k] == 0))
{
enc_picture->ref_idx [LIST_1][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_1][block_y][block_x] = -1;
enc_picture->mv [LIST_1][block_y][block_x][0] = 0;
enc_picture->mv [LIST_1][block_y][block_x][1] = 0;
if(img->MbaffFrameFlag)
rdopt->refar[LIST_1][j][i] = -1;
}
else
{
if (currMB->bi_pred_me && (currMB->b8pdir[k] == 2) && currMB->mb_type==1)
{
cur_mv = currMB->bi_pred_me == 1
? img->bipred_mv1[j][i][LIST_1][0][currMB->b8mode[k]]
: img->bipred_mv2[j][i][LIST_1][0][currMB->b8mode[k]];
enc_picture->ref_idx [LIST_1][block_y][block_x] = 0;
enc_picture->ref_pic_id [LIST_1][block_y][block_x] = enc_picture->ref_pic_num[LIST_1 + currMB->list_offset][0];
enc_picture->mv [LIST_1][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_1][block_y][block_x][1] = cur_mv[1];
if(img->MbaffFrameFlag)
rdopt->refar[LIST_1][j][i] = 0;
}
else
{
cur_mv = img->all_mv[j][i][LIST_1][(short)brefframe[j][i]][currMB->b8mode[k]];
enc_picture->ref_idx [LIST_1][block_y][block_x] = brefframe[j][i];
enc_picture->ref_pic_id [LIST_1][block_y][block_x] = enc_picture->ref_pic_num[LIST_1 + currMB->list_offset][(short)brefframe[j][i]];
enc_picture->mv [LIST_1][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_1][block_y][block_x][1] = cur_mv[1];
if(img->MbaffFrameFlag)
rdopt->refar[LIST_1][j][i] = brefframe[j][i];
}
}
}
}
}
//==== intra prediction modes ====
currMB->c_ipred_mode = best_c_imode;
img->i16offset = best_i16offset;
if(currMB->mb_type == I8MB)
{
memcpy(currMB->intra_pred_modes8x8,b8_intra_pred_modes8x8, MB_BLOCK_PARTITIONS * sizeof(char));
memcpy(currMB->intra_pred_modes,b8_intra_pred_modes8x8, MB_BLOCK_PARTITIONS * sizeof(char));
for(j = 0; j < BLOCK_MULTIPLE; j++)
{
memcpy(&img->ipredmode[img->block_y+j][img->block_x],b8_ipredmode8x8[j], BLOCK_MULTIPLE * sizeof(char));
memcpy(&img->ipredmode8x8[img->block_y+j][img->block_x], b8_ipredmode8x8[j], BLOCK_MULTIPLE * sizeof(char));
}
}
else if (mode!=I4MB && mode!=I8MB)
{
memset(currMB->intra_pred_modes,DC_PRED, MB_BLOCK_PARTITIONS * sizeof(char));
for(j = img->block_y; j < img->block_y + BLOCK_MULTIPLE; j++)
memset(&img->ipredmode[j][img->block_x], DC_PRED, BLOCK_MULTIPLE * sizeof(char));
}
// Residue Color Transform
else if (mode == I4MB)
{
memcpy(currMB->intra_pred_modes,b4_intra_pred_modes, MB_BLOCK_PARTITIONS * sizeof(char));
for(j = 0; j < BLOCK_MULTIPLE; j++)
memcpy(&img->ipredmode[img->block_y + j][img->block_x],&b4_ipredmode[BLOCK_MULTIPLE * j], BLOCK_MULTIPLE * sizeof(char));
}
if(img->MbaffFrameFlag)
{
rdopt->c_ipred_mode = currMB->c_ipred_mode;
rdopt->i16offset = img->i16offset;
memcpy(rdopt->intra_pred_modes,currMB->intra_pred_modes, MB_BLOCK_PARTITIONS * sizeof(char));
memcpy(rdopt->intra_pred_modes8x8,currMB->intra_pred_modes8x8, MB_BLOCK_PARTITIONS * sizeof(char));
for(j = img->block_y; j < img->block_y +BLOCK_MULTIPLE; j++)
memcpy(&rdopt->ipredmode[j][img->block_x],&ipredmodes[j][img->block_x], BLOCK_MULTIPLE * sizeof(char));
}
//==== motion vectors =====
SetMotionVectorsMB (currMB, bframe);
}
/*!
*************************************************************************************
* \brief
* Set reference frames and motion vectors
*************************************************************************************
*/
void SetRefAndMotionVectors (int block, int mode, int pdir, int fwref, int bwref)
{
int i, j=0;
int bslice = (img->type==B_SLICE);
int pmode = (mode==1||mode==2||mode==3?mode:4);
int j0 = ((block >> 1)<<1);
int i0 = ((block & 0x01)<<1);
int j1 = j0 + (input->part_size[pmode][1]);
int i1 = i0 + (input->part_size[pmode][0]);
int block_x, block_y;
short *cur_mv;
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
if (pdir<0)
{
for (j = img->block_y + j0; j < img->block_y + j1; j++)
{
for (i=img->block_x + i0; i<img->block_x +i1; i++)
{
enc_picture->ref_pic_id[LIST_0][j][i] = -1;
enc_picture->ref_pic_id[LIST_1][j][i] = -1;
}
memset(&enc_picture->ref_idx[LIST_0][j][img->block_x + i0], -1, (input->part_size[pmode][0]) * sizeof(char));
memset(&enc_picture->ref_idx[LIST_1][j][img->block_x + i0], -1, (input->part_size[pmode][0]) * sizeof(char));
memset(enc_picture->mv[LIST_0][j][img->block_x + i0], 0, 2*(input->part_size[pmode][0]) * sizeof(short));
memset(enc_picture->mv[LIST_1][j][img->block_x + i0], 0, 2*(input->part_size[pmode][0]) * sizeof(short));
}
return;
}
if (!bslice)
{
for (j=j0; j<j1; j++)
{
block_y = img->block_y + j;
memset(&enc_picture->ref_idx [LIST_0][block_y][img->block_x + i0], fwref, (input->part_size[pmode][0]) * sizeof(char));
for (i=i0; i<i1; i++)
{
block_x = img->block_x + i;
cur_mv = img->all_mv[j][i][LIST_0][fwref][mode];
enc_picture->mv [LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x][1] = cur_mv[1];
enc_picture->ref_pic_id[LIST_0][block_y][block_x] = enc_picture->ref_pic_num[LIST_0+currMB->list_offset][fwref];
}
}
return;
}
else
{
for (j=j0; j<j1; j++)
{
block_y = img->block_y + j;
for (i=i0; i<i1; i++)
{
block_x = img->block_x + i;
if (mode==0)
{
pdir = direct_pdir[block_y][block_x];
fwref = direct_ref_idx[LIST_0][block_y][block_x];
bwref = direct_ref_idx[LIST_1][block_y][block_x];
}
if ((pdir==0 || pdir==2))
{
if (currMB->bi_pred_me && (pdir == 2) && mode == 1)
{
cur_mv = currMB->bi_pred_me == 1
? img->bipred_mv1[j][i][LIST_0][0][mode]
: img->bipred_mv2[j][i][LIST_0][0][mode];
enc_picture->mv [LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x][1] = cur_mv[1];
enc_picture->ref_idx [LIST_0][block_y][block_x] = 0;
enc_picture->ref_pic_id[LIST_0][block_y][block_x] = enc_picture->ref_pic_num[LIST_0+currMB->list_offset][0];
}
else
{
cur_mv = img->all_mv[j][i][LIST_0][fwref][mode];
enc_picture->mv [LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x][1] = cur_mv[1];
enc_picture->ref_idx [LIST_0][block_y][block_x] = fwref;
enc_picture->ref_pic_id[LIST_0][block_y][block_x] =
enc_picture->ref_pic_num[LIST_0+currMB->list_offset][(short)enc_picture->ref_idx[LIST_0][block_y][block_x]];
}
}
else
{
enc_picture->mv [LIST_0][block_y][block_x][0] = 0;
enc_picture->mv [LIST_0][block_y][block_x][1] = 0;
enc_picture->ref_idx [LIST_0][block_y][block_x] = -1;
enc_picture->ref_pic_id[LIST_0][block_y][block_x] = -1;
}
if ((pdir==1 || pdir==2))
{
if (currMB->bi_pred_me && (pdir == 2) && mode == 1)
{
cur_mv = currMB->bi_pred_me == 1
? img->bipred_mv1[j][i][LIST_1][0][mode]
: img->bipred_mv2[j][i][LIST_1][0][mode];
enc_picture->mv [LIST_1][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_1][block_y][block_x][1] = cur_mv[1];
enc_picture->ref_idx [LIST_1][block_y][block_x] = 0;
enc_picture->ref_pic_id[LIST_1][block_y][block_x] = enc_picture->ref_pic_num[LIST_1+currMB->list_offset][0];
}
else
{
cur_mv = img->all_mv[j][i][LIST_1][bwref][mode];
enc_picture->mv [LIST_1][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_1][block_y][block_x][1] = cur_mv[1];
enc_picture->ref_idx [LIST_1][block_y][block_x] = bwref;
enc_picture->ref_pic_id[LIST_1][block_y][block_x] =
enc_picture->ref_pic_num[LIST_1+currMB->list_offset][(short)enc_picture->ref_idx[LIST_1][block_y][block_x]];
}
}
else
{
enc_picture->mv [LIST_1][block_y][block_x][0] = 0;
enc_picture->mv [LIST_1][block_y][block_x][1] = 0;
enc_picture->ref_idx [LIST_1][block_y][block_x] = -1;
enc_picture->ref_pic_id[LIST_1][block_y][block_x] = -1;
}
}
}
}
}
/*!
*************************************************************************************
* \brief
* skip macroblock field inference
* \return
* inferred field flag
*************************************************************************************
*/
int field_flag_inference()
{
int mb_field;
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
if (currMB->mbAvailA)
{
mb_field = img->mb_data[currMB->mbAddrA].mb_field;
}
else
{
// check top macroblock pair
if (currMB->mbAvailB)
mb_field = img->mb_data[currMB->mbAddrB].mb_field;
else
mb_field = 0;
}
return mb_field;
}
/*!
*************************************************************************************
* \brief
* Store motion vectors for 8x8 partition
*************************************************************************************
*/
void StoreMVBlock8x8(int dir, int block8x8, int mode, int ref, int bw_ref, int pdir8, int bframe)
{
int i, j, i0, j0, ii, jj;
short ******all_mv = img->all_mv;
short ******pred_mv = img->pred_mv;
short (*lc_l0_mv8x8)[4][2] = all_mv8x8[dir][LIST_0];
short (*lc_l1_mv8x8)[4][2] = all_mv8x8[dir][LIST_1];
short (*lc_pr_mv8x8)[4][2] = NULL;
i0 = (block8x8 & 0x01) << 1;
j0 = (block8x8 >> 1) << 1;
ii = i0+2;
jj = j0+2;
if (!bframe)
{
if (pdir8>=0) //(mode8!=IBLOCK)&&(mode8!=I16MB)) // && ref != -1)
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
for (i=i0; i<ii; i++)
{
lc_l0_mv8x8[j][i][0] = all_mv [j][i][LIST_0][ref][4][0];
lc_l0_mv8x8[j][i][1] = all_mv [j][i][LIST_0][ref][4][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_0][ref][4][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_0][ref][4][1];
}
}
}
else
{
if (pdir8 == 0) // list0
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
for (i=i0; i<ii; i++)
{
lc_l0_mv8x8[j][i][0] = all_mv [j][i][LIST_0][ref][mode][0];
lc_l0_mv8x8[j][i][1] = all_mv [j][i][LIST_0][ref][mode][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_0][ref][mode][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_0][ref][mode][1];
}
}
else if (pdir8 == 1) // list1
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_1];
for (j=j0; j<jj; j++)
for (i=i0; i<ii; i++)
{
lc_l1_mv8x8[j][i][0] = all_mv [j][i][LIST_1][bw_ref][mode][0];
lc_l1_mv8x8[j][i][1] = all_mv [j][i][LIST_1][bw_ref][mode][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_1][bw_ref][mode][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_1][bw_ref][mode][1];
}
}
else if (pdir8==2) // bipred
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
lc_l0_mv8x8[j][i][0] = all_mv [j][i][LIST_0][ref][mode][0];
lc_l0_mv8x8[j][i][1] = all_mv [j][i][LIST_0][ref][mode][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_0][ref][mode][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_0][ref][mode][1];
}
}
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_1];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
lc_l1_mv8x8[j][i][0] = all_mv [j][i][LIST_1][bw_ref][mode][0];
lc_l1_mv8x8[j][i][1] = all_mv [j][i][LIST_1][bw_ref][mode][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_1][bw_ref][mode][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_1][bw_ref][mode][1];
}
}
}
else
{
error("invalid direction mode", 255);
}
}
}
/*!
*************************************************************************************
* \brief
* Store motion vectors of 8x8 partitions of one macroblock
*************************************************************************************
*/
void StoreMV8x8(int dir)
{
int block8x8;
int bframe = (img->type == B_SLICE);
for (block8x8=0; block8x8<4; block8x8++)
StoreMVBlock8x8(dir, block8x8, tr8x8.part8x8mode[block8x8], tr8x8.part8x8fwref[block8x8],
tr8x8.part8x8bwref[block8x8], tr8x8.part8x8pdir[block8x8], bframe);
}
/*!
*************************************************************************************
* \brief
* Restore motion vectors for 8x8 partition
*************************************************************************************
*/
void RestoreMVBlock8x8(int dir, int block8x8, RD_8x8DATA tr, int bframe)
{
int i, j, i0, j0, ii, jj;
short ******all_mv = img->all_mv;
short ******pred_mv = img->pred_mv;
short (*lc_l0_mv8x8)[4][2] = all_mv8x8[dir][LIST_0];
short (*lc_l1_mv8x8)[4][2] = all_mv8x8[dir][LIST_1];
short (*lc_pr_mv8x8)[4][2] = NULL;
short pdir8 = tr.part8x8pdir [block8x8];
short mode = tr.part8x8mode [block8x8];
short ref = tr.part8x8fwref[block8x8];
short bw_ref = tr.part8x8bwref[block8x8];
i0 = (block8x8 & 0x01) << 1;
j0 = (block8x8 >> 1) << 1;
ii = i0+2;
jj = j0+2;
if (!bframe)
{
if (pdir8>=0) //(mode8!=IBLOCK)&&(mode8!=I16MB)) // && ref != -1)
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
for (i=i0; i<ii; i++)
{
all_mv [j][i][LIST_0][ref][4][0] = lc_l0_mv8x8[j][i][0] ;
all_mv [j][i][LIST_0][ref][4][1] = lc_l0_mv8x8[j][i][1] ;
pred_mv[j][i][LIST_0][ref][4][0] = lc_pr_mv8x8[j][i][0];
pred_mv[j][i][LIST_0][ref][4][1] = lc_pr_mv8x8[j][i][1];
}
}
}
else
{
if (pdir8==0) // forward
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
all_mv [j][i][LIST_0][ref][mode][0] = lc_l0_mv8x8[j][i][0] ;
all_mv [j][i][LIST_0][ref][mode][1] = lc_l0_mv8x8[j][i][1] ;
pred_mv[j][i][LIST_0][ref][mode][0] = lc_pr_mv8x8[j][i][0];
pred_mv[j][i][LIST_0][ref][mode][1] = lc_pr_mv8x8[j][i][1];
}
}
}
else if (pdir8==1) // backward
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_1];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
all_mv [j][i][LIST_1][bw_ref][mode][0] = lc_l1_mv8x8[j][i][0] ;
all_mv [j][i][LIST_1][bw_ref][mode][1] = lc_l1_mv8x8[j][i][1] ;
pred_mv[j][i][LIST_1][bw_ref][mode][0] = lc_pr_mv8x8[j][i][0];
pred_mv[j][i][LIST_1][bw_ref][mode][1] = lc_pr_mv8x8[j][i][1];
}
}
}
else if (pdir8==2) // bidir
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
all_mv [j][i][LIST_0][ref][mode][0] = lc_l0_mv8x8[j][i][0] ;
all_mv [j][i][LIST_0][ref][mode][1] = lc_l0_mv8x8[j][i][1] ;
pred_mv[j][i][LIST_0][ref][mode][0] = lc_pr_mv8x8[j][i][0];
pred_mv[j][i][LIST_0][ref][mode][1] = lc_pr_mv8x8[j][i][1];
}
}
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_1];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
all_mv [j][i][LIST_1][bw_ref][mode][0] = lc_l1_mv8x8[j][i][0] ;
all_mv [j][i][LIST_1][bw_ref][mode][1] = lc_l1_mv8x8[j][i][1] ;
pred_mv[j][i][LIST_1][bw_ref][mode][0] = lc_pr_mv8x8[j][i][0];
pred_mv[j][i][LIST_1][bw_ref][mode][1] = lc_pr_mv8x8[j][i][1];
}
}
}
else
{
error("invalid direction mode", 255);
}
}
}
/*!
*************************************************************************************
* \brief
* Restore motion vectors of 8x8 partitions of one macroblock
*************************************************************************************
*/
void RestoreMV8x8(int dir)
{
int block8x8;
int bframe = (img->type == B_SLICE);
for (block8x8=0; block8x8<4; block8x8++)
RestoreMVBlock8x8(dir, block8x8, tr8x8, bframe);
}
/*!
*************************************************************************************
* \brief
* Store predictors for 8x8 partition
*************************************************************************************
*/
void StoreNewMotionVectorsBlock8x8(int dir, int block8x8, int mode, int fw_ref, int bw_ref, int pdir8, int bframe)
{
int i, j, i0, j0, ii, jj;
short ******all_mv = img->all_mv;
short ******pred_mv = img->pred_mv;
short (*lc_l0_mv8x8)[4][2] = all_mv8x8[dir][LIST_0];
short (*lc_l1_mv8x8)[4][2] = all_mv8x8[dir][LIST_1];
short (*lc_pr_mv8x8)[4][2] = NULL;
i0 = (block8x8 & 0x01) << 1;
j0 = (block8x8 >> 1) << 1;
ii = i0+2;
jj = j0+2;
if (pdir8<0)
{
for (j=j0; j<jj; j++)
{
memset(&lc_l0_mv8x8[j][i0], 0, 4 * sizeof(short));
memset(&lc_l1_mv8x8[j][i0], 0, 4 * sizeof(short));
}
return;
}
if (!bframe)
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
{
for (i=i0; i<ii; i++)
{
lc_l0_mv8x8[j][i][0] = all_mv [j][i][LIST_0][fw_ref][4][0];
lc_l0_mv8x8[j][i][1] = all_mv [j][i][LIST_0][fw_ref][4][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_0][fw_ref][4][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_0][fw_ref][4][1];
}
memset(&lc_l1_mv8x8[j][i0], 0, 4 * sizeof(short));
}
return;
}
else
{
if ((pdir8==0 || pdir8==2))
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_0];
for (j=j0; j<jj; j++)
for (i=i0; i<ii; i++)
{
lc_l0_mv8x8[j][i][0] = all_mv [j][i][LIST_0][fw_ref][mode][0];
lc_l0_mv8x8[j][i][1] = all_mv [j][i][LIST_0][fw_ref][mode][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_0][fw_ref][mode][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_0][fw_ref][mode][1];
}
}
else
{
for (j=j0; j<jj; j++)
memset(&lc_l0_mv8x8[j][i0], 0, 4 * sizeof(short));
}
if ((pdir8==1 || pdir8==2))
{
lc_pr_mv8x8 = pred_mv8x8[dir][LIST_1];
for (j=j0; j<jj; j++)
for (i=i0; i<ii; i++)
{
lc_l1_mv8x8[j][i][0] = all_mv [j][i][LIST_1][bw_ref][mode][0];
lc_l1_mv8x8[j][i][1] = all_mv [j][i][LIST_1][bw_ref][mode][1];
lc_pr_mv8x8[j][i][0] = pred_mv[j][i][LIST_1][bw_ref][mode][0];
lc_pr_mv8x8[j][i][1] = pred_mv[j][i][LIST_1][bw_ref][mode][1];
}
}
else
{
for (j=j0; j<jj; j++)
memset(&lc_l1_mv8x8[j][i0], 0, 4 * sizeof(short));
}
}
}
/*!
************************************************************************
* \brief
* Makes the decision if 8x8 tranform will be used (for RD-off)
************************************************************************
*/
int GetBestTransformP8x8()
{
int block_y, block_x, pic_pix_y, pic_pix_x, i, j, k;
int mb_y, mb_x, block8x8;
int cost8x8=0, cost4x4=0;
int *diff_ptr;
if(input->Transform8x8Mode==2) //always allow 8x8 transform
return 1;
for (block8x8=0; block8x8<4; block8x8++)
{
mb_y = (block8x8 >> 1) << 3;
mb_x = (block8x8 & 0x01) << 3;
//===== loop over 4x4 blocks =====
k=0;
for (block_y=mb_y; block_y<mb_y+8; block_y+=4)
{
pic_pix_y = img->opix_y + block_y;
//get cost for transform size 4x4
for (block_x=mb_x; block_x<mb_x+8; block_x+=4)
{
pic_pix_x = img->opix_x + block_x;
//===== get displaced frame difference ======
diff_ptr=&diff4x4[k];
for (j=0; j<4; j++)
{
for (i=0; i<4; i++, k++)
{
//4x4 transform size
diff4x4[k] = imgY_org[pic_pix_y+j][pic_pix_x+i] - tr4x4.mpr8x8[j+block_y][i+block_x];
//8x8 transform size
diff8x8[k] = imgY_org[pic_pix_y+j][pic_pix_x+i] - tr8x8.mpr8x8[j+block_y][i+block_x];
}
}
cost4x4 += distortion4x4 (diff_ptr);
}
}
cost8x8 += distortion8x8 (diff8x8);
}
return (cost8x8 < cost4x4);
}
/*!
************************************************************************
* \brief
* Sets MBAFF RD parameters
************************************************************************
*/
void set_mbaff_parameters()
{
int i, j, k;
Macroblock *currMB = &img->mb_data[img->current_mb_nr];
int mode = best_mode;
int bframe = (img->type==B_SLICE);
signed char **ipredmodes = img->ipredmode;
//===== reconstruction values =====
for (j=0; j < MB_BLOCK_SIZE; j++)
memcpy(rdopt->rec_mbY[j],&enc_picture->imgY[img->pix_y + j][img->pix_x], MB_BLOCK_SIZE * sizeof(imgpel));
if (img->yuv_format != YUV400)
{
for (j=0; j<img->mb_cr_size_y; j++)
{
memcpy(rdopt->rec_mbU[j],&enc_picture->imgUV[0][img->pix_c_y + j][img->pix_c_x], img->mb_cr_size_x * sizeof(imgpel));
memcpy(rdopt->rec_mbV[j],&enc_picture->imgUV[1][img->pix_c_y + j][img->pix_c_x], img->mb_cr_size_x * sizeof(imgpel));
}
}
//===== coefficients and cbp =====
rdopt->mode = mode;
rdopt->i16offset = img->i16offset;
rdopt->cbp = currMB->cbp;
rdopt->cbp_blk = currMB->cbp_blk;
rdopt->mb_type = currMB->mb_type;
rdopt->luma_transform_size_8x8_flag = currMB->luma_transform_size_8x8_flag;
if(rdopt->mb_type == 0 && mode != 0)
{
mode=0;
rdopt->mode=0;
}
for(i=0;i<4+img->num_blk8x8_uv;i++)
{
for(j=0;j<4;j++)
for(k=0;k<2;k++)
memcpy(rdopt->cofAC[i][j][k], img->cofAC[i][j][k], 65 * sizeof(int));
}
for(i=0;i<3;i++)
{
for(k=0;k<2;k++)
memcpy(rdopt->cofDC[i][k], img->cofDC[i][k], 18 * sizeof(int));
}
memcpy(rdopt->b8mode,currMB->b8mode, BLOCK_MULTIPLE * sizeof(int));
memcpy(rdopt->b8pdir,currMB->b8pdir, BLOCK_MULTIPLE * sizeof(int));
//==== reference frames =====
if (bframe)
{
for (j = 0; j < BLOCK_MULTIPLE; j++)
{
memcpy(rdopt->refar[LIST_0][j],&enc_picture->ref_idx[LIST_0][img->block_y + j][img->block_x] , BLOCK_MULTIPLE * sizeof(char));
memcpy(rdopt->refar[LIST_1][j],&enc_picture->ref_idx[LIST_1][img->block_y + j][img->block_x] , BLOCK_MULTIPLE * sizeof(char));
}
rdopt->bi_pred_me = currMB->bi_pred_me;
}
else
{
for (j = 0; j < BLOCK_MULTIPLE; j++)
memcpy(rdopt->refar[LIST_0][j],&enc_picture->ref_idx[LIST_0][img->block_y + j][img->block_x] , BLOCK_MULTIPLE * sizeof(char));
}
memcpy(rdopt->intra_pred_modes,currMB->intra_pred_modes, MB_BLOCK_PARTITIONS * sizeof(char));
memcpy(rdopt->intra_pred_modes8x8,currMB->intra_pred_modes8x8, MB_BLOCK_PARTITIONS * sizeof(char));
for (j = img->block_y; j < img->block_y + 4; j++)
{
memcpy(&rdopt->ipredmode[j][img->block_x],&ipredmodes[j][img->block_x], BLOCK_MULTIPLE * sizeof(char));
}
}
/*!
************************************************************************
* \brief
* store coding state (for rd-optimized mode decision), used for 8x8 transformation
************************************************************************
*/
void store_coding_state_cs_cm()
{
store_coding_state(cs_cm);
}
/*!
************************************************************************
* \brief
* restore coding state (for rd-optimized mode decision), used for 8x8 transformation
************************************************************************
*/
void reset_coding_state_cs_cm()
{
reset_coding_state(cs_cm);
}
/*!
************************************************************************
* \brief
* update rounding offsets based on JVT-N011
************************************************************************
*/
void update_offset_params(int mode, int luma_transform_size_8x8_flag)
{
int is_inter = (mode != I4MB)&&(mode != I16MB) && (mode != I8MB);
int luma_pos = AdaptRndPos[(is_inter<<1) + luma_transform_size_8x8_flag][img->type];
int i,j;
int temp = 0;
int offsetRange = 1 << (OffsetBits - 1);
int blk_mask = 0x03 + (luma_transform_size_8x8_flag<<2);
int blk_shift = 2 + luma_transform_size_8x8_flag;
short **offsetList = luma_transform_size_8x8_flag ? OffsetList8x8 : OffsetList4x4;
int **fAdjust = is_inter
? (luma_transform_size_8x8_flag ? bestInterFAdjust8x8 : bestInterFAdjust4x4)
: (luma_transform_size_8x8_flag ? bestIntraFAdjust8x8 : bestIntraFAdjust4x4);
for (j=0; j < MB_BLOCK_SIZE; j++)
{
int j_pos = ((j & blk_mask)<<blk_shift);
for (i=0; i < MB_BLOCK_SIZE; i++)
{
temp = j_pos + (i & blk_mask);
offsetList[luma_pos][temp] += fAdjust[j][i];
offsetList[luma_pos][temp] = iClip3(0,offsetRange,offsetList[luma_pos][temp]);
}
}
if (input->AdaptRndChroma)
{
int u_pos = AdaptRndCrPos[is_inter][img->type];
int v_pos = u_pos + 1;
int jpos;
int ***fAdjustCr = is_inter ? bestInterFAdjust4x4Cr : bestIntraFAdjust4x4Cr;
for (j=0; j < img->mb_cr_size_y; j++)
{
jpos = ((j & 0x03)<<2);
for (i=0; i < img->mb_cr_size_x; i++)
{
temp = jpos + (i & 0x03);
OffsetList4x4[u_pos][temp] += fAdjustCr[0][j][i];
OffsetList4x4[u_pos][temp] = iClip3(0,offsetRange,OffsetList4x4[u_pos][temp]);
OffsetList4x4[v_pos][temp] += fAdjustCr[1][j][i];
OffsetList4x4[v_pos][temp] = iClip3(0,offsetRange,OffsetList4x4[v_pos][temp]);
}
}
}
}
void assign_enc_picture_params(int mode, signed char best_pdir, int block, int list_offset, int best_fw_ref, int best_bw_ref, int bframe)
{
int i,j;
int block_x, block_y;
short *cur_mv;
if (mode==1)
{
if (best_pdir==1)
{
for (j=img->block_y+(block&2); j<img->block_y+(block&2) + BLOCK_MULTIPLE; j++)
{
block_x = img->block_x+(block&1)*2;
memset(&enc_picture->ref_idx[LIST_0][j][block_x], -1 , BLOCK_MULTIPLE * sizeof(char));
memset(enc_picture->mv [LIST_0][j][block_x], 0 , 2 * BLOCK_MULTIPLE * sizeof(short));
for (i=block_x; i<block_x + BLOCK_MULTIPLE; i++)
{
enc_picture->ref_pic_id [LIST_0][j][i] = -1;
}
}
}
else if (img->bi_pred_me[mode])
{
for (j=0; j<BLOCK_MULTIPLE; j++)
{
block_y = img->block_y+(block&2)+j;
block_x = img->block_x+(block&1)*2;
memset(&enc_picture->ref_idx[LIST_0][block_y][block_x], 0, BLOCK_MULTIPLE * sizeof(char));
for (i=0; i<BLOCK_MULTIPLE; i++)
{
cur_mv = img->bi_pred_me[mode] == 1
? img->bipred_mv1[i][j][LIST_0][0][mode]
: img->bipred_mv2[i][j][LIST_0][0][mode];
enc_picture->ref_pic_id [LIST_0][block_y][block_x + i] = enc_picture->ref_pic_num[LIST_0 + list_offset][0];
enc_picture->mv [LIST_0][block_y][block_x + i][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x + i][1] = cur_mv[1];
}
}
}
else
{
for (j=0; j<BLOCK_MULTIPLE; j++)
{
block_y = img->block_y+(block&2)+j;
block_x = img->block_x+(block&1)*2;
memset(&enc_picture->ref_idx[LIST_0][block_y][block_x], best_fw_ref , BLOCK_MULTIPLE * sizeof(char));
for (i=0; i<BLOCK_MULTIPLE; i++)
{
cur_mv = img->all_mv[j][i][LIST_0][best_fw_ref][mode];
enc_picture->ref_pic_id [LIST_0][block_y][block_x + i] = enc_picture->ref_pic_num[LIST_0 + list_offset][best_fw_ref];
enc_picture->mv [LIST_0][block_y][block_x + i][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x + i][1] = cur_mv[1];
}
}
}
if (bframe)
{
if (best_pdir==0)
{
for (j=img->block_y+(block&2); j<img->block_y+(block&2) + BLOCK_MULTIPLE; j++)
{
block_x = img->block_x+(block&1)*2;
memset(&enc_picture->ref_idx[LIST_1][j][block_x], -1 , BLOCK_MULTIPLE * sizeof(char));
memset(enc_picture->mv[LIST_1][j][block_x], 0 , 2 * BLOCK_MULTIPLE * sizeof(short));
for (i=block_x; i<block_x + BLOCK_MULTIPLE; i++)
{
enc_picture->ref_pic_id [LIST_1][j][i] = -1;
}
}
}
else
{
if (img->bi_pred_me[mode])
{
for (j=0; j<BLOCK_MULTIPLE; j++)
{
block_y = img->block_y+(block&2)+j;
block_x = img->block_x+(block&1)*2;
memset(&enc_picture->ref_idx[LIST_1][block_y][block_x], 0, BLOCK_MULTIPLE * sizeof(char));
for (i=0; i<BLOCK_MULTIPLE; i++)
{
cur_mv = img->bi_pred_me[mode] == 1
? img->bipred_mv1[i][j][LIST_1][0][mode]
: img->bipred_mv2[i][j][LIST_1][0][mode];
enc_picture->ref_pic_id [LIST_1][block_y][block_x + i] =
enc_picture->ref_pic_num[LIST_1 + list_offset][0];
enc_picture->mv [LIST_1][block_y][block_x + i][0] = cur_mv[0];
enc_picture->mv [LIST_1][block_y][block_x + i][1] = cur_mv[1];
}
}
}
else
{
for (j=0; j<BLOCK_MULTIPLE; j++)
{
block_y = img->block_y+(block&2)+j;
block_x = img->block_x+(block&1)*2;
memset(&enc_picture->ref_idx[LIST_1][block_y][block_x], best_bw_ref, BLOCK_MULTIPLE * sizeof(char));
for (i=0; i<BLOCK_MULTIPLE; i++)
{
enc_picture->ref_pic_id [LIST_1][block_y][block_x + i] =
enc_picture->ref_pic_num[LIST_1 + list_offset][best_bw_ref];
if(best_bw_ref>=0)
{
cur_mv = img->all_mv[j][i][LIST_1][best_bw_ref][mode];
enc_picture->mv[LIST_1][block_y][block_x + i][0] = cur_mv[0];
enc_picture->mv[LIST_1][block_y][block_x + i][1] = cur_mv[1];
}
}
}
}
}
}
}
else if (mode==2)
{
for (j=0; j<2; j++)
{
block_y = img->block_y + block * 2 + j;
for (i=0; i<BLOCK_MULTIPLE; i++)
{
block_x = img->block_x + i;
if (best_pdir==1)
{
enc_picture->ref_idx [LIST_0][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_0][block_y][block_x] = -1;
enc_picture->mv [LIST_0][block_y][block_x][0] = 0;
enc_picture->mv [LIST_0][block_y][block_x][1] = 0;
}
else
{
cur_mv = img->all_mv[j+block*2][i][LIST_0][best_fw_ref][mode];
enc_picture->ref_idx [LIST_0][block_y][block_x] = best_fw_ref;
enc_picture->ref_pic_id [LIST_0][block_y][block_x] =
enc_picture->ref_pic_num[LIST_0 + list_offset][best_fw_ref];
enc_picture->mv [LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv [LIST_0][block_y][block_x][1] = cur_mv[1];
}
if (bframe)
{
if (best_pdir==0)
{
enc_picture->ref_idx [LIST_1][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_1][block_y][block_x] = -1;
enc_picture->mv [LIST_1][block_y][block_x][0] = 0;
enc_picture->mv [LIST_1][block_y][block_x][1] = 0;
}
else
{
enc_picture->ref_idx[LIST_1][block_y][block_x] = best_bw_ref;
if(best_bw_ref>=0)
{
cur_mv = img->all_mv[j+ block*2][i][LIST_1][best_bw_ref][mode];
enc_picture->ref_pic_id [LIST_1][block_y][block_x] =
enc_picture->ref_pic_num[LIST_1 + list_offset][best_bw_ref];
enc_picture->mv[LIST_1][block_y][block_x][0] = cur_mv[0];
enc_picture->mv[LIST_1][block_y][block_x][1] = cur_mv[1];
}
}
}
}
}
}
else
{
for (j=0; j<BLOCK_MULTIPLE; j++)
{
block_y = img->block_y+j;
for (i=0; i<2; i++)
{
block_x = img->block_x + block*2 + i;
if (best_pdir==1)
{
enc_picture->ref_idx [LIST_0][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_0][block_y][block_x] = -1;
enc_picture->mv [LIST_0][block_y][block_x][0] = 0;
enc_picture->mv [LIST_0][block_y][block_x][1] = 0;
}
else
{
cur_mv = img->all_mv[j][block*2+i][LIST_0][best_fw_ref][mode];
enc_picture->ref_idx [LIST_0][block_y][block_x] = best_fw_ref;
enc_picture->ref_pic_id [LIST_0][block_y][block_x] =
enc_picture->ref_pic_num[LIST_0 + list_offset][best_fw_ref];
enc_picture->mv[LIST_0][block_y][block_x][0] = cur_mv[0];
enc_picture->mv[LIST_0][block_y][block_x][1] = cur_mv[1];
}
if (bframe)
{
if (best_pdir==0)
{
enc_picture->ref_idx [LIST_1][block_y][block_x] = -1;
enc_picture->ref_pic_id [LIST_1][block_y][block_x] = -1;
enc_picture->mv [LIST_1][block_y][block_x][0] = 0;
enc_picture->mv [LIST_1][block_y][block_x][1] = 0;
}
else
{
enc_picture->ref_idx[LIST_1][block_y][block_x] = best_bw_ref;
if(best_bw_ref>=0)
{
cur_mv = img->all_mv[j][block*2+i][LIST_1][best_bw_ref][mode];
enc_picture->ref_pic_id [LIST_1][block_y][block_x] =
enc_picture->ref_pic_num[LIST_1 + list_offset][best_bw_ref];
enc_picture->mv[LIST_1][block_y][block_x][0] = cur_mv[0];
enc_picture->mv[LIST_1][block_y][block_x][1] = cur_mv[1];
}
}
}
}
}
}
}
void update_refresh_map(int intra, int intra1, Macroblock *currMB)
{
if (input->RestrictRef==1)
{
// Modified for Fast Mode Decision. Inchoon Choi, SungKyunKwan Univ.
if (input->rdopt<2)
{
refresh_map[2*img->mb_y ][2*img->mb_x ] = (intra ? 1 : 0);
refresh_map[2*img->mb_y ][2*img->mb_x+1] = (intra ? 1 : 0);
refresh_map[2*img->mb_y+1][2*img->mb_x ] = (intra ? 1 : 0);
refresh_map[2*img->mb_y+1][2*img->mb_x+1] = (intra ? 1 : 0);
}
else if (input->rdopt==3)
{
refresh_map[2*img->mb_y ][2*img->mb_x ] = (intra1==0 && (currMB->mb_type==I16MB || currMB->mb_type==I4MB) ? 1 : 0);
refresh_map[2*img->mb_y ][2*img->mb_x+1] = (intra1==0 && (currMB->mb_type==I16MB || currMB->mb_type==I4MB) ? 1 : 0);
refresh_map[2*img->mb_y+1][2*img->mb_x ] = (intra1==0 && (currMB->mb_type==I16MB || currMB->mb_type==I4MB) ? 1 : 0);
refresh_map[2*img->mb_y+1][2*img->mb_x+1] = (intra1==0 && (currMB->mb_type==I16MB || currMB->mb_type==I4MB) ? 1 : 0);
}
}
else if (input->RestrictRef==2)
{
refresh_map[2*img->mb_y ][2*img->mb_x ] = (currMB->mb_type==I16MB || currMB->mb_type==I4MB ? 1 : 0);
refresh_map[2*img->mb_y ][2*img->mb_x+1] = (currMB->mb_type==I16MB || currMB->mb_type==I4MB ? 1 : 0);
refresh_map[2*img->mb_y+1][2*img->mb_x ] = (currMB->mb_type==I16MB || currMB->mb_type==I4MB ? 1 : 0);
refresh_map[2*img->mb_y+1][2*img->mb_x+1] = (currMB->mb_type==I16MB || currMB->mb_type==I4MB ? 1 : 0);
}
}
# Crash reproducer for clang version 5.0.0
# Driver args: "--target=cheri-unknown-freebsd" "--sysroot=/local/scratch/alr48/cheri/output-release/sdk256/sysroot" "-D" "NDEBUG" "-I" "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod" "-I" "MultiSource/Applications/JM/lencod" "-fintegrated-as" "-pipe" "-msoft-float" "-G" "0" "-mabi=purecap" "-mxgot" "-g" "-B" "/local/scratch/alr48/cheri/output-release/sdk256/bin" "-Wno-error=format" "--target=cheri-unknown-freebsd12" "-g" "-w" "-Werror=date-time" "-D" "__USE_LARGEFILE64" "-D" "_FILE_OFFSET_BITS=64" "-MD" "-MT" "MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.o" "-MF" "MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.o.d" "-o" "MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.o" "-c" "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
# Original command: "/local/scratch/alr48/cheri/output-release/sdk256/bin/clang-5.0" "-cc1" "-triple" "cheri-unknown-freebsd12" "-emit-obj" "-mrelax-all" "-disable-free" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "rdopt.c" "-mrelocation-model" "pic" "-pic-level" "2" "-mthread-model" "posix" "-mdisable-fp-elim" "-masm-verbose" "-mconstructor-aliases" "-target-cpu" "cheri" "-target-feature" "+soft-float" "-target-abi" "purecap" "-Wmips-cheri-prototypes" "-msoft-float" "-mfloat-abi" "soft" "-mllvm" "-mxgot" "-mllvm" "-mips-ssection-threshold=0" "-dwarf-column-info" "-debug-info-kind=standalone" "-dwarf-version=2" "-debugger-tuning=gdb" "-coverage-notes-file" "/local/scratch/alr48/cheri/build-release/llvm-test-suite-256-build/MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.gcno" "-resource-dir" "/local/scratch/alr48/cheri/output-release/sdk256/lib/clang/5.0.0" "-dependency-file" "MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.o.d" "-sys-header-deps" "-MT" "MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.o" "-D" "NDEBUG" "-I" "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod" "-I" "MultiSource/Applications/JM/lencod" "-D" "__USE_LARGEFILE64" "-D" "_FILE_OFFSET_BITS=64" "-isysroot" "/local/scratch/alr48/cheri/output-release/sdk256/sysroot" "-Wno-error=format" "-Werror=date-time" "-w" "-fdebug-compilation-dir" "/local/scratch/alr48/cheri/build-release/llvm-test-suite-256-build" "-ferror-limit" "19" "-fmessage-length" "0" "-fobjc-runtime=gnustep" "-fdiagnostics-show-option" "-cheri-linker" "-o" "MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.o" "-x" "c" "/local/scratch/alr48/cheri/llvm-test-suite/MultiSource/Applications/JM/lencod/rdopt.c"
"/local/scratch/alr48/cheri/output-release/sdk256/bin/clang-5.0" "-cc1" "-triple" "cheri-unknown-freebsd12" "-emit-obj" "-mrelax-all" "-disable-free" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "rdopt.c" "-mrelocation-model" "pic" "-pic-level" "2" "-mthread-model" "posix" "-mdisable-fp-elim" "-masm-verbose" "-mconstructor-aliases" "-target-cpu" "cheri" "-target-feature" "+soft-float" "-target-abi" "purecap" "-Wmips-cheri-prototypes" "-msoft-float" "-mfloat-abi" "soft" "-mllvm" "-mxgot" "-mllvm" "-mips-ssection-threshold=0" "-dwarf-column-info" "-debug-info-kind=standalone" "-dwarf-version=2" "-debugger-tuning=gdb" "-coverage-notes-file" "/local/scratch/alr48/cheri/build-release/llvm-test-suite-256-build/MultiSource/Applications/JM/lencod/CMakeFiles/lencod.dir/rdopt.c.gcno" "-sys-header-deps" "-D" "NDEBUG" "-D" "__USE_LARGEFILE64" "-D" "_FILE_OFFSET_BITS=64" "-Wno-error=format" "-Werror=date-time" "-w" "-ferror-limit" "19" "-fmessage-length" "0" "-fobjc-runtime=gnustep" "-fdiagnostics-show-option" "-cheri-linker" "-x" "c" "rdopt-b55bd8.c"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment