annotate libavcodec/sscc_h264_ompss.c @ 9:ea1ba68cf0ed

update to match api changes + add sscc produced source
author Nina Engelhardt <nengel@mailbox.tu-berlin.de>
date Wed, 05 Jun 2013 14:43:26 +0200
parents
children 4d1f82230449
rev   line source
nengel@9 1 const char *__nanos_family __attribute__((weak)) = "master";
nengel@9 2 int __nanos_version __attribute__((weak)) = 5015;
nengel@9 3 int __mcc_master __attribute__((weak)) = 5015;
nengel@9 4 int __mcc_openmp __attribute__((weak)) = 5;
nengel@9 5 int __mcc_trunk __attribute__((weak)) = 399;
nengel@9 6 int __mcc_worksharing __attribute__((weak)) = 1000;
nengel@9 7 typedef unsigned char __u_char;
nengel@9 8 typedef unsigned short int __u_short;
nengel@9 9 typedef unsigned int __u_int;
nengel@9 10 typedef unsigned long int __u_long;
nengel@9 11 typedef signed char __int8_t;
nengel@9 12 typedef unsigned char __uint8_t;
nengel@9 13 typedef signed short int __int16_t;
nengel@9 14 typedef unsigned short int __uint16_t;
nengel@9 15 typedef signed int __int32_t;
nengel@9 16 typedef unsigned int __uint32_t;
nengel@9 17 typedef signed long int __int64_t;
nengel@9 18 typedef unsigned long int __uint64_t;
nengel@9 19 typedef long int __quad_t;
nengel@9 20 typedef unsigned long int __u_quad_t;
nengel@9 21 typedef unsigned long int __dev_t;
nengel@9 22 typedef unsigned int __uid_t;
nengel@9 23 typedef unsigned int __gid_t;
nengel@9 24 typedef unsigned long int __ino_t;
nengel@9 25 typedef unsigned long int __ino64_t;
nengel@9 26 typedef unsigned int __mode_t;
nengel@9 27 typedef unsigned long int __nlink_t;
nengel@9 28 typedef long int __off_t;
nengel@9 29 typedef long int __off64_t;
nengel@9 30 typedef int __pid_t;
nengel@9 31 typedef struct
nengel@9 32 {
nengel@9 33 int __val[2];
nengel@9 34 } __fsid_t;
nengel@9 35 typedef long int __clock_t;
nengel@9 36 typedef unsigned long int __rlim_t;
nengel@9 37 typedef unsigned long int __rlim64_t;
nengel@9 38 typedef unsigned int __id_t;
nengel@9 39 typedef long int __time_t;
nengel@9 40 typedef unsigned int __useconds_t;
nengel@9 41 typedef long int __suseconds_t;
nengel@9 42 typedef int __daddr_t;
nengel@9 43 typedef long int __swblk_t;
nengel@9 44 typedef int __key_t;
nengel@9 45 typedef int __clockid_t;
nengel@9 46 typedef void *__timer_t;
nengel@9 47 typedef long int __blksize_t;
nengel@9 48 typedef long int __blkcnt_t;
nengel@9 49 typedef long int __blkcnt64_t;
nengel@9 50 typedef unsigned long int __fsblkcnt_t;
nengel@9 51 typedef unsigned long int __fsblkcnt64_t;
nengel@9 52 typedef unsigned long int __fsfilcnt_t;
nengel@9 53 typedef unsigned long int __fsfilcnt64_t;
nengel@9 54 typedef long int __ssize_t;
nengel@9 55 typedef __off64_t __loff_t;
nengel@9 56 typedef __quad_t *__qaddr_t;
nengel@9 57 typedef char *__caddr_t;
nengel@9 58 typedef long int __intptr_t;
nengel@9 59 typedef unsigned int __socklen_t;
nengel@9 60 typedef __ssize_t ssize_t;
nengel@9 61 typedef long unsigned int size_t;
nengel@9 62 typedef __gid_t gid_t;
nengel@9 63 typedef __uid_t uid_t;
nengel@9 64 typedef __off_t off_t;
nengel@9 65 typedef __useconds_t useconds_t;
nengel@9 66 typedef __pid_t pid_t;
nengel@9 67 typedef __intptr_t intptr_t;
nengel@9 68 typedef __socklen_t socklen_t;
nengel@9 69 extern int access(__const char *__name, int __type) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 70 extern int faccessat(int __fd, __const char *__file, int __type, int __flag) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warn_unused_result__));
nengel@9 71 extern __off_t lseek(int __fd, __off_t __offset, int __whence) __attribute__((__nothrow__, __leaf__));
nengel@9 72 extern int close(int __fd);
nengel@9 73 extern ssize_t read(int __fd, void *__buf, size_t __nbytes) __attribute__((__warn_unused_result__));
nengel@9 74 extern ssize_t write(int __fd, __const void *__buf, size_t __n) __attribute__((__warn_unused_result__));
nengel@9 75 extern ssize_t pread(int __fd, void *__buf, size_t __nbytes, __off_t __offset) __attribute__((__warn_unused_result__));
nengel@9 76 extern ssize_t pwrite(int __fd, __const void *__buf, size_t __n, __off_t __offset) __attribute__((__warn_unused_result__));
nengel@9 77 extern int pipe(int __pipedes[2]) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 78 extern unsigned int alarm(unsigned int __seconds) __attribute__((__nothrow__, __leaf__));
nengel@9 79 extern unsigned int sleep(unsigned int __seconds);
nengel@9 80 extern __useconds_t ualarm(__useconds_t __value, __useconds_t __interval) __attribute__((__nothrow__, __leaf__));
nengel@9 81 extern int usleep(__useconds_t __useconds);
nengel@9 82 extern int pause(void);
nengel@9 83 extern int chown(__const char *__file, __uid_t __owner, __gid_t __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 84 extern int fchown(int __fd, __uid_t __owner, __gid_t __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 85 extern int lchown(__const char *__file, __uid_t __owner, __gid_t __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 86 extern int fchownat(int __fd, __const char *__file, __uid_t __owner, __gid_t __group, int __flag) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warn_unused_result__));
nengel@9 87 extern int chdir(__const char *__path) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 88 extern int fchdir(int __fd) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 89 extern char *getcwd(char *__buf, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 90 extern char *getwd(char *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__deprecated__)) __attribute__((__warn_unused_result__));
nengel@9 91 extern int dup(int __fd) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 92 extern int dup2(int __fd, int __fd2) __attribute__((__nothrow__, __leaf__));
nengel@9 93 extern char **__environ;
nengel@9 94 extern int execve(__const char *__path, char *__const __argv[], char *__const __envp[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 95 extern int fexecve(int __fd, char *__const __argv[], char *__const __envp[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 96 extern int execv(__const char *__path, char *__const __argv[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 97 extern int execle(__const char *__path, __const char *__arg, ...) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 98 extern int execl(__const char *__path, __const char *__arg, ...) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 99 extern int execvp(__const char *__file, char *__const __argv[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 100 extern int execlp(__const char *__file, __const char *__arg, ...) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 101 extern int nice(int __inc) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 102 extern void _exit(int __status) __attribute__((__noreturn__));
nengel@9 103 enum
nengel@9 104 {
nengel@9 105 _PC_LINK_MAX,
nengel@9 106 _PC_MAX_CANON,
nengel@9 107 _PC_MAX_INPUT,
nengel@9 108 _PC_NAME_MAX,
nengel@9 109 _PC_PATH_MAX,
nengel@9 110 _PC_PIPE_BUF,
nengel@9 111 _PC_CHOWN_RESTRICTED,
nengel@9 112 _PC_NO_TRUNC,
nengel@9 113 _PC_VDISABLE,
nengel@9 114 _PC_SYNC_IO,
nengel@9 115 _PC_ASYNC_IO,
nengel@9 116 _PC_PRIO_IO,
nengel@9 117 _PC_SOCK_MAXBUF,
nengel@9 118 _PC_FILESIZEBITS,
nengel@9 119 _PC_REC_INCR_XFER_SIZE,
nengel@9 120 _PC_REC_MAX_XFER_SIZE,
nengel@9 121 _PC_REC_MIN_XFER_SIZE,
nengel@9 122 _PC_REC_XFER_ALIGN,
nengel@9 123 _PC_ALLOC_SIZE_MIN,
nengel@9 124 _PC_SYMLINK_MAX,
nengel@9 125 _PC_2_SYMLINKS
nengel@9 126 };
nengel@9 127 enum
nengel@9 128 {
nengel@9 129 _SC_ARG_MAX,
nengel@9 130 _SC_CHILD_MAX,
nengel@9 131 _SC_CLK_TCK,
nengel@9 132 _SC_NGROUPS_MAX,
nengel@9 133 _SC_OPEN_MAX,
nengel@9 134 _SC_STREAM_MAX,
nengel@9 135 _SC_TZNAME_MAX,
nengel@9 136 _SC_JOB_CONTROL,
nengel@9 137 _SC_SAVED_IDS,
nengel@9 138 _SC_REALTIME_SIGNALS,
nengel@9 139 _SC_PRIORITY_SCHEDULING,
nengel@9 140 _SC_TIMERS,
nengel@9 141 _SC_ASYNCHRONOUS_IO,
nengel@9 142 _SC_PRIORITIZED_IO,
nengel@9 143 _SC_SYNCHRONIZED_IO,
nengel@9 144 _SC_FSYNC,
nengel@9 145 _SC_MAPPED_FILES,
nengel@9 146 _SC_MEMLOCK,
nengel@9 147 _SC_MEMLOCK_RANGE,
nengel@9 148 _SC_MEMORY_PROTECTION,
nengel@9 149 _SC_MESSAGE_PASSING,
nengel@9 150 _SC_SEMAPHORES,
nengel@9 151 _SC_SHARED_MEMORY_OBJECTS,
nengel@9 152 _SC_AIO_LISTIO_MAX,
nengel@9 153 _SC_AIO_MAX,
nengel@9 154 _SC_AIO_PRIO_DELTA_MAX,
nengel@9 155 _SC_DELAYTIMER_MAX,
nengel@9 156 _SC_MQ_OPEN_MAX,
nengel@9 157 _SC_MQ_PRIO_MAX,
nengel@9 158 _SC_VERSION,
nengel@9 159 _SC_PAGESIZE,
nengel@9 160 _SC_RTSIG_MAX,
nengel@9 161 _SC_SEM_NSEMS_MAX,
nengel@9 162 _SC_SEM_VALUE_MAX,
nengel@9 163 _SC_SIGQUEUE_MAX,
nengel@9 164 _SC_TIMER_MAX,
nengel@9 165 _SC_BC_BASE_MAX,
nengel@9 166 _SC_BC_DIM_MAX,
nengel@9 167 _SC_BC_SCALE_MAX,
nengel@9 168 _SC_BC_STRING_MAX,
nengel@9 169 _SC_COLL_WEIGHTS_MAX,
nengel@9 170 _SC_EQUIV_CLASS_MAX,
nengel@9 171 _SC_EXPR_NEST_MAX,
nengel@9 172 _SC_LINE_MAX,
nengel@9 173 _SC_RE_DUP_MAX,
nengel@9 174 _SC_CHARCLASS_NAME_MAX,
nengel@9 175 _SC_2_VERSION,
nengel@9 176 _SC_2_C_BIND,
nengel@9 177 _SC_2_C_DEV,
nengel@9 178 _SC_2_FORT_DEV,
nengel@9 179 _SC_2_FORT_RUN,
nengel@9 180 _SC_2_SW_DEV,
nengel@9 181 _SC_2_LOCALEDEF,
nengel@9 182 _SC_PII,
nengel@9 183 _SC_PII_XTI,
nengel@9 184 _SC_PII_SOCKET,
nengel@9 185 _SC_PII_INTERNET,
nengel@9 186 _SC_PII_OSI,
nengel@9 187 _SC_POLL,
nengel@9 188 _SC_SELECT,
nengel@9 189 _SC_UIO_MAXIOV,
nengel@9 190 _SC_IOV_MAX = _SC_UIO_MAXIOV,
nengel@9 191 _SC_PII_INTERNET_STREAM,
nengel@9 192 _SC_PII_INTERNET_DGRAM,
nengel@9 193 _SC_PII_OSI_COTS,
nengel@9 194 _SC_PII_OSI_CLTS,
nengel@9 195 _SC_PII_OSI_M,
nengel@9 196 _SC_T_IOV_MAX,
nengel@9 197 _SC_THREADS,
nengel@9 198 _SC_THREAD_SAFE_FUNCTIONS,
nengel@9 199 _SC_GETGR_R_SIZE_MAX,
nengel@9 200 _SC_GETPW_R_SIZE_MAX,
nengel@9 201 _SC_LOGIN_NAME_MAX,
nengel@9 202 _SC_TTY_NAME_MAX,
nengel@9 203 _SC_THREAD_DESTRUCTOR_ITERATIONS,
nengel@9 204 _SC_THREAD_KEYS_MAX,
nengel@9 205 _SC_THREAD_STACK_MIN,
nengel@9 206 _SC_THREAD_THREADS_MAX,
nengel@9 207 _SC_THREAD_ATTR_STACKADDR,
nengel@9 208 _SC_THREAD_ATTR_STACKSIZE,
nengel@9 209 _SC_THREAD_PRIORITY_SCHEDULING,
nengel@9 210 _SC_THREAD_PRIO_INHERIT,
nengel@9 211 _SC_THREAD_PRIO_PROTECT,
nengel@9 212 _SC_THREAD_PROCESS_SHARED,
nengel@9 213 _SC_NPROCESSORS_CONF,
nengel@9 214 _SC_NPROCESSORS_ONLN,
nengel@9 215 _SC_PHYS_PAGES,
nengel@9 216 _SC_AVPHYS_PAGES,
nengel@9 217 _SC_ATEXIT_MAX,
nengel@9 218 _SC_PASS_MAX,
nengel@9 219 _SC_XOPEN_VERSION,
nengel@9 220 _SC_XOPEN_XCU_VERSION,
nengel@9 221 _SC_XOPEN_UNIX,
nengel@9 222 _SC_XOPEN_CRYPT,
nengel@9 223 _SC_XOPEN_ENH_I18N,
nengel@9 224 _SC_XOPEN_SHM,
nengel@9 225 _SC_2_CHAR_TERM,
nengel@9 226 _SC_2_C_VERSION,
nengel@9 227 _SC_2_UPE,
nengel@9 228 _SC_XOPEN_XPG2,
nengel@9 229 _SC_XOPEN_XPG3,
nengel@9 230 _SC_XOPEN_XPG4,
nengel@9 231 _SC_CHAR_BIT,
nengel@9 232 _SC_CHAR_MAX,
nengel@9 233 _SC_CHAR_MIN,
nengel@9 234 _SC_INT_MAX,
nengel@9 235 _SC_INT_MIN,
nengel@9 236 _SC_LONG_BIT,
nengel@9 237 _SC_WORD_BIT,
nengel@9 238 _SC_MB_LEN_MAX,
nengel@9 239 _SC_NZERO,
nengel@9 240 _SC_SSIZE_MAX,
nengel@9 241 _SC_SCHAR_MAX,
nengel@9 242 _SC_SCHAR_MIN,
nengel@9 243 _SC_SHRT_MAX,
nengel@9 244 _SC_SHRT_MIN,
nengel@9 245 _SC_UCHAR_MAX,
nengel@9 246 _SC_UINT_MAX,
nengel@9 247 _SC_ULONG_MAX,
nengel@9 248 _SC_USHRT_MAX,
nengel@9 249 _SC_NL_ARGMAX,
nengel@9 250 _SC_NL_LANGMAX,
nengel@9 251 _SC_NL_MSGMAX,
nengel@9 252 _SC_NL_NMAX,
nengel@9 253 _SC_NL_SETMAX,
nengel@9 254 _SC_NL_TEXTMAX,
nengel@9 255 _SC_XBS5_ILP32_OFF32,
nengel@9 256 _SC_XBS5_ILP32_OFFBIG,
nengel@9 257 _SC_XBS5_LP64_OFF64,
nengel@9 258 _SC_XBS5_LPBIG_OFFBIG,
nengel@9 259 _SC_XOPEN_LEGACY,
nengel@9 260 _SC_XOPEN_REALTIME,
nengel@9 261 _SC_XOPEN_REALTIME_THREADS,
nengel@9 262 _SC_ADVISORY_INFO,
nengel@9 263 _SC_BARRIERS,
nengel@9 264 _SC_BASE,
nengel@9 265 _SC_C_LANG_SUPPORT,
nengel@9 266 _SC_C_LANG_SUPPORT_R,
nengel@9 267 _SC_CLOCK_SELECTION,
nengel@9 268 _SC_CPUTIME,
nengel@9 269 _SC_THREAD_CPUTIME,
nengel@9 270 _SC_DEVICE_IO,
nengel@9 271 _SC_DEVICE_SPECIFIC,
nengel@9 272 _SC_DEVICE_SPECIFIC_R,
nengel@9 273 _SC_FD_MGMT,
nengel@9 274 _SC_FIFO,
nengel@9 275 _SC_PIPE,
nengel@9 276 _SC_FILE_ATTRIBUTES,
nengel@9 277 _SC_FILE_LOCKING,
nengel@9 278 _SC_FILE_SYSTEM,
nengel@9 279 _SC_MONOTONIC_CLOCK,
nengel@9 280 _SC_MULTI_PROCESS,
nengel@9 281 _SC_SINGLE_PROCESS,
nengel@9 282 _SC_NETWORKING,
nengel@9 283 _SC_READER_WRITER_LOCKS,
nengel@9 284 _SC_SPIN_LOCKS,
nengel@9 285 _SC_REGEXP,
nengel@9 286 _SC_REGEX_VERSION,
nengel@9 287 _SC_SHELL,
nengel@9 288 _SC_SIGNALS,
nengel@9 289 _SC_SPAWN,
nengel@9 290 _SC_SPORADIC_SERVER,
nengel@9 291 _SC_THREAD_SPORADIC_SERVER,
nengel@9 292 _SC_SYSTEM_DATABASE,
nengel@9 293 _SC_SYSTEM_DATABASE_R,
nengel@9 294 _SC_TIMEOUTS,
nengel@9 295 _SC_TYPED_MEMORY_OBJECTS,
nengel@9 296 _SC_USER_GROUPS,
nengel@9 297 _SC_USER_GROUPS_R,
nengel@9 298 _SC_2_PBS,
nengel@9 299 _SC_2_PBS_ACCOUNTING,
nengel@9 300 _SC_2_PBS_LOCATE,
nengel@9 301 _SC_2_PBS_MESSAGE,
nengel@9 302 _SC_2_PBS_TRACK,
nengel@9 303 _SC_SYMLOOP_MAX,
nengel@9 304 _SC_STREAMS,
nengel@9 305 _SC_2_PBS_CHECKPOINT,
nengel@9 306 _SC_V6_ILP32_OFF32,
nengel@9 307 _SC_V6_ILP32_OFFBIG,
nengel@9 308 _SC_V6_LP64_OFF64,
nengel@9 309 _SC_V6_LPBIG_OFFBIG,
nengel@9 310 _SC_HOST_NAME_MAX,
nengel@9 311 _SC_TRACE,
nengel@9 312 _SC_TRACE_EVENT_FILTER,
nengel@9 313 _SC_TRACE_INHERIT,
nengel@9 314 _SC_TRACE_LOG,
nengel@9 315 _SC_LEVEL1_ICACHE_SIZE,
nengel@9 316 _SC_LEVEL1_ICACHE_ASSOC,
nengel@9 317 _SC_LEVEL1_ICACHE_LINESIZE,
nengel@9 318 _SC_LEVEL1_DCACHE_SIZE,
nengel@9 319 _SC_LEVEL1_DCACHE_ASSOC,
nengel@9 320 _SC_LEVEL1_DCACHE_LINESIZE,
nengel@9 321 _SC_LEVEL2_CACHE_SIZE,
nengel@9 322 _SC_LEVEL2_CACHE_ASSOC,
nengel@9 323 _SC_LEVEL2_CACHE_LINESIZE,
nengel@9 324 _SC_LEVEL3_CACHE_SIZE,
nengel@9 325 _SC_LEVEL3_CACHE_ASSOC,
nengel@9 326 _SC_LEVEL3_CACHE_LINESIZE,
nengel@9 327 _SC_LEVEL4_CACHE_SIZE,
nengel@9 328 _SC_LEVEL4_CACHE_ASSOC,
nengel@9 329 _SC_LEVEL4_CACHE_LINESIZE,
nengel@9 330 _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
nengel@9 331 _SC_RAW_SOCKETS,
nengel@9 332 _SC_V7_ILP32_OFF32,
nengel@9 333 _SC_V7_ILP32_OFFBIG,
nengel@9 334 _SC_V7_LP64_OFF64,
nengel@9 335 _SC_V7_LPBIG_OFFBIG,
nengel@9 336 _SC_SS_REPL_MAX,
nengel@9 337 _SC_TRACE_EVENT_NAME_MAX,
nengel@9 338 _SC_TRACE_NAME_MAX,
nengel@9 339 _SC_TRACE_SYS_MAX,
nengel@9 340 _SC_TRACE_USER_EVENT_MAX,
nengel@9 341 _SC_XOPEN_STREAMS,
nengel@9 342 _SC_THREAD_ROBUST_PRIO_INHERIT,
nengel@9 343 _SC_THREAD_ROBUST_PRIO_PROTECT
nengel@9 344 };
nengel@9 345 enum
nengel@9 346 {
nengel@9 347 _CS_PATH,
nengel@9 348 _CS_V6_WIDTH_RESTRICTED_ENVS,
nengel@9 349 _CS_GNU_LIBC_VERSION,
nengel@9 350 _CS_GNU_LIBPTHREAD_VERSION,
nengel@9 351 _CS_V5_WIDTH_RESTRICTED_ENVS,
nengel@9 352 _CS_V7_WIDTH_RESTRICTED_ENVS,
nengel@9 353 _CS_LFS_CFLAGS = 1000,
nengel@9 354 _CS_LFS_LDFLAGS,
nengel@9 355 _CS_LFS_LIBS,
nengel@9 356 _CS_LFS_LINTFLAGS,
nengel@9 357 _CS_LFS64_CFLAGS,
nengel@9 358 _CS_LFS64_LDFLAGS,
nengel@9 359 _CS_LFS64_LIBS,
nengel@9 360 _CS_LFS64_LINTFLAGS,
nengel@9 361 _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
nengel@9 362 _CS_XBS5_ILP32_OFF32_LDFLAGS,
nengel@9 363 _CS_XBS5_ILP32_OFF32_LIBS,
nengel@9 364 _CS_XBS5_ILP32_OFF32_LINTFLAGS,
nengel@9 365 _CS_XBS5_ILP32_OFFBIG_CFLAGS,
nengel@9 366 _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
nengel@9 367 _CS_XBS5_ILP32_OFFBIG_LIBS,
nengel@9 368 _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
nengel@9 369 _CS_XBS5_LP64_OFF64_CFLAGS,
nengel@9 370 _CS_XBS5_LP64_OFF64_LDFLAGS,
nengel@9 371 _CS_XBS5_LP64_OFF64_LIBS,
nengel@9 372 _CS_XBS5_LP64_OFF64_LINTFLAGS,
nengel@9 373 _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
nengel@9 374 _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
nengel@9 375 _CS_XBS5_LPBIG_OFFBIG_LIBS,
nengel@9 376 _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
nengel@9 377 _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
nengel@9 378 _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
nengel@9 379 _CS_POSIX_V6_ILP32_OFF32_LIBS,
nengel@9 380 _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
nengel@9 381 _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
nengel@9 382 _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
nengel@9 383 _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
nengel@9 384 _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
nengel@9 385 _CS_POSIX_V6_LP64_OFF64_CFLAGS,
nengel@9 386 _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
nengel@9 387 _CS_POSIX_V6_LP64_OFF64_LIBS,
nengel@9 388 _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
nengel@9 389 _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
nengel@9 390 _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
nengel@9 391 _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
nengel@9 392 _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
nengel@9 393 _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
nengel@9 394 _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
nengel@9 395 _CS_POSIX_V7_ILP32_OFF32_LIBS,
nengel@9 396 _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
nengel@9 397 _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
nengel@9 398 _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
nengel@9 399 _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
nengel@9 400 _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
nengel@9 401 _CS_POSIX_V7_LP64_OFF64_CFLAGS,
nengel@9 402 _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
nengel@9 403 _CS_POSIX_V7_LP64_OFF64_LIBS,
nengel@9 404 _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
nengel@9 405 _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
nengel@9 406 _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
nengel@9 407 _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
nengel@9 408 _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS,
nengel@9 409 _CS_V6_ENV,
nengel@9 410 _CS_V7_ENV
nengel@9 411 };
nengel@9 412 extern long int pathconf(__const char *__path, int __name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 413 extern long int fpathconf(int __fd, int __name) __attribute__((__nothrow__, __leaf__));
nengel@9 414 extern long int sysconf(int __name) __attribute__((__nothrow__, __leaf__));
nengel@9 415 extern size_t confstr(int __name, char *__buf, size_t __len) __attribute__((__nothrow__, __leaf__));
nengel@9 416 extern __pid_t getpid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 417 extern __pid_t getppid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 418 extern __pid_t getpgrp(void) __attribute__((__nothrow__, __leaf__));
nengel@9 419 extern __pid_t __getpgid(__pid_t __pid) __attribute__((__nothrow__, __leaf__));
nengel@9 420 extern __pid_t getpgid(__pid_t __pid) __attribute__((__nothrow__, __leaf__));
nengel@9 421 extern int setpgid(__pid_t __pid, __pid_t __pgid) __attribute__((__nothrow__, __leaf__));
nengel@9 422 extern int setpgrp(void) __attribute__((__nothrow__, __leaf__));
nengel@9 423 extern __pid_t setsid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 424 extern __pid_t getsid(__pid_t __pid) __attribute__((__nothrow__, __leaf__));
nengel@9 425 extern __uid_t getuid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 426 extern __uid_t geteuid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 427 extern __gid_t getgid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 428 extern __gid_t getegid(void) __attribute__((__nothrow__, __leaf__));
nengel@9 429 extern int getgroups(int __size, __gid_t __list[]) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 430 extern int setuid(__uid_t __uid) __attribute__((__nothrow__, __leaf__));
nengel@9 431 extern int setreuid(__uid_t __ruid, __uid_t __euid) __attribute__((__nothrow__, __leaf__));
nengel@9 432 extern int seteuid(__uid_t __uid) __attribute__((__nothrow__, __leaf__));
nengel@9 433 extern int setgid(__gid_t __gid) __attribute__((__nothrow__, __leaf__));
nengel@9 434 extern int setregid(__gid_t __rgid, __gid_t __egid) __attribute__((__nothrow__, __leaf__));
nengel@9 435 extern int setegid(__gid_t __gid) __attribute__((__nothrow__, __leaf__));
nengel@9 436 extern __pid_t fork(void) __attribute__((__nothrow__));
nengel@9 437 extern __pid_t vfork(void) __attribute__((__nothrow__, __leaf__));
nengel@9 438 extern char *ttyname(int __fd) __attribute__((__nothrow__, __leaf__));
nengel@9 439 extern int ttyname_r(int __fd, char *__buf, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warn_unused_result__));
nengel@9 440 extern int isatty(int __fd) __attribute__((__nothrow__, __leaf__));
nengel@9 441 extern int ttyslot(void) __attribute__((__nothrow__, __leaf__));
nengel@9 442 extern int link(__const char *__from, __const char *__to) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__));
nengel@9 443 extern int linkat(int __fromfd, __const char *__from, int __tofd, __const char *__to, int __flags) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4))) __attribute__((__warn_unused_result__));
nengel@9 444 extern int symlink(__const char *__from, __const char *__to) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__));
nengel@9 445 extern ssize_t readlink(__const char *__restrict __path, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__));
nengel@9 446 extern int symlinkat(__const char *__from, int __tofd, __const char *__to) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3))) __attribute__((__warn_unused_result__));
nengel@9 447 extern ssize_t readlinkat(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__));
nengel@9 448 extern int unlink(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 449 extern int unlinkat(int __fd, __const char *__name, int __flag) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 450 extern int rmdir(__const char *__path) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 451 extern __pid_t tcgetpgrp(int __fd) __attribute__((__nothrow__, __leaf__));
nengel@9 452 extern int tcsetpgrp(int __fd, __pid_t __pgrp_id) __attribute__((__nothrow__, __leaf__));
nengel@9 453 extern char *getlogin(void);
nengel@9 454 extern int getlogin_r(char *__name, size_t __name_len) __attribute__((__nonnull__(1)));
nengel@9 455 extern int setlogin(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 456 extern char *optarg;
nengel@9 457 extern int optind;
nengel@9 458 extern int opterr;
nengel@9 459 extern int optopt;
nengel@9 460 extern int getopt(int ___argc, char *const *___argv, const char *__shortopts) __attribute__((__nothrow__, __leaf__));
nengel@9 461 extern int gethostname(char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 462 extern int sethostname(__const char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 463 extern int sethostid(long int __id) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 464 extern int getdomainname(char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 465 extern int setdomainname(__const char *__name, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 466 extern int vhangup(void) __attribute__((__nothrow__, __leaf__));
nengel@9 467 extern int revoke(__const char *__file) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 468 extern int profil(unsigned short int *__sample_buffer, size_t __size, size_t __offset, unsigned int __scale) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 469 extern int acct(__const char *__name) __attribute__((__nothrow__, __leaf__));
nengel@9 470 extern char *getusershell(void) __attribute__((__nothrow__, __leaf__));
nengel@9 471 extern void endusershell(void) __attribute__((__nothrow__, __leaf__));
nengel@9 472 extern void setusershell(void) __attribute__((__nothrow__, __leaf__));
nengel@9 473 extern int daemon(int __nochdir, int __noclose) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 474 extern int chroot(__const char *__path) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 475 extern char *getpass(__const char *__prompt) __attribute__((__nonnull__(1)));
nengel@9 476 extern int fsync(int __fd);
nengel@9 477 extern long int gethostid(void);
nengel@9 478 extern void sync(void) __attribute__((__nothrow__, __leaf__));
nengel@9 479 extern int getpagesize(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 480 extern int getdtablesize(void) __attribute__((__nothrow__, __leaf__));
nengel@9 481 extern int truncate(__const char *__file, __off_t __length) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 482 extern int ftruncate(int __fd, __off_t __length) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 483 extern int brk(void *__addr) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 484 extern void *sbrk(intptr_t __delta) __attribute__((__nothrow__, __leaf__));
nengel@9 485 extern long int syscall(long int __sysno, ...) __attribute__((__nothrow__, __leaf__));
nengel@9 486 extern int lockf(int __fd, int __cmd, __off_t __len) __attribute__((__warn_unused_result__));
nengel@9 487 extern int fdatasync(int __fildes);
nengel@9 488 extern char *ctermid(char *__s) __attribute__((__nothrow__, __leaf__));
nengel@9 489 extern ssize_t __read_chk(int __fd, void *__buf, size_t __nbytes, size_t __buflen) __attribute__((__warn_unused_result__));
nengel@9 490 extern ssize_t __read_alias(int __fd, void *__buf, size_t __nbytes) __asm__ ("""read") __attribute__((__warn_unused_result__));
nengel@9 491 extern ssize_t __read_chk_warn(int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("""__read_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("read called with bigger length than size of ""the destination buffer")));
nengel@9 492 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) ssize_t read(int __fd, void *__buf, size_t __nbytes)
nengel@9 493 {
nengel@9 494 if (__builtin_object_size(__buf, 0) != (size_t) - 1)
nengel@9 495 {
nengel@9 496 if (!__builtin_constant_p(__nbytes))
nengel@9 497 return __read_chk(__fd, __buf, __nbytes, __builtin_object_size(__buf, 0));
nengel@9 498 if (__nbytes > __builtin_object_size(__buf, 0))
nengel@9 499 return __read_chk_warn(__fd, __buf, __nbytes, __builtin_object_size(__buf, 0));
nengel@9 500 }
nengel@9 501 return __read_alias(__fd, __buf, __nbytes);
nengel@9 502 }
nengel@9 503 extern ssize_t __readlink_chk(__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__));
nengel@9 504 extern ssize_t __readlink_alias(__const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("""readlink") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__));
nengel@9 505 extern ssize_t __readlink_chk_warn(__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("""__readlink_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("readlink called with bigger length ""than size of destination buffer")));
nengel@9 506 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__nonnull__(1, 2))) __attribute__((__warn_unused_result__)) ssize_t __attribute__((__nothrow__, __leaf__)) readlink(__const char *__restrict __path, char *__restrict __buf, size_t __len)
nengel@9 507 {
nengel@9 508 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 509 {
nengel@9 510 if (!__builtin_constant_p(__len))
nengel@9 511 return __readlink_chk(__path, __buf, __len, __builtin_object_size(__buf, 2 > 1));
nengel@9 512 if (__len > __builtin_object_size(__buf, 2 > 1))
nengel@9 513 return __readlink_chk_warn(__path, __buf, __len, __builtin_object_size(__buf, 2 > 1));
nengel@9 514 }
nengel@9 515 return __readlink_alias(__path, __buf, __len);
nengel@9 516 }
nengel@9 517 extern ssize_t __readlinkat_chk(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__));
nengel@9 518 extern ssize_t __readlinkat_alias(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("""readlinkat") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__));
nengel@9 519 extern ssize_t __readlinkat_chk_warn(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("""__readlinkat_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("readlinkat called with bigger ""length than size of destination ""buffer")));
nengel@9 520 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__nonnull__(2, 3))) __attribute__((__warn_unused_result__)) ssize_t __attribute__((__nothrow__, __leaf__)) readlinkat(int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len)
nengel@9 521 {
nengel@9 522 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 523 {
nengel@9 524 if (!__builtin_constant_p(__len))
nengel@9 525 return __readlinkat_chk(__fd, __path, __buf, __len, __builtin_object_size(__buf, 2 > 1));
nengel@9 526 if (__len > __builtin_object_size(__buf, 2 > 1))
nengel@9 527 return __readlinkat_chk_warn(__fd, __path, __buf, __len, __builtin_object_size(__buf, 2 > 1));
nengel@9 528 }
nengel@9 529 return __readlinkat_alias(__fd, __path, __buf, __len);
nengel@9 530 }
nengel@9 531 extern char *__getcwd_chk(char *__buf, size_t __size, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 532 extern char *__getcwd_alias(char *__buf, size_t __size) __asm__ ("""getcwd") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 533 extern char *__getcwd_chk_warn(char *__buf, size_t __size, size_t __buflen) __asm__ ("""__getcwd_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)) __attribute__((__warning__("getcwd caller with bigger length than size of ""destination buffer")));
nengel@9 534 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *__attribute__((__nothrow__, __leaf__)) getcwd(char *__buf, size_t __size)
nengel@9 535 {
nengel@9 536 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 537 {
nengel@9 538 if (!__builtin_constant_p(__size))
nengel@9 539 return __getcwd_chk(__buf, __size, __builtin_object_size(__buf, 2 > 1));
nengel@9 540 if (__size > __builtin_object_size(__buf, 2 > 1))
nengel@9 541 return __getcwd_chk_warn(__buf, __size, __builtin_object_size(__buf, 2 > 1));
nengel@9 542 }
nengel@9 543 return __getcwd_alias(__buf, __size);
nengel@9 544 }
nengel@9 545 extern char *__getwd_chk(char *__buf, size_t buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 546 extern char *__getwd_warn(char *__buf) __asm__ ("""getwd") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("please use getcwd instead, as getwd ""doesn't specify buffer size")));
nengel@9 547 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__nonnull__(1))) __attribute__((__deprecated__)) __attribute__((__warn_unused_result__)) char *__attribute__((__nothrow__, __leaf__)) getwd(char *__buf)
nengel@9 548 {
nengel@9 549 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 550 return __getwd_chk(__buf, __builtin_object_size(__buf, 2 > 1));
nengel@9 551 return __getwd_warn(__buf);
nengel@9 552 }
nengel@9 553 extern size_t __confstr_chk(int __name, char *__buf, size_t __len, size_t __buflen) __attribute__((__nothrow__, __leaf__));
nengel@9 554 extern size_t __confstr_alias(int __name, char *__buf, size_t __len) __asm__ ("""confstr") __attribute__((__nothrow__, __leaf__));
nengel@9 555 extern size_t __confstr_chk_warn(int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("""__confstr_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warning__("confstr called with bigger length than size of destination ""buffer")));
nengel@9 556 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) size_t __attribute__((__nothrow__, __leaf__)) confstr(int __name, char *__buf, size_t __len)
nengel@9 557 {
nengel@9 558 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 559 {
nengel@9 560 if (!__builtin_constant_p(__len))
nengel@9 561 return __confstr_chk(__name, __buf, __len, __builtin_object_size(__buf, 2 > 1));
nengel@9 562 if (__builtin_object_size(__buf, 2 > 1) < __len)
nengel@9 563 return __confstr_chk_warn(__name, __buf, __len, __builtin_object_size(__buf, 2 > 1));
nengel@9 564 }
nengel@9 565 return __confstr_alias(__name, __buf, __len);
nengel@9 566 }
nengel@9 567 extern int __getgroups_chk(int __size, __gid_t __list[], size_t __listlen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 568 extern int __getgroups_alias(int __size, __gid_t __list[]) __asm__ ("""getgroups") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 569 extern int __getgroups_chk_warn(int __size, __gid_t __list[], size_t __listlen) __asm__ ("""__getgroups_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)) __attribute__((__warning__("getgroups called with bigger group count than what ""can fit into destination buffer")));
nengel@9 570 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) getgroups(int __size, __gid_t __list[])
nengel@9 571 {
nengel@9 572 if (__builtin_object_size(__list, 2 > 1) != (size_t) - 1)
nengel@9 573 {
nengel@9 574 if (!__builtin_constant_p(__size) || __size < 0)
nengel@9 575 return __getgroups_chk(__size, __list, __builtin_object_size(__list, 2 > 1));
nengel@9 576 if (__size * sizeof(__gid_t) > __builtin_object_size(__list, 2 > 1))
nengel@9 577 return __getgroups_chk_warn(__size, __list, __builtin_object_size(__list, 2 > 1));
nengel@9 578 }
nengel@9 579 return __getgroups_alias(__size, __list);
nengel@9 580 }
nengel@9 581 extern int __ttyname_r_chk(int __fd, char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 582 extern int __ttyname_r_alias(int __fd, char *__buf, size_t __buflen) __asm__ ("""ttyname_r") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 583 extern int __ttyname_r_chk_warn(int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__ttyname_r_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warning__("ttyname_r called with bigger buflen than ""size of destination buffer")));
nengel@9 584 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) ttyname_r(int __fd, char *__buf, size_t __buflen)
nengel@9 585 {
nengel@9 586 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 587 {
nengel@9 588 if (!__builtin_constant_p(__buflen))
nengel@9 589 return __ttyname_r_chk(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 590 if (__buflen > __builtin_object_size(__buf, 2 > 1))
nengel@9 591 return __ttyname_r_chk_warn(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 592 }
nengel@9 593 return __ttyname_r_alias(__fd, __buf, __buflen);
nengel@9 594 }
nengel@9 595 extern int __getlogin_r_chk(char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nonnull__(1)));
nengel@9 596 extern int __getlogin_r_alias(char *__buf, size_t __buflen) __asm__ ("""getlogin_r") __attribute__((__nonnull__(1)));
nengel@9 597 extern int __getlogin_r_chk_warn(char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__getlogin_r_chk") __attribute__((__nonnull__(1))) __attribute__((__warning__("getlogin_r called with bigger buflen than ""size of destination buffer")));
nengel@9 598 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int getlogin_r(char *__buf, size_t __buflen)
nengel@9 599 {
nengel@9 600 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 601 {
nengel@9 602 if (!__builtin_constant_p(__buflen))
nengel@9 603 return __getlogin_r_chk(__buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 604 if (__buflen > __builtin_object_size(__buf, 2 > 1))
nengel@9 605 return __getlogin_r_chk_warn(__buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 606 }
nengel@9 607 return __getlogin_r_alias(__buf, __buflen);
nengel@9 608 }
nengel@9 609 extern int __gethostname_chk(char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 610 extern int __gethostname_alias(char *__buf, size_t __buflen) __asm__ ("""gethostname") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 611 extern int __gethostname_chk_warn(char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__gethostname_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warning__("gethostname called with bigger buflen than ""size of destination buffer")));
nengel@9 612 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) gethostname(char *__buf, size_t __buflen)
nengel@9 613 {
nengel@9 614 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 615 {
nengel@9 616 if (!__builtin_constant_p(__buflen))
nengel@9 617 return __gethostname_chk(__buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 618 if (__buflen > __builtin_object_size(__buf, 2 > 1))
nengel@9 619 return __gethostname_chk_warn(__buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 620 }
nengel@9 621 return __gethostname_alias(__buf, __buflen);
nengel@9 622 }
nengel@9 623 extern int __getdomainname_chk(char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 624 extern int __getdomainname_alias(char *__buf, size_t __buflen) __asm__ ("""getdomainname") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 625 extern int __getdomainname_chk_warn(char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__getdomainname_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__)) __attribute__((__warning__("getdomainname called with bigger ""buflen than size of destination ""buffer")));
nengel@9 626 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) getdomainname(char *__buf, size_t __buflen)
nengel@9 627 {
nengel@9 628 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 629 {
nengel@9 630 if (!__builtin_constant_p(__buflen))
nengel@9 631 return __getdomainname_chk(__buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 632 if (__buflen > __builtin_object_size(__buf, 2 > 1))
nengel@9 633 return __getdomainname_chk_warn(__buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 634 }
nengel@9 635 return __getdomainname_alias(__buf, __buflen);
nengel@9 636 }
nengel@9 637 struct _IO_FILE;
nengel@9 638 typedef struct _IO_FILE FILE;
nengel@9 639 typedef struct _IO_FILE __FILE;
nengel@9 640 typedef struct
nengel@9 641 {
nengel@9 642 int __count;
nengel@9 643 union
nengel@9 644 {
nengel@9 645 unsigned int __wch;
nengel@9 646 char __wchb[4];
nengel@9 647 } __value;
nengel@9 648 } __mbstate_t;
nengel@9 649 typedef struct
nengel@9 650 {
nengel@9 651 __off_t __pos;
nengel@9 652 __mbstate_t __state;
nengel@9 653 } _G_fpos_t;
nengel@9 654 typedef struct
nengel@9 655 {
nengel@9 656 __off64_t __pos;
nengel@9 657 __mbstate_t __state;
nengel@9 658 } _G_fpos64_t;
nengel@9 659 typedef int _G_int16_t __attribute__((__mode__(__HI__)));
nengel@9 660 typedef int _G_int32_t __attribute__((__mode__(__SI__)));
nengel@9 661 typedef unsigned int _G_uint16_t __attribute__((__mode__(__HI__)));
nengel@9 662 typedef unsigned int _G_uint32_t __attribute__((__mode__(__SI__)));
nengel@9 663 typedef __builtin_va_list __gnuc_va_list;
nengel@9 664 struct _IO_jump_t;
nengel@9 665 struct _IO_FILE;
nengel@9 666 typedef void _IO_lock_t;
nengel@9 667 struct _IO_marker
nengel@9 668 {
nengel@9 669 struct _IO_marker *_next;
nengel@9 670 struct _IO_FILE *_sbuf;
nengel@9 671 int _pos;
nengel@9 672 };
nengel@9 673 enum __codecvt_result
nengel@9 674 {
nengel@9 675 __codecvt_ok,
nengel@9 676 __codecvt_partial,
nengel@9 677 __codecvt_error,
nengel@9 678 __codecvt_noconv
nengel@9 679 };
nengel@9 680 struct _IO_FILE
nengel@9 681 {
nengel@9 682 int _flags;
nengel@9 683 char *_IO_read_ptr;
nengel@9 684 char *_IO_read_end;
nengel@9 685 char *_IO_read_base;
nengel@9 686 char *_IO_write_base;
nengel@9 687 char *_IO_write_ptr;
nengel@9 688 char *_IO_write_end;
nengel@9 689 char *_IO_buf_base;
nengel@9 690 char *_IO_buf_end;
nengel@9 691 char *_IO_save_base;
nengel@9 692 char *_IO_backup_base;
nengel@9 693 char *_IO_save_end;
nengel@9 694 struct _IO_marker *_markers;
nengel@9 695 struct _IO_FILE *_chain;
nengel@9 696 int _fileno;
nengel@9 697 int _flags2;
nengel@9 698 __off_t _old_offset;
nengel@9 699 unsigned short _cur_column;
nengel@9 700 signed char _vtable_offset;
nengel@9 701 char _shortbuf[1];
nengel@9 702 _IO_lock_t *_lock;
nengel@9 703 __off64_t _offset;
nengel@9 704 void *__pad1;
nengel@9 705 void *__pad2;
nengel@9 706 void *__pad3;
nengel@9 707 void *__pad4;
nengel@9 708 size_t __pad5;
nengel@9 709 int _mode;
nengel@9 710 char _unused2[15 * sizeof(int) - 4 * sizeof(void *) - sizeof(size_t)];
nengel@9 711 };
nengel@9 712 typedef struct _IO_FILE _IO_FILE;
nengel@9 713 struct _IO_FILE_plus;
nengel@9 714 extern struct _IO_FILE_plus _IO_2_1_stdin_;
nengel@9 715 extern struct _IO_FILE_plus _IO_2_1_stdout_;
nengel@9 716 extern struct _IO_FILE_plus _IO_2_1_stderr_;
nengel@9 717 typedef __ssize_t __io_read_fn(void *__cookie, char *__buf, size_t __nbytes);
nengel@9 718 typedef __ssize_t __io_write_fn(void *__cookie, __const char *__buf, size_t __n);
nengel@9 719 typedef int __io_seek_fn(void *__cookie, __off64_t *__pos, int __w);
nengel@9 720 typedef int __io_close_fn(void *__cookie);
nengel@9 721 extern int __underflow(_IO_FILE *);
nengel@9 722 extern int __uflow(_IO_FILE *);
nengel@9 723 extern int __overflow(_IO_FILE *, int);
nengel@9 724 extern int _IO_getc(_IO_FILE *__fp);
nengel@9 725 extern int _IO_putc(int __c, _IO_FILE *__fp);
nengel@9 726 extern int _IO_feof(_IO_FILE *__fp) __attribute__((__nothrow__, __leaf__));
nengel@9 727 extern int _IO_ferror(_IO_FILE *__fp) __attribute__((__nothrow__, __leaf__));
nengel@9 728 extern int _IO_peekc_locked(_IO_FILE *__fp);
nengel@9 729 extern void _IO_flockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__));
nengel@9 730 extern void _IO_funlockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__));
nengel@9 731 extern int _IO_ftrylockfile(_IO_FILE *) __attribute__((__nothrow__, __leaf__));
nengel@9 732 extern int _IO_vfscanf(_IO_FILE *__restrict , const char *__restrict , __gnuc_va_list, int *__restrict );
nengel@9 733 extern int _IO_vfprintf(_IO_FILE *__restrict , const char *__restrict , __gnuc_va_list);
nengel@9 734 extern __ssize_t _IO_padn(_IO_FILE *, int, __ssize_t);
nengel@9 735 extern size_t _IO_sgetn(_IO_FILE *, void *, size_t);
nengel@9 736 extern __off64_t _IO_seekoff(_IO_FILE *, __off64_t, int, int);
nengel@9 737 extern __off64_t _IO_seekpos(_IO_FILE *, __off64_t, int);
nengel@9 738 extern void _IO_free_backup_area(_IO_FILE *) __attribute__((__nothrow__, __leaf__));
nengel@9 739 typedef __gnuc_va_list va_list;
nengel@9 740 typedef _G_fpos_t fpos_t;
nengel@9 741 extern struct _IO_FILE *stdin;
nengel@9 742 extern struct _IO_FILE *stdout;
nengel@9 743 extern struct _IO_FILE *stderr;
nengel@9 744 extern int remove(__const char *__filename) __attribute__((__nothrow__, __leaf__));
nengel@9 745 extern int rename(__const char *__old, __const char *__new) __attribute__((__nothrow__, __leaf__));
nengel@9 746 extern int renameat(int __oldfd, __const char *__old, int __newfd, __const char *__new) __attribute__((__nothrow__, __leaf__));
nengel@9 747 extern FILE *tmpfile(void) __attribute__((__warn_unused_result__));
nengel@9 748 extern char *tmpnam(char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 749 extern char *tmpnam_r(char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 750 extern char *tempnam(__const char *__dir, __const char *__pfx) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
nengel@9 751 extern int fclose(FILE *__stream);
nengel@9 752 extern int fflush(FILE *__stream);
nengel@9 753 extern int fflush_unlocked(FILE *__stream);
nengel@9 754 extern FILE *fopen(__const char *__restrict __filename, __const char *__restrict __modes) __attribute__((__warn_unused_result__));
nengel@9 755 extern FILE *freopen(__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 756 extern FILE *fdopen(int __fd, __const char *__modes) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 757 extern FILE *fmemopen(void *__s, size_t __len, __const char *__modes) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 758 extern FILE *open_memstream(char **__bufloc, size_t *__sizeloc) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 759 extern void setbuf(FILE *__restrict __stream, char *__restrict __buf) __attribute__((__nothrow__, __leaf__));
nengel@9 760 extern int setvbuf(FILE *__restrict __stream, char *__restrict __buf, int __modes, size_t __n) __attribute__((__nothrow__, __leaf__));
nengel@9 761 extern void setbuffer(FILE *__restrict __stream, char *__restrict __buf, size_t __size) __attribute__((__nothrow__, __leaf__));
nengel@9 762 extern void setlinebuf(FILE *__stream) __attribute__((__nothrow__, __leaf__));
nengel@9 763 extern int fprintf(FILE *__restrict __stream, __const char *__restrict __format, ...);
nengel@9 764 extern int printf(__const char *__restrict __format, ...);
nengel@9 765 extern int sprintf(char *__restrict __s, __const char *__restrict __format, ...) __attribute__((__nothrow__));
nengel@9 766 extern int vfprintf(FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg);
nengel@9 767 extern int vprintf(__const char *__restrict __format, __gnuc_va_list __arg);
nengel@9 768 extern int vsprintf(char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__nothrow__));
nengel@9 769 extern int snprintf(char *__restrict __s, size_t __maxlen, __const char *__restrict __format, ...) __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 3, 4)));
nengel@9 770 extern int vsnprintf(char *__restrict __s, size_t __maxlen, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__nothrow__)) __attribute__((__format__(__printf__, 3, 0)));
nengel@9 771 extern int vdprintf(int __fd, __const char *__restrict __fmt, __gnuc_va_list __arg) __attribute__((__format__(__printf__, 2, 0)));
nengel@9 772 extern int dprintf(int __fd, __const char *__restrict __fmt, ...) __attribute__((__format__(__printf__, 2, 3)));
nengel@9 773 extern int fscanf(FILE *__restrict __stream, __const char *__restrict __format, ...) __attribute__((__warn_unused_result__));
nengel@9 774 extern int scanf(__const char *__restrict __format, ...) __attribute__((__warn_unused_result__));
nengel@9 775 extern int sscanf(__const char *__restrict __s, __const char *__restrict __format, ...) __attribute__((__nothrow__, __leaf__));
nengel@9 776 extern int fscanf(FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("""__isoc99_fscanf") __attribute__((__warn_unused_result__));
nengel@9 777 extern int scanf(__const char *__restrict __format, ...) __asm__ ("""__isoc99_scanf") __attribute__((__warn_unused_result__));
nengel@9 778 extern int sscanf(__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("""__isoc99_sscanf") __attribute__((__nothrow__, __leaf__));
nengel@9 779 extern int vfscanf(FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__format__(__scanf__, 2, 0))) __attribute__((__warn_unused_result__));
nengel@9 780 extern int vscanf(__const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__format__(__scanf__, 1, 0))) __attribute__((__warn_unused_result__));
nengel@9 781 extern int vsscanf(__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __attribute__((__nothrow__, __leaf__)) __attribute__((__format__(__scanf__, 2, 0)));
nengel@9 782 extern int vfscanf(FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("""__isoc99_vfscanf") __attribute__((__format__(__scanf__, 2, 0))) __attribute__((__warn_unused_result__));
nengel@9 783 extern int vscanf(__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("""__isoc99_vscanf") __attribute__((__format__(__scanf__, 1, 0))) __attribute__((__warn_unused_result__));
nengel@9 784 extern int vsscanf(__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("""__isoc99_vsscanf") __attribute__((__nothrow__, __leaf__)) __attribute__((__format__(__scanf__, 2, 0)));
nengel@9 785 extern int fgetc(FILE *__stream);
nengel@9 786 extern int getc(FILE *__stream);
nengel@9 787 extern int getchar(void);
nengel@9 788 extern int getc_unlocked(FILE *__stream);
nengel@9 789 extern int getchar_unlocked(void);
nengel@9 790 extern int fgetc_unlocked(FILE *__stream);
nengel@9 791 extern int fputc(int __c, FILE *__stream);
nengel@9 792 extern int putc(int __c, FILE *__stream);
nengel@9 793 extern int putchar(int __c);
nengel@9 794 extern int fputc_unlocked(int __c, FILE *__stream);
nengel@9 795 extern int putc_unlocked(int __c, FILE *__stream);
nengel@9 796 extern int putchar_unlocked(int __c);
nengel@9 797 extern int getw(FILE *__stream);
nengel@9 798 extern int putw(int __w, FILE *__stream);
nengel@9 799 extern char *fgets(char *__restrict __s, int __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 800 extern char *gets(char *__s) __attribute__((__warn_unused_result__));
nengel@9 801 extern __ssize_t __getdelim(char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 802 extern __ssize_t getdelim(char **__restrict __lineptr, size_t *__restrict __n, int __delimiter, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 803 extern __ssize_t getline(char **__restrict __lineptr, size_t *__restrict __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 804 extern int fputs(__const char *__restrict __s, FILE *__restrict __stream);
nengel@9 805 extern int puts(__const char *__s);
nengel@9 806 extern int ungetc(int __c, FILE *__stream);
nengel@9 807 extern size_t fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 808 extern size_t fwrite(__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __s);
nengel@9 809 extern size_t fread_unlocked(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 810 extern size_t fwrite_unlocked(__const void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream);
nengel@9 811 extern int fseek(FILE *__stream, long int __off, int __whence);
nengel@9 812 extern long int ftell(FILE *__stream) __attribute__((__warn_unused_result__));
nengel@9 813 extern void rewind(FILE *__stream);
nengel@9 814 extern int fseeko(FILE *__stream, __off_t __off, int __whence);
nengel@9 815 extern __off_t ftello(FILE *__stream) __attribute__((__warn_unused_result__));
nengel@9 816 extern int fgetpos(FILE *__restrict __stream, fpos_t *__restrict __pos);
nengel@9 817 extern int fsetpos(FILE *__stream, __const fpos_t *__pos);
nengel@9 818 extern void clearerr(FILE *__stream) __attribute__((__nothrow__, __leaf__));
nengel@9 819 extern int feof(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 820 extern int ferror(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 821 extern void clearerr_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__));
nengel@9 822 extern int feof_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 823 extern int ferror_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 824 extern void perror(__const char *__s);
nengel@9 825 extern int sys_nerr;
nengel@9 826 extern __const char *__const sys_errlist[];
nengel@9 827 extern int fileno(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 828 extern int fileno_unlocked(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 829 extern FILE *popen(__const char *__command, __const char *__modes) __attribute__((__warn_unused_result__));
nengel@9 830 extern int pclose(FILE *__stream);
nengel@9 831 extern char *ctermid(char *__s) __attribute__((__nothrow__, __leaf__));
nengel@9 832 extern void flockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__));
nengel@9 833 extern int ftrylockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 834 extern void funlockfile(FILE *__stream) __attribute__((__nothrow__, __leaf__));
nengel@9 835 extern __inline __attribute__((__gnu_inline__)) int getchar(void)
nengel@9 836 {
nengel@9 837 return _IO_getc(stdin);
nengel@9 838 }
nengel@9 839 extern __inline __attribute__((__gnu_inline__)) int fgetc_unlocked(FILE *__fp)
nengel@9 840 {
nengel@9 841 return (__builtin_expect(((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow(__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
nengel@9 842 }
nengel@9 843 extern __inline __attribute__((__gnu_inline__)) int getc_unlocked(FILE *__fp)
nengel@9 844 {
nengel@9 845 return (__builtin_expect(((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow(__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
nengel@9 846 }
nengel@9 847 extern __inline __attribute__((__gnu_inline__)) int getchar_unlocked(void)
nengel@9 848 {
nengel@9 849 return (__builtin_expect(((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow(stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
nengel@9 850 }
nengel@9 851 extern __inline __attribute__((__gnu_inline__)) int putchar(int __c)
nengel@9 852 {
nengel@9 853 return _IO_putc(__c, stdout);
nengel@9 854 }
nengel@9 855 extern __inline __attribute__((__gnu_inline__)) int fputc_unlocked(int __c, FILE *__stream)
nengel@9 856 {
nengel@9 857 return (__builtin_expect(((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow(__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
nengel@9 858 }
nengel@9 859 extern __inline __attribute__((__gnu_inline__)) int putc_unlocked(int __c, FILE *__stream)
nengel@9 860 {
nengel@9 861 return (__builtin_expect(((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow(__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
nengel@9 862 }
nengel@9 863 extern __inline __attribute__((__gnu_inline__)) int putchar_unlocked(int __c)
nengel@9 864 {
nengel@9 865 return (__builtin_expect(((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow(stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
nengel@9 866 }
nengel@9 867 extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) feof_unlocked(FILE *__stream)
nengel@9 868 {
nengel@9 869 return (((__stream)->_flags & 0x10) != 0);
nengel@9 870 }
nengel@9 871 extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) ferror_unlocked(FILE *__stream)
nengel@9 872 {
nengel@9 873 return (((__stream)->_flags & 0x20) != 0);
nengel@9 874 }
nengel@9 875 extern int __sprintf_chk(char *__restrict __s, int __flag, size_t __slen, __const char *__restrict __format, ...) __attribute__((__nothrow__, __leaf__));
nengel@9 876 extern int __vsprintf_chk(char *__restrict __s, int __flag, size_t __slen, __const char *__restrict __format, __gnuc_va_list __ap) __attribute__((__nothrow__, __leaf__));
nengel@9 877 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) sprintf(char *__restrict __s, __const char *__restrict __fmt, ...)
nengel@9 878 {
nengel@9 879 return __builtin___sprintf_chk(__s, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __builtin_va_arg_pack());
nengel@9 880 }
nengel@9 881 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) vsprintf(char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap)
nengel@9 882 {
nengel@9 883 return __builtin___vsprintf_chk(__s, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __ap);
nengel@9 884 }
nengel@9 885 extern int __snprintf_chk(char *__restrict __s, size_t __n, int __flag, size_t __slen, __const char *__restrict __format, ...) __attribute__((__nothrow__, __leaf__));
nengel@9 886 extern int __vsnprintf_chk(char *__restrict __s, size_t __n, int __flag, size_t __slen, __const char *__restrict __format, __gnuc_va_list __ap) __attribute__((__nothrow__, __leaf__));
nengel@9 887 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) snprintf(char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...)
nengel@9 888 {
nengel@9 889 return __builtin___snprintf_chk(__s, __n, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __builtin_va_arg_pack());
nengel@9 890 }
nengel@9 891 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) vsnprintf(char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap)
nengel@9 892 {
nengel@9 893 return __builtin___vsnprintf_chk(__s, __n, 2 - 1, __builtin_object_size(__s, 2 > 1), __fmt, __ap);
nengel@9 894 }
nengel@9 895 extern int __fprintf_chk(FILE *__restrict __stream, int __flag, __const char *__restrict __format, ...);
nengel@9 896 extern int __printf_chk(int __flag, __const char *__restrict __format, ...);
nengel@9 897 extern int __vfprintf_chk(FILE *__restrict __stream, int __flag, __const char *__restrict __format, __gnuc_va_list __ap);
nengel@9 898 extern int __vprintf_chk(int __flag, __const char *__restrict __format, __gnuc_va_list __ap);
nengel@9 899 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int fprintf(FILE *__restrict __stream, __const char *__restrict __fmt, ...)
nengel@9 900 {
nengel@9 901 return __fprintf_chk(__stream, 2 - 1, __fmt, __builtin_va_arg_pack());
nengel@9 902 }
nengel@9 903 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int printf(__const char *__restrict __fmt, ...)
nengel@9 904 {
nengel@9 905 return __printf_chk(2 - 1, __fmt, __builtin_va_arg_pack());
nengel@9 906 }
nengel@9 907 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int vprintf(__const char *__restrict __fmt, __gnuc_va_list __ap)
nengel@9 908 {
nengel@9 909 return __vfprintf_chk(stdout, 2 - 1, __fmt, __ap);
nengel@9 910 }
nengel@9 911 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int vfprintf(FILE *__restrict __stream, __const char *__restrict __fmt, __gnuc_va_list __ap)
nengel@9 912 {
nengel@9 913 return __vfprintf_chk(__stream, 2 - 1, __fmt, __ap);
nengel@9 914 }
nengel@9 915 extern char *__gets_chk(char *__str, size_t) __attribute__((__warn_unused_result__));
nengel@9 916 extern char *__gets_warn(char *__str) __asm__ ("""gets") __attribute__((__warn_unused_result__)) __attribute__((__warning__("please use fgets or getline instead, gets can't ""specify buffer size")));
nengel@9 917 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *gets(char *__str)
nengel@9 918 {
nengel@9 919 if (__builtin_object_size(__str, 2 > 1) != (size_t) - 1)
nengel@9 920 return __gets_chk(__str, __builtin_object_size(__str, 2 > 1));
nengel@9 921 return __gets_warn(__str);
nengel@9 922 }
nengel@9 923 extern char *__fgets_chk(char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 924 extern char *__fgets_alias(char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("""fgets") __attribute__((__warn_unused_result__));
nengel@9 925 extern char *__fgets_chk_warn(char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("""__fgets_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("fgets called with bigger size than length ""of destination buffer")));
nengel@9 926 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *fgets(char *__restrict __s, int __n, FILE *__restrict __stream)
nengel@9 927 {
nengel@9 928 if (__builtin_object_size(__s, 2 > 1) != (size_t) - 1)
nengel@9 929 {
nengel@9 930 if (!__builtin_constant_p(__n) || __n <= 0)
nengel@9 931 return __fgets_chk(__s, __builtin_object_size(__s, 2 > 1), __n, __stream);
nengel@9 932 if ((size_t) __n > __builtin_object_size(__s, 2 > 1))
nengel@9 933 return __fgets_chk_warn(__s, __builtin_object_size(__s, 2 > 1), __n, __stream);
nengel@9 934 }
nengel@9 935 return __fgets_alias(__s, __n, __stream);
nengel@9 936 }
nengel@9 937 extern size_t __fread_chk(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 938 extern size_t __fread_alias(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""fread") __attribute__((__warn_unused_result__));
nengel@9 939 extern size_t __fread_chk_warn(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""__fread_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("fread called with bigger size * nmemb than length ""of destination buffer")));
nengel@9 940 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) size_t fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream)
nengel@9 941 {
nengel@9 942 if (__builtin_object_size(__ptr, 0) != (size_t) - 1)
nengel@9 943 {
nengel@9 944 if (!__builtin_constant_p(__size) || !__builtin_constant_p(__n) || (__size | __n) >= (((size_t) 1) << (8 * sizeof(size_t) / 2)))
nengel@9 945 return __fread_chk(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream);
nengel@9 946 if (__size * __n > __builtin_object_size(__ptr, 0))
nengel@9 947 return __fread_chk_warn(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream);
nengel@9 948 }
nengel@9 949 return __fread_alias(__ptr, __size, __n, __stream);
nengel@9 950 }
nengel@9 951 extern size_t __fread_unlocked_chk(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __attribute__((__warn_unused_result__));
nengel@9 952 extern size_t __fread_unlocked_alias(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""fread_unlocked") __attribute__((__warn_unused_result__));
nengel@9 953 extern size_t __fread_unlocked_chk_warn(void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("""__fread_unlocked_chk") __attribute__((__warn_unused_result__)) __attribute__((__warning__("fread_unlocked called with bigger size * nmemb than ""length of destination buffer")));
nengel@9 954 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) size_t fread_unlocked(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream)
nengel@9 955 {
nengel@9 956 if (__builtin_object_size(__ptr, 0) != (size_t) - 1)
nengel@9 957 {
nengel@9 958 if (!__builtin_constant_p(__size) || !__builtin_constant_p(__n) || (__size | __n) >= (((size_t) 1) << (8 * sizeof(size_t) / 2)))
nengel@9 959 return __fread_unlocked_chk(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream);
nengel@9 960 if (__size * __n > __builtin_object_size(__ptr, 0))
nengel@9 961 return __fread_unlocked_chk_warn(__ptr, __builtin_object_size(__ptr, 0), __size, __n, __stream);
nengel@9 962 }
nengel@9 963 if (__builtin_constant_p(__size) && __builtin_constant_p(__n) && (__size | __n) < (((size_t) 1) << (8 * sizeof(size_t) / 2)) && __size * __n <= 8)
nengel@9 964 {
nengel@9 965 size_t __cnt = __size * __n;
nengel@9 966 char *__cptr = (char *) __ptr;
nengel@9 967 if (__cnt == 0)
nengel@9 968 return 0;
nengel@9 969 for (;
nengel@9 970 __cnt > 0;
nengel@9 971 --__cnt)
nengel@9 972 {
nengel@9 973 int __c = (__builtin_expect(((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow(__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++);
nengel@9 974 if (__c == (- 1))
nengel@9 975 break;
nengel@9 976 *__cptr++ = __c;
nengel@9 977 }
nengel@9 978 return (__cptr - (char *) __ptr) / __size;
nengel@9 979 }
nengel@9 980 return __fread_unlocked_alias(__ptr, __size, __n, __stream);
nengel@9 981 }
nengel@9 982 typedef signed char int8_t;
nengel@9 983 typedef short int int16_t;
nengel@9 984 typedef int int32_t;
nengel@9 985 typedef long int int64_t;
nengel@9 986 typedef unsigned char uint8_t;
nengel@9 987 typedef unsigned short int uint16_t;
nengel@9 988 typedef unsigned int uint32_t;
nengel@9 989 typedef unsigned long int uint64_t;
nengel@9 990 typedef signed char int_least8_t;
nengel@9 991 typedef short int int_least16_t;
nengel@9 992 typedef int int_least32_t;
nengel@9 993 typedef long int int_least64_t;
nengel@9 994 typedef unsigned char uint_least8_t;
nengel@9 995 typedef unsigned short int uint_least16_t;
nengel@9 996 typedef unsigned int uint_least32_t;
nengel@9 997 typedef unsigned long int uint_least64_t;
nengel@9 998 typedef signed char int_fast8_t;
nengel@9 999 typedef long int int_fast16_t;
nengel@9 1000 typedef long int int_fast32_t;
nengel@9 1001 typedef long int int_fast64_t;
nengel@9 1002 typedef unsigned char uint_fast8_t;
nengel@9 1003 typedef unsigned long int uint_fast16_t;
nengel@9 1004 typedef unsigned long int uint_fast32_t;
nengel@9 1005 typedef unsigned long int uint_fast64_t;
nengel@9 1006 typedef unsigned long int uintptr_t;
nengel@9 1007 typedef long int intmax_t;
nengel@9 1008 typedef unsigned long int uintmax_t;
nengel@9 1009 typedef long int ptrdiff_t;
nengel@9 1010 typedef int wchar_t;
nengel@9 1011 typedef struct
nengel@9 1012 {
nengel@9 1013 void **address;
nengel@9 1014 ptrdiff_t offset;
nengel@9 1015 struct
nengel@9 1016 {
nengel@9 1017 _Bool input : 1;
nengel@9 1018 _Bool output : 1;
nengel@9 1019 _Bool can_rename : 1;
nengel@9 1020 _Bool commutative : 1;
nengel@9 1021 } flags;
nengel@9 1022 size_t size;
nengel@9 1023 } nanos_dependence_internal_t;
nengel@9 1024 typedef enum
nengel@9 1025 {
nengel@9 1026 NANOS_PRIVATE,
nengel@9 1027 NANOS_SHARED
nengel@9 1028 } nanos_sharing_t;
nengel@9 1029 typedef struct
nengel@9 1030 {
nengel@9 1031 void *original;
nengel@9 1032 void *privates;
nengel@9 1033 void (*bop)(void *, void *);
nengel@9 1034 void (*vop)(int n, void *, void *);
nengel@9 1035 void (*cleanup)(void *);
nengel@9 1036 } nanos_reduction_t;
nengel@9 1037 typedef struct
nengel@9 1038 {
nengel@9 1039 uint64_t address;
nengel@9 1040 nanos_sharing_t sharing;
nengel@9 1041 struct
nengel@9 1042 {
nengel@9 1043 _Bool input : 1;
nengel@9 1044 _Bool output : 1;
nengel@9 1045 } flags;
nengel@9 1046 size_t size;
nengel@9 1047 } nanos_copy_data_internal_t;
nengel@9 1048 typedef nanos_dependence_internal_t nanos_dependence_t;
nengel@9 1049 typedef nanos_copy_data_internal_t nanos_copy_data_t;
nengel@9 1050 typedef void *nanos_thread_t;
nengel@9 1051 typedef void *nanos_wd_t;
nengel@9 1052 typedef struct
nengel@9 1053 {
nengel@9 1054 int nsect;
nengel@9 1055 nanos_wd_t lwd[];
nengel@9 1056 } nanos_compound_wd_data_t;
nengel@9 1057 typedef struct
nengel@9 1058 {
nengel@9 1059 int n;
nengel@9 1060 } nanos_repeat_n_info_t;
nengel@9 1061 typedef struct
nengel@9 1062 {
nengel@9 1063 int lower;
nengel@9 1064 int upper;
nengel@9 1065 int step;
nengel@9 1066 _Bool last;
nengel@9 1067 int chunk;
nengel@9 1068 int stride;
nengel@9 1069 int thid;
nengel@9 1070 void *args;
nengel@9 1071 } nanos_loop_info_t;
nengel@9 1072 typedef void *nanos_ws_t;
nengel@9 1073 typedef void *nanos_ws_info_t;
nengel@9 1074 typedef void *nanos_ws_data_t;
nengel@9 1075 typedef void *nanos_ws_item_t;
nengel@9 1076 typedef struct
nengel@9 1077 {
nengel@9 1078 int lower_bound;
nengel@9 1079 int upper_bound;
nengel@9 1080 int loop_step;
nengel@9 1081 int chunk_size;
nengel@9 1082 } nanos_ws_info_loop_t;
nengel@9 1083 typedef struct
nengel@9 1084 {
nengel@9 1085 int lower;
nengel@9 1086 int upper;
nengel@9 1087 _Bool execute : 1;
nengel@9 1088 _Bool last : 1;
nengel@9 1089 } nanos_ws_item_loop_t;
nengel@9 1090 typedef struct nanos_ws_desc
nengel@9 1091 {
nengel@9 1092 volatile nanos_ws_t ws;
nengel@9 1093 nanos_ws_data_t data;
nengel@9 1094 struct nanos_ws_desc *next;
nengel@9 1095 nanos_thread_t *threads;
nengel@9 1096 int nths;
nengel@9 1097 } nanos_ws_desc_t;
nengel@9 1098 typedef struct
nengel@9 1099 {
nengel@9 1100 _Bool mandatory_creation : 1;
nengel@9 1101 _Bool tied : 1;
nengel@9 1102 _Bool reserved0 : 1;
nengel@9 1103 _Bool reserved1 : 1;
nengel@9 1104 _Bool reserved2 : 1;
nengel@9 1105 _Bool reserved3 : 1;
nengel@9 1106 _Bool reserved4 : 1;
nengel@9 1107 _Bool reserved5 : 1;
nengel@9 1108 } nanos_wd_props_t;
nengel@9 1109 typedef struct
nengel@9 1110 {
nengel@9 1111 nanos_thread_t tie_to;
nengel@9 1112 unsigned int priority;
nengel@9 1113 } nanos_wd_dyn_props_t;
nengel@9 1114 typedef struct
nengel@9 1115 {
nengel@9 1116 void *(*factory)(void *arg);
nengel@9 1117 void *arg;
nengel@9 1118 } nanos_device_t;
nengel@9 1119 typedef enum
nengel@9 1120 {
nengel@9 1121 NANOS_STATE_START,
nengel@9 1122 NANOS_STATE_END,
nengel@9 1123 NANOS_SUBSTATE_START,
nengel@9 1124 NANOS_SUBSTATE_END,
nengel@9 1125 NANOS_BURST_START,
nengel@9 1126 NANOS_BURST_END,
nengel@9 1127 NANOS_PTP_START,
nengel@9 1128 NANOS_PTP_END,
nengel@9 1129 NANOS_POINT,
nengel@9 1130 EVENT_TYPES
nengel@9 1131 } nanos_event_type_t;
nengel@9 1132 typedef enum
nengel@9 1133 {
nengel@9 1134 NANOS_NOT_CREATED,
nengel@9 1135 NANOS_NOT_RUNNING,
nengel@9 1136 NANOS_STARTUP,
nengel@9 1137 NANOS_SHUTDOWN,
nengel@9 1138 NANOS_ERROR,
nengel@9 1139 NANOS_IDLE,
nengel@9 1140 NANOS_RUNTIME,
nengel@9 1141 NANOS_RUNNING,
nengel@9 1142 NANOS_SYNCHRONIZATION,
nengel@9 1143 NANOS_SCHEDULING,
nengel@9 1144 NANOS_CREATION,
nengel@9 1145 NANOS_MEM_TRANSFER_IN,
nengel@9 1146 NANOS_MEM_TRANSFER_OUT,
nengel@9 1147 NANOS_MEM_TRANSFER_LOCAL,
nengel@9 1148 NANOS_MEM_TRANSFER_DEVICE_IN,
nengel@9 1149 NANOS_MEM_TRANSFER_DEVICE_OUT,
nengel@9 1150 NANOS_MEM_TRANSFER_DEVICE_LOCAL,
nengel@9 1151 NANOS_CACHE,
nengel@9 1152 NANOS_YIELD,
nengel@9 1153 NANOS_ACQUIRING_LOCK,
nengel@9 1154 NANOS_CONTEXT_SWITCH,
nengel@9 1155 NANOS_DEBUG,
nengel@9 1156 NANOS_EVENT_STATE_TYPES
nengel@9 1157 } nanos_event_state_value_t;
nengel@9 1158 typedef enum
nengel@9 1159 {
nengel@9 1160 NANOS_WD_DOMAIN,
nengel@9 1161 NANOS_WD_DEPENDENCY,
nengel@9 1162 NANOS_WAIT,
nengel@9 1163 NANOS_WD_REMOTE,
nengel@9 1164 NANOS_XFER_PUT,
nengel@9 1165 NANOS_XFER_GET
nengel@9 1166 } nanos_event_domain_t;
nengel@9 1167 typedef long long nanos_event_id_t;
nengel@9 1168 typedef unsigned int nanos_event_key_t;
nengel@9 1169 typedef unsigned long long nanos_event_value_t;
nengel@9 1170 typedef struct
nengel@9 1171 {
nengel@9 1172 nanos_event_key_t key;
nengel@9 1173 nanos_event_value_t value;
nengel@9 1174 } nanos_event_burst_t;
nengel@9 1175 typedef struct
nengel@9 1176 {
nengel@9 1177 nanos_event_state_value_t value;
nengel@9 1178 } nanos_event_state_t;
nengel@9 1179 typedef struct
nengel@9 1180 {
nengel@9 1181 unsigned int nkvs;
nengel@9 1182 nanos_event_key_t *keys;
nengel@9 1183 nanos_event_value_t *values;
nengel@9 1184 } nanos_event_point_t;
nengel@9 1185 typedef struct
nengel@9 1186 {
nengel@9 1187 nanos_event_domain_t domain;
nengel@9 1188 nanos_event_id_t id;
nengel@9 1189 unsigned int nkvs;
nengel@9 1190 nanos_event_key_t *keys;
nengel@9 1191 nanos_event_value_t *values;
nengel@9 1192 } nanos_event_ptp_t;
nengel@9 1193 typedef struct
nengel@9 1194 {
nengel@9 1195 nanos_event_type_t type;
nengel@9 1196 union
nengel@9 1197 {
nengel@9 1198 nanos_event_burst_t burst;
nengel@9 1199 nanos_event_state_t state;
nengel@9 1200 nanos_event_point_t point;
nengel@9 1201 nanos_event_ptp_t ptp;
nengel@9 1202 } info;
nengel@9 1203 } nanos_event_t;
nengel@9 1204 typedef enum
nengel@9 1205 {
nengel@9 1206 NANOS_LOCK_FREE = 0,
nengel@9 1207 NANOS_LOCK_BUSY = 1
nengel@9 1208 } nanos_lock_state_t;
nengel@9 1209 typedef struct nanos_lock_t
nengel@9 1210 {
nengel@9 1211 volatile nanos_lock_state_t _state;
nengel@9 1212 } nanos_lock_t;
nengel@9 1213 typedef void (*nanos_translate_args_t)(void *, nanos_wd_t);
nengel@9 1214 typedef void (nanos_init_func_t)(void *);
nengel@9 1215 typedef struct
nengel@9 1216 {
nengel@9 1217 nanos_init_func_t *func;
nengel@9 1218 void *data;
nengel@9 1219 } nanos_init_desc_t;
nengel@9 1220 typedef void *nanos_wg_t;
nengel@9 1221 typedef void *nanos_team_t;
nengel@9 1222 typedef void *nanos_sched_t;
nengel@9 1223 typedef void *nanos_slicer_t;
nengel@9 1224 typedef void *nanos_dd_t;
nengel@9 1225 typedef void *nanos_sync_cond_t;
nengel@9 1226 typedef unsigned int nanos_copy_id_t;
nengel@9 1227 typedef struct nanos_const_wd_definition_tag
nengel@9 1228 {
nengel@9 1229 nanos_wd_props_t props;
nengel@9 1230 size_t data_alignment;
nengel@9 1231 size_t num_copies;
nengel@9 1232 size_t num_devices;
nengel@9 1233 } nanos_const_wd_definition_t;
nengel@9 1234 typedef struct
nengel@9 1235 {
nengel@9 1236 int nthreads;
nengel@9 1237 void *arch;
nengel@9 1238 } nanos_constraint_t;
nengel@9 1239 typedef enum
nengel@9 1240 {
nengel@9 1241 NANOS_OK = 0,
nengel@9 1242 NANOS_UNKNOWN_ERR,
nengel@9 1243 NANOS_UNIMPLEMENTED
nengel@9 1244 } nanos_err_t;
nengel@9 1245 typedef struct
nengel@9 1246 {
nengel@9 1247 void (*outline)(void *);
nengel@9 1248 } nanos_smp_args_t;
nengel@9 1249 extern nanos_wd_t nanos_current_wd_(void);
nengel@9 1250 extern nanos_wd_t nanos_current_wd(void);
nengel@9 1251 extern int nanos_get_wd_id_(nanos_wd_t wd);
nengel@9 1252 extern int nanos_get_wd_id(nanos_wd_t wd);
nengel@9 1253 extern nanos_slicer_t nanos_find_slicer_(const char *slicer);
nengel@9 1254 extern nanos_slicer_t nanos_find_slicer(const char *slicer);
nengel@9 1255 extern nanos_ws_t nanos_find_worksharing_(const char *label);
nengel@9 1256 extern nanos_ws_t nanos_find_worksharing(const char *label);
nengel@9 1257 extern nanos_err_t nanos_create_wd_compact_(nanos_wd_t *wd, nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void **data, nanos_wg_t wg, nanos_copy_data_t **copies);
nengel@9 1258 extern nanos_err_t nanos_create_wd_compact(nanos_wd_t *wd, nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void **data, nanos_wg_t wg, nanos_copy_data_t **copies);
nengel@9 1259 extern nanos_err_t nanos_set_translate_function_(nanos_wd_t wd, nanos_translate_args_t translate_args);
nengel@9 1260 extern nanos_err_t nanos_set_translate_function(nanos_wd_t wd, nanos_translate_args_t translate_args);
nengel@9 1261 extern nanos_err_t nanos_create_sliced_wd_(nanos_wd_t *uwd, size_t num_devices, nanos_device_t *devices, size_t outline_data_size, int outline_data_align, void **outline_data, nanos_wg_t uwg, nanos_slicer_t slicer, nanos_wd_props_t *props, nanos_wd_dyn_props_t *dyn_props, size_t num_copies, nanos_copy_data_t **copies);
nengel@9 1262 extern nanos_err_t nanos_create_sliced_wd(nanos_wd_t *uwd, size_t num_devices, nanos_device_t *devices, size_t outline_data_size, int outline_data_align, void **outline_data, nanos_wg_t uwg, nanos_slicer_t slicer, nanos_wd_props_t *props, nanos_wd_dyn_props_t *dyn_props, size_t num_copies, nanos_copy_data_t **copies);
nengel@9 1263 extern nanos_err_t nanos_submit_(nanos_wd_t wd, size_t num_deps, nanos_dependence_t *deps, nanos_team_t team);
nengel@9 1264 extern nanos_err_t nanos_submit(nanos_wd_t wd, size_t num_deps, nanos_dependence_t *deps, nanos_team_t team);
nengel@9 1265 extern nanos_err_t nanos_create_wd_and_run_compact_(nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void *data, size_t num_deps, nanos_dependence_t *deps, nanos_copy_data_t *copies, nanos_translate_args_t translate_args);
nengel@9 1266 extern nanos_err_t nanos_create_wd_and_run_compact(nanos_const_wd_definition_t *const_data, nanos_wd_dyn_props_t *dyn_props, size_t data_size, void *data, size_t num_deps, nanos_dependence_t *deps, nanos_copy_data_t *copies, nanos_translate_args_t translate_args);
nengel@9 1267 extern nanos_err_t nanos_create_for_(void);
nengel@9 1268 extern nanos_err_t nanos_create_for(void);
nengel@9 1269 extern nanos_err_t nanos_set_internal_wd_data_(nanos_wd_t wd, void *data);
nengel@9 1270 extern nanos_err_t nanos_set_internal_wd_data(nanos_wd_t wd, void *data);
nengel@9 1271 extern nanos_err_t nanos_get_internal_wd_data_(nanos_wd_t wd, void **data);
nengel@9 1272 extern nanos_err_t nanos_get_internal_wd_data(nanos_wd_t wd, void **data);
nengel@9 1273 extern nanos_err_t nanos_yield_(void);
nengel@9 1274 extern nanos_err_t nanos_yield(void);
nengel@9 1275 extern nanos_err_t nanos_slicer_get_specific_data_(nanos_slicer_t slicer, void **data);
nengel@9 1276 extern nanos_err_t nanos_slicer_get_specific_data(nanos_slicer_t slicer, void **data);
nengel@9 1277 extern nanos_err_t nanos_create_team_(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, nanos_constraint_t *constraints, _Bool reuse, nanos_thread_t *info);
nengel@9 1278 extern nanos_err_t nanos_create_team(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, nanos_constraint_t *constraints, _Bool reuse, nanos_thread_t *info);
nengel@9 1279 extern nanos_err_t nanos_create_team_mapped_(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, unsigned int *mapping);
nengel@9 1280 extern nanos_err_t nanos_create_team_mapped(nanos_team_t *team, nanos_sched_t sg, unsigned int *nthreads, unsigned int *mapping);
nengel@9 1281 extern nanos_err_t nanos_leave_team_();
nengel@9 1282 extern nanos_err_t nanos_leave_team();
nengel@9 1283 extern nanos_err_t nanos_end_team_(nanos_team_t team);
nengel@9 1284 extern nanos_err_t nanos_end_team(nanos_team_t team);
nengel@9 1285 extern nanos_err_t nanos_team_barrier_(void);
nengel@9 1286 extern nanos_err_t nanos_team_barrier(void);
nengel@9 1287 extern nanos_err_t nanos_single_guard_(_Bool *);
nengel@9 1288 extern nanos_err_t nanos_single_guard(_Bool *);
nengel@9 1289 extern nanos_err_t nanos_enter_sync_init_(_Bool *b);
nengel@9 1290 extern nanos_err_t nanos_enter_sync_init(_Bool *b);
nengel@9 1291 extern nanos_err_t nanos_wait_sync_init_(void);
nengel@9 1292 extern nanos_err_t nanos_wait_sync_init(void);
nengel@9 1293 extern nanos_err_t nanos_release_sync_init_(void);
nengel@9 1294 extern nanos_err_t nanos_release_sync_init(void);
nengel@9 1295 extern nanos_err_t nanos_team_get_num_starring_threads_(int *n);
nengel@9 1296 extern nanos_err_t nanos_team_get_num_starring_threads(int *n);
nengel@9 1297 extern nanos_err_t nanos_team_get_starring_threads_(int *n, nanos_thread_t *list_of_threads);
nengel@9 1298 extern nanos_err_t nanos_team_get_starring_threads(int *n, nanos_thread_t *list_of_threads);
nengel@9 1299 extern nanos_err_t nanos_team_get_num_supporting_threads_(int *n);
nengel@9 1300 extern nanos_err_t nanos_team_get_num_supporting_threads(int *n);
nengel@9 1301 extern nanos_err_t nanos_team_get_supporting_threads_(int *n, nanos_thread_t *list_of_threads);
nengel@9 1302 extern nanos_err_t nanos_team_get_supporting_threads(int *n, nanos_thread_t *list_of_threads);
nengel@9 1303 extern nanos_err_t nanos_register_reduction_(nanos_reduction_t *red);
nengel@9 1304 extern nanos_err_t nanos_register_reduction(nanos_reduction_t *red);
nengel@9 1305 extern nanos_err_t nanos_reduction_get_private_data_(void **copy, void *sink);
nengel@9 1306 extern nanos_err_t nanos_reduction_get_private_data(void **copy, void *sink);
nengel@9 1307 extern nanos_err_t nanos_worksharing_create_(nanos_ws_desc_t **wsd, nanos_ws_t ws, nanos_ws_info_t *info, _Bool *b);
nengel@9 1308 extern nanos_err_t nanos_worksharing_create(nanos_ws_desc_t **wsd, nanos_ws_t ws, nanos_ws_info_t *info, _Bool *b);
nengel@9 1309 extern nanos_err_t nanos_worksharing_next_item_(nanos_ws_desc_t *wsd, nanos_ws_item_t *wsi);
nengel@9 1310 extern nanos_err_t nanos_worksharing_next_item(nanos_ws_desc_t *wsd, nanos_ws_item_t *wsi);
nengel@9 1311 extern nanos_err_t nanos_wg_wait_completion_(nanos_wg_t wg, _Bool avoid_flush);
nengel@9 1312 extern nanos_err_t nanos_wg_wait_completion(nanos_wg_t wg, _Bool avoid_flush);
nengel@9 1313 extern nanos_err_t nanos_create_int_sync_cond_(nanos_sync_cond_t *sync_cond, volatile int *p, int condition);
nengel@9 1314 extern nanos_err_t nanos_create_int_sync_cond(nanos_sync_cond_t *sync_cond, volatile int *p, int condition);
nengel@9 1315 extern nanos_err_t nanos_create_bool_sync_cond_(nanos_sync_cond_t *sync_cond, volatile _Bool *p, _Bool condition);
nengel@9 1316 extern nanos_err_t nanos_create_bool_sync_cond(nanos_sync_cond_t *sync_cond, volatile _Bool *p, _Bool condition);
nengel@9 1317 extern nanos_err_t nanos_sync_cond_wait_(nanos_sync_cond_t *sync_cond);
nengel@9 1318 extern nanos_err_t nanos_sync_cond_wait(nanos_sync_cond_t *sync_cond);
nengel@9 1319 extern nanos_err_t nanos_sync_cond_signal_(nanos_sync_cond_t *sync_cond);
nengel@9 1320 extern nanos_err_t nanos_sync_cond_signal(nanos_sync_cond_t *sync_cond);
nengel@9 1321 extern nanos_err_t nanos_destroy_sync_cond_(nanos_sync_cond_t *sync_cond);
nengel@9 1322 extern nanos_err_t nanos_destroy_sync_cond(nanos_sync_cond_t *sync_cond);
nengel@9 1323 extern nanos_err_t nanos_wait_on_(size_t num_deps, nanos_dependence_t *deps);
nengel@9 1324 extern nanos_err_t nanos_wait_on(size_t num_deps, nanos_dependence_t *deps);
nengel@9 1325 extern nanos_err_t nanos_init_lock_(nanos_lock_t **lock);
nengel@9 1326 extern nanos_err_t nanos_init_lock(nanos_lock_t **lock);
nengel@9 1327 extern nanos_err_t nanos_set_lock_(nanos_lock_t *lock);
nengel@9 1328 extern nanos_err_t nanos_set_lock(nanos_lock_t *lock);
nengel@9 1329 extern nanos_err_t nanos_unset_lock_(nanos_lock_t *lock);
nengel@9 1330 extern nanos_err_t nanos_unset_lock(nanos_lock_t *lock);
nengel@9 1331 extern nanos_err_t nanos_try_lock_(nanos_lock_t *lock, _Bool *result);
nengel@9 1332 extern nanos_err_t nanos_try_lock(nanos_lock_t *lock, _Bool *result);
nengel@9 1333 extern nanos_err_t nanos_destroy_lock_(nanos_lock_t *lock);
nengel@9 1334 extern nanos_err_t nanos_destroy_lock(nanos_lock_t *lock);
nengel@9 1335 extern nanos_err_t nanos_get_addr_(nanos_copy_id_t copy_id, void **addr, nanos_wd_t cwd);
nengel@9 1336 extern nanos_err_t nanos_get_addr(nanos_copy_id_t copy_id, void **addr, nanos_wd_t cwd);
nengel@9 1337 extern nanos_err_t nanos_copy_value_(void *dst, nanos_copy_id_t copy_id, nanos_wd_t cwd);
nengel@9 1338 extern nanos_err_t nanos_copy_value(void *dst, nanos_copy_id_t copy_id, nanos_wd_t cwd);
nengel@9 1339 extern nanos_err_t nanos_get_num_running_tasks_(int *num);
nengel@9 1340 extern nanos_err_t nanos_get_num_running_tasks(int *num);
nengel@9 1341 extern nanos_err_t nanos_start_scheduler_();
nengel@9 1342 extern nanos_err_t nanos_start_scheduler();
nengel@9 1343 extern nanos_err_t nanos_stop_scheduler_();
nengel@9 1344 extern nanos_err_t nanos_stop_scheduler();
nengel@9 1345 extern nanos_err_t nanos_scheduler_enabled_(_Bool *res);
nengel@9 1346 extern nanos_err_t nanos_scheduler_enabled(_Bool *res);
nengel@9 1347 extern nanos_err_t nanos_wait_until_threads_paused_();
nengel@9 1348 extern nanos_err_t nanos_wait_until_threads_paused();
nengel@9 1349 extern nanos_err_t nanos_wait_until_threads_unpaused_();
nengel@9 1350 extern nanos_err_t nanos_wait_until_threads_unpaused();
nengel@9 1351 extern nanos_err_t nanos_delay_start_();
nengel@9 1352 extern nanos_err_t nanos_delay_start();
nengel@9 1353 extern nanos_err_t nanos_start_();
nengel@9 1354 extern nanos_err_t nanos_start();
nengel@9 1355 extern nanos_err_t nanos_finish_();
nengel@9 1356 extern nanos_err_t nanos_finish();
nengel@9 1357 extern nanos_err_t nanos_malloc_(void **p, size_t size, const char *file, int line);
nengel@9 1358 extern nanos_err_t nanos_malloc(void **p, size_t size, const char *file, int line);
nengel@9 1359 extern nanos_err_t nanos_free_(void *p);
nengel@9 1360 extern nanos_err_t nanos_free(void *p);
nengel@9 1361 extern void nanos_handle_error_(nanos_err_t err);
nengel@9 1362 extern void nanos_handle_error(nanos_err_t err);
nengel@9 1363 extern void *nanos_smp_factory_(void *args);
nengel@9 1364 extern void *nanos_smp_factory(void *args);
nengel@9 1365 extern nanos_err_t nanos_instrument_register_key_(nanos_event_key_t *event_key, const char *key, const char *description, _Bool abort_when_registered);
nengel@9 1366 extern nanos_err_t nanos_instrument_register_key(nanos_event_key_t *event_key, const char *key, const char *description, _Bool abort_when_registered);
nengel@9 1367 extern nanos_err_t nanos_instrument_register_value_(nanos_event_value_t *event_value, const char *key, const char *value, const char *description, _Bool abort_when_registered);
nengel@9 1368 extern nanos_err_t nanos_instrument_register_value(nanos_event_value_t *event_value, const char *key, const char *value, const char *description, _Bool abort_when_registered);
nengel@9 1369 extern nanos_err_t nanos_instrument_register_value_with_val_(nanos_event_value_t val, const char *key, const char *value, const char *description, _Bool abort_when_registered);
nengel@9 1370 extern nanos_err_t nanos_instrument_register_value_with_val(nanos_event_value_t val, const char *key, const char *value, const char *description, _Bool abort_when_registered);
nengel@9 1371 extern nanos_err_t nanos_instrument_get_key_(const char *key, nanos_event_key_t *event_key);
nengel@9 1372 extern nanos_err_t nanos_instrument_get_key(const char *key, nanos_event_key_t *event_key);
nengel@9 1373 extern nanos_err_t nanos_instrument_get_value_(const char *key, const char *value, nanos_event_value_t *event_value);
nengel@9 1374 extern nanos_err_t nanos_instrument_get_value(const char *key, const char *value, nanos_event_value_t *event_value);
nengel@9 1375 extern nanos_err_t nanos_instrument_events_(unsigned int num_events, nanos_event_t events[]);
nengel@9 1376 extern nanos_err_t nanos_instrument_events(unsigned int num_events, nanos_event_t events[]);
nengel@9 1377 extern nanos_err_t nanos_instrument_enter_state_(nanos_event_state_value_t state);
nengel@9 1378 extern nanos_err_t nanos_instrument_enter_state(nanos_event_state_value_t state);
nengel@9 1379 extern nanos_err_t nanos_instrument_leave_state_(void);
nengel@9 1380 extern nanos_err_t nanos_instrument_leave_state(void);
nengel@9 1381 extern nanos_err_t nanos_instrument_enter_burst_(nanos_event_key_t key, nanos_event_value_t value);
nengel@9 1382 extern nanos_err_t nanos_instrument_enter_burst(nanos_event_key_t key, nanos_event_value_t value);
nengel@9 1383 extern nanos_err_t nanos_instrument_leave_burst_(nanos_event_key_t key);
nengel@9 1384 extern nanos_err_t nanos_instrument_leave_burst(nanos_event_key_t key);
nengel@9 1385 extern nanos_err_t nanos_instrument_point_event_(unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values);
nengel@9 1386 extern nanos_err_t nanos_instrument_point_event(unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values);
nengel@9 1387 extern nanos_err_t nanos_instrument_ptp_start_(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values);
nengel@9 1388 extern nanos_err_t nanos_instrument_ptp_start(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values);
nengel@9 1389 extern nanos_err_t nanos_instrument_ptp_end_(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values);
nengel@9 1390 extern nanos_err_t nanos_instrument_ptp_end(nanos_event_domain_t domain, nanos_event_id_t id, unsigned int nkvs, nanos_event_key_t *keys, nanos_event_value_t *values);
nengel@9 1391 extern nanos_err_t nanos_instrument_disable_state_events_(nanos_event_state_value_t state);
nengel@9 1392 extern nanos_err_t nanos_instrument_disable_state_events(nanos_event_state_value_t state);
nengel@9 1393 extern nanos_err_t nanos_instrument_enable_state_events_(void);
nengel@9 1394 extern nanos_err_t nanos_instrument_enable_state_events(void);
nengel@9 1395 extern nanos_err_t nanos_instrument_close_user_fun_event_();
nengel@9 1396 extern nanos_err_t nanos_instrument_close_user_fun_event();
nengel@9 1397 extern nanos_err_t nanos_instrument_enable_(void);
nengel@9 1398 extern nanos_err_t nanos_instrument_enable(void);
nengel@9 1399 extern nanos_err_t nanos_instrument_disable_(void);
nengel@9 1400 extern nanos_err_t nanos_instrument_disable(void);
nengel@9 1401 void nanos_reduction_int_vop(int, void *, void *);
nengel@9 1402 void nanos_reduction_bop_add_char(void *arg1, void *arg2);
nengel@9 1403 void nanos_reduction_vop_add_char(int i, void *arg1, void *arg2);
nengel@9 1404 void nanos_reduction_bop_add_uchar(void *arg1, void *arg2);
nengel@9 1405 void nanos_reduction_vop_add_uchar(int i, void *arg1, void *arg2);
nengel@9 1406 void nanos_reduction_bop_add_schar(void *arg1, void *arg2);
nengel@9 1407 void nanos_reduction_vop_add_schar(int i, void *arg1, void *arg2);
nengel@9 1408 void nanos_reduction_bop_add_short(void *arg1, void *arg2);
nengel@9 1409 void nanos_reduction_vop_add_short(int i, void *arg1, void *arg2);
nengel@9 1410 void nanos_reduction_bop_add_ushort(void *arg1, void *arg2);
nengel@9 1411 void nanos_reduction_vop_add_ushort(int i, void *arg1, void *arg2);
nengel@9 1412 void nanos_reduction_bop_add_int(void *arg1, void *arg2);
nengel@9 1413 void nanos_reduction_vop_add_int(int i, void *arg1, void *arg2);
nengel@9 1414 void nanos_reduction_bop_add_uint(void *arg1, void *arg2);
nengel@9 1415 void nanos_reduction_vop_add_uint(int i, void *arg1, void *arg2);
nengel@9 1416 void nanos_reduction_bop_add_long(void *arg1, void *arg2);
nengel@9 1417 void nanos_reduction_vop_add_long(int i, void *arg1, void *arg2);
nengel@9 1418 void nanos_reduction_bop_add_ulong(void *arg1, void *arg2);
nengel@9 1419 void nanos_reduction_vop_add_ulong(int i, void *arg1, void *arg2);
nengel@9 1420 void nanos_reduction_bop_add_longlong(void *arg1, void *arg2);
nengel@9 1421 void nanos_reduction_vop_add_longlong(int i, void *arg1, void *arg2);
nengel@9 1422 void nanos_reduction_bop_add_ulonglong(void *arg1, void *arg2);
nengel@9 1423 void nanos_reduction_vop_add_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1424 void nanos_reduction_bop_add__Bool(void *arg1, void *arg2);
nengel@9 1425 void nanos_reduction_vop_add__Bool(int i, void *arg1, void *arg2);
nengel@9 1426 void nanos_reduction_bop_add_float(void *arg1, void *arg2);
nengel@9 1427 void nanos_reduction_vop_add_float(int i, void *arg1, void *arg2);
nengel@9 1428 void nanos_reduction_bop_add_double(void *arg1, void *arg2);
nengel@9 1429 void nanos_reduction_vop_add_double(int i, void *arg1, void *arg2);
nengel@9 1430 void nanos_reduction_bop_add_longdouble(void *arg1, void *arg2);
nengel@9 1431 void nanos_reduction_vop_add_longdouble(int i, void *arg1, void *arg2);
nengel@9 1432 void nanos_reduction_bop_sub_char(void *arg1, void *arg2);
nengel@9 1433 void nanos_reduction_vop_sub_char(int i, void *arg1, void *arg2);
nengel@9 1434 void nanos_reduction_bop_sub_uchar(void *arg1, void *arg2);
nengel@9 1435 void nanos_reduction_vop_sub_uchar(int i, void *arg1, void *arg2);
nengel@9 1436 void nanos_reduction_bop_sub_schar(void *arg1, void *arg2);
nengel@9 1437 void nanos_reduction_vop_sub_schar(int i, void *arg1, void *arg2);
nengel@9 1438 void nanos_reduction_bop_sub_short(void *arg1, void *arg2);
nengel@9 1439 void nanos_reduction_vop_sub_short(int i, void *arg1, void *arg2);
nengel@9 1440 void nanos_reduction_bop_sub_ushort(void *arg1, void *arg2);
nengel@9 1441 void nanos_reduction_vop_sub_ushort(int i, void *arg1, void *arg2);
nengel@9 1442 void nanos_reduction_bop_sub_int(void *arg1, void *arg2);
nengel@9 1443 void nanos_reduction_vop_sub_int(int i, void *arg1, void *arg2);
nengel@9 1444 void nanos_reduction_bop_sub_uint(void *arg1, void *arg2);
nengel@9 1445 void nanos_reduction_vop_sub_uint(int i, void *arg1, void *arg2);
nengel@9 1446 void nanos_reduction_bop_sub_long(void *arg1, void *arg2);
nengel@9 1447 void nanos_reduction_vop_sub_long(int i, void *arg1, void *arg2);
nengel@9 1448 void nanos_reduction_bop_sub_ulong(void *arg1, void *arg2);
nengel@9 1449 void nanos_reduction_vop_sub_ulong(int i, void *arg1, void *arg2);
nengel@9 1450 void nanos_reduction_bop_sub_longlong(void *arg1, void *arg2);
nengel@9 1451 void nanos_reduction_vop_sub_longlong(int i, void *arg1, void *arg2);
nengel@9 1452 void nanos_reduction_bop_sub_ulonglong(void *arg1, void *arg2);
nengel@9 1453 void nanos_reduction_vop_sub_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1454 void nanos_reduction_bop_sub__Bool(void *arg1, void *arg2);
nengel@9 1455 void nanos_reduction_vop_sub__Bool(int i, void *arg1, void *arg2);
nengel@9 1456 void nanos_reduction_bop_sub_float(void *arg1, void *arg2);
nengel@9 1457 void nanos_reduction_vop_sub_float(int i, void *arg1, void *arg2);
nengel@9 1458 void nanos_reduction_bop_sub_double(void *arg1, void *arg2);
nengel@9 1459 void nanos_reduction_vop_sub_double(int i, void *arg1, void *arg2);
nengel@9 1460 void nanos_reduction_bop_sub_longdouble(void *arg1, void *arg2);
nengel@9 1461 void nanos_reduction_vop_sub_longdouble(int i, void *arg1, void *arg2);
nengel@9 1462 void nanos_reduction_bop_prod_char(void *arg1, void *arg2);
nengel@9 1463 void nanos_reduction_vop_prod_char(int i, void *arg1, void *arg2);
nengel@9 1464 void nanos_reduction_bop_prod_uchar(void *arg1, void *arg2);
nengel@9 1465 void nanos_reduction_vop_prod_uchar(int i, void *arg1, void *arg2);
nengel@9 1466 void nanos_reduction_bop_prod_schar(void *arg1, void *arg2);
nengel@9 1467 void nanos_reduction_vop_prod_schar(int i, void *arg1, void *arg2);
nengel@9 1468 void nanos_reduction_bop_prod_short(void *arg1, void *arg2);
nengel@9 1469 void nanos_reduction_vop_prod_short(int i, void *arg1, void *arg2);
nengel@9 1470 void nanos_reduction_bop_prod_ushort(void *arg1, void *arg2);
nengel@9 1471 void nanos_reduction_vop_prod_ushort(int i, void *arg1, void *arg2);
nengel@9 1472 void nanos_reduction_bop_prod_int(void *arg1, void *arg2);
nengel@9 1473 void nanos_reduction_vop_prod_int(int i, void *arg1, void *arg2);
nengel@9 1474 void nanos_reduction_bop_prod_uint(void *arg1, void *arg2);
nengel@9 1475 void nanos_reduction_vop_prod_uint(int i, void *arg1, void *arg2);
nengel@9 1476 void nanos_reduction_bop_prod_long(void *arg1, void *arg2);
nengel@9 1477 void nanos_reduction_vop_prod_long(int i, void *arg1, void *arg2);
nengel@9 1478 void nanos_reduction_bop_prod_ulong(void *arg1, void *arg2);
nengel@9 1479 void nanos_reduction_vop_prod_ulong(int i, void *arg1, void *arg2);
nengel@9 1480 void nanos_reduction_bop_prod_longlong(void *arg1, void *arg2);
nengel@9 1481 void nanos_reduction_vop_prod_longlong(int i, void *arg1, void *arg2);
nengel@9 1482 void nanos_reduction_bop_prod_ulonglong(void *arg1, void *arg2);
nengel@9 1483 void nanos_reduction_vop_prod_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1484 void nanos_reduction_bop_prod__Bool(void *arg1, void *arg2);
nengel@9 1485 void nanos_reduction_vop_prod__Bool(int i, void *arg1, void *arg2);
nengel@9 1486 void nanos_reduction_bop_prod_float(void *arg1, void *arg2);
nengel@9 1487 void nanos_reduction_vop_prod_float(int i, void *arg1, void *arg2);
nengel@9 1488 void nanos_reduction_bop_prod_double(void *arg1, void *arg2);
nengel@9 1489 void nanos_reduction_vop_prod_double(int i, void *arg1, void *arg2);
nengel@9 1490 void nanos_reduction_bop_prod_longdouble(void *arg1, void *arg2);
nengel@9 1491 void nanos_reduction_vop_prod_longdouble(int i, void *arg1, void *arg2);
nengel@9 1492 void nanos_reduction_bop_and_char(void *arg1, void *arg2);
nengel@9 1493 void nanos_reduction_vop_and_char(int i, void *arg1, void *arg2);
nengel@9 1494 void nanos_reduction_bop_and_uchar(void *arg1, void *arg2);
nengel@9 1495 void nanos_reduction_vop_and_uchar(int i, void *arg1, void *arg2);
nengel@9 1496 void nanos_reduction_bop_and_schar(void *arg1, void *arg2);
nengel@9 1497 void nanos_reduction_vop_and_schar(int i, void *arg1, void *arg2);
nengel@9 1498 void nanos_reduction_bop_and_short(void *arg1, void *arg2);
nengel@9 1499 void nanos_reduction_vop_and_short(int i, void *arg1, void *arg2);
nengel@9 1500 void nanos_reduction_bop_and_ushort(void *arg1, void *arg2);
nengel@9 1501 void nanos_reduction_vop_and_ushort(int i, void *arg1, void *arg2);
nengel@9 1502 void nanos_reduction_bop_and_int(void *arg1, void *arg2);
nengel@9 1503 void nanos_reduction_vop_and_int(int i, void *arg1, void *arg2);
nengel@9 1504 void nanos_reduction_bop_and_uint(void *arg1, void *arg2);
nengel@9 1505 void nanos_reduction_vop_and_uint(int i, void *arg1, void *arg2);
nengel@9 1506 void nanos_reduction_bop_and_long(void *arg1, void *arg2);
nengel@9 1507 void nanos_reduction_vop_and_long(int i, void *arg1, void *arg2);
nengel@9 1508 void nanos_reduction_bop_and_ulong(void *arg1, void *arg2);
nengel@9 1509 void nanos_reduction_vop_and_ulong(int i, void *arg1, void *arg2);
nengel@9 1510 void nanos_reduction_bop_and_longlong(void *arg1, void *arg2);
nengel@9 1511 void nanos_reduction_vop_and_longlong(int i, void *arg1, void *arg2);
nengel@9 1512 void nanos_reduction_bop_and_ulonglong(void *arg1, void *arg2);
nengel@9 1513 void nanos_reduction_vop_and_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1514 void nanos_reduction_bop_and__Bool(void *arg1, void *arg2);
nengel@9 1515 void nanos_reduction_vop_and__Bool(int i, void *arg1, void *arg2);
nengel@9 1516 void nanos_reduction_bop_or_char(void *arg1, void *arg2);
nengel@9 1517 void nanos_reduction_vop_or_char(int i, void *arg1, void *arg2);
nengel@9 1518 void nanos_reduction_bop_or_uchar(void *arg1, void *arg2);
nengel@9 1519 void nanos_reduction_vop_or_uchar(int i, void *arg1, void *arg2);
nengel@9 1520 void nanos_reduction_bop_or_schar(void *arg1, void *arg2);
nengel@9 1521 void nanos_reduction_vop_or_schar(int i, void *arg1, void *arg2);
nengel@9 1522 void nanos_reduction_bop_or_short(void *arg1, void *arg2);
nengel@9 1523 void nanos_reduction_vop_or_short(int i, void *arg1, void *arg2);
nengel@9 1524 void nanos_reduction_bop_or_ushort(void *arg1, void *arg2);
nengel@9 1525 void nanos_reduction_vop_or_ushort(int i, void *arg1, void *arg2);
nengel@9 1526 void nanos_reduction_bop_or_int(void *arg1, void *arg2);
nengel@9 1527 void nanos_reduction_vop_or_int(int i, void *arg1, void *arg2);
nengel@9 1528 void nanos_reduction_bop_or_uint(void *arg1, void *arg2);
nengel@9 1529 void nanos_reduction_vop_or_uint(int i, void *arg1, void *arg2);
nengel@9 1530 void nanos_reduction_bop_or_long(void *arg1, void *arg2);
nengel@9 1531 void nanos_reduction_vop_or_long(int i, void *arg1, void *arg2);
nengel@9 1532 void nanos_reduction_bop_or_ulong(void *arg1, void *arg2);
nengel@9 1533 void nanos_reduction_vop_or_ulong(int i, void *arg1, void *arg2);
nengel@9 1534 void nanos_reduction_bop_or_longlong(void *arg1, void *arg2);
nengel@9 1535 void nanos_reduction_vop_or_longlong(int i, void *arg1, void *arg2);
nengel@9 1536 void nanos_reduction_bop_or_ulonglong(void *arg1, void *arg2);
nengel@9 1537 void nanos_reduction_vop_or_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1538 void nanos_reduction_bop_or__Bool(void *arg1, void *arg2);
nengel@9 1539 void nanos_reduction_vop_or__Bool(int i, void *arg1, void *arg2);
nengel@9 1540 void nanos_reduction_bop_xor_char(void *arg1, void *arg2);
nengel@9 1541 void nanos_reduction_vop_xor_char(int i, void *arg1, void *arg2);
nengel@9 1542 void nanos_reduction_bop_xor_uchar(void *arg1, void *arg2);
nengel@9 1543 void nanos_reduction_vop_xor_uchar(int i, void *arg1, void *arg2);
nengel@9 1544 void nanos_reduction_bop_xor_schar(void *arg1, void *arg2);
nengel@9 1545 void nanos_reduction_vop_xor_schar(int i, void *arg1, void *arg2);
nengel@9 1546 void nanos_reduction_bop_xor_short(void *arg1, void *arg2);
nengel@9 1547 void nanos_reduction_vop_xor_short(int i, void *arg1, void *arg2);
nengel@9 1548 void nanos_reduction_bop_xor_ushort(void *arg1, void *arg2);
nengel@9 1549 void nanos_reduction_vop_xor_ushort(int i, void *arg1, void *arg2);
nengel@9 1550 void nanos_reduction_bop_xor_int(void *arg1, void *arg2);
nengel@9 1551 void nanos_reduction_vop_xor_int(int i, void *arg1, void *arg2);
nengel@9 1552 void nanos_reduction_bop_xor_uint(void *arg1, void *arg2);
nengel@9 1553 void nanos_reduction_vop_xor_uint(int i, void *arg1, void *arg2);
nengel@9 1554 void nanos_reduction_bop_xor_long(void *arg1, void *arg2);
nengel@9 1555 void nanos_reduction_vop_xor_long(int i, void *arg1, void *arg2);
nengel@9 1556 void nanos_reduction_bop_xor_ulong(void *arg1, void *arg2);
nengel@9 1557 void nanos_reduction_vop_xor_ulong(int i, void *arg1, void *arg2);
nengel@9 1558 void nanos_reduction_bop_xor_longlong(void *arg1, void *arg2);
nengel@9 1559 void nanos_reduction_vop_xor_longlong(int i, void *arg1, void *arg2);
nengel@9 1560 void nanos_reduction_bop_xor_ulonglong(void *arg1, void *arg2);
nengel@9 1561 void nanos_reduction_vop_xor_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1562 void nanos_reduction_bop_xor__Bool(void *arg1, void *arg2);
nengel@9 1563 void nanos_reduction_vop_xor__Bool(int i, void *arg1, void *arg2);
nengel@9 1564 void nanos_reduction_bop_land_char(void *arg1, void *arg2);
nengel@9 1565 void nanos_reduction_vop_land_char(int i, void *arg1, void *arg2);
nengel@9 1566 void nanos_reduction_bop_land_uchar(void *arg1, void *arg2);
nengel@9 1567 void nanos_reduction_vop_land_uchar(int i, void *arg1, void *arg2);
nengel@9 1568 void nanos_reduction_bop_land_schar(void *arg1, void *arg2);
nengel@9 1569 void nanos_reduction_vop_land_schar(int i, void *arg1, void *arg2);
nengel@9 1570 void nanos_reduction_bop_land_short(void *arg1, void *arg2);
nengel@9 1571 void nanos_reduction_vop_land_short(int i, void *arg1, void *arg2);
nengel@9 1572 void nanos_reduction_bop_land_ushort(void *arg1, void *arg2);
nengel@9 1573 void nanos_reduction_vop_land_ushort(int i, void *arg1, void *arg2);
nengel@9 1574 void nanos_reduction_bop_land_int(void *arg1, void *arg2);
nengel@9 1575 void nanos_reduction_vop_land_int(int i, void *arg1, void *arg2);
nengel@9 1576 void nanos_reduction_bop_land_uint(void *arg1, void *arg2);
nengel@9 1577 void nanos_reduction_vop_land_uint(int i, void *arg1, void *arg2);
nengel@9 1578 void nanos_reduction_bop_land_long(void *arg1, void *arg2);
nengel@9 1579 void nanos_reduction_vop_land_long(int i, void *arg1, void *arg2);
nengel@9 1580 void nanos_reduction_bop_land_ulong(void *arg1, void *arg2);
nengel@9 1581 void nanos_reduction_vop_land_ulong(int i, void *arg1, void *arg2);
nengel@9 1582 void nanos_reduction_bop_land_longlong(void *arg1, void *arg2);
nengel@9 1583 void nanos_reduction_vop_land_longlong(int i, void *arg1, void *arg2);
nengel@9 1584 void nanos_reduction_bop_land_ulonglong(void *arg1, void *arg2);
nengel@9 1585 void nanos_reduction_vop_land_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1586 void nanos_reduction_bop_land__Bool(void *arg1, void *arg2);
nengel@9 1587 void nanos_reduction_vop_land__Bool(int i, void *arg1, void *arg2);
nengel@9 1588 void nanos_reduction_bop_land_float(void *arg1, void *arg2);
nengel@9 1589 void nanos_reduction_vop_land_float(int i, void *arg1, void *arg2);
nengel@9 1590 void nanos_reduction_bop_land_double(void *arg1, void *arg2);
nengel@9 1591 void nanos_reduction_vop_land_double(int i, void *arg1, void *arg2);
nengel@9 1592 void nanos_reduction_bop_land_longdouble(void *arg1, void *arg2);
nengel@9 1593 void nanos_reduction_vop_land_longdouble(int i, void *arg1, void *arg2);
nengel@9 1594 void nanos_reduction_bop_lor_char(void *arg1, void *arg2);
nengel@9 1595 void nanos_reduction_vop_lor_char(int i, void *arg1, void *arg2);
nengel@9 1596 void nanos_reduction_bop_lor_uchar(void *arg1, void *arg2);
nengel@9 1597 void nanos_reduction_vop_lor_uchar(int i, void *arg1, void *arg2);
nengel@9 1598 void nanos_reduction_bop_lor_schar(void *arg1, void *arg2);
nengel@9 1599 void nanos_reduction_vop_lor_schar(int i, void *arg1, void *arg2);
nengel@9 1600 void nanos_reduction_bop_lor_short(void *arg1, void *arg2);
nengel@9 1601 void nanos_reduction_vop_lor_short(int i, void *arg1, void *arg2);
nengel@9 1602 void nanos_reduction_bop_lor_ushort(void *arg1, void *arg2);
nengel@9 1603 void nanos_reduction_vop_lor_ushort(int i, void *arg1, void *arg2);
nengel@9 1604 void nanos_reduction_bop_lor_int(void *arg1, void *arg2);
nengel@9 1605 void nanos_reduction_vop_lor_int(int i, void *arg1, void *arg2);
nengel@9 1606 void nanos_reduction_bop_lor_uint(void *arg1, void *arg2);
nengel@9 1607 void nanos_reduction_vop_lor_uint(int i, void *arg1, void *arg2);
nengel@9 1608 void nanos_reduction_bop_lor_long(void *arg1, void *arg2);
nengel@9 1609 void nanos_reduction_vop_lor_long(int i, void *arg1, void *arg2);
nengel@9 1610 void nanos_reduction_bop_lor_ulong(void *arg1, void *arg2);
nengel@9 1611 void nanos_reduction_vop_lor_ulong(int i, void *arg1, void *arg2);
nengel@9 1612 void nanos_reduction_bop_lor_longlong(void *arg1, void *arg2);
nengel@9 1613 void nanos_reduction_vop_lor_longlong(int i, void *arg1, void *arg2);
nengel@9 1614 void nanos_reduction_bop_lor_ulonglong(void *arg1, void *arg2);
nengel@9 1615 void nanos_reduction_vop_lor_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1616 void nanos_reduction_bop_lor__Bool(void *arg1, void *arg2);
nengel@9 1617 void nanos_reduction_vop_lor__Bool(int i, void *arg1, void *arg2);
nengel@9 1618 void nanos_reduction_bop_lor_float(void *arg1, void *arg2);
nengel@9 1619 void nanos_reduction_vop_lor_float(int i, void *arg1, void *arg2);
nengel@9 1620 void nanos_reduction_bop_lor_double(void *arg1, void *arg2);
nengel@9 1621 void nanos_reduction_vop_lor_double(int i, void *arg1, void *arg2);
nengel@9 1622 void nanos_reduction_bop_lor_longdouble(void *arg1, void *arg2);
nengel@9 1623 void nanos_reduction_vop_lor_longdouble(int i, void *arg1, void *arg2);
nengel@9 1624 void nanos_reduction_bop_max_char(void *arg1, void *arg2);
nengel@9 1625 void nanos_reduction_vop_max_char(int i, void *arg1, void *arg2);
nengel@9 1626 void nanos_reduction_bop_max_uchar(void *arg1, void *arg2);
nengel@9 1627 void nanos_reduction_vop_max_uchar(int i, void *arg1, void *arg2);
nengel@9 1628 void nanos_reduction_bop_max_schar(void *arg1, void *arg2);
nengel@9 1629 void nanos_reduction_vop_max_schar(int i, void *arg1, void *arg2);
nengel@9 1630 void nanos_reduction_bop_max_short(void *arg1, void *arg2);
nengel@9 1631 void nanos_reduction_vop_max_short(int i, void *arg1, void *arg2);
nengel@9 1632 void nanos_reduction_bop_max_ushort(void *arg1, void *arg2);
nengel@9 1633 void nanos_reduction_vop_max_ushort(int i, void *arg1, void *arg2);
nengel@9 1634 void nanos_reduction_bop_max_int(void *arg1, void *arg2);
nengel@9 1635 void nanos_reduction_vop_max_int(int i, void *arg1, void *arg2);
nengel@9 1636 void nanos_reduction_bop_max_uint(void *arg1, void *arg2);
nengel@9 1637 void nanos_reduction_vop_max_uint(int i, void *arg1, void *arg2);
nengel@9 1638 void nanos_reduction_bop_max_long(void *arg1, void *arg2);
nengel@9 1639 void nanos_reduction_vop_max_long(int i, void *arg1, void *arg2);
nengel@9 1640 void nanos_reduction_bop_max_ulong(void *arg1, void *arg2);
nengel@9 1641 void nanos_reduction_vop_max_ulong(int i, void *arg1, void *arg2);
nengel@9 1642 void nanos_reduction_bop_max_longlong(void *arg1, void *arg2);
nengel@9 1643 void nanos_reduction_vop_max_longlong(int i, void *arg1, void *arg2);
nengel@9 1644 void nanos_reduction_bop_max_ulonglong(void *arg1, void *arg2);
nengel@9 1645 void nanos_reduction_vop_max_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1646 void nanos_reduction_bop_max__Bool(void *arg1, void *arg2);
nengel@9 1647 void nanos_reduction_vop_max__Bool(int i, void *arg1, void *arg2);
nengel@9 1648 void nanos_reduction_bop_max_float(void *arg1, void *arg2);
nengel@9 1649 void nanos_reduction_vop_max_float(int i, void *arg1, void *arg2);
nengel@9 1650 void nanos_reduction_bop_max_double(void *arg1, void *arg2);
nengel@9 1651 void nanos_reduction_vop_max_double(int i, void *arg1, void *arg2);
nengel@9 1652 void nanos_reduction_bop_max_longdouble(void *arg1, void *arg2);
nengel@9 1653 void nanos_reduction_vop_max_longdouble(int i, void *arg1, void *arg2);
nengel@9 1654 void nanos_reduction_bop_min_char(void *arg1, void *arg2);
nengel@9 1655 void nanos_reduction_vop_min_char(int i, void *arg1, void *arg2);
nengel@9 1656 void nanos_reduction_bop_min_uchar(void *arg1, void *arg2);
nengel@9 1657 void nanos_reduction_vop_min_uchar(int i, void *arg1, void *arg2);
nengel@9 1658 void nanos_reduction_bop_min_schar(void *arg1, void *arg2);
nengel@9 1659 void nanos_reduction_vop_min_schar(int i, void *arg1, void *arg2);
nengel@9 1660 void nanos_reduction_bop_min_short(void *arg1, void *arg2);
nengel@9 1661 void nanos_reduction_vop_min_short(int i, void *arg1, void *arg2);
nengel@9 1662 void nanos_reduction_bop_min_ushort(void *arg1, void *arg2);
nengel@9 1663 void nanos_reduction_vop_min_ushort(int i, void *arg1, void *arg2);
nengel@9 1664 void nanos_reduction_bop_min_int(void *arg1, void *arg2);
nengel@9 1665 void nanos_reduction_vop_min_int(int i, void *arg1, void *arg2);
nengel@9 1666 void nanos_reduction_bop_min_uint(void *arg1, void *arg2);
nengel@9 1667 void nanos_reduction_vop_min_uint(int i, void *arg1, void *arg2);
nengel@9 1668 void nanos_reduction_bop_min_long(void *arg1, void *arg2);
nengel@9 1669 void nanos_reduction_vop_min_long(int i, void *arg1, void *arg2);
nengel@9 1670 void nanos_reduction_bop_min_ulong(void *arg1, void *arg2);
nengel@9 1671 void nanos_reduction_vop_min_ulong(int i, void *arg1, void *arg2);
nengel@9 1672 void nanos_reduction_bop_min_longlong(void *arg1, void *arg2);
nengel@9 1673 void nanos_reduction_vop_min_longlong(int i, void *arg1, void *arg2);
nengel@9 1674 void nanos_reduction_bop_min_ulonglong(void *arg1, void *arg2);
nengel@9 1675 void nanos_reduction_vop_min_ulonglong(int i, void *arg1, void *arg2);
nengel@9 1676 void nanos_reduction_bop_min__Bool(void *arg1, void *arg2);
nengel@9 1677 void nanos_reduction_vop_min__Bool(int i, void *arg1, void *arg2);
nengel@9 1678 void nanos_reduction_bop_min_float(void *arg1, void *arg2);
nengel@9 1679 void nanos_reduction_vop_min_float(int i, void *arg1, void *arg2);
nengel@9 1680 void nanos_reduction_bop_min_double(void *arg1, void *arg2);
nengel@9 1681 void nanos_reduction_vop_min_double(int i, void *arg1, void *arg2);
nengel@9 1682 void nanos_reduction_bop_min_longdouble(void *arg1, void *arg2);
nengel@9 1683 void nanos_reduction_vop_min_longdouble(int i, void *arg1, void *arg2);
nengel@9 1684 void nanos_reduction_default_cleanup_char(void *r);
nengel@9 1685 void nanos_reduction_default_cleanup_uchar(void *r);
nengel@9 1686 void nanos_reduction_default_cleanup_schar(void *r);
nengel@9 1687 void nanos_reduction_default_cleanup_short(void *r);
nengel@9 1688 void nanos_reduction_default_cleanup_ushort(void *r);
nengel@9 1689 void nanos_reduction_default_cleanup_int(void *r);
nengel@9 1690 void nanos_reduction_default_cleanup_uint(void *r);
nengel@9 1691 void nanos_reduction_default_cleanup_long(void *r);
nengel@9 1692 void nanos_reduction_default_cleanup_ulong(void *r);
nengel@9 1693 void nanos_reduction_default_cleanup_longlong(void *r);
nengel@9 1694 void nanos_reduction_default_cleanup_ulonglong(void *r);
nengel@9 1695 void nanos_reduction_default_cleanup__Bool(void *r);
nengel@9 1696 void nanos_reduction_default_cleanup_float(void *r);
nengel@9 1697 void nanos_reduction_default_cleanup_double(void *r);
nengel@9 1698 void nanos_reduction_default_cleanup_longdouble(void *r);
nengel@9 1699 typedef void *omp_lock_t;
nengel@9 1700 typedef void *omp_nest_lock_t;
nengel@9 1701 typedef enum omp_sched_t
nengel@9 1702 {
nengel@9 1703 omp_sched_static = 1,
nengel@9 1704 omp_sched_dynamic = 2,
nengel@9 1705 omp_sched_guided = 3,
nengel@9 1706 omp_sched_auto = 4
nengel@9 1707 } omp_sched_t;
nengel@9 1708 extern void omp_set_num_threads(int num_threads);
nengel@9 1709 extern int omp_get_num_threads(void);
nengel@9 1710 extern int omp_get_max_threads(void);
nengel@9 1711 extern int omp_get_thread_num(void);
nengel@9 1712 extern int omp_get_num_procs(void);
nengel@9 1713 extern int omp_in_parallel(void);
nengel@9 1714 extern void omp_set_dynamic(int dynamic_threads);
nengel@9 1715 extern int omp_get_dynamic(void);
nengel@9 1716 extern void omp_set_nested(int nested);
nengel@9 1717 extern int omp_get_nested(void);
nengel@9 1718 extern int omp_get_thread_limit(void);
nengel@9 1719 extern void omp_set_max_active_levels(int max_active_levels);
nengel@9 1720 extern int omp_get_max_active_levels(void);
nengel@9 1721 extern void omp_set_schedule(omp_sched_t kind, int modifier);
nengel@9 1722 extern void omp_get_schedule(omp_sched_t *kind, int *modifier);
nengel@9 1723 extern int omp_get_level(void);
nengel@9 1724 extern int omp_get_ancestor_thread_num(int level);
nengel@9 1725 extern int omp_get_team_size(int level);
nengel@9 1726 extern int omp_get_active_level(void);
nengel@9 1727 extern void omp_init_lock(omp_lock_t *lock);
nengel@9 1728 extern void omp_destroy_lock(omp_lock_t *lock);
nengel@9 1729 extern void omp_set_lock(omp_lock_t *lock);
nengel@9 1730 extern void omp_unset_lock(omp_lock_t *lock);
nengel@9 1731 extern int omp_test_lock(omp_lock_t *lock);
nengel@9 1732 extern void omp_init_nest_lock(omp_nest_lock_t *lock);
nengel@9 1733 extern void omp_destroy_nest_lock(omp_nest_lock_t *lock);
nengel@9 1734 extern void omp_set_nest_lock(omp_nest_lock_t *lock);
nengel@9 1735 extern void omp_unset_nest_lock(omp_nest_lock_t *lock);
nengel@9 1736 extern int omp_test_nest_lock(omp_nest_lock_t *lock);
nengel@9 1737 extern double omp_get_wtime(void);
nengel@9 1738 extern double omp_get_wtick(void);
nengel@9 1739 extern int omp_in_final(void);
nengel@9 1740 nanos_err_t nanos_omp_single(_Bool *);
nengel@9 1741 nanos_err_t nanos_omp_barrier(void);
nengel@9 1742 void nanos_omp_set_interface(void *);
nengel@9 1743 nanos_err_t nanos_omp_set_implicit(nanos_wd_t uwd);
nengel@9 1744 int nanos_omp_get_max_threads(void);
nengel@9 1745 nanos_ws_t nanos_omp_find_worksharing(omp_sched_t kind);
nengel@9 1746 nanos_err_t nanos_omp_get_schedule(omp_sched_t *kind, int *modifier);
nengel@9 1747 typedef __time_t time_t;
nengel@9 1748 struct timespec
nengel@9 1749 {
nengel@9 1750 __time_t tv_sec;
nengel@9 1751 long int tv_nsec;
nengel@9 1752 };
nengel@9 1753 struct sched_param
nengel@9 1754 {
nengel@9 1755 int __sched_priority;
nengel@9 1756 };
nengel@9 1757 struct __sched_param
nengel@9 1758 {
nengel@9 1759 int __sched_priority;
nengel@9 1760 };
nengel@9 1761 typedef unsigned long int __cpu_mask;
nengel@9 1762 typedef struct
nengel@9 1763 {
nengel@9 1764 __cpu_mask __bits[1024 / (8 * sizeof(__cpu_mask))];
nengel@9 1765 } cpu_set_t;
nengel@9 1766 extern int __sched_cpucount(size_t __setsize, const cpu_set_t *__setp) __attribute__((__nothrow__, __leaf__));
nengel@9 1767 extern cpu_set_t *__sched_cpualloc(size_t __count) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 1768 extern void __sched_cpufree(cpu_set_t *__set) __attribute__((__nothrow__, __leaf__));
nengel@9 1769 extern int sched_setparam(__pid_t __pid, __const struct sched_param *__param) __attribute__((__nothrow__, __leaf__));
nengel@9 1770 extern int sched_getparam(__pid_t __pid, struct sched_param *__param) __attribute__((__nothrow__, __leaf__));
nengel@9 1771 extern int sched_setscheduler(__pid_t __pid, int __policy, __const struct sched_param *__param) __attribute__((__nothrow__, __leaf__));
nengel@9 1772 extern int sched_getscheduler(__pid_t __pid) __attribute__((__nothrow__, __leaf__));
nengel@9 1773 extern int sched_yield(void) __attribute__((__nothrow__, __leaf__));
nengel@9 1774 extern int sched_get_priority_max(int __algorithm) __attribute__((__nothrow__, __leaf__));
nengel@9 1775 extern int sched_get_priority_min(int __algorithm) __attribute__((__nothrow__, __leaf__));
nengel@9 1776 extern int sched_rr_get_interval(__pid_t __pid, struct timespec *__t) __attribute__((__nothrow__, __leaf__));
nengel@9 1777 typedef __clock_t clock_t;
nengel@9 1778 typedef __clockid_t clockid_t;
nengel@9 1779 typedef __timer_t timer_t;
nengel@9 1780 struct tm
nengel@9 1781 {
nengel@9 1782 int tm_sec;
nengel@9 1783 int tm_min;
nengel@9 1784 int tm_hour;
nengel@9 1785 int tm_mday;
nengel@9 1786 int tm_mon;
nengel@9 1787 int tm_year;
nengel@9 1788 int tm_wday;
nengel@9 1789 int tm_yday;
nengel@9 1790 int tm_isdst;
nengel@9 1791 long int tm_gmtoff;
nengel@9 1792 __const char *tm_zone;
nengel@9 1793 };
nengel@9 1794 struct itimerspec
nengel@9 1795 {
nengel@9 1796 struct timespec it_interval;
nengel@9 1797 struct timespec it_value;
nengel@9 1798 };
nengel@9 1799 struct sigevent;
nengel@9 1800 extern clock_t clock(void) __attribute__((__nothrow__, __leaf__));
nengel@9 1801 extern time_t time(time_t *__timer) __attribute__((__nothrow__, __leaf__));
nengel@9 1802 extern double difftime(time_t __time1, time_t __time0) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 1803 extern time_t mktime(struct tm *__tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1804 extern size_t strftime(char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1805 typedef struct __locale_struct
nengel@9 1806 {
nengel@9 1807 struct __locale_data *__locales[13];
nengel@9 1808 const unsigned short int *__ctype_b;
nengel@9 1809 const int *__ctype_tolower;
nengel@9 1810 const int *__ctype_toupper;
nengel@9 1811 const char *__names[13];
nengel@9 1812 } *__locale_t;
nengel@9 1813 typedef __locale_t locale_t;
nengel@9 1814 extern size_t strftime_l(char *__restrict __s, size_t __maxsize, __const char *__restrict __format, __const struct tm *__restrict __tp, __locale_t __loc) __attribute__((__nothrow__, __leaf__));
nengel@9 1815 extern struct tm *gmtime(__const time_t *__timer) __attribute__((__nothrow__, __leaf__));
nengel@9 1816 extern struct tm *localtime(__const time_t *__timer) __attribute__((__nothrow__, __leaf__));
nengel@9 1817 extern struct tm *gmtime_r(__const time_t *__restrict __timer, struct tm *__restrict __tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1818 extern struct tm *localtime_r(__const time_t *__restrict __timer, struct tm *__restrict __tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1819 extern char *asctime(__const struct tm *__tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1820 extern char *ctime(__const time_t *__timer) __attribute__((__nothrow__, __leaf__));
nengel@9 1821 extern char *asctime_r(__const struct tm *__restrict __tp, char *__restrict __buf) __attribute__((__nothrow__, __leaf__));
nengel@9 1822 extern char *ctime_r(__const time_t *__restrict __timer, char *__restrict __buf) __attribute__((__nothrow__, __leaf__));
nengel@9 1823 extern char *__tzname[2];
nengel@9 1824 extern int __daylight;
nengel@9 1825 extern long int __timezone;
nengel@9 1826 extern char *tzname[2];
nengel@9 1827 extern void tzset(void) __attribute__((__nothrow__, __leaf__));
nengel@9 1828 extern int daylight;
nengel@9 1829 extern long int timezone;
nengel@9 1830 extern int stime(__const time_t *__when) __attribute__((__nothrow__, __leaf__));
nengel@9 1831 extern time_t timegm(struct tm *__tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1832 extern time_t timelocal(struct tm *__tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1833 extern int dysize(int __year) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 1834 extern int nanosleep(__const struct timespec *__requested_time, struct timespec *__remaining);
nengel@9 1835 extern int clock_getres(clockid_t __clock_id, struct timespec *__res) __attribute__((__nothrow__, __leaf__));
nengel@9 1836 extern int clock_gettime(clockid_t __clock_id, struct timespec *__tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1837 extern int clock_settime(clockid_t __clock_id, __const struct timespec *__tp) __attribute__((__nothrow__, __leaf__));
nengel@9 1838 extern int clock_nanosleep(clockid_t __clock_id, int __flags, __const struct timespec *__req, struct timespec *__rem);
nengel@9 1839 extern int clock_getcpuclockid(pid_t __pid, clockid_t *__clock_id) __attribute__((__nothrow__, __leaf__));
nengel@9 1840 extern int timer_create(clockid_t __clock_id, struct sigevent *__restrict __evp, timer_t *__restrict __timerid) __attribute__((__nothrow__, __leaf__));
nengel@9 1841 extern int timer_delete(timer_t __timerid) __attribute__((__nothrow__, __leaf__));
nengel@9 1842 extern int timer_settime(timer_t __timerid, int __flags, __const struct itimerspec *__restrict __value, struct itimerspec *__restrict __ovalue) __attribute__((__nothrow__, __leaf__));
nengel@9 1843 extern int timer_gettime(timer_t __timerid, struct itimerspec *__value) __attribute__((__nothrow__, __leaf__));
nengel@9 1844 extern int timer_getoverrun(timer_t __timerid) __attribute__((__nothrow__, __leaf__));
nengel@9 1845 typedef unsigned long int pthread_t;
nengel@9 1846 typedef union
nengel@9 1847 {
nengel@9 1848 char __size[56];
nengel@9 1849 long int __align;
nengel@9 1850 } pthread_attr_t;
nengel@9 1851 typedef struct __pthread_internal_list
nengel@9 1852 {
nengel@9 1853 struct __pthread_internal_list *__prev;
nengel@9 1854 struct __pthread_internal_list *__next;
nengel@9 1855 } __pthread_list_t;
nengel@9 1856 typedef union
nengel@9 1857 {
nengel@9 1858 struct __pthread_mutex_s
nengel@9 1859 {
nengel@9 1860 int __lock;
nengel@9 1861 unsigned int __count;
nengel@9 1862 int __owner;
nengel@9 1863 unsigned int __nusers;
nengel@9 1864 int __kind;
nengel@9 1865 int __spins;
nengel@9 1866 __pthread_list_t __list;
nengel@9 1867 } __data;
nengel@9 1868 char __size[40];
nengel@9 1869 long int __align;
nengel@9 1870 } pthread_mutex_t;
nengel@9 1871 typedef union
nengel@9 1872 {
nengel@9 1873 char __size[4];
nengel@9 1874 int __align;
nengel@9 1875 } pthread_mutexattr_t;
nengel@9 1876 typedef union
nengel@9 1877 {
nengel@9 1878 struct
nengel@9 1879 {
nengel@9 1880 int __lock;
nengel@9 1881 unsigned int __futex;
nengel@9 1882 __extension__
nengel@9 1883 unsigned long long int __total_seq;
nengel@9 1884 __extension__
nengel@9 1885 unsigned long long int __wakeup_seq;
nengel@9 1886 __extension__
nengel@9 1887 unsigned long long int __woken_seq;
nengel@9 1888 void *__mutex;
nengel@9 1889 unsigned int __nwaiters;
nengel@9 1890 unsigned int __broadcast_seq;
nengel@9 1891 } __data;
nengel@9 1892 char __size[48];
nengel@9 1893 __extension__
nengel@9 1894 long long int __align;
nengel@9 1895 } pthread_cond_t;
nengel@9 1896 typedef union
nengel@9 1897 {
nengel@9 1898 char __size[4];
nengel@9 1899 int __align;
nengel@9 1900 } pthread_condattr_t;
nengel@9 1901 typedef unsigned int pthread_key_t;
nengel@9 1902 typedef int pthread_once_t;
nengel@9 1903 typedef union
nengel@9 1904 {
nengel@9 1905 struct
nengel@9 1906 {
nengel@9 1907 int __lock;
nengel@9 1908 unsigned int __nr_readers;
nengel@9 1909 unsigned int __readers_wakeup;
nengel@9 1910 unsigned int __writer_wakeup;
nengel@9 1911 unsigned int __nr_readers_queued;
nengel@9 1912 unsigned int __nr_writers_queued;
nengel@9 1913 int __writer;
nengel@9 1914 int __shared;
nengel@9 1915 unsigned long int __pad1;
nengel@9 1916 unsigned long int __pad2;
nengel@9 1917 unsigned int __flags;
nengel@9 1918 } __data;
nengel@9 1919 char __size[56];
nengel@9 1920 long int __align;
nengel@9 1921 } pthread_rwlock_t;
nengel@9 1922 typedef union
nengel@9 1923 {
nengel@9 1924 char __size[8];
nengel@9 1925 long int __align;
nengel@9 1926 } pthread_rwlockattr_t;
nengel@9 1927 typedef volatile int pthread_spinlock_t;
nengel@9 1928 typedef union
nengel@9 1929 {
nengel@9 1930 char __size[32];
nengel@9 1931 long int __align;
nengel@9 1932 } pthread_barrier_t;
nengel@9 1933 typedef union
nengel@9 1934 {
nengel@9 1935 char __size[4];
nengel@9 1936 int __align;
nengel@9 1937 } pthread_barrierattr_t;
nengel@9 1938 typedef long int __jmp_buf[8];
nengel@9 1939 enum
nengel@9 1940 {
nengel@9 1941 PTHREAD_CREATE_JOINABLE,
nengel@9 1942 PTHREAD_CREATE_DETACHED
nengel@9 1943 };
nengel@9 1944 enum
nengel@9 1945 {
nengel@9 1946 PTHREAD_MUTEX_TIMED_NP,
nengel@9 1947 PTHREAD_MUTEX_RECURSIVE_NP,
nengel@9 1948 PTHREAD_MUTEX_ERRORCHECK_NP,
nengel@9 1949 PTHREAD_MUTEX_ADAPTIVE_NP,
nengel@9 1950 PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
nengel@9 1951 PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
nengel@9 1952 PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
nengel@9 1953 PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
nengel@9 1954 };
nengel@9 1955 enum
nengel@9 1956 {
nengel@9 1957 PTHREAD_MUTEX_STALLED,
nengel@9 1958 PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
nengel@9 1959 PTHREAD_MUTEX_ROBUST,
nengel@9 1960 PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
nengel@9 1961 };
nengel@9 1962 enum
nengel@9 1963 {
nengel@9 1964 PTHREAD_RWLOCK_PREFER_READER_NP,
nengel@9 1965 PTHREAD_RWLOCK_PREFER_WRITER_NP,
nengel@9 1966 PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
nengel@9 1967 PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
nengel@9 1968 };
nengel@9 1969 enum
nengel@9 1970 {
nengel@9 1971 PTHREAD_INHERIT_SCHED,
nengel@9 1972 PTHREAD_EXPLICIT_SCHED
nengel@9 1973 };
nengel@9 1974 enum
nengel@9 1975 {
nengel@9 1976 PTHREAD_SCOPE_SYSTEM,
nengel@9 1977 PTHREAD_SCOPE_PROCESS
nengel@9 1978 };
nengel@9 1979 enum
nengel@9 1980 {
nengel@9 1981 PTHREAD_PROCESS_PRIVATE,
nengel@9 1982 PTHREAD_PROCESS_SHARED
nengel@9 1983 };
nengel@9 1984 struct _pthread_cleanup_buffer
nengel@9 1985 {
nengel@9 1986 void (*__routine)(void *);
nengel@9 1987 void *__arg;
nengel@9 1988 int __canceltype;
nengel@9 1989 struct _pthread_cleanup_buffer *__prev;
nengel@9 1990 };
nengel@9 1991 enum
nengel@9 1992 {
nengel@9 1993 PTHREAD_CANCEL_ENABLE,
nengel@9 1994 PTHREAD_CANCEL_DISABLE
nengel@9 1995 };
nengel@9 1996 enum
nengel@9 1997 {
nengel@9 1998 PTHREAD_CANCEL_DEFERRED,
nengel@9 1999 PTHREAD_CANCEL_ASYNCHRONOUS
nengel@9 2000 };
nengel@9 2001 extern int pthread_create(pthread_t *__restrict __newthread, __const pthread_attr_t *__restrict __attr, void *(*__start_routine)(void *), void *__restrict __arg) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 3)));
nengel@9 2002 extern void pthread_exit(void *__retval) __attribute__((__noreturn__));
nengel@9 2003 extern int pthread_join(pthread_t __th, void **__thread_return);
nengel@9 2004 extern int pthread_detach(pthread_t __th) __attribute__((__nothrow__, __leaf__));
nengel@9 2005 extern pthread_t pthread_self(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2006 extern int pthread_equal(pthread_t __thread1, pthread_t __thread2) __attribute__((__nothrow__, __leaf__));
nengel@9 2007 extern int pthread_attr_init(pthread_attr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2008 extern int pthread_attr_destroy(pthread_attr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2009 extern int pthread_attr_getdetachstate(__const pthread_attr_t *__attr, int *__detachstate) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2010 extern int pthread_attr_setdetachstate(pthread_attr_t *__attr, int __detachstate) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2011 extern int pthread_attr_getguardsize(__const pthread_attr_t *__attr, size_t *__guardsize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2012 extern int pthread_attr_setguardsize(pthread_attr_t *__attr, size_t __guardsize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2013 extern int pthread_attr_getschedparam(__const pthread_attr_t *__restrict __attr, struct sched_param *__restrict __param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2014 extern int pthread_attr_setschedparam(pthread_attr_t *__restrict __attr, __const struct sched_param *__restrict __param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2015 extern int pthread_attr_getschedpolicy(__const pthread_attr_t *__restrict __attr, int *__restrict __policy) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2016 extern int pthread_attr_setschedpolicy(pthread_attr_t *__attr, int __policy) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2017 extern int pthread_attr_getinheritsched(__const pthread_attr_t *__restrict __attr, int *__restrict __inherit) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2018 extern int pthread_attr_setinheritsched(pthread_attr_t *__attr, int __inherit) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2019 extern int pthread_attr_getscope(__const pthread_attr_t *__restrict __attr, int *__restrict __scope) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2020 extern int pthread_attr_setscope(pthread_attr_t *__attr, int __scope) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2021 extern int pthread_attr_getstackaddr(__const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2))) __attribute__((__deprecated__));
nengel@9 2022 extern int pthread_attr_setstackaddr(pthread_attr_t *__attr, void *__stackaddr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__deprecated__));
nengel@9 2023 extern int pthread_attr_getstacksize(__const pthread_attr_t *__restrict __attr, size_t *__restrict __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2024 extern int pthread_attr_setstacksize(pthread_attr_t *__attr, size_t __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2025 extern int pthread_attr_getstack(__const pthread_attr_t *__restrict __attr, void **__restrict __stackaddr, size_t *__restrict __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2, 3)));
nengel@9 2026 extern int pthread_attr_setstack(pthread_attr_t *__attr, void *__stackaddr, size_t __stacksize) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2027 extern int pthread_setschedparam(pthread_t __target_thread, int __policy, __const struct sched_param *__param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3)));
nengel@9 2028 extern int pthread_getschedparam(pthread_t __target_thread, int *__restrict __policy, struct sched_param *__restrict __param) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3)));
nengel@9 2029 extern int pthread_setschedprio(pthread_t __target_thread, int __prio) __attribute__((__nothrow__, __leaf__));
nengel@9 2030 extern int pthread_once(pthread_once_t *__once_control, void (*__init_routine)(void)) __attribute__((__nonnull__(1, 2)));
nengel@9 2031 extern int pthread_setcancelstate(int __state, int *__oldstate);
nengel@9 2032 extern int pthread_setcanceltype(int __type, int *__oldtype);
nengel@9 2033 extern int pthread_cancel(pthread_t __th);
nengel@9 2034 extern void pthread_testcancel(void);
nengel@9 2035 typedef struct
nengel@9 2036 {
nengel@9 2037 struct
nengel@9 2038 {
nengel@9 2039 __jmp_buf __cancel_jmp_buf;
nengel@9 2040 int __mask_was_saved;
nengel@9 2041 } __cancel_jmp_buf[1];
nengel@9 2042 void *__pad[4];
nengel@9 2043 } __pthread_unwind_buf_t __attribute__((__aligned__));
nengel@9 2044 struct __pthread_cleanup_frame
nengel@9 2045 {
nengel@9 2046 void (*__cancel_routine)(void *);
nengel@9 2047 void *__cancel_arg;
nengel@9 2048 int __do_it;
nengel@9 2049 int __cancel_type;
nengel@9 2050 };
nengel@9 2051 extern void __pthread_register_cancel(__pthread_unwind_buf_t *__buf);
nengel@9 2052 extern void __pthread_unregister_cancel(__pthread_unwind_buf_t *__buf);
nengel@9 2053 extern void __pthread_unwind_next(__pthread_unwind_buf_t *__buf) __attribute__((__noreturn__)) __attribute__((__weak__));
nengel@9 2054 struct __jmp_buf_tag;
nengel@9 2055 extern int __sigsetjmp(struct __jmp_buf_tag *__env, int __savemask) __attribute__((__nothrow__, __leaf__));
nengel@9 2056 extern int pthread_mutex_init(pthread_mutex_t *__mutex, __const pthread_mutexattr_t *__mutexattr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2057 extern int pthread_mutex_destroy(pthread_mutex_t *__mutex) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2058 extern int pthread_mutex_trylock(pthread_mutex_t *__mutex) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2059 extern int pthread_mutex_lock(pthread_mutex_t *__mutex) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2060 extern int pthread_mutex_timedlock(pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2061 extern int pthread_mutex_unlock(pthread_mutex_t *__mutex) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2062 extern int pthread_mutex_getprioceiling(__const pthread_mutex_t *__restrict __mutex, int *__restrict __prioceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2063 extern int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict __mutex, int __prioceiling, int *__restrict __old_ceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 3)));
nengel@9 2064 extern int pthread_mutex_consistent(pthread_mutex_t *__mutex) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2065 extern int pthread_mutexattr_init(pthread_mutexattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2066 extern int pthread_mutexattr_destroy(pthread_mutexattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2067 extern int pthread_mutexattr_getpshared(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2068 extern int pthread_mutexattr_setpshared(pthread_mutexattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2069 extern int pthread_mutexattr_gettype(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __kind) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2070 extern int pthread_mutexattr_settype(pthread_mutexattr_t *__attr, int __kind) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2071 extern int pthread_mutexattr_getprotocol(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __protocol) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2072 extern int pthread_mutexattr_setprotocol(pthread_mutexattr_t *__attr, int __protocol) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2073 extern int pthread_mutexattr_getprioceiling(__const pthread_mutexattr_t *__restrict __attr, int *__restrict __prioceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2074 extern int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *__attr, int __prioceiling) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2075 extern int pthread_mutexattr_getrobust(__const pthread_mutexattr_t *__attr, int *__robustness) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2076 extern int pthread_mutexattr_setrobust(pthread_mutexattr_t *__attr, int __robustness) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2077 extern int pthread_rwlock_init(pthread_rwlock_t *__restrict __rwlock, __const pthread_rwlockattr_t *__restrict __attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2078 extern int pthread_rwlock_destroy(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2079 extern int pthread_rwlock_rdlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2080 extern int pthread_rwlock_tryrdlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2081 extern int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict __rwlock, __const struct timespec *__restrict __abstime) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2082 extern int pthread_rwlock_wrlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2083 extern int pthread_rwlock_trywrlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2084 extern int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict __rwlock, __const struct timespec *__restrict __abstime) __attribute__((__nothrow__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2085 extern int pthread_rwlock_unlock(pthread_rwlock_t *__rwlock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2086 extern int pthread_rwlockattr_init(pthread_rwlockattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2087 extern int pthread_rwlockattr_destroy(pthread_rwlockattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2088 extern int pthread_rwlockattr_getpshared(__const pthread_rwlockattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2089 extern int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2090 extern int pthread_rwlockattr_getkind_np(__const pthread_rwlockattr_t *__restrict __attr, int *__restrict __pref) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2091 extern int pthread_rwlockattr_setkind_np(pthread_rwlockattr_t *__attr, int __pref) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2092 extern int pthread_cond_init(pthread_cond_t *__restrict __cond, __const pthread_condattr_t *__restrict __cond_attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2093 extern int pthread_cond_destroy(pthread_cond_t *__cond) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2094 extern int pthread_cond_signal(pthread_cond_t *__cond) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2095 extern int pthread_cond_broadcast(pthread_cond_t *__cond) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2096 extern int pthread_cond_wait(pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex) __attribute__((__nonnull__(1, 2)));
nengel@9 2097 extern int pthread_cond_timedwait(pthread_cond_t *__restrict __cond, pthread_mutex_t *__restrict __mutex, __const struct timespec *__restrict __abstime) __attribute__((__nonnull__(1, 2, 3)));
nengel@9 2098 extern int pthread_condattr_init(pthread_condattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2099 extern int pthread_condattr_destroy(pthread_condattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2100 extern int pthread_condattr_getpshared(__const pthread_condattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2101 extern int pthread_condattr_setpshared(pthread_condattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2102 extern int pthread_condattr_getclock(__const pthread_condattr_t *__restrict __attr, __clockid_t *__restrict __clock_id) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2103 extern int pthread_condattr_setclock(pthread_condattr_t *__attr, __clockid_t __clock_id) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2104 extern int pthread_spin_init(pthread_spinlock_t *__lock, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2105 extern int pthread_spin_destroy(pthread_spinlock_t *__lock) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2106 extern int pthread_spin_lock(pthread_spinlock_t *__lock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2107 extern int pthread_spin_trylock(pthread_spinlock_t *__lock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2108 extern int pthread_spin_unlock(pthread_spinlock_t *__lock) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2109 extern int pthread_barrier_init(pthread_barrier_t *__restrict __barrier, __const pthread_barrierattr_t *__restrict __attr, unsigned int __count) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2110 extern int pthread_barrier_destroy(pthread_barrier_t *__barrier) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2111 extern int pthread_barrier_wait(pthread_barrier_t *__barrier) __attribute__((__nothrow__)) __attribute__((__nonnull__(1)));
nengel@9 2112 extern int pthread_barrierattr_init(pthread_barrierattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2113 extern int pthread_barrierattr_destroy(pthread_barrierattr_t *__attr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2114 extern int pthread_barrierattr_getpshared(__const pthread_barrierattr_t *__restrict __attr, int *__restrict __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 2115 extern int pthread_barrierattr_setpshared(pthread_barrierattr_t *__attr, int __pshared) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2116 extern int pthread_key_create(pthread_key_t *__key, void (*__destr_function)(void *)) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 2117 extern int pthread_key_delete(pthread_key_t __key) __attribute__((__nothrow__, __leaf__));
nengel@9 2118 extern void *pthread_getspecific(pthread_key_t __key) __attribute__((__nothrow__, __leaf__));
nengel@9 2119 extern int pthread_setspecific(pthread_key_t __key, __const void *__pointer) __attribute__((__nothrow__, __leaf__));
nengel@9 2120 extern int pthread_getcpuclockid(pthread_t __thread_id, __clockid_t *__clock_id) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 2121 extern int pthread_atfork(void (*__prepare)(void), void (*__parent)(void), void (*__child)(void)) __attribute__((__nothrow__, __leaf__));
nengel@9 2122 extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) pthread_equal(pthread_t __thread1, pthread_t __thread2)
nengel@9 2123 {
nengel@9 2124 return __thread1 == __thread2;
nengel@9 2125 }
nengel@9 2126 extern int *__errno_location(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2127 void *av_malloc(unsigned int size) __attribute__((__malloc__));
nengel@9 2128 void *av_realloc(void *ptr, unsigned int size);
nengel@9 2129 void *av_fast_realloc(void *ptr, unsigned int *size, unsigned int min_size);
nengel@9 2130 void av_fast_malloc(void *ptr, unsigned int *size, unsigned int min_size);
nengel@9 2131 void av_free(void *ptr);
nengel@9 2132 void *av_mallocz(unsigned int size) __attribute__((__malloc__));
nengel@9 2133 char *av_strdup(const char *s) __attribute__((__malloc__));
nengel@9 2134 void av_freep(void *ptr);
nengel@9 2135 static __attribute__((always_inline)) inline uint32_t pack16to32(int a, int b)
nengel@9 2136 {
nengel@9 2137 return (a & 0xFFFF) + (b << 16);
nengel@9 2138 }
nengel@9 2139 static __attribute__((always_inline)) inline uint16_t pack8to16(int a, int b)
nengel@9 2140 {
nengel@9 2141 return (a & 0xFF) + (b << 8);
nengel@9 2142 }
nengel@9 2143 typedef short DCTELEM;
nengel@9 2144 enum AVColorPrimaries
nengel@9 2145 {
nengel@9 2146 AVCOL_PRI_BT709 = 1,
nengel@9 2147 AVCOL_PRI_UNSPECIFIED = 2,
nengel@9 2148 AVCOL_PRI_BT470M = 4,
nengel@9 2149 AVCOL_PRI_BT470BG = 5,
nengel@9 2150 AVCOL_PRI_SMPTE170M = 6,
nengel@9 2151 AVCOL_PRI_SMPTE240M = 7,
nengel@9 2152 AVCOL_PRI_FILM = 8,
nengel@9 2153 AVCOL_PRI_NB
nengel@9 2154 };
nengel@9 2155 enum AVColorTransferCharacteristic
nengel@9 2156 {
nengel@9 2157 AVCOL_TRC_BT709 = 1,
nengel@9 2158 AVCOL_TRC_UNSPECIFIED = 2,
nengel@9 2159 AVCOL_TRC_GAMMA22 = 4,
nengel@9 2160 AVCOL_TRC_GAMMA28 = 5,
nengel@9 2161 AVCOL_TRC_NB
nengel@9 2162 };
nengel@9 2163 enum AVColorSpace
nengel@9 2164 {
nengel@9 2165 AVCOL_SPC_RGB = 0,
nengel@9 2166 AVCOL_SPC_BT709 = 1,
nengel@9 2167 AVCOL_SPC_UNSPECIFIED = 2,
nengel@9 2168 AVCOL_SPC_FCC = 4,
nengel@9 2169 AVCOL_SPC_BT470BG = 5,
nengel@9 2170 AVCOL_SPC_SMPTE170M = 6,
nengel@9 2171 AVCOL_SPC_SMPTE240M = 7,
nengel@9 2172 AVCOL_SPC_NB
nengel@9 2173 };
nengel@9 2174 enum AVColorRange
nengel@9 2175 {
nengel@9 2176 AVCOL_RANGE_UNSPECIFIED = 0,
nengel@9 2177 AVCOL_RANGE_MPEG = 1,
nengel@9 2178 AVCOL_RANGE_JPEG = 2,
nengel@9 2179 AVCOL_RANGE_NB
nengel@9 2180 };
nengel@9 2181 typedef enum MMCOOpcode
nengel@9 2182 {
nengel@9 2183 MMCO_END = 0,
nengel@9 2184 MMCO_SHORT2UNUSED,
nengel@9 2185 MMCO_LONG2UNUSED,
nengel@9 2186 MMCO_SHORT2LONG,
nengel@9 2187 MMCO_SET_MAX_LONG,
nengel@9 2188 MMCO_RESET,
nengel@9 2189 MMCO_LONG
nengel@9 2190 } MMCOOpcode;
nengel@9 2191 enum
nengel@9 2192 {
nengel@9 2193 NAL_SLICE = 1,
nengel@9 2194 NAL_DPA,
nengel@9 2195 NAL_DPB,
nengel@9 2196 NAL_DPC,
nengel@9 2197 NAL_IDR_SLICE,
nengel@9 2198 NAL_SEI,
nengel@9 2199 NAL_SPS,
nengel@9 2200 NAL_PPS,
nengel@9 2201 NAL_AUD,
nengel@9 2202 NAL_END_SEQUENCE,
nengel@9 2203 NAL_END_STREAM,
nengel@9 2204 NAL_FILLER_DATA,
nengel@9 2205 NAL_SPS_EXT,
nengel@9 2206 NAL_AUXILIARY_SLICE = 19
nengel@9 2207 };
nengel@9 2208 typedef enum
nengel@9 2209 {
nengel@9 2210 SEI_BUFFERING_PERIOD = 0,
nengel@9 2211 SEI_TYPE_PIC_TIMING = 1,
nengel@9 2212 SEI_TYPE_USER_DATA_UNREGISTERED = 5,
nengel@9 2213 SEI_TYPE_RECOVERY_POINT = 6
nengel@9 2214 } SEI_Type;
nengel@9 2215 typedef enum
nengel@9 2216 {
nengel@9 2217 SEI_PIC_STRUCT_FRAME = 0,
nengel@9 2218 SEI_PIC_STRUCT_TOP_FIELD = 1,
nengel@9 2219 SEI_PIC_STRUCT_BOTTOM_FIELD = 2,
nengel@9 2220 SEI_PIC_STRUCT_TOP_BOTTOM = 3,
nengel@9 2221 SEI_PIC_STRUCT_BOTTOM_TOP = 4,
nengel@9 2222 SEI_PIC_STRUCT_TOP_BOTTOM_TOP = 5,
nengel@9 2223 SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM = 6,
nengel@9 2224 SEI_PIC_STRUCT_FRAME_DOUBLING = 7,
nengel@9 2225 SEI_PIC_STRUCT_FRAME_TRIPLING = 8
nengel@9 2226 } SEI_PicStructType;
nengel@9 2227 typedef struct SPS
nengel@9 2228 {
nengel@9 2229 int profile_idc;
nengel@9 2230 int level_idc;
nengel@9 2231 int chroma_format_idc;
nengel@9 2232 int transform_bypass;
nengel@9 2233 int log2_max_frame_num;
nengel@9 2234 int poc_type;
nengel@9 2235 int log2_max_poc_lsb;
nengel@9 2236 int delta_pic_order_always_zero_flag;
nengel@9 2237 int offset_for_non_ref_pic;
nengel@9 2238 int offset_for_top_to_bottom_field;
nengel@9 2239 int poc_cycle_length;
nengel@9 2240 int ref_frame_count;
nengel@9 2241 int gaps_in_frame_num_allowed_flag;
nengel@9 2242 int mb_width;
nengel@9 2243 int mb_height;
nengel@9 2244 int frame_mbs_only_flag;
nengel@9 2245 int mb_aff;
nengel@9 2246 int direct_8x8_inference_flag;
nengel@9 2247 int crop;
nengel@9 2248 unsigned int crop_left;
nengel@9 2249 unsigned int crop_right;
nengel@9 2250 unsigned int crop_top;
nengel@9 2251 unsigned int crop_bottom;
nengel@9 2252 int vui_parameters_present_flag;
nengel@9 2253 int num, den;
nengel@9 2254 int video_signal_type_present_flag;
nengel@9 2255 int full_range;
nengel@9 2256 int colour_description_present_flag;
nengel@9 2257 enum AVColorPrimaries color_primaries;
nengel@9 2258 enum AVColorTransferCharacteristic color_trc;
nengel@9 2259 enum AVColorSpace colorspace;
nengel@9 2260 int timing_info_present_flag;
nengel@9 2261 uint32_t num_units_in_tick;
nengel@9 2262 uint32_t time_scale;
nengel@9 2263 int fixed_frame_rate_flag;
nengel@9 2264 short offset_for_ref_frame[256];
nengel@9 2265 int bitstream_restriction_flag;
nengel@9 2266 int num_reorder_frames;
nengel@9 2267 int scaling_matrix_present;
nengel@9 2268 uint8_t scaling_matrix4[6][16];
nengel@9 2269 uint8_t scaling_matrix8[2][64];
nengel@9 2270 int nal_hrd_parameters_present_flag;
nengel@9 2271 int vcl_hrd_parameters_present_flag;
nengel@9 2272 int pic_struct_present_flag;
nengel@9 2273 int time_offset_length;
nengel@9 2274 int cpb_cnt;
nengel@9 2275 int initial_cpb_removal_delay_length;
nengel@9 2276 int cpb_removal_delay_length;
nengel@9 2277 int dpb_output_delay_length;
nengel@9 2278 int bit_depth_luma;
nengel@9 2279 int bit_depth_chroma;
nengel@9 2280 int residual_color_transform_flag;
nengel@9 2281 } SPS;
nengel@9 2282 typedef struct PPS
nengel@9 2283 {
nengel@9 2284 unsigned int sps_id;
nengel@9 2285 int cabac;
nengel@9 2286 int pic_order_present;
nengel@9 2287 int slice_group_count;
nengel@9 2288 int mb_slice_group_map_type;
nengel@9 2289 unsigned int ref_count[2];
nengel@9 2290 int weighted_pred;
nengel@9 2291 int weighted_bipred_idc;
nengel@9 2292 int init_qp;
nengel@9 2293 int init_qs;
nengel@9 2294 int chroma_qp_index_offset[2];
nengel@9 2295 int deblocking_filter_parameters_present;
nengel@9 2296 int constrained_intra_pred;
nengel@9 2297 int redundant_pic_cnt_present;
nengel@9 2298 int transform_8x8_mode;
nengel@9 2299 uint8_t scaling_matrix4[6][16];
nengel@9 2300 uint8_t scaling_matrix8[2][64];
nengel@9 2301 uint8_t chroma_qp_table[2][64];
nengel@9 2302 int chroma_qp_diff;
nengel@9 2303 } PPS;
nengel@9 2304 typedef struct TopBorder
nengel@9 2305 {
nengel@9 2306 uint8_t unfiltered_y[16];
nengel@9 2307 uint8_t unfiltered_cb[8];
nengel@9 2308 uint8_t unfiltered_cr[8];
nengel@9 2309 uint8_t top_borders_y[16 * 4];
nengel@9 2310 uint8_t top_borders_cb[8 * 2];
nengel@9 2311 uint8_t top_borders_cr[8 * 2];
nengel@9 2312 } TopBorder;
nengel@9 2313 typedef struct LeftBorder
nengel@9 2314 {
nengel@9 2315 uint8_t unfiltered_y[17];
nengel@9 2316 uint8_t unfiltered_cb[9];
nengel@9 2317 uint8_t unfiltered_cr[9];
nengel@9 2318 } LeftBorder;
nengel@9 2319 typedef struct H264Mb
nengel@9 2320 {
nengel@9 2321 int16_t mb_x, mb_y;
nengel@9 2322 int32_t mb_type;
nengel@9 2323 uint16_t cbp;
nengel@9 2324 int8_t qscale_mb_xy;
nengel@9 2325 int8_t qscale_left_mb_xy;
nengel@9 2326 int8_t qscale_top_mb_xy;
nengel@9 2327 uint16_t __attribute__((aligned(8))) sub_mb_type[4];
nengel@9 2328 uint8_t __attribute__((aligned(8))) non_zero_count[24];
nengel@9 2329 int16_t __attribute__((aligned(16))) mb[16 * 24];
nengel@9 2330 union
nengel@9 2331 {
nengel@9 2332 struct
nengel@9 2333 {
nengel@9 2334 int8_t __attribute__((aligned(8))) ref_index[2][4];
nengel@9 2335 int16_t __attribute__((aligned(16))) mvd[2][16][2];
nengel@9 2336 };
nengel@9 2337 struct
nengel@9 2338 {
nengel@9 2339 int8_t __attribute__((aligned(8))) intra4x4_pred_mode[16];
nengel@9 2340 int8_t chroma_pred_mode;
nengel@9 2341 int8_t intra16x16_pred_mode;
nengel@9 2342 };
nengel@9 2343 };
nengel@9 2344 uint8_t __attribute__((aligned(8))) top_border[16 + 2 * 8];
nengel@9 2345 uint8_t __attribute__((aligned(8))) top_border_next[8];
nengel@9 2346 uint8_t __attribute__((aligned(8))) left_border[17 + 2 * 9];
nengel@9 2347 int8_t intra4x4_pred_mode_left[4];
nengel@9 2348 } H264Mb;
nengel@9 2349 typedef struct RawFrame
nengel@9 2350 {
nengel@9 2351 uint8_t *data;
nengel@9 2352 int size;
nengel@9 2353 unsigned int data_size;
nengel@9 2354 int64_t pos;
nengel@9 2355 int state;
nengel@9 2356 } RawFrame;
nengel@9 2357 typedef struct PictureInfo
nengel@9 2358 {
nengel@9 2359 int ref_poc[2][16];
nengel@9 2360 int ref_count[2];
nengel@9 2361 int poc;
nengel@9 2362 int frame_num;
nengel@9 2363 int pic_id;
nengel@9 2364 int long_ref;
nengel@9 2365 int cpn;
nengel@9 2366 int slice_type_nos;
nengel@9 2367 int reference;
nengel@9 2368 } PictureInfo;
nengel@9 2369 typedef struct DecodedPicture
nengel@9 2370 {
nengel@9 2371 int16_t (*motion_val[2])[2];
nengel@9 2372 int16_t (*motion_val_base[2])[2];
nengel@9 2373 int8_t *ref_index[2];
nengel@9 2374 uint32_t *mb_type;
nengel@9 2375 uint32_t *mb_type_base;
nengel@9 2376 int8_t *intra4x4_pred_mode;
nengel@9 2377 int8_t *non_zero_count;
nengel@9 2378 uint8_t *data[3];
nengel@9 2379 int linesize[3];
nengel@9 2380 uint8_t *base[3];
nengel@9 2381 int cpn;
nengel@9 2382 int poc;
nengel@9 2383 int reference;
nengel@9 2384 int key_frame;
nengel@9 2385 int mmco_reset;
nengel@9 2386 } DecodedPicture;
nengel@9 2387 extern void __assert_fail(__const char *__assertion, __const char *__file, unsigned int __line, __const char *__function) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__));
nengel@9 2388 extern void __assert_perror_fail(int __errnum, __const char *__file, unsigned int __line, __const char *__function) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__));
nengel@9 2389 extern void __assert(const char *__assertion, const char *__file, int __line) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__));
nengel@9 2390 typedef int64_t x86_reg;
nengel@9 2391 typedef struct CABACContext
nengel@9 2392 {
nengel@9 2393 int low;
nengel@9 2394 int range;
nengel@9 2395 int outstanding_count;
nengel@9 2396 const uint8_t *bytestream_start;
nengel@9 2397 const uint8_t *bytestream;
nengel@9 2398 const uint8_t *bytestream_end;
nengel@9 2399 uint8_t cabac_state[460];
nengel@9 2400 } CABACContext;
nengel@9 2401 extern uint8_t ff_h264_mlps_state[4 * 64];
nengel@9 2402 extern uint8_t ff_h264_lps_range[4 * 2 * 64];
nengel@9 2403 extern uint8_t ff_h264_mps_state[2 * 64];
nengel@9 2404 extern uint8_t ff_h264_lps_state[2 * 64];
nengel@9 2405 extern const uint8_t ff_h264_norm_shift[512];
nengel@9 2406 void ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size);
nengel@9 2407 void ff_init_cabac_states(void);
nengel@9 2408 static void refill(CABACContext *c)
nengel@9 2409 {
nengel@9 2410 c->low += (c->bytestream[0] << 9) + (c->bytestream[1] << 1);
nengel@9 2411 c->low -= ((1 << 16) - 1);
nengel@9 2412 c->bytestream += 16 / 8;
nengel@9 2413 }
nengel@9 2414 static void refill2(CABACContext *c)
nengel@9 2415 {
nengel@9 2416 int i, x;
nengel@9 2417 x = c->low ^ (c->low - 1);
nengel@9 2418 i = 7 - ff_h264_norm_shift[x >> (16 - 1)];
nengel@9 2419 x = - ((1 << 16) - 1);
nengel@9 2420 x += (c->bytestream[0] << 9) + (c->bytestream[1] << 1);
nengel@9 2421 c->low += x << i;
nengel@9 2422 c->bytestream += 16 / 8;
nengel@9 2423 }
nengel@9 2424 static inline void renorm_cabac_decoder(CABACContext *c)
nengel@9 2425 {
nengel@9 2426 while (c->range < 0x100)
nengel@9 2427 {
nengel@9 2428 c->range += c->range;
nengel@9 2429 c->low += c->low;
nengel@9 2430 if (!(c->low & ((1 << 16) - 1)))
nengel@9 2431 refill(c);
nengel@9 2432 }
nengel@9 2433 }
nengel@9 2434 static inline void renorm_cabac_decoder_once(CABACContext *c)
nengel@9 2435 {
nengel@9 2436 int shift = (uint32_t) (c->range - 0x100) >> 31;
nengel@9 2437 c->range <<= shift;
nengel@9 2438 c->low <<= shift;
nengel@9 2439 if (!(c->low & ((1 << 16) - 1)))
nengel@9 2440 refill(c);
nengel@9 2441 }
nengel@9 2442 static __attribute__((always_inline)) inline int get_cabac_inline(CABACContext *c, uint8_t *const state)
nengel@9 2443 {
nengel@9 2444 int s = *state;
nengel@9 2445 int RangeLPS = ff_h264_lps_range[2 * (c->range & 0xC0) + s];
nengel@9 2446 int bit, lps_mask __attribute__((unused));
nengel@9 2447 c->range -= RangeLPS;
nengel@9 2448 lps_mask = ((c->range << (16 + 1)) - c->low) >> 31;
nengel@9 2449 c->low -= (c->range << (16 + 1)) & lps_mask;
nengel@9 2450 c->range += (RangeLPS - c->range) & lps_mask;
nengel@9 2451 s ^= lps_mask;
nengel@9 2452 *state = (ff_h264_mlps_state + 128)[s];
nengel@9 2453 bit = s & 1;
nengel@9 2454 lps_mask = ff_h264_norm_shift[c->range];
nengel@9 2455 c->range <<= lps_mask;
nengel@9 2456 c->low <<= lps_mask;
nengel@9 2457 if (!(c->low & ((1 << 16) - 1)))
nengel@9 2458 refill2(c);
nengel@9 2459 return bit;
nengel@9 2460 }
nengel@9 2461 static int __attribute__((noinline)) __attribute__((unused)) get_cabac_noinline(CABACContext *c, uint8_t *const state)
nengel@9 2462 {
nengel@9 2463 return get_cabac_inline(c, state);
nengel@9 2464 }
nengel@9 2465 static int __attribute__((unused)) get_cabac(CABACContext *c, uint8_t *const state)
nengel@9 2466 {
nengel@9 2467 return get_cabac_inline(c, state);
nengel@9 2468 }
nengel@9 2469 static int __attribute__((unused)) get_cabac_bypass(CABACContext *c)
nengel@9 2470 {
nengel@9 2471 int range;
nengel@9 2472 c->low += c->low;
nengel@9 2473 if (!(c->low & ((1 << 16) - 1)))
nengel@9 2474 refill(c);
nengel@9 2475 range = c->range << (16 + 1);
nengel@9 2476 if (c->low < range)
nengel@9 2477 {
nengel@9 2478 return 0;
nengel@9 2479 }
nengel@9 2480 else
nengel@9 2481 {
nengel@9 2482 c->low -= range;
nengel@9 2483 return 1;
nengel@9 2484 }
nengel@9 2485 }
nengel@9 2486 static __attribute__((always_inline)) inline int get_cabac_bypass_sign(CABACContext *c, int val)
nengel@9 2487 {
nengel@9 2488 int range, mask;
nengel@9 2489 c->low += c->low;
nengel@9 2490 if (!(c->low & ((1 << 16) - 1)))
nengel@9 2491 refill(c);
nengel@9 2492 range = c->range << (16 + 1);
nengel@9 2493 c->low -= range;
nengel@9 2494 mask = c->low >> 31;
nengel@9 2495 range &= mask;
nengel@9 2496 c->low += range;
nengel@9 2497 return (val ^ mask) - mask;
nengel@9 2498 }
nengel@9 2499 static int __attribute__((unused)) get_cabac_terminate(CABACContext *c)
nengel@9 2500 {
nengel@9 2501 c->range -= 2;
nengel@9 2502 if (c->low < c->range << (16 + 1))
nengel@9 2503 {
nengel@9 2504 renorm_cabac_decoder_once(c);
nengel@9 2505 return 0;
nengel@9 2506 }
nengel@9 2507 else
nengel@9 2508 {
nengel@9 2509 return c->bytestream - c->bytestream_start;
nengel@9 2510 }
nengel@9 2511 }
nengel@9 2512 static __attribute__((always_inline)) inline __attribute__((const)) uint16_t bswap_16(uint16_t x)
nengel@9 2513 {
nengel@9 2514 __asm__ ("rorw $8, %0": "+r" (x): );
nengel@9 2515 return x;
nengel@9 2516 }
nengel@9 2517 static __attribute__((always_inline)) inline __attribute__((const)) uint32_t bswap_32(uint32_t x)
nengel@9 2518 {
nengel@9 2519 __asm__ ("bswap %0": "+r" (x): );
nengel@9 2520 return x;
nengel@9 2521 }
nengel@9 2522 static inline uint64_t __attribute__((const)) bswap_64(uint64_t x)
nengel@9 2523 {
nengel@9 2524 __asm__ ("bswap %0": "=r" (x): "0" (x));
nengel@9 2525 return x;
nengel@9 2526 }
nengel@9 2527 enum
nengel@9 2528 {
nengel@9 2529 _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
nengel@9 2530 _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
nengel@9 2531 _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
nengel@9 2532 _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
nengel@9 2533 _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
nengel@9 2534 _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
nengel@9 2535 _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
nengel@9 2536 _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
nengel@9 2537 _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
nengel@9 2538 _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
nengel@9 2539 _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
nengel@9 2540 _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
nengel@9 2541 };
nengel@9 2542 extern __const unsigned short int **__ctype_b_loc(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const));
nengel@9 2543 extern __const __int32_t **__ctype_tolower_loc(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const));
nengel@9 2544 extern __const __int32_t **__ctype_toupper_loc(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__const));
nengel@9 2545 extern int isalnum(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2546 extern int isalpha(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2547 extern int iscntrl(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2548 extern int isdigit(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2549 extern int islower(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2550 extern int isgraph(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2551 extern int isprint(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2552 extern int ispunct(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2553 extern int isspace(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2554 extern int isupper(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2555 extern int isxdigit(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2556 extern int tolower(int __c) __attribute__((__nothrow__, __leaf__));
nengel@9 2557 extern int toupper(int __c) __attribute__((__nothrow__, __leaf__));
nengel@9 2558 extern int isblank(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2559 extern int isascii(int __c) __attribute__((__nothrow__, __leaf__));
nengel@9 2560 extern int toascii(int __c) __attribute__((__nothrow__, __leaf__));
nengel@9 2561 extern int _toupper(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2562 extern int _tolower(int) __attribute__((__nothrow__, __leaf__));
nengel@9 2563 extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) tolower(int __c)
nengel@9 2564 {
nengel@9 2565 return __c >= - 128 && __c < 256 ? (*__ctype_tolower_loc())[__c] : __c;
nengel@9 2566 }
nengel@9 2567 extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) toupper(int __c)
nengel@9 2568 {
nengel@9 2569 return __c >= - 128 && __c < 256 ? (*__ctype_toupper_loc())[__c] : __c;
nengel@9 2570 }
nengel@9 2571 extern int isalnum_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2572 extern int isalpha_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2573 extern int iscntrl_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2574 extern int isdigit_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2575 extern int islower_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2576 extern int isgraph_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2577 extern int isprint_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2578 extern int ispunct_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2579 extern int isspace_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2580 extern int isupper_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2581 extern int isxdigit_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2582 extern int isblank_l(int, __locale_t) __attribute__((__nothrow__, __leaf__));
nengel@9 2583 extern int __tolower_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__));
nengel@9 2584 extern int tolower_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__));
nengel@9 2585 extern int __toupper_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__));
nengel@9 2586 extern int toupper_l(int __c, __locale_t __l) __attribute__((__nothrow__, __leaf__));
nengel@9 2587 typedef int __gwchar_t;
nengel@9 2588 typedef struct
nengel@9 2589 {
nengel@9 2590 long int quot;
nengel@9 2591 long int rem;
nengel@9 2592 } imaxdiv_t;
nengel@9 2593 extern intmax_t imaxabs(intmax_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2594 extern imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2595 extern intmax_t strtoimax(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__));
nengel@9 2596 extern uintmax_t strtoumax(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__));
nengel@9 2597 extern intmax_t wcstoimax(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__));
nengel@9 2598 extern uintmax_t wcstoumax(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__));
nengel@9 2599 extern long int __strtol_internal(__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 2600 extern __inline __attribute__((__gnu_inline__)) intmax_t __attribute__((__nothrow__, __leaf__)) strtoimax(__const char *__restrict nptr, char **__restrict endptr, int base)
nengel@9 2601 {
nengel@9 2602 return __strtol_internal(nptr, endptr, base, 0);
nengel@9 2603 }
nengel@9 2604 extern unsigned long int __strtoul_internal(__const char *__restrict __nptr, char **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 2605 extern __inline __attribute__((__gnu_inline__)) uintmax_t __attribute__((__nothrow__, __leaf__)) strtoumax(__const char *__restrict nptr, char **__restrict endptr, int base)
nengel@9 2606 {
nengel@9 2607 return __strtoul_internal(nptr, endptr, base, 0);
nengel@9 2608 }
nengel@9 2609 extern long int __wcstol_internal(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 2610 extern __inline __attribute__((__gnu_inline__)) intmax_t __attribute__((__nothrow__, __leaf__)) wcstoimax(__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
nengel@9 2611 {
nengel@9 2612 return __wcstol_internal(nptr, endptr, base, 0);
nengel@9 2613 }
nengel@9 2614 extern unsigned long int __wcstoul_internal(__const __gwchar_t *__restrict __nptr, __gwchar_t **__restrict __endptr, int __base, int __group) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 2615 extern __inline __attribute__((__gnu_inline__)) uintmax_t __attribute__((__nothrow__, __leaf__)) wcstoumax(__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
nengel@9 2616 {
nengel@9 2617 return __wcstoul_internal(nptr, endptr, base, 0);
nengel@9 2618 }
nengel@9 2619 typedef float float_t;
nengel@9 2620 typedef double double_t;
nengel@9 2621 extern double acos(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2622 extern double __acos(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2623 extern double asin(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2624 extern double __asin(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2625 extern double atan(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2626 extern double __atan(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2627 extern double atan2(double __y, double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2628 extern double __atan2(double __y, double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2629 extern double cos(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2630 extern double __cos(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2631 extern double sin(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2632 extern double __sin(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2633 extern double tan(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2634 extern double __tan(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2635 extern double cosh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2636 extern double __cosh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2637 extern double sinh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2638 extern double __sinh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2639 extern double tanh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2640 extern double __tanh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2641 extern double acosh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2642 extern double __acosh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2643 extern double asinh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2644 extern double __asinh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2645 extern double atanh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2646 extern double __atanh(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2647 extern double exp(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2648 extern double __exp(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2649 extern double frexp(double __x, int *__exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2650 extern double __frexp(double __x, int *__exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2651 extern double ldexp(double __x, int __exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2652 extern double __ldexp(double __x, int __exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2653 extern double log(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2654 extern double __log(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2655 extern double log10(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2656 extern double __log10(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2657 extern double modf(double __x, double *__iptr) __attribute__((__nothrow__, __leaf__));
nengel@9 2658 extern double __modf(double __x, double *__iptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 2659 extern double expm1(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2660 extern double __expm1(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2661 extern double log1p(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2662 extern double __log1p(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2663 extern double logb(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2664 extern double __logb(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2665 extern double exp2(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2666 extern double __exp2(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2667 extern double log2(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2668 extern double __log2(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2669 extern double pow(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2670 extern double __pow(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2671 extern double sqrt(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2672 extern double __sqrt(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2673 extern double hypot(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2674 extern double __hypot(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2675 extern double cbrt(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2676 extern double __cbrt(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2677 extern double ceil(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2678 extern double __ceil(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2679 extern double fabs(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2680 extern double __fabs(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2681 extern double floor(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2682 extern double __floor(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2683 extern double fmod(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2684 extern double __fmod(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2685 extern int __isinf(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2686 extern int __finite(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2687 extern int isinf(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2688 extern int finite(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2689 extern double drem(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2690 extern double __drem(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2691 extern double significand(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2692 extern double __significand(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2693 extern double copysign(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2694 extern double __copysign(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2695 extern double nan(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2696 extern double __nan(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2697 extern int __isnan(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2698 extern int isnan(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2699 extern double j0(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2700 extern double __j0(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2701 extern double j1(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2702 extern double __j1(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2703 extern double jn(int, double) __attribute__((__nothrow__, __leaf__));
nengel@9 2704 extern double __jn(int, double) __attribute__((__nothrow__, __leaf__));
nengel@9 2705 extern double y0(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2706 extern double __y0(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2707 extern double y1(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2708 extern double __y1(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2709 extern double yn(int, double) __attribute__((__nothrow__, __leaf__));
nengel@9 2710 extern double __yn(int, double) __attribute__((__nothrow__, __leaf__));
nengel@9 2711 extern double erf(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2712 extern double __erf(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2713 extern double erfc(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2714 extern double __erfc(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2715 extern double lgamma(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2716 extern double __lgamma(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2717 extern double tgamma(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2718 extern double __tgamma(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2719 extern double gamma(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2720 extern double __gamma(double) __attribute__((__nothrow__, __leaf__));
nengel@9 2721 extern double lgamma_r(double, int *__signgamp) __attribute__((__nothrow__, __leaf__));
nengel@9 2722 extern double __lgamma_r(double, int *__signgamp) __attribute__((__nothrow__, __leaf__));
nengel@9 2723 extern double rint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2724 extern double __rint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2725 extern double nextafter(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2726 extern double __nextafter(double __x, double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2727 extern double nexttoward(double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2728 extern double __nexttoward(double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2729 extern double remainder(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2730 extern double __remainder(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2731 extern double scalbn(double __x, int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2732 extern double __scalbn(double __x, int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2733 extern int ilogb(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2734 extern int __ilogb(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2735 extern double scalbln(double __x, long int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2736 extern double __scalbln(double __x, long int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2737 extern double nearbyint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2738 extern double __nearbyint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2739 extern double round(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2740 extern double __round(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2741 extern double trunc(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2742 extern double __trunc(double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2743 extern double remquo(double __x, double __y, int *__quo) __attribute__((__nothrow__, __leaf__));
nengel@9 2744 extern double __remquo(double __x, double __y, int *__quo) __attribute__((__nothrow__, __leaf__));
nengel@9 2745 extern long int lrint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2746 extern long int __lrint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2747 extern long long int llrint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2748 extern long long int __llrint(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2749 extern long int lround(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2750 extern long int __lround(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2751 extern long long int llround(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2752 extern long long int __llround(double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2753 extern double fdim(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2754 extern double __fdim(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2755 extern double fmax(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2756 extern double __fmax(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2757 extern double fmin(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2758 extern double __fmin(double __x, double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2759 extern int __fpclassify(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2760 extern int __signbit(double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2761 extern double fma(double __x, double __y, double __z) __attribute__((__nothrow__, __leaf__));
nengel@9 2762 extern double __fma(double __x, double __y, double __z) __attribute__((__nothrow__, __leaf__));
nengel@9 2763 extern double scalb(double __x, double __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2764 extern double __scalb(double __x, double __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2765 extern float acosf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2766 extern float __acosf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2767 extern float asinf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2768 extern float __asinf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2769 extern float atanf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2770 extern float __atanf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2771 extern float atan2f(float __y, float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2772 extern float __atan2f(float __y, float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2773 extern float cosf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2774 extern float __cosf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2775 extern float sinf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2776 extern float __sinf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2777 extern float tanf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2778 extern float __tanf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2779 extern float coshf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2780 extern float __coshf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2781 extern float sinhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2782 extern float __sinhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2783 extern float tanhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2784 extern float __tanhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2785 extern float acoshf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2786 extern float __acoshf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2787 extern float asinhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2788 extern float __asinhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2789 extern float atanhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2790 extern float __atanhf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2791 extern float expf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2792 extern float __expf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2793 extern float frexpf(float __x, int *__exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2794 extern float __frexpf(float __x, int *__exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2795 extern float ldexpf(float __x, int __exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2796 extern float __ldexpf(float __x, int __exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2797 extern float logf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2798 extern float __logf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2799 extern float log10f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2800 extern float __log10f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2801 extern float modff(float __x, float *__iptr) __attribute__((__nothrow__, __leaf__));
nengel@9 2802 extern float __modff(float __x, float *__iptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 2803 extern float expm1f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2804 extern float __expm1f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2805 extern float log1pf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2806 extern float __log1pf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2807 extern float logbf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2808 extern float __logbf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2809 extern float exp2f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2810 extern float __exp2f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2811 extern float log2f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2812 extern float __log2f(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2813 extern float powf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2814 extern float __powf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2815 extern float sqrtf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2816 extern float __sqrtf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2817 extern float hypotf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2818 extern float __hypotf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2819 extern float cbrtf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2820 extern float __cbrtf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2821 extern float ceilf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2822 extern float __ceilf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2823 extern float fabsf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2824 extern float __fabsf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2825 extern float floorf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2826 extern float __floorf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2827 extern float fmodf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2828 extern float __fmodf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2829 extern int __isinff(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2830 extern int __finitef(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2831 extern int isinff(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2832 extern int finitef(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2833 extern float dremf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2834 extern float __dremf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2835 extern float significandf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2836 extern float __significandf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2837 extern float copysignf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2838 extern float __copysignf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2839 extern float nanf(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2840 extern float __nanf(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2841 extern int __isnanf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2842 extern int isnanf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2843 extern float j0f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2844 extern float __j0f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2845 extern float j1f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2846 extern float __j1f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2847 extern float jnf(int, float) __attribute__((__nothrow__, __leaf__));
nengel@9 2848 extern float __jnf(int, float) __attribute__((__nothrow__, __leaf__));
nengel@9 2849 extern float y0f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2850 extern float __y0f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2851 extern float y1f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2852 extern float __y1f(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2853 extern float ynf(int, float) __attribute__((__nothrow__, __leaf__));
nengel@9 2854 extern float __ynf(int, float) __attribute__((__nothrow__, __leaf__));
nengel@9 2855 extern float erff(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2856 extern float __erff(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2857 extern float erfcf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2858 extern float __erfcf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2859 extern float lgammaf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2860 extern float __lgammaf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2861 extern float tgammaf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2862 extern float __tgammaf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2863 extern float gammaf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2864 extern float __gammaf(float) __attribute__((__nothrow__, __leaf__));
nengel@9 2865 extern float lgammaf_r(float, int *__signgamp) __attribute__((__nothrow__, __leaf__));
nengel@9 2866 extern float __lgammaf_r(float, int *__signgamp) __attribute__((__nothrow__, __leaf__));
nengel@9 2867 extern float rintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2868 extern float __rintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2869 extern float nextafterf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2870 extern float __nextafterf(float __x, float __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2871 extern float nexttowardf(float __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2872 extern float __nexttowardf(float __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2873 extern float remainderf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2874 extern float __remainderf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2875 extern float scalbnf(float __x, int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2876 extern float __scalbnf(float __x, int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2877 extern int ilogbf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2878 extern int __ilogbf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2879 extern float scalblnf(float __x, long int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2880 extern float __scalblnf(float __x, long int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2881 extern float nearbyintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2882 extern float __nearbyintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2883 extern float roundf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2884 extern float __roundf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2885 extern float truncf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2886 extern float __truncf(float __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2887 extern float remquof(float __x, float __y, int *__quo) __attribute__((__nothrow__, __leaf__));
nengel@9 2888 extern float __remquof(float __x, float __y, int *__quo) __attribute__((__nothrow__, __leaf__));
nengel@9 2889 extern long int lrintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2890 extern long int __lrintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2891 extern long long int llrintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2892 extern long long int __llrintf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2893 extern long int lroundf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2894 extern long int __lroundf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2895 extern long long int llroundf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2896 extern long long int __llroundf(float __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2897 extern float fdimf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2898 extern float __fdimf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2899 extern float fmaxf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2900 extern float __fmaxf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2901 extern float fminf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2902 extern float __fminf(float __x, float __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2903 extern int __fpclassifyf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2904 extern int __signbitf(float __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2905 extern float fmaf(float __x, float __y, float __z) __attribute__((__nothrow__, __leaf__));
nengel@9 2906 extern float __fmaf(float __x, float __y, float __z) __attribute__((__nothrow__, __leaf__));
nengel@9 2907 extern float scalbf(float __x, float __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2908 extern float __scalbf(float __x, float __n) __attribute__((__nothrow__, __leaf__));
nengel@9 2909 extern long double acosl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2910 extern long double __acosl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2911 extern long double asinl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2912 extern long double __asinl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2913 extern long double atanl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2914 extern long double __atanl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2915 extern long double atan2l(long double __y, long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2916 extern long double __atan2l(long double __y, long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2917 extern long double cosl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2918 extern long double __cosl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2919 extern long double sinl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2920 extern long double __sinl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2921 extern long double tanl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2922 extern long double __tanl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2923 extern long double coshl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2924 extern long double __coshl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2925 extern long double sinhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2926 extern long double __sinhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2927 extern long double tanhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2928 extern long double __tanhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2929 extern long double acoshl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2930 extern long double __acoshl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2931 extern long double asinhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2932 extern long double __asinhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2933 extern long double atanhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2934 extern long double __atanhl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2935 extern long double expl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2936 extern long double __expl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2937 extern long double frexpl(long double __x, int *__exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2938 extern long double __frexpl(long double __x, int *__exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2939 extern long double ldexpl(long double __x, int __exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2940 extern long double __ldexpl(long double __x, int __exponent) __attribute__((__nothrow__, __leaf__));
nengel@9 2941 extern long double logl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2942 extern long double __logl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2943 extern long double log10l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2944 extern long double __log10l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2945 extern long double modfl(long double __x, long double *__iptr) __attribute__((__nothrow__, __leaf__));
nengel@9 2946 extern long double __modfl(long double __x, long double *__iptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 2947 extern long double expm1l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2948 extern long double __expm1l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2949 extern long double log1pl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2950 extern long double __log1pl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2951 extern long double logbl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2952 extern long double __logbl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2953 extern long double exp2l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2954 extern long double __exp2l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2955 extern long double log2l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2956 extern long double __log2l(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2957 extern long double powl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2958 extern long double __powl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2959 extern long double sqrtl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2960 extern long double __sqrtl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2961 extern long double hypotl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2962 extern long double __hypotl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2963 extern long double cbrtl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2964 extern long double __cbrtl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2965 extern long double ceill(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2966 extern long double __ceill(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2967 extern long double fabsl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2968 extern long double __fabsl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2969 extern long double floorl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2970 extern long double __floorl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2971 extern long double fmodl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2972 extern long double __fmodl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2973 extern int __isinfl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2974 extern int __finitel(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2975 extern int isinfl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2976 extern int finitel(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2977 extern long double dreml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2978 extern long double __dreml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 2979 extern long double significandl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2980 extern long double __significandl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 2981 extern long double copysignl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2982 extern long double __copysignl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2983 extern long double nanl(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2984 extern long double __nanl(__const char *__tagb) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2985 extern int __isnanl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2986 extern int isnanl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 2987 extern long double j0l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2988 extern long double __j0l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2989 extern long double j1l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2990 extern long double __j1l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2991 extern long double jnl(int, long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2992 extern long double __jnl(int, long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2993 extern long double y0l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2994 extern long double __y0l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2995 extern long double y1l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2996 extern long double __y1l(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2997 extern long double ynl(int, long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2998 extern long double __ynl(int, long double) __attribute__((__nothrow__, __leaf__));
nengel@9 2999 extern long double erfl(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3000 extern long double __erfl(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3001 extern long double erfcl(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3002 extern long double __erfcl(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3003 extern long double lgammal(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3004 extern long double __lgammal(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3005 extern long double tgammal(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3006 extern long double __tgammal(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3007 extern long double gammal(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3008 extern long double __gammal(long double) __attribute__((__nothrow__, __leaf__));
nengel@9 3009 extern long double lgammal_r(long double, int *__signgamp) __attribute__((__nothrow__, __leaf__));
nengel@9 3010 extern long double __lgammal_r(long double, int *__signgamp) __attribute__((__nothrow__, __leaf__));
nengel@9 3011 extern long double rintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3012 extern long double __rintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3013 extern long double nextafterl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3014 extern long double __nextafterl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3015 extern long double nexttowardl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3016 extern long double __nexttowardl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3017 extern long double remainderl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3018 extern long double __remainderl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3019 extern long double scalbnl(long double __x, int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3020 extern long double __scalbnl(long double __x, int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3021 extern int ilogbl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3022 extern int __ilogbl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3023 extern long double scalblnl(long double __x, long int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3024 extern long double __scalblnl(long double __x, long int __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3025 extern long double nearbyintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3026 extern long double __nearbyintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3027 extern long double roundl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3028 extern long double __roundl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3029 extern long double truncl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3030 extern long double __truncl(long double __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3031 extern long double remquol(long double __x, long double __y, int *__quo) __attribute__((__nothrow__, __leaf__));
nengel@9 3032 extern long double __remquol(long double __x, long double __y, int *__quo) __attribute__((__nothrow__, __leaf__));
nengel@9 3033 extern long int lrintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3034 extern long int __lrintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3035 extern long long int llrintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3036 extern long long int __llrintl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3037 extern long int lroundl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3038 extern long int __lroundl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3039 extern long long int llroundl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3040 extern long long int __llroundl(long double __x) __attribute__((__nothrow__, __leaf__));
nengel@9 3041 extern long double fdiml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3042 extern long double __fdiml(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3043 extern long double fmaxl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3044 extern long double __fmaxl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3045 extern long double fminl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3046 extern long double __fminl(long double __x, long double __y) __attribute__((__nothrow__, __leaf__));
nengel@9 3047 extern int __fpclassifyl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3048 extern int __signbitl(long double __value) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3049 extern long double fmal(long double __x, long double __y, long double __z) __attribute__((__nothrow__, __leaf__));
nengel@9 3050 extern long double __fmal(long double __x, long double __y, long double __z) __attribute__((__nothrow__, __leaf__));
nengel@9 3051 extern long double scalbl(long double __x, long double __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3052 extern long double __scalbl(long double __x, long double __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3053 extern int signgam;
nengel@9 3054 enum
nengel@9 3055 {
nengel@9 3056 FP_NAN,
nengel@9 3057 FP_INFINITE,
nengel@9 3058 FP_ZERO,
nengel@9 3059 FP_SUBNORMAL,
nengel@9 3060 FP_NORMAL
nengel@9 3061 };
nengel@9 3062 typedef enum
nengel@9 3063 {
nengel@9 3064 _IEEE_ = - 1,
nengel@9 3065 _SVID_,
nengel@9 3066 _XOPEN_,
nengel@9 3067 _POSIX_,
nengel@9 3068 _ISOC_
nengel@9 3069 } _LIB_VERSION_TYPE;
nengel@9 3070 extern _LIB_VERSION_TYPE _LIB_VERSION;
nengel@9 3071 struct exception
nengel@9 3072 {
nengel@9 3073 int type;
nengel@9 3074 char *name;
nengel@9 3075 double arg1;
nengel@9 3076 double arg2;
nengel@9 3077 double retval;
nengel@9 3078 };
nengel@9 3079 extern int matherr(struct exception *__exc);
nengel@9 3080 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) __signbitf(float __x)
nengel@9 3081 {
nengel@9 3082 int __m;
nengel@9 3083 __asm ("pmovmskb %1, %0": "=r" (__m): "x" (__x));
nengel@9 3084 return __m & 0x8;
nengel@9 3085 }
nengel@9 3086 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) __signbit(double __x)
nengel@9 3087 {
nengel@9 3088 int __m;
nengel@9 3089 __asm ("pmovmskb %1, %0": "=r" (__m): "x" (__x));
nengel@9 3090 return __m & 0x80;
nengel@9 3091 }
nengel@9 3092 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) __signbitl(long double __x)
nengel@9 3093 {
nengel@9 3094 __extension__
nengel@9 3095 union
nengel@9 3096 {
nengel@9 3097 long double __l;
nengel@9 3098 int __i[3];
nengel@9 3099 } __u = {__l:__x};
nengel@9 3100 return (__u.__i[2] & 0x8000) != 0;
nengel@9 3101 }
nengel@9 3102 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long int __attribute__((__nothrow__, __leaf__)) lrintf(float __x)
nengel@9 3103 {
nengel@9 3104 long int __res;
nengel@9 3105 __asm ("cvtss2si %1, %0": "=r" (__res): "xm" (__x));
nengel@9 3106 return __res;
nengel@9 3107 }
nengel@9 3108 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long int __attribute__((__nothrow__, __leaf__)) lrint(double __x)
nengel@9 3109 {
nengel@9 3110 long int __res;
nengel@9 3111 __asm ("cvtsd2si %1, %0": "=r" (__res): "xm" (__x));
nengel@9 3112 return __res;
nengel@9 3113 }
nengel@9 3114 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long long int __attribute__((__nothrow__, __leaf__)) llrintf(float __x)
nengel@9 3115 {
nengel@9 3116 long long int __res;
nengel@9 3117 __asm ("cvtss2si %1, %0": "=r" (__res): "xm" (__x));
nengel@9 3118 return __res;
nengel@9 3119 }
nengel@9 3120 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) long long int __attribute__((__nothrow__, __leaf__)) llrint(double __x)
nengel@9 3121 {
nengel@9 3122 long long int __res;
nengel@9 3123 __asm ("cvtsd2si %1, %0": "=r" (__res): "xm" (__x));
nengel@9 3124 return __res;
nengel@9 3125 }
nengel@9 3126 union wait
nengel@9 3127 {
nengel@9 3128 int w_status;
nengel@9 3129 struct
nengel@9 3130 {
nengel@9 3131 unsigned int __w_termsig : 7;
nengel@9 3132 unsigned int __w_coredump : 1;
nengel@9 3133 unsigned int __w_retcode : 8;
nengel@9 3134 unsigned int : 16;
nengel@9 3135 } __wait_terminated;
nengel@9 3136 struct
nengel@9 3137 {
nengel@9 3138 unsigned int __w_stopval : 8;
nengel@9 3139 unsigned int __w_stopsig : 8;
nengel@9 3140 unsigned int : 16;
nengel@9 3141 } __wait_stopped;
nengel@9 3142 };
nengel@9 3143 typedef union
nengel@9 3144 {
nengel@9 3145 union wait *__uptr;
nengel@9 3146 int *__iptr;
nengel@9 3147 } __WAIT_STATUS __attribute__((__transparent_union__));
nengel@9 3148 typedef struct
nengel@9 3149 {
nengel@9 3150 int quot;
nengel@9 3151 int rem;
nengel@9 3152 } div_t;
nengel@9 3153 typedef struct
nengel@9 3154 {
nengel@9 3155 long int quot;
nengel@9 3156 long int rem;
nengel@9 3157 } ldiv_t;
nengel@9 3158 __extension__
nengel@9 3159 typedef struct
nengel@9 3160 {
nengel@9 3161 long long int quot;
nengel@9 3162 long long int rem;
nengel@9 3163 } lldiv_t;
nengel@9 3164 extern size_t __ctype_get_mb_cur_max(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3165 extern double atof(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3166 extern int atoi(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3167 extern long int atol(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3168 __extension__
nengel@9 3169 extern long long int atoll(__const char *__nptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3170 extern double strtod(__const char *__restrict __nptr, char **__restrict __endptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3171 extern float strtof(__const char *__restrict __nptr, char **__restrict __endptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3172 extern long double strtold(__const char *__restrict __nptr, char **__restrict __endptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3173 extern long int strtol(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3174 extern unsigned long int strtoul(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3175 __extension__
nengel@9 3176 extern long long int strtoq(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3177 __extension__
nengel@9 3178 extern unsigned long long int strtouq(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3179 __extension__
nengel@9 3180 extern long long int strtoll(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3181 __extension__
nengel@9 3182 extern unsigned long long int strtoull(__const char *__restrict __nptr, char **__restrict __endptr, int __base) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3183 extern __inline __attribute__((__gnu_inline__)) double __attribute__((__nothrow__, __leaf__)) atof(__const char *__nptr)
nengel@9 3184 {
nengel@9 3185 return strtod(__nptr, (char **) ((void *) 0));
nengel@9 3186 }
nengel@9 3187 extern __inline __attribute__((__gnu_inline__)) int __attribute__((__nothrow__, __leaf__)) atoi(__const char *__nptr)
nengel@9 3188 {
nengel@9 3189 return (int) strtol(__nptr, (char **) ((void *) 0), 10);
nengel@9 3190 }
nengel@9 3191 extern __inline __attribute__((__gnu_inline__)) long int __attribute__((__nothrow__, __leaf__)) atol(__const char *__nptr)
nengel@9 3192 {
nengel@9 3193 return strtol(__nptr, (char **) ((void *) 0), 10);
nengel@9 3194 }
nengel@9 3195 __extension__
nengel@9 3196 extern __inline __attribute__((__gnu_inline__)) long long int __attribute__((__nothrow__, __leaf__)) atoll(__const char *__nptr)
nengel@9 3197 {
nengel@9 3198 return strtoll(__nptr, (char **) ((void *) 0), 10);
nengel@9 3199 }
nengel@9 3200 extern char *l64a(long int __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3201 extern long int a64l(__const char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3202 typedef __u_char u_char;
nengel@9 3203 typedef __u_short u_short;
nengel@9 3204 typedef __u_int u_int;
nengel@9 3205 typedef __u_long u_long;
nengel@9 3206 typedef __quad_t quad_t;
nengel@9 3207 typedef __u_quad_t u_quad_t;
nengel@9 3208 typedef __fsid_t fsid_t;
nengel@9 3209 typedef __loff_t loff_t;
nengel@9 3210 typedef __ino_t ino_t;
nengel@9 3211 typedef __dev_t dev_t;
nengel@9 3212 typedef __mode_t mode_t;
nengel@9 3213 typedef __nlink_t nlink_t;
nengel@9 3214 typedef __id_t id_t;
nengel@9 3215 typedef __daddr_t daddr_t;
nengel@9 3216 typedef __caddr_t caddr_t;
nengel@9 3217 typedef __key_t key_t;
nengel@9 3218 typedef unsigned long int ulong;
nengel@9 3219 typedef unsigned short int ushort;
nengel@9 3220 typedef unsigned int uint;
nengel@9 3221 typedef unsigned int u_int8_t __attribute__((__mode__(__QI__)));
nengel@9 3222 typedef unsigned int u_int16_t __attribute__((__mode__(__HI__)));
nengel@9 3223 typedef unsigned int u_int32_t __attribute__((__mode__(__SI__)));
nengel@9 3224 typedef unsigned int u_int64_t __attribute__((__mode__(__DI__)));
nengel@9 3225 typedef int register_t __attribute__((__mode__(__word__)));
nengel@9 3226 typedef int __sig_atomic_t;
nengel@9 3227 typedef struct
nengel@9 3228 {
nengel@9 3229 unsigned long int __val[(1024 / (8 * sizeof(unsigned long int)))];
nengel@9 3230 } __sigset_t;
nengel@9 3231 typedef __sigset_t sigset_t;
nengel@9 3232 struct timeval
nengel@9 3233 {
nengel@9 3234 __time_t tv_sec;
nengel@9 3235 __suseconds_t tv_usec;
nengel@9 3236 };
nengel@9 3237 typedef __suseconds_t suseconds_t;
nengel@9 3238 typedef long int __fd_mask;
nengel@9 3239 typedef struct
nengel@9 3240 {
nengel@9 3241 __fd_mask __fds_bits[1024 / (8 * (int) sizeof(__fd_mask))];
nengel@9 3242 } fd_set;
nengel@9 3243 typedef __fd_mask fd_mask;
nengel@9 3244 extern int select(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, struct timeval *__restrict __timeout);
nengel@9 3245 extern int pselect(int __nfds, fd_set *__restrict __readfds, fd_set *__restrict __writefds, fd_set *__restrict __exceptfds, const struct timespec *__restrict __timeout, const __sigset_t *__restrict __sigmask);
nengel@9 3246 extern unsigned long int __fdelt_chk(unsigned long int __d);
nengel@9 3247 extern unsigned long int __fdelt_warn(unsigned long int __d) __attribute__((__warning__("bit outside of fd_set selected")));
nengel@9 3248 __extension__
nengel@9 3249 extern unsigned int gnu_dev_major(unsigned long long int __dev) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3250 __extension__
nengel@9 3251 extern unsigned int gnu_dev_minor(unsigned long long int __dev) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3252 __extension__
nengel@9 3253 extern unsigned long long int gnu_dev_makedev(unsigned int __major, unsigned int __minor) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3254 __extension__
nengel@9 3255 extern __inline __attribute__((__gnu_inline__)) __attribute__((__const__)) unsigned int __attribute__((__nothrow__, __leaf__)) gnu_dev_major(unsigned long long int __dev)
nengel@9 3256 {
nengel@9 3257 return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
nengel@9 3258 }
nengel@9 3259 __extension__
nengel@9 3260 extern __inline __attribute__((__gnu_inline__)) __attribute__((__const__)) unsigned int __attribute__((__nothrow__, __leaf__)) gnu_dev_minor(unsigned long long int __dev)
nengel@9 3261 {
nengel@9 3262 return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
nengel@9 3263 }
nengel@9 3264 __extension__
nengel@9 3265 extern __inline __attribute__((__gnu_inline__)) __attribute__((__const__)) unsigned long long int __attribute__((__nothrow__, __leaf__)) gnu_dev_makedev(unsigned int __major, unsigned int __minor)
nengel@9 3266 {
nengel@9 3267 return ((__minor & 0xff) | ((__major & 0xfff) << 8) | (((unsigned long long int) (__minor & ~0xff)) << 12) | (((unsigned long long int) (__major & ~0xfff)) << 32));
nengel@9 3268 }
nengel@9 3269 typedef __blksize_t blksize_t;
nengel@9 3270 typedef __blkcnt_t blkcnt_t;
nengel@9 3271 typedef __fsblkcnt_t fsblkcnt_t;
nengel@9 3272 typedef __fsfilcnt_t fsfilcnt_t;
nengel@9 3273 extern long int random(void) __attribute__((__nothrow__, __leaf__));
nengel@9 3274 extern void srandom(unsigned int __seed) __attribute__((__nothrow__, __leaf__));
nengel@9 3275 extern char *initstate(unsigned int __seed, char *__statebuf, size_t __statelen) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3276 extern char *setstate(char *__statebuf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3277 struct random_data
nengel@9 3278 {
nengel@9 3279 int32_t *fptr;
nengel@9 3280 int32_t *rptr;
nengel@9 3281 int32_t *state;
nengel@9 3282 int rand_type;
nengel@9 3283 int rand_deg;
nengel@9 3284 int rand_sep;
nengel@9 3285 int32_t *end_ptr;
nengel@9 3286 };
nengel@9 3287 extern int random_r(struct random_data *__restrict __buf, int32_t *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3288 extern int srandom_r(unsigned int __seed, struct random_data *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3289 extern int initstate_r(unsigned int __seed, char *__restrict __statebuf, size_t __statelen, struct random_data *__restrict __buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4)));
nengel@9 3290 extern int setstate_r(char *__restrict __statebuf, struct random_data *__restrict __buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3291 extern int rand(void) __attribute__((__nothrow__, __leaf__));
nengel@9 3292 extern void srand(unsigned int __seed) __attribute__((__nothrow__, __leaf__));
nengel@9 3293 extern int rand_r(unsigned int *__seed) __attribute__((__nothrow__, __leaf__));
nengel@9 3294 extern double drand48(void) __attribute__((__nothrow__, __leaf__));
nengel@9 3295 extern double erand48(unsigned short int __xsubi[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3296 extern long int lrand48(void) __attribute__((__nothrow__, __leaf__));
nengel@9 3297 extern long int nrand48(unsigned short int __xsubi[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3298 extern long int mrand48(void) __attribute__((__nothrow__, __leaf__));
nengel@9 3299 extern long int jrand48(unsigned short int __xsubi[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3300 extern void srand48(long int __seedval) __attribute__((__nothrow__, __leaf__));
nengel@9 3301 extern unsigned short int *seed48(unsigned short int __seed16v[3]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3302 extern void lcong48(unsigned short int __param[7]) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3303 struct drand48_data
nengel@9 3304 {
nengel@9 3305 unsigned short int __x[3];
nengel@9 3306 unsigned short int __old_x[3];
nengel@9 3307 unsigned short int __c;
nengel@9 3308 unsigned short int __init;
nengel@9 3309 unsigned long long int __a;
nengel@9 3310 };
nengel@9 3311 extern int drand48_r(struct drand48_data *__restrict __buffer, double *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3312 extern int erand48_r(unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, double *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3313 extern int lrand48_r(struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3314 extern int nrand48_r(unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3315 extern int mrand48_r(struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3316 extern int jrand48_r(unsigned short int __xsubi[3], struct drand48_data *__restrict __buffer, long int *__restrict __result) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3317 extern int srand48_r(long int __seedval, struct drand48_data *__buffer) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3318 extern int seed48_r(unsigned short int __seed16v[3], struct drand48_data *__buffer) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3319 extern int lcong48_r(unsigned short int __param[7], struct drand48_data *__buffer) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3320 extern void *malloc(size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
nengel@9 3321 extern void *calloc(size_t __nmemb, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
nengel@9 3322 extern void *realloc(void *__ptr, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3323 extern void free(void *__ptr) __attribute__((__nothrow__, __leaf__));
nengel@9 3324 extern void cfree(void *__ptr) __attribute__((__nothrow__, __leaf__));
nengel@9 3325 extern void *alloca(size_t __size) __attribute__((__nothrow__, __leaf__));
nengel@9 3326 extern void *valloc(size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
nengel@9 3327 extern int posix_memalign(void **__memptr, size_t __alignment, size_t __size) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3328 extern void abort(void) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__));
nengel@9 3329 extern int atexit(void (*__func)(void)) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3330 extern int on_exit(void (*__func)(int __status, void *__arg), void *__arg) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3331 extern void exit(int __status) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__));
nengel@9 3332 extern void _Exit(int __status) __attribute__((__nothrow__, __leaf__)) __attribute__((__noreturn__));
nengel@9 3333 extern char *getenv(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3334 extern char *__secure_getenv(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3335 extern int putenv(char *__string) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3336 extern int setenv(__const char *__name, __const char *__value, int __replace) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3337 extern int unsetenv(__const char *__name) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3338 extern int clearenv(void) __attribute__((__nothrow__, __leaf__));
nengel@9 3339 extern char *mktemp(char *__template) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3340 extern int mkstemp(char *__template) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3341 extern int mkstemps(char *__template, int __suffixlen) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3342 extern char *mkdtemp(char *__template) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3343 extern int system(__const char *__command) __attribute__((__warn_unused_result__));
nengel@9 3344 extern char *realpath(__const char *__restrict __name, char *__restrict __resolved) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3345 typedef int (*__compar_fn_t)(__const void *, __const void *);
nengel@9 3346 extern void *bsearch(__const void *__key, __const void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__((__nonnull__(1, 2, 5))) __attribute__((__warn_unused_result__));
nengel@9 3347 extern void qsort(void *__base, size_t __nmemb, size_t __size, __compar_fn_t __compar) __attribute__((__nonnull__(1, 4)));
nengel@9 3348 extern int abs(int __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__));
nengel@9 3349 extern long int labs(long int __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__));
nengel@9 3350 __extension__
nengel@9 3351 extern long long int llabs(long long int __x) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__));
nengel@9 3352 extern div_t div(int __numer, int __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__));
nengel@9 3353 extern ldiv_t ldiv(long int __numer, long int __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__));
nengel@9 3354 __extension__
nengel@9 3355 extern lldiv_t lldiv(long long int __numer, long long int __denom) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__)) __attribute__((__warn_unused_result__));
nengel@9 3356 extern char *ecvt(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__));
nengel@9 3357 extern char *fcvt(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__));
nengel@9 3358 extern char *gcvt(double __value, int __ndigit, char *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))) __attribute__((__warn_unused_result__));
nengel@9 3359 extern char *qecvt(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__));
nengel@9 3360 extern char *qfcvt(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4))) __attribute__((__warn_unused_result__));
nengel@9 3361 extern char *qgcvt(long double __value, int __ndigit, char *__buf) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3))) __attribute__((__warn_unused_result__));
nengel@9 3362 extern int ecvt_r(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5)));
nengel@9 3363 extern int fcvt_r(double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5)));
nengel@9 3364 extern int qecvt_r(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5)));
nengel@9 3365 extern int qfcvt_r(long double __value, int __ndigit, int *__restrict __decpt, int *__restrict __sign, char *__restrict __buf, size_t __len) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(3, 4, 5)));
nengel@9 3366 extern int mblen(__const char *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3367 extern int mbtowc(wchar_t *__restrict __pwc, __const char *__restrict __s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3368 extern int wctomb(char *__s, wchar_t __wchar) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3369 extern size_t mbstowcs(wchar_t *__restrict __pwcs, __const char *__restrict __s, size_t __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3370 extern size_t wcstombs(char *__restrict __s, __const wchar_t *__restrict __pwcs, size_t __n) __attribute__((__nothrow__, __leaf__));
nengel@9 3371 extern int rpmatch(__const char *__response) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__));
nengel@9 3372 extern int getsubopt(char **__restrict __optionp, char *__const *__restrict __tokens, char **__restrict __valuep) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2, 3))) __attribute__((__warn_unused_result__));
nengel@9 3373 extern int getloadavg(double __loadavg[], int __nelem) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3374 extern char *__realpath_chk(__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3375 extern char *__realpath_alias(__const char *__restrict __name, char *__restrict __resolved) __asm__ ("""realpath") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3376 extern char *__realpath_chk_warn(__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("""__realpath_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__)) __attribute__((__warning__("second argument of realpath must be either NULL or at ""least PATH_MAX bytes long buffer")));
nengel@9 3377 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) char *__attribute__((__nothrow__, __leaf__)) realpath(__const char *__restrict __name, char *__restrict __resolved)
nengel@9 3378 {
nengel@9 3379 if (__builtin_object_size(__resolved, 2 > 1) != (size_t) - 1)
nengel@9 3380 {
nengel@9 3381 if (__builtin_object_size(__resolved, 2 > 1) < 4096)
nengel@9 3382 return __realpath_chk_warn(__name, __resolved, __builtin_object_size(__resolved, 2 > 1));
nengel@9 3383 return __realpath_chk(__name, __resolved, __builtin_object_size(__resolved, 2 > 1));
nengel@9 3384 }
nengel@9 3385 return __realpath_alias(__name, __resolved);
nengel@9 3386 }
nengel@9 3387 extern int __ptsname_r_chk(int __fd, char *__buf, size_t __buflen, size_t __nreal) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3388 extern int __ptsname_r_alias(int __fd, char *__buf, size_t __buflen) __asm__ ("""ptsname_r") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3389 extern int __ptsname_r_chk_warn(int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("""__ptsname_r_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2))) __attribute__((__warning__("ptsname_r called with buflen bigger than ""size of buf")));
nengel@9 3390 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) int __attribute__((__nothrow__, __leaf__)) ptsname_r(int __fd, char *__buf, size_t __buflen)
nengel@9 3391 {
nengel@9 3392 if (__builtin_object_size(__buf, 2 > 1) != (size_t) - 1)
nengel@9 3393 {
nengel@9 3394 if (!__builtin_constant_p(__buflen))
nengel@9 3395 return __ptsname_r_chk(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 3396 if (__buflen > __builtin_object_size(__buf, 2 > 1))
nengel@9 3397 return __ptsname_r_chk_warn(__fd, __buf, __buflen, __builtin_object_size(__buf, 2 > 1));
nengel@9 3398 }
nengel@9 3399 return __ptsname_r_alias(__fd, __buf, __buflen);
nengel@9 3400 }
nengel@9 3401 extern int __wctomb_chk(char *__s, wchar_t __wchar, size_t __buflen) __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3402 extern int __wctomb_alias(char *__s, wchar_t __wchar) __asm__ ("""wctomb") __attribute__((__nothrow__, __leaf__)) __attribute__((__warn_unused_result__));
nengel@9 3403 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) __attribute__((__warn_unused_result__)) int __attribute__((__nothrow__, __leaf__)) wctomb(char *__s, wchar_t __wchar)
nengel@9 3404 {
nengel@9 3405 if (__builtin_object_size(__s, 2 > 1) != (size_t) - 1 && 16 > __builtin_object_size(__s, 2 > 1))
nengel@9 3406 return __wctomb_chk(__s, __wchar, __builtin_object_size(__s, 2 > 1));
nengel@9 3407 return __wctomb_alias(__s, __wchar);
nengel@9 3408 }
nengel@9 3409 extern size_t __mbstowcs_chk(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __attribute__((__nothrow__, __leaf__));
nengel@9 3410 extern size_t __mbstowcs_alias(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) __asm__ ("""mbstowcs") __attribute__((__nothrow__, __leaf__));
nengel@9 3411 extern size_t __mbstowcs_chk_warn(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("""__mbstowcs_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warning__("mbstowcs called with dst buffer smaller than len ""* sizeof (wchar_t)")));
nengel@9 3412 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) size_t __attribute__((__nothrow__, __leaf__)) mbstowcs(wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len)
nengel@9 3413 {
nengel@9 3414 if (__builtin_object_size(__dst, 2 > 1) != (size_t) - 1)
nengel@9 3415 {
nengel@9 3416 if (!__builtin_constant_p(__len))
nengel@9 3417 return __mbstowcs_chk(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1) / sizeof(wchar_t));
nengel@9 3418 if (__len > __builtin_object_size(__dst, 2 > 1) / sizeof(wchar_t))
nengel@9 3419 return __mbstowcs_chk_warn(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1) / sizeof(wchar_t));
nengel@9 3420 }
nengel@9 3421 return __mbstowcs_alias(__dst, __src, __len);
nengel@9 3422 }
nengel@9 3423 extern size_t __wcstombs_chk(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __attribute__((__nothrow__, __leaf__));
nengel@9 3424 extern size_t __wcstombs_alias(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) __asm__ ("""wcstombs") __attribute__((__nothrow__, __leaf__));
nengel@9 3425 extern size_t __wcstombs_chk_warn(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("""__wcstombs_chk") __attribute__((__nothrow__, __leaf__)) __attribute__((__warning__("wcstombs called with dst buffer smaller than len")));
nengel@9 3426 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) size_t __attribute__((__nothrow__, __leaf__)) wcstombs(char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len)
nengel@9 3427 {
nengel@9 3428 if (__builtin_object_size(__dst, 2 > 1) != (size_t) - 1)
nengel@9 3429 {
nengel@9 3430 if (!__builtin_constant_p(__len))
nengel@9 3431 return __wcstombs_chk(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1));
nengel@9 3432 if (__len > __builtin_object_size(__dst, 2 > 1))
nengel@9 3433 return __wcstombs_chk_warn(__dst, __src, __len, __builtin_object_size(__dst, 2 > 1));
nengel@9 3434 }
nengel@9 3435 return __wcstombs_alias(__dst, __src, __len);
nengel@9 3436 }
nengel@9 3437 extern void *memcpy(void *__restrict __dest, __const void *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3438 extern void *memmove(void *__dest, __const void *__src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3439 extern void *memccpy(void *__restrict __dest, __const void *__restrict __src, int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3440 extern void *memset(void *__s, int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3441 extern int memcmp(__const void *__s1, __const void *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3442 extern void *memchr(__const void *__s, int __c, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3443 extern char *strcpy(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3444 extern char *strncpy(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3445 extern char *strcat(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3446 extern char *strncat(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3447 extern int strcmp(__const char *__s1, __const char *__s2) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3448 extern int strncmp(__const char *__s1, __const char *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3449 extern int strcoll(__const char *__s1, __const char *__s2) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3450 extern size_t strxfrm(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3451 extern int strcoll_l(__const char *__s1, __const char *__s2, __locale_t __l) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2, 3)));
nengel@9 3452 extern size_t strxfrm_l(char *__dest, __const char *__src, size_t __n, __locale_t __l) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 4)));
nengel@9 3453 extern char *strdup(__const char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__nonnull__(1)));
nengel@9 3454 extern char *strndup(__const char *__string, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__)) __attribute__((__nonnull__(1)));
nengel@9 3455 extern char *strchr(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3456 extern char *strrchr(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3457 extern size_t strcspn(__const char *__s, __const char *__reject) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3458 extern size_t strspn(__const char *__s, __const char *__accept) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3459 extern char *strpbrk(__const char *__s, __const char *__accept) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3460 extern char *strstr(__const char *__haystack, __const char *__needle) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3461 extern char *strtok(char *__restrict __s, __const char *__restrict __delim) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3462 extern char *__strtok_r(char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3)));
nengel@9 3463 extern char *strtok_r(char *__restrict __s, __const char *__restrict __delim, char **__restrict __save_ptr) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2, 3)));
nengel@9 3464 extern size_t strlen(__const char *__s) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3465 extern size_t strnlen(__const char *__string, size_t __maxlen) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3466 extern char *strerror(int __errnum) __attribute__((__nothrow__, __leaf__));
nengel@9 3467 extern int strerror_r(int __errnum, char *__buf, size_t __buflen) __asm__ ("""__xpg_strerror_r") __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(2)));
nengel@9 3468 extern char *strerror_l(int __errnum, __locale_t __l) __attribute__((__nothrow__, __leaf__));
nengel@9 3469 extern void __bzero(void *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3470 extern void bcopy(__const void *__src, void *__dest, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3471 extern void bzero(void *__s, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1)));
nengel@9 3472 extern int bcmp(__const void *__s1, __const void *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3473 extern char *index(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3474 extern char *rindex(__const char *__s, int __c) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1)));
nengel@9 3475 extern int ffs(int __i) __attribute__((__nothrow__, __leaf__)) __attribute__((__const__));
nengel@9 3476 extern int strcasecmp(__const char *__s1, __const char *__s2) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3477 extern int strncasecmp(__const char *__s1, __const char *__s2, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__pure__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3478 extern char *strsep(char **__restrict __stringp, __const char *__restrict __delim) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3479 extern char *strsignal(int __sig) __attribute__((__nothrow__, __leaf__));
nengel@9 3480 extern char *__stpcpy(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3481 extern char *stpcpy(char *__restrict __dest, __const char *__restrict __src) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3482 extern char *__stpncpy(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3483 extern char *stpncpy(char *__restrict __dest, __const char *__restrict __src, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__nonnull__(1, 2)));
nengel@9 3484 extern void *__rawmemchr(const void *__s, int __c);
nengel@9 3485 extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c1(__const char *__s, int __reject);
nengel@9 3486 extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c1(__const char *__s, int __reject)
nengel@9 3487 {
nengel@9 3488 register size_t __result = 0;
nengel@9 3489 while (__s[__result] != '\0' && __s[__result] != __reject)
nengel@9 3490 ++__result;
nengel@9 3491 return __result;
nengel@9 3492 }
nengel@9 3493 extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c2(__const char *__s, int __reject1, int __reject2);
nengel@9 3494 extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c2(__const char *__s, int __reject1, int __reject2)
nengel@9 3495 {
nengel@9 3496 register size_t __result = 0;
nengel@9 3497 while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2)
nengel@9 3498 ++__result;
nengel@9 3499 return __result;
nengel@9 3500 }
nengel@9 3501 extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c3(__const char *__s, int __reject1, int __reject2, int __reject3);
nengel@9 3502 extern __inline __attribute__((__gnu_inline__)) size_t __strcspn_c3(__const char *__s, int __reject1, int __reject2, int __reject3)
nengel@9 3503 {
nengel@9 3504 register size_t __result = 0;
nengel@9 3505 while (__s[__result] != '\0' && __s[__result] != __reject1 && __s[__result] != __reject2 && __s[__result] != __reject3)
nengel@9 3506 ++__result;
nengel@9 3507 return __result;
nengel@9 3508 }
nengel@9 3509 extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c1(__const char *__s, int __accept);
nengel@9 3510 extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c1(__const char *__s, int __accept)
nengel@9 3511 {
nengel@9 3512 register size_t __result = 0;
nengel@9 3513 while (__s[__result] == __accept)
nengel@9 3514 ++__result;
nengel@9 3515 return __result;
nengel@9 3516 }
nengel@9 3517 extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c2(__const char *__s, int __accept1, int __accept2);
nengel@9 3518 extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c2(__const char *__s, int __accept1, int __accept2)
nengel@9 3519 {
nengel@9 3520 register size_t __result = 0;
nengel@9 3521 while (__s[__result] == __accept1 || __s[__result] == __accept2)
nengel@9 3522 ++__result;
nengel@9 3523 return __result;
nengel@9 3524 }
nengel@9 3525 extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c3(__const char *__s, int __accept1, int __accept2, int __accept3);
nengel@9 3526 extern __inline __attribute__((__gnu_inline__)) size_t __strspn_c3(__const char *__s, int __accept1, int __accept2, int __accept3)
nengel@9 3527 {
nengel@9 3528 register size_t __result = 0;
nengel@9 3529 while (__s[__result] == __accept1 || __s[__result] == __accept2 || __s[__result] == __accept3)
nengel@9 3530 ++__result;
nengel@9 3531 return __result;
nengel@9 3532 }
nengel@9 3533 extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c2(__const char *__s, int __accept1, int __accept2);
nengel@9 3534 extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c2(__const char *__s, int __accept1, int __accept2)
nengel@9 3535 {
nengel@9 3536 while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
nengel@9 3537 ++__s;
nengel@9 3538 return *__s == '\0' ? ((void *) 0) : (char *) (size_t) __s;
nengel@9 3539 }
nengel@9 3540 extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c3(__const char *__s, int __accept1, int __accept2, int __accept3);
nengel@9 3541 extern __inline __attribute__((__gnu_inline__)) char *__strpbrk_c3(__const char *__s, int __accept1, int __accept2, int __accept3)
nengel@9 3542 {
nengel@9 3543 while (*__s != '\0' && *__s != __accept1 && *__s != __accept2 && *__s != __accept3)
nengel@9 3544 ++__s;
nengel@9 3545 return *__s == '\0' ? ((void *) 0) : (char *) (size_t) __s;
nengel@9 3546 }
nengel@9 3547 extern __inline __attribute__((__gnu_inline__)) char *__strtok_r_1c(char *__s, char __sep, char **__nextp);
nengel@9 3548 extern __inline __attribute__((__gnu_inline__)) char *__strtok_r_1c(char *__s, char __sep, char **__nextp)
nengel@9 3549 {
nengel@9 3550 char *__result;
nengel@9 3551 if (__s == ((void *) 0))
nengel@9 3552 __s = *__nextp;
nengel@9 3553 while (*__s == __sep)
nengel@9 3554 ++__s;
nengel@9 3555 __result = ((void *) 0);
nengel@9 3556 if (*__s != '\0')
nengel@9 3557 {
nengel@9 3558 __result = __s++;
nengel@9 3559 while (*__s != '\0')
nengel@9 3560 if (*__s++ == __sep)
nengel@9 3561 {
nengel@9 3562 __s[- 1] = '\0';
nengel@9 3563 break;
nengel@9 3564 }
nengel@9 3565 }
nengel@9 3566 *__nextp = __s;
nengel@9 3567 return __result;
nengel@9 3568 }
nengel@9 3569 extern char *__strsep_g(char **__stringp, __const char *__delim);
nengel@9 3570 extern __inline __attribute__((__gnu_inline__)) char *__strsep_1c(char **__s, char __reject);
nengel@9 3571 extern __inline __attribute__((__gnu_inline__)) char *__strsep_1c(char **__s, char __reject)
nengel@9 3572 {
nengel@9 3573 register char *__retval = *__s;
nengel@9 3574 if (__retval != ((void *) 0) && (*__s = (__extension__ (__builtin_constant_p(__reject) && !__builtin_constant_p(__retval) && (__reject) == '\0' ? (char *) __rawmemchr(__retval, __reject) : __builtin_strchr(__retval, __reject)))) != ((void *) 0))
nengel@9 3575 *(*__s)++ = '\0';
nengel@9 3576 return __retval;
nengel@9 3577 }
nengel@9 3578 extern __inline __attribute__((__gnu_inline__)) char *__strsep_2c(char **__s, char __reject1, char __reject2);
nengel@9 3579 extern __inline __attribute__((__gnu_inline__)) char *__strsep_2c(char **__s, char __reject1, char __reject2)
nengel@9 3580 {
nengel@9 3581 register char *__retval = *__s;
nengel@9 3582 if (__retval != ((void *) 0))
nengel@9 3583 {
nengel@9 3584 register char *__cp = __retval;
nengel@9 3585 while (1)
nengel@9 3586 {
nengel@9 3587 if (*__cp == '\0')
nengel@9 3588 {
nengel@9 3589 __cp = ((void *) 0);
nengel@9 3590 break;
nengel@9 3591 }
nengel@9 3592 if (*__cp == __reject1 || *__cp == __reject2)
nengel@9 3593 {
nengel@9 3594 *__cp++ = '\0';
nengel@9 3595 break;
nengel@9 3596 }
nengel@9 3597 ++__cp;
nengel@9 3598 }
nengel@9 3599 *__s = __cp;
nengel@9 3600 }
nengel@9 3601 return __retval;
nengel@9 3602 }
nengel@9 3603 extern __inline __attribute__((__gnu_inline__)) char *__strsep_3c(char **__s, char __reject1, char __reject2, char __reject3);
nengel@9 3604 extern __inline __attribute__((__gnu_inline__)) char *__strsep_3c(char **__s, char __reject1, char __reject2, char __reject3)
nengel@9 3605 {
nengel@9 3606 register char *__retval = *__s;
nengel@9 3607 if (__retval != ((void *) 0))
nengel@9 3608 {
nengel@9 3609 register char *__cp = __retval;
nengel@9 3610 while (1)
nengel@9 3611 {
nengel@9 3612 if (*__cp == '\0')
nengel@9 3613 {
nengel@9 3614 __cp = ((void *) 0);
nengel@9 3615 break;
nengel@9 3616 }
nengel@9 3617 if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
nengel@9 3618 {
nengel@9 3619 *__cp++ = '\0';
nengel@9 3620 break;
nengel@9 3621 }
nengel@9 3622 ++__cp;
nengel@9 3623 }
nengel@9 3624 *__s = __cp;
nengel@9 3625 }
nengel@9 3626 return __retval;
nengel@9 3627 }
nengel@9 3628 extern char *__strdup(__const char *__string) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__));
nengel@9 3629 extern char *__strndup(__const char *__string, size_t __n) __attribute__((__nothrow__, __leaf__)) __attribute__((__malloc__));
nengel@9 3630 extern void __warn_memset_zero_len(void) __attribute__((__warning__("memset used with constant zero length parameter; this could be due to transposed parameters")));
nengel@9 3631 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void *__attribute__((__nothrow__, __leaf__)) memcpy(void *__restrict __dest, __const void *__restrict __src, size_t __len)
nengel@9 3632 {
nengel@9 3633 return __builtin___memcpy_chk(__dest, __src, __len, __builtin_object_size(__dest, 0));
nengel@9 3634 }
nengel@9 3635 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void *__attribute__((__nothrow__, __leaf__)) memmove(void *__dest, __const void *__src, size_t __len)
nengel@9 3636 {
nengel@9 3637 return __builtin___memmove_chk(__dest, __src, __len, __builtin_object_size(__dest, 0));
nengel@9 3638 }
nengel@9 3639 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void *__attribute__((__nothrow__, __leaf__)) memset(void *__dest, int __ch, size_t __len)
nengel@9 3640 {
nengel@9 3641 if (__builtin_constant_p(__len) && __len == 0 && (!__builtin_constant_p(__ch) || __ch != 0))
nengel@9 3642 {
nengel@9 3643 __warn_memset_zero_len();
nengel@9 3644 return __dest;
nengel@9 3645 }
nengel@9 3646 return __builtin___memset_chk(__dest, __ch, __len, __builtin_object_size(__dest, 0));
nengel@9 3647 }
nengel@9 3648 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void __attribute__((__nothrow__, __leaf__)) bcopy(__const void *__src, void *__dest, size_t __len)
nengel@9 3649 {
nengel@9 3650 (void) __builtin___memmove_chk(__dest, __src, __len, __builtin_object_size(__dest, 0));
nengel@9 3651 }
nengel@9 3652 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) void __attribute__((__nothrow__, __leaf__)) bzero(void *__dest, size_t __len)
nengel@9 3653 {
nengel@9 3654 (void) __builtin___memset_chk(__dest, '\0', __len, __builtin_object_size(__dest, 0));
nengel@9 3655 }
nengel@9 3656 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strcpy(char *__restrict __dest, __const char *__restrict __src)
nengel@9 3657 {
nengel@9 3658 return __builtin___strcpy_chk(__dest, __src, __builtin_object_size(__dest, 2 > 1));
nengel@9 3659 }
nengel@9 3660 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strncpy(char *__restrict __dest, __const char *__restrict __src, size_t __len)
nengel@9 3661 {
nengel@9 3662 return __builtin___strncpy_chk(__dest, __src, __len, __builtin_object_size(__dest, 2 > 1));
nengel@9 3663 }
nengel@9 3664 extern char *__stpncpy_chk(char *__dest, __const char *__src, size_t __n, size_t __destlen) __attribute__((__nothrow__, __leaf__));
nengel@9 3665 extern char *__stpncpy_alias(char *__dest, __const char *__src, size_t __n) __asm__ ("""stpncpy") __attribute__((__nothrow__, __leaf__));
nengel@9 3666 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) stpncpy(char *__dest, __const char *__src, size_t __n)
nengel@9 3667 {
nengel@9 3668 if (__builtin_object_size(__dest, 2 > 1) != (size_t) - 1 && (!__builtin_constant_p(__n) || __n <= __builtin_object_size(__dest, 2 > 1)))
nengel@9 3669 return __stpncpy_chk(__dest, __src, __n, __builtin_object_size(__dest, 2 > 1));
nengel@9 3670 return __stpncpy_alias(__dest, __src, __n);
nengel@9 3671 }
nengel@9 3672 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strcat(char *__restrict __dest, __const char *__restrict __src)
nengel@9 3673 {
nengel@9 3674 return __builtin___strcat_chk(__dest, __src, __builtin_object_size(__dest, 2 > 1));
nengel@9 3675 }
nengel@9 3676 extern __inline __attribute__((__always_inline__)) __attribute__((__gnu_inline__, __artificial__)) char *__attribute__((__nothrow__, __leaf__)) strncat(char *__restrict __dest, __const char *__restrict __src, size_t __len)
nengel@9 3677 {
nengel@9 3678 return __builtin___strncat_chk(__dest, __src, __len, __builtin_object_size(__dest, 2 > 1));
nengel@9 3679 }
nengel@9 3680 extern const uint8_t ff_log2_tab[256];
nengel@9 3681 static inline __attribute__((const)) int av_log2_c(unsigned int v)
nengel@9 3682 {
nengel@9 3683 int n = 0;
nengel@9 3684 if (v & 0xffff0000)
nengel@9 3685 {
nengel@9 3686 v >>= 16;
nengel@9 3687 n += 16;
nengel@9 3688 }
nengel@9 3689 if (v & 0xff00)
nengel@9 3690 {
nengel@9 3691 v >>= 8;
nengel@9 3692 n += 8;
nengel@9 3693 }
nengel@9 3694 n += ff_log2_tab[v];
nengel@9 3695 return n;
nengel@9 3696 }
nengel@9 3697 static inline __attribute__((const)) int av_log2_16bit_c(unsigned int v)
nengel@9 3698 {
nengel@9 3699 int n = 0;
nengel@9 3700 if (v & 0xff00)
nengel@9 3701 {
nengel@9 3702 v >>= 8;
nengel@9 3703 n += 8;
nengel@9 3704 }
nengel@9 3705 n += ff_log2_tab[v];
nengel@9 3706 return n;
nengel@9 3707 }
nengel@9 3708 static inline __attribute__((const)) int av_clip(int a, int amin, int amax)
nengel@9 3709 {
nengel@9 3710 if (a < amin)
nengel@9 3711 return amin;
nengel@9 3712 else
nengel@9 3713 if (a > amax)
nengel@9 3714 return amax;
nengel@9 3715 else
nengel@9 3716 return a;
nengel@9 3717 }
nengel@9 3718 static inline __attribute__((const)) uint8_t av_clip_uint8(int a)
nengel@9 3719 {
nengel@9 3720 if (a & (~0xFF))
nengel@9 3721 return (- a) >> 31;
nengel@9 3722 else
nengel@9 3723 return a;
nengel@9 3724 }
nengel@9 3725 static inline __attribute__((const)) uint16_t av_clip_uint16(int a)
nengel@9 3726 {
nengel@9 3727 if (a & (~0xFFFF))
nengel@9 3728 return (- a) >> 31;
nengel@9 3729 else
nengel@9 3730 return a;
nengel@9 3731 }
nengel@9 3732 static inline __attribute__((const)) int16_t av_clip_int16(int a)
nengel@9 3733 {
nengel@9 3734 if ((a + 0x8000) & ~0xFFFF)
nengel@9 3735 return (a >> 31) ^ 0x7FFF;
nengel@9 3736 else
nengel@9 3737 return a;
nengel@9 3738 }
nengel@9 3739 static inline __attribute__((const)) int32_t av_clipl_int32(int64_t a)
nengel@9 3740 {
nengel@9 3741 if ((a + 0x80000000u) & ~0xFFFFFFFFUL)
nengel@9 3742 return (a >> 63) ^ 0x7FFFFFFF;
nengel@9 3743 else
nengel@9 3744 return a;
nengel@9 3745 }
nengel@9 3746 static inline __attribute__((const)) float av_clipf(float a, float amin, float amax)
nengel@9 3747 {
nengel@9 3748 if (a < amin)
nengel@9 3749 return amin;
nengel@9 3750 else
nengel@9 3751 if (a > amax)
nengel@9 3752 return amax;
nengel@9 3753 else
nengel@9 3754 return a;
nengel@9 3755 }
nengel@9 3756 static inline __attribute__((const)) int av_ceil_log2(int x)
nengel@9 3757 {
nengel@9 3758 return av_log2_c((x - 1) << 1);
nengel@9 3759 }
nengel@9 3760 typedef union
nengel@9 3761 {
nengel@9 3762 uint64_t u64;
nengel@9 3763 uint32_t u32[2];
nengel@9 3764 uint16_t u16[4];
nengel@9 3765 uint8_t u8[8];
nengel@9 3766 double f64;
nengel@9 3767 float f32[2];
nengel@9 3768 } __attribute__((__may_alias__)) av_alias64;
nengel@9 3769 typedef union
nengel@9 3770 {
nengel@9 3771 uint32_t u32;
nengel@9 3772 uint16_t u16[2];
nengel@9 3773 uint8_t u8[4];
nengel@9 3774 float f32;
nengel@9 3775 } __attribute__((__may_alias__)) av_alias32;
nengel@9 3776 typedef union
nengel@9 3777 {
nengel@9 3778 uint16_t u16;
nengel@9 3779 uint8_t u8[2];
nengel@9 3780 } __attribute__((__may_alias__)) av_alias16;
nengel@9 3781 static __attribute__((always_inline)) inline void AV_COPY64(void *d, const void *s)
nengel@9 3782 {
nengel@9 3783 __asm__ ("movq %1, %%mm0 \n\t""movq %%mm0, %0 \n\t": "=m" (*(uint64_t *) d): "m" (*(const uint64_t *) s): "mm0");
nengel@9 3784 }
nengel@9 3785 static __attribute__((always_inline)) inline void AV_SWAP64(void *a, void *b)
nengel@9 3786 {
nengel@9 3787 __asm__ ("movq %1, %%mm0 \n\t""movq %0, %%mm1 \n\t""movq %%mm0, %0 \n\t""movq %%mm1, %1 \n\t": "+m" (*(uint64_t *) a), "+m" (*(uint64_t *) b): : "mm0", "mm1");
nengel@9 3788 }
nengel@9 3789 static __attribute__((always_inline)) inline void AV_ZERO64(void *d)
nengel@9 3790 {
nengel@9 3791 __asm__ ("pxor %%mm0, %%mm0 \n\t""movq %%mm0, %0 \n\t": "=m" (*(uint64_t *) d): : "mm0");
nengel@9 3792 }
nengel@9 3793 static __attribute__((always_inline)) inline void AV_COPY128(void *d, const void *s)
nengel@9 3794 {
nengel@9 3795 struct v
nengel@9 3796 {
nengel@9 3797 uint64_t v[2];
nengel@9 3798 };
nengel@9 3799 __asm__ ("movaps %1, %%xmm0 \n\t""movaps %%xmm0, %0 \n\t": "=m" (*(struct v *) d): "m" (*(const struct v *) s): "xmm0");
nengel@9 3800 }
nengel@9 3801 static __attribute__((always_inline)) inline void AV_ZERO128(void *d)
nengel@9 3802 {
nengel@9 3803 struct v
nengel@9 3804 {
nengel@9 3805 uint64_t v[2];
nengel@9 3806 };
nengel@9 3807 __asm__ ("pxor %%xmm0, %%xmm0 \n\t""movdqa %%xmm0, %0 \n\t": "=m" (*(struct v *) d): : "xmm0");
nengel@9 3808 }
nengel@9 3809 void ff_h264_idct8_add_c(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 3810 void ff_h264_idct_add_c(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 3811 void ff_h264_idct8_dc_add_c(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 3812 void ff_h264_idct_dc_add_c(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 3813 void ff_h264_lowres_idct_add_c(uint8_t *dst, int stride, DCTELEM *block);
nengel@9 3814 void ff_h264_lowres_idct_put_c(uint8_t *dst, int stride, DCTELEM *block);
nengel@9 3815 void ff_h264_idct_add16_c(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 3816 void ff_h264_idct_add16intra_c(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 3817 void ff_h264_idct8_add4_c(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 3818 void ff_h264_idct_add8_c(uint8_t **dest, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 3819 void h264_luma_dc_dequant_idct_c(DCTELEM *block, int qmul);
nengel@9 3820 void chroma_dc_dequant_idct_c(DCTELEM *block, int qmul);
nengel@9 3821 void ff_vector_fmul_window_c(float *dst, const float *src0, const float *src1, const float *win, float add_bias, int len);
nengel@9 3822 void ff_float_to_int16_c(int16_t *dst, const float *src, long len);
nengel@9 3823 void ff_float_to_int16_interleave_c(int16_t *dst, const float **src, long len, int channels);
nengel@9 3824 extern const uint8_t ff_alternate_horizontal_scan[64];
nengel@9 3825 extern const uint8_t ff_alternate_vertical_scan[64];
nengel@9 3826 extern const uint8_t ff_zigzag_direct[64];
nengel@9 3827 extern const uint8_t ff_zigzag248_direct[64];
nengel@9 3828 extern uint32_t ff_squareTbl[512];
nengel@9 3829 extern uint8_t ff_cropTbl[256 + 2 * 1024];
nengel@9 3830 void ff_vp3_idct_c(DCTELEM *block);
nengel@9 3831 void ff_vp3_idct_put_c(uint8_t *dest, int line_size, DCTELEM *block);
nengel@9 3832 void ff_vp3_idct_add_c(uint8_t *dest, int line_size, DCTELEM *block);
nengel@9 3833 void ff_vp3_idct_dc_add_c(uint8_t *dest, int line_size, const DCTELEM *block);
nengel@9 3834 void ff_vp3_v_loop_filter_c(uint8_t *src, int stride, int *bounding_values);
nengel@9 3835 void ff_vp3_h_loop_filter_c(uint8_t *src, int stride, int *bounding_values);
nengel@9 3836 void ff_vp6_filter_diag4_c(uint8_t *dst, uint8_t *src, int stride, const int16_t *h_weights, const int16_t *v_weights);
nengel@9 3837 void ff_bink_idct_c(DCTELEM *block);
nengel@9 3838 void ff_bink_idct_add_c(uint8_t *dest, int linesize, DCTELEM *block);
nengel@9 3839 void ff_bink_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block);
nengel@9 3840 void ff_put_cavs_qpel8_mc00_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3841 void ff_avg_cavs_qpel8_mc00_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3842 void ff_put_cavs_qpel16_mc00_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3843 void ff_avg_cavs_qpel16_mc00_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3844 void ff_put_vc1_mspel_mc00_c(uint8_t *dst, const uint8_t *src, int stride, int rnd);
nengel@9 3845 void ff_avg_vc1_mspel_mc00_c(uint8_t *dst, const uint8_t *src, int stride, int rnd);
nengel@9 3846 void ff_ea_idct_put_c(uint8_t *dest, int linesize, DCTELEM *block);
nengel@9 3847 void ff_img_copy_plane(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
nengel@9 3848 void ff_shrink22(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
nengel@9 3849 void ff_shrink44(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
nengel@9 3850 void ff_shrink88(uint8_t *dst, int dst_wrap, const uint8_t *src, int src_wrap, int width, int height);
nengel@9 3851 void ff_gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy, int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height);
nengel@9 3852 typedef void (*op_pixels_func)(uint8_t *block, const uint8_t *pixels, int line_size, int h);
nengel@9 3853 typedef void (*tpel_mc_func)(uint8_t *block, const uint8_t *pixels, int line_size, int w, int h);
nengel@9 3854 typedef void (*qpel_mc_func)(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3855 typedef void (*h264_chroma_mc_func)(uint8_t *dst, uint8_t *src, int srcStride, int h, int x, int y);
nengel@9 3856 typedef void (*op_fill_func)(uint8_t *block, uint8_t value, int line_size, int h);
nengel@9 3857 void ff_put_qpel16_mc11_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3858 void ff_put_no_rnd_qpel16_mc11_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3859 void ff_avg_qpel16_mc11_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3860 void ff_put_qpel16_mc31_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3861 void ff_put_no_rnd_qpel16_mc31_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3862 void ff_avg_qpel16_mc31_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3863 void ff_put_qpel16_mc12_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3864 void ff_put_no_rnd_qpel16_mc12_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3865 void ff_avg_qpel16_mc12_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3866 void ff_put_qpel16_mc32_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3867 void ff_put_no_rnd_qpel16_mc32_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3868 void ff_avg_qpel16_mc32_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3869 void ff_put_qpel16_mc13_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3870 void ff_put_no_rnd_qpel16_mc13_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3871 void ff_avg_qpel16_mc13_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3872 void ff_put_qpel16_mc33_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3873 void ff_put_no_rnd_qpel16_mc33_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3874 void ff_avg_qpel16_mc33_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3875 void ff_put_qpel8_mc11_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3876 void ff_put_no_rnd_qpel8_mc11_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3877 void ff_avg_qpel8_mc11_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3878 void ff_put_qpel8_mc31_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3879 void ff_put_no_rnd_qpel8_mc31_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3880 void ff_avg_qpel8_mc31_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3881 void ff_put_qpel8_mc12_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3882 void ff_put_no_rnd_qpel8_mc12_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3883 void ff_avg_qpel8_mc12_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3884 void ff_put_qpel8_mc32_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3885 void ff_put_no_rnd_qpel8_mc32_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3886 void ff_avg_qpel8_mc32_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3887 void ff_put_qpel8_mc13_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3888 void ff_put_no_rnd_qpel8_mc13_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3889 void ff_avg_qpel8_mc13_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3890 void ff_put_qpel8_mc33_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3891 void ff_put_no_rnd_qpel8_mc33_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3892 void ff_avg_qpel8_mc33_old_c(uint8_t *dst, uint8_t *src, int stride);
nengel@9 3893 typedef int (*me_cmp_func)(void *s, uint8_t *blk1, uint8_t *blk2, int line_size, int h);
nengel@9 3894 typedef struct ScanTable
nengel@9 3895 {
nengel@9 3896 const uint8_t *scantable;
nengel@9 3897 uint8_t permutated[64];
nengel@9 3898 uint8_t raster_end[64];
nengel@9 3899 } ScanTable;
nengel@9 3900 void ff_init_scantable(uint8_t *, ScanTable *st, const uint8_t *src_scantable);
nengel@9 3901 void ff_emulated_edge_mc(uint8_t *buf, uint8_t *src, int linesize, int block_w, int block_h, int src_x, int src_y, int w, int h);
nengel@9 3902 typedef struct DSPContext
nengel@9 3903 {
nengel@9 3904 void (*get_pixels)(DCTELEM *block, const uint8_t *pixels, int line_size);
nengel@9 3905 void (*diff_pixels)(DCTELEM *block, const uint8_t *s1, const uint8_t *s2, int stride);
nengel@9 3906 void (*put_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
nengel@9 3907 void (*put_signed_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
nengel@9 3908 void (*put_pixels_nonclamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
nengel@9 3909 void (*add_pixels_clamped)(const DCTELEM *block, uint8_t *pixels, int line_size);
nengel@9 3910 void (*add_pixels8)(uint8_t *pixels, DCTELEM *block, int line_size);
nengel@9 3911 void (*add_pixels4)(uint8_t *pixels, DCTELEM *block, int line_size);
nengel@9 3912 void (*clear_block)(DCTELEM *block);
nengel@9 3913 void (*clear_blocks)(DCTELEM *blocks);
nengel@9 3914 op_pixels_func put_pixels_tab[4][4];
nengel@9 3915 op_pixels_func avg_pixels_tab[4][4];
nengel@9 3916 op_pixels_func put_no_rnd_pixels_tab[4][4];
nengel@9 3917 op_pixels_func avg_no_rnd_pixels_tab[4][4];
nengel@9 3918 void (*put_no_rnd_pixels_l2[2])(uint8_t *block, const uint8_t *a, const uint8_t *b, int line_size, int h);
nengel@9 3919 qpel_mc_func put_qpel_pixels_tab[2][16];
nengel@9 3920 qpel_mc_func avg_qpel_pixels_tab[2][16];
nengel@9 3921 qpel_mc_func put_no_rnd_qpel_pixels_tab[2][16];
nengel@9 3922 qpel_mc_func avg_no_rnd_qpel_pixels_tab[2][16];
nengel@9 3923 qpel_mc_func put_mspel_pixels_tab[8];
nengel@9 3924 h264_chroma_mc_func put_h264_chroma_pixels_tab[3];
nengel@9 3925 h264_chroma_mc_func avg_h264_chroma_pixels_tab[3];
nengel@9 3926 h264_chroma_mc_func put_no_rnd_vc1_chroma_pixels_tab[3];
nengel@9 3927 h264_chroma_mc_func avg_no_rnd_vc1_chroma_pixels_tab[3];
nengel@9 3928 qpel_mc_func put_h264_qpel_pixels_tab[4][16];
nengel@9 3929 qpel_mc_func avg_h264_qpel_pixels_tab[4][16];
nengel@9 3930 qpel_mc_func put_2tap_qpel_pixels_tab[4][16];
nengel@9 3931 qpel_mc_func avg_2tap_qpel_pixels_tab[4][16];
nengel@9 3932 void (*fdct)(DCTELEM *block);
nengel@9 3933 void (*fdct248)(DCTELEM *block);
nengel@9 3934 void (*idct)(DCTELEM *block);
nengel@9 3935 void (*idct_put)(uint8_t *dest, int line_size, DCTELEM *block);
nengel@9 3936 void (*idct_add)(uint8_t *dest, int line_size, DCTELEM *block);
nengel@9 3937 void (*draw_edges)(uint8_t *buf, int wrap, int width, int height, int w);
nengel@9 3938 void (*prefetch)(void *mem, int stride, int h);
nengel@9 3939 } DSPContext;
nengel@9 3940 void dsputil_static_init(void);
nengel@9 3941 void dsputil_init(DSPContext *p);
nengel@9 3942 int ff_check_alignment(void);
nengel@9 3943 void ff_block_permute(DCTELEM *block, uint8_t *permutation, const uint8_t *scantable, int last);
nengel@9 3944 void ff_set_cmp(DSPContext *c, me_cmp_func *cmp, int type);
nengel@9 3945 static inline uint32_t rnd_avg32(uint32_t a, uint32_t b)
nengel@9 3946 {
nengel@9 3947 return (a | b) - (((a ^ b) & ~((0x01) * 0x01010101UL)) >> 1);
nengel@9 3948 }
nengel@9 3949 static inline uint32_t no_rnd_avg32(uint32_t a, uint32_t b)
nengel@9 3950 {
nengel@9 3951 return (a & b) + (((a ^ b) & ~((0x01) * 0x01010101UL)) >> 1);
nengel@9 3952 }
nengel@9 3953 int mm_support(void);
nengel@9 3954 extern int mm_flags;
nengel@9 3955 void dsputil_init_arm(DSPContext *c);
nengel@9 3956 void dsputil_init_mmx(DSPContext *c);
nengel@9 3957 void dsputil_init_ppc(DSPContext *c);
nengel@9 3958 void ff_dsputil_init_dwt(DSPContext *c);
nengel@9 3959 static inline void emms(void)
nengel@9 3960 {
nengel@9 3961 __asm__ volatile("emms;": : : "memory");
nengel@9 3962 }
nengel@9 3963 static inline void copy_block2(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
nengel@9 3964 {
nengel@9 3965 int i;
nengel@9 3966 for (i = 0;
nengel@9 3967 i < h;
nengel@9 3968 i++)
nengel@9 3969 {
nengel@9 3970 do
nengel@9 3971 {
nengel@9 3972 ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0]));
nengel@9 3973 ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8;
nengel@9 3974 }
nengel@9 3975 while (0);
nengel@9 3976 dst += dstStride;
nengel@9 3977 src += srcStride;
nengel@9 3978 }
nengel@9 3979 }
nengel@9 3980 static inline void copy_block4(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
nengel@9 3981 {
nengel@9 3982 int i;
nengel@9 3983 for (i = 0;
nengel@9 3984 i < h;
nengel@9 3985 i++)
nengel@9 3986 {
nengel@9 3987 do
nengel@9 3988 {
nengel@9 3989 ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0]));
nengel@9 3990 ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8;
nengel@9 3991 ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16;
nengel@9 3992 ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24;
nengel@9 3993 }
nengel@9 3994 while (0);
nengel@9 3995 dst += dstStride;
nengel@9 3996 src += srcStride;
nengel@9 3997 }
nengel@9 3998 }
nengel@9 3999 static inline void copy_block8(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
nengel@9 4000 {
nengel@9 4001 int i;
nengel@9 4002 for (i = 0;
nengel@9 4003 i < h;
nengel@9 4004 i++)
nengel@9 4005 {
nengel@9 4006 do
nengel@9 4007 {
nengel@9 4008 ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0]));
nengel@9 4009 ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8;
nengel@9 4010 ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16;
nengel@9 4011 ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24;
nengel@9 4012 }
nengel@9 4013 while (0);
nengel@9 4014 do
nengel@9 4015 {
nengel@9 4016 ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0]));
nengel@9 4017 ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8;
nengel@9 4018 ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16;
nengel@9 4019 ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24;
nengel@9 4020 }
nengel@9 4021 while (0);
nengel@9 4022 dst += dstStride;
nengel@9 4023 src += srcStride;
nengel@9 4024 }
nengel@9 4025 }
nengel@9 4026 static inline void copy_block9(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
nengel@9 4027 {
nengel@9 4028 int i;
nengel@9 4029 for (i = 0;
nengel@9 4030 i < h;
nengel@9 4031 i++)
nengel@9 4032 {
nengel@9 4033 do
nengel@9 4034 {
nengel@9 4035 ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0]));
nengel@9 4036 ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8;
nengel@9 4037 ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16;
nengel@9 4038 ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24;
nengel@9 4039 }
nengel@9 4040 while (0);
nengel@9 4041 do
nengel@9 4042 {
nengel@9 4043 ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0]));
nengel@9 4044 ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8;
nengel@9 4045 ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16;
nengel@9 4046 ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24;
nengel@9 4047 }
nengel@9 4048 while (0);
nengel@9 4049 dst[8] = src[8];
nengel@9 4050 dst += dstStride;
nengel@9 4051 src += srcStride;
nengel@9 4052 }
nengel@9 4053 }
nengel@9 4054 static inline void copy_block16(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
nengel@9 4055 {
nengel@9 4056 int i;
nengel@9 4057 for (i = 0;
nengel@9 4058 i < h;
nengel@9 4059 i++)
nengel@9 4060 {
nengel@9 4061 do
nengel@9 4062 {
nengel@9 4063 ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0]));
nengel@9 4064 ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8;
nengel@9 4065 ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16;
nengel@9 4066 ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24;
nengel@9 4067 }
nengel@9 4068 while (0);
nengel@9 4069 do
nengel@9 4070 {
nengel@9 4071 ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0]));
nengel@9 4072 ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8;
nengel@9 4073 ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16;
nengel@9 4074 ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24;
nengel@9 4075 }
nengel@9 4076 while (0);
nengel@9 4077 do
nengel@9 4078 {
nengel@9 4079 ((uint8_t *) (dst + 8))[0] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0]));
nengel@9 4080 ((uint8_t *) (dst + 8))[1] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 8;
nengel@9 4081 ((uint8_t *) (dst + 8))[2] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 16;
nengel@9 4082 ((uint8_t *) (dst + 8))[3] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 24;
nengel@9 4083 }
nengel@9 4084 while (0);
nengel@9 4085 do
nengel@9 4086 {
nengel@9 4087 ((uint8_t *) (dst + 12))[0] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0]));
nengel@9 4088 ((uint8_t *) (dst + 12))[1] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 8;
nengel@9 4089 ((uint8_t *) (dst + 12))[2] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 16;
nengel@9 4090 ((uint8_t *) (dst + 12))[3] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 24;
nengel@9 4091 }
nengel@9 4092 while (0);
nengel@9 4093 dst += dstStride;
nengel@9 4094 src += srcStride;
nengel@9 4095 }
nengel@9 4096 }
nengel@9 4097 static inline void copy_block17(uint8_t *dst, const uint8_t *src, int dstStride, int srcStride, int h)
nengel@9 4098 {
nengel@9 4099 int i;
nengel@9 4100 for (i = 0;
nengel@9 4101 i < h;
nengel@9 4102 i++)
nengel@9 4103 {
nengel@9 4104 do
nengel@9 4105 {
nengel@9 4106 ((uint8_t *) (dst))[0] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0]));
nengel@9 4107 ((uint8_t *) (dst))[1] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 8;
nengel@9 4108 ((uint8_t *) (dst))[2] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 16;
nengel@9 4109 ((uint8_t *) (dst))[3] = (((((const uint8_t *) (src))[3] << 24) | (((const uint8_t *) (src))[2] << 16) | (((const uint8_t *) (src))[1] << 8) | ((const uint8_t *) (src))[0])) >> 24;
nengel@9 4110 }
nengel@9 4111 while (0);
nengel@9 4112 do
nengel@9 4113 {
nengel@9 4114 ((uint8_t *) (dst + 4))[0] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0]));
nengel@9 4115 ((uint8_t *) (dst + 4))[1] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 8;
nengel@9 4116 ((uint8_t *) (dst + 4))[2] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 16;
nengel@9 4117 ((uint8_t *) (dst + 4))[3] = (((((const uint8_t *) (src + 4))[3] << 24) | (((const uint8_t *) (src + 4))[2] << 16) | (((const uint8_t *) (src + 4))[1] << 8) | ((const uint8_t *) (src + 4))[0])) >> 24;
nengel@9 4118 }
nengel@9 4119 while (0);
nengel@9 4120 do
nengel@9 4121 {
nengel@9 4122 ((uint8_t *) (dst + 8))[0] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0]));
nengel@9 4123 ((uint8_t *) (dst + 8))[1] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 8;
nengel@9 4124 ((uint8_t *) (dst + 8))[2] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 16;
nengel@9 4125 ((uint8_t *) (dst + 8))[3] = (((((const uint8_t *) (src + 8))[3] << 24) | (((const uint8_t *) (src + 8))[2] << 16) | (((const uint8_t *) (src + 8))[1] << 8) | ((const uint8_t *) (src + 8))[0])) >> 24;
nengel@9 4126 }
nengel@9 4127 while (0);
nengel@9 4128 do
nengel@9 4129 {
nengel@9 4130 ((uint8_t *) (dst + 12))[0] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0]));
nengel@9 4131 ((uint8_t *) (dst + 12))[1] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 8;
nengel@9 4132 ((uint8_t *) (dst + 12))[2] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 16;
nengel@9 4133 ((uint8_t *) (dst + 12))[3] = (((((const uint8_t *) (src + 12))[3] << 24) | (((const uint8_t *) (src + 12))[2] << 16) | (((const uint8_t *) (src + 12))[1] << 8) | ((const uint8_t *) (src + 12))[0])) >> 24;
nengel@9 4134 }
nengel@9 4135 while (0);
nengel@9 4136 dst[16] = src[16];
nengel@9 4137 dst += dstStride;
nengel@9 4138 src += srcStride;
nengel@9 4139 }
nengel@9 4140 }
nengel@9 4141 typedef void (*h264_weight_func)(uint8_t *block, int stride, int log2_denom, int weight, int offset);
nengel@9 4142 typedef void (*h264_biweight_func)(uint8_t *dst, uint8_t *src, int stride, int log2_denom, int weightd, int weights, int offset);
nengel@9 4143 typedef struct H264DSPContext
nengel@9 4144 {
nengel@9 4145 h264_weight_func weight_h264_pixels_tab[10];
nengel@9 4146 h264_biweight_func biweight_h264_pixels_tab[10];
nengel@9 4147 void (*h264_v_loop_filter_luma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0);
nengel@9 4148 void (*h264_h_loop_filter_luma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0);
nengel@9 4149 void (*h264_v_loop_filter_luma_intra)(uint8_t *pix, int stride, int alpha, int beta);
nengel@9 4150 void (*h264_h_loop_filter_luma_intra)(uint8_t *pix, int stride, int alpha, int beta);
nengel@9 4151 void (*h264_v_loop_filter_chroma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0);
nengel@9 4152 void (*h264_h_loop_filter_chroma)(uint8_t *pix, int stride, int alpha, int beta, int8_t *tc0);
nengel@9 4153 void (*h264_v_loop_filter_chroma_intra)(uint8_t *pix, int stride, int alpha, int beta);
nengel@9 4154 void (*h264_h_loop_filter_chroma_intra)(uint8_t *pix, int stride, int alpha, int beta);
nengel@9 4155 void (*h264_loop_filter_strength)(int16_t bS[2][4][4], uint8_t nnz[40], int8_t ref[2][40], int16_t mv[2][40][2], int bidir, int edges, int step, int mask_mv0, int mask_mv1, int field);
nengel@9 4156 void (*h264_idct_add)(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 4157 void (*h264_idct8_add)(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 4158 void (*h264_idct_dc_add)(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 4159 void (*h264_idct8_dc_add)(uint8_t *dst, DCTELEM *block, int stride);
nengel@9 4160 void (*h264_dct)(DCTELEM block[4][4]);
nengel@9 4161 void (*h264_idct_add16)(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 4162 void (*h264_idct8_add4)(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 4163 void (*h264_idct_add8)(uint8_t **dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 4164 void (*h264_idct_add16intra)(uint8_t *dst, const int *blockoffset, DCTELEM *block, int stride, const uint8_t nnzc[6 * 8]);
nengel@9 4165 qpel_mc_func (*qpel_put)[16];
nengel@9 4166 qpel_mc_func (*qpel_avg)[16];
nengel@9 4167 } H264DSPContext;
nengel@9 4168 void ff_h264dsp_init(H264DSPContext *c);
nengel@9 4169 void ff_h264dsp_init_arm(H264DSPContext *c);
nengel@9 4170 void ff_h264dsp_init_ppc(H264DSPContext *c);
nengel@9 4171 void ff_h264dsp_init_x86(H264DSPContext *c);
nengel@9 4172 typedef struct H264PredContext
nengel@9 4173 {
nengel@9 4174 void (*pred4x4[9 + 3 + 3])(uint8_t *src, uint8_t *topright, int stride);
nengel@9 4175 void (*pred8x8l[9 + 3])(uint8_t *src, int topleft, int topright, int stride);
nengel@9 4176 void (*pred8x8[4 + 3 + 4])(uint8_t *src, int stride);
nengel@9 4177 void (*pred16x16[4 + 3])(uint8_t *src, int stride);
nengel@9 4178 void (*pred4x4_add[2])(uint8_t *pix, const DCTELEM *block, int stride);
nengel@9 4179 void (*pred8x8l_add[2])(uint8_t *pix, const DCTELEM *block, int stride);
nengel@9 4180 void (*pred8x8_add[3])(uint8_t *pix, const int *block_offset, const DCTELEM *block, int stride);
nengel@9 4181 void (*pred16x16_add[3])(uint8_t *pix, const int *block_offset, const DCTELEM *block, int stride);
nengel@9 4182 } H264PredContext;
nengel@9 4183 void ff_h264_pred_init(H264PredContext *h);
nengel@9 4184 void ff_h264_pred_init_arm(H264PredContext *h);
nengel@9 4185 typedef struct
nengel@9 4186 {
nengel@9 4187 const char *class_name;
nengel@9 4188 const char *(*item_name)(void *ctx);
nengel@9 4189 const struct AVOption *option;
nengel@9 4190 int version;
nengel@9 4191 } AVClass;
nengel@9 4192 void av_log(int level, const char *fmt, ...);
nengel@9 4193 void av_vlog(int level, const char *fmt, va_list);
nengel@9 4194 int av_log_get_level(void);
nengel@9 4195 void av_log_set_level(int);
nengel@9 4196 void av_log_set_callback(void (*)(int, const char *, va_list));
nengel@9 4197 void av_log_default_callback(int level, const char *fmt, va_list vl);
nengel@9 4198 static inline uint64_t read_time(void)
nengel@9 4199 {
nengel@9 4200 uint32_t a, d;
nengel@9 4201 __asm__ volatile("rdtsc": "=a" (a), "=d" (d): );
nengel@9 4202 return ((uint64_t) d << 32) + a;
nengel@9 4203 }
nengel@9 4204 static inline int32_t NEG_SSR32(int32_t a, int8_t s)
nengel@9 4205 {
nengel@9 4206 __asm__ ("sarl %1, %0\n\t": "+r" (a): "ic" ((uint8_t) (- s)));
nengel@9 4207 return a;
nengel@9 4208 }
nengel@9 4209 static inline uint32_t NEG_USR32(uint32_t a, int8_t s)
nengel@9 4210 {
nengel@9 4211 __asm__ ("shrl %1, %0\n\t": "+r" (a): "ic" ((uint8_t) (- s)));
nengel@9 4212 return a;
nengel@9 4213 }
nengel@9 4214 static __attribute__((always_inline)) inline int MULH(int a, int b)
nengel@9 4215 {
nengel@9 4216 return ((int64_t) (a) * (int64_t) (b)) >> 32;
nengel@9 4217 }
nengel@9 4218 static __attribute__((always_inline)) inline unsigned UMULH(unsigned a, unsigned b)
nengel@9 4219 {
nengel@9 4220 return ((uint64_t) (a) * (uint64_t) (b)) >> 32;
nengel@9 4221 }
nengel@9 4222 static inline __attribute__((const)) int mid_pred(int a, int b, int c)
nengel@9 4223 {
nengel@9 4224 if (a > b)
nengel@9 4225 {
nengel@9 4226 if (c > b)
nengel@9 4227 {
nengel@9 4228 if (c > a)
nengel@9 4229 b = a;
nengel@9 4230 else
nengel@9 4231 b = c;
nengel@9 4232 }
nengel@9 4233 }
nengel@9 4234 else
nengel@9 4235 {
nengel@9 4236 if (b > c)
nengel@9 4237 {
nengel@9 4238 if (c > a)
nengel@9 4239 b = c;
nengel@9 4240 else
nengel@9 4241 b = a;
nengel@9 4242 }
nengel@9 4243 }
nengel@9 4244 return b;
nengel@9 4245 }
nengel@9 4246 static inline __attribute__((const)) int sign_extend(int val, unsigned bits)
nengel@9 4247 {
nengel@9 4248 return (val << ((8 * sizeof(int)) - bits)) >> ((8 * sizeof(int)) - bits);
nengel@9 4249 }
nengel@9 4250 static inline __attribute__((const)) unsigned zero_extend(unsigned val, unsigned bits)
nengel@9 4251 {
nengel@9 4252 return (val << ((8 * sizeof(int)) - bits)) >> ((8 * sizeof(int)) - bits);
nengel@9 4253 }
nengel@9 4254 typedef struct GetBitContext
nengel@9 4255 {
nengel@9 4256 uint8_t *rbsp;
nengel@9 4257 unsigned int rbsp_size;
nengel@9 4258 uint8_t *raw;
nengel@9 4259 const uint8_t *buffer, *buffer_end;
nengel@9 4260 unsigned int alloc_size;
nengel@9 4261 unsigned int buf_size;
nengel@9 4262 uint32_t *buffer_ptr;
nengel@9 4263 uint32_t cache0;
nengel@9 4264 uint32_t cache1;
nengel@9 4265 int bit_count;
nengel@9 4266 int size_in_bits;
nengel@9 4267 } GetBitContext;
nengel@9 4268 static inline int get_bits_count(const GetBitContext *s)
nengel@9 4269 {
nengel@9 4270 return ((uint8_t *) s->buffer_ptr - s->buffer) * 8 - 32 + s->bit_count;
nengel@9 4271 }
nengel@9 4272 static inline void skip_bits_long(GetBitContext *s, int n)
nengel@9 4273 {
nengel@9 4274 int re_bit_count = (s)->bit_count;
nengel@9 4275 uint32_t re_cache0 = (s)->cache0;
nengel@9 4276 uint32_t re_cache1 = (s)->cache1;
nengel@9 4277 uint32_t *re_buffer_ptr = (s)->buffer_ptr;
nengel@9 4278 re_bit_count += n;
nengel@9 4279 re_buffer_ptr += re_bit_count >> 5;
nengel@9 4280 re_bit_count &= 31;
nengel@9 4281 re_cache0 = bswap_32(re_buffer_ptr[- 1]) << re_bit_count;
nengel@9 4282 re_cache1 = 0;
nengel@9 4283 if (re_bit_count > 0)
nengel@9 4284 {
nengel@9 4285 const uint32_t next = bswap_32(*re_buffer_ptr);
nengel@9 4286 re_cache0 |= NEG_USR32(next, re_bit_count);
nengel@9 4287 re_cache1 |= next << re_bit_count;
nengel@9 4288 re_buffer_ptr++;
nengel@9 4289 re_bit_count -= 32;
nengel@9 4290 }
nengel@9 4291 (s)->bit_count = re_bit_count;
nengel@9 4292 (s)->cache0 = re_cache0;
nengel@9 4293 (s)->cache1 = re_cache1;
nengel@9 4294 (s)->buffer_ptr = re_buffer_ptr;
nengel@9 4295 }
nengel@9 4296 static inline int get_xbits(GetBitContext *s, int n)
nengel@9 4297 {
nengel@9 4298 register int sign;
nengel@9 4299 register int32_t cache;
nengel@9 4300 int re_bit_count = (s)->bit_count;
nengel@9 4301 uint32_t re_cache0 = (s)->cache0;
nengel@9 4302 uint32_t re_cache1 = (s)->cache1;
nengel@9 4303 uint32_t *re_buffer_ptr = (s)->buffer_ptr;
nengel@9 4304 if (re_bit_count > 0)
nengel@9 4305 {
nengel@9 4306 const uint32_t next = bswap_32(*re_buffer_ptr);
nengel@9 4307 re_cache0 |= NEG_USR32(next, re_bit_count);
nengel@9 4308 re_cache1 |= next << re_bit_count;
nengel@9 4309 re_buffer_ptr++;
nengel@9 4310 re_bit_count -= 32;
nengel@9 4311 }
nengel@9 4312 cache = (re_cache0);
nengel@9 4313 sign = (~cache) >> 31;
nengel@9 4314 {
nengel@9 4315 __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n)));
nengel@9 4316 re_bit_count += (n);
nengel@9 4317 }
nengel@9 4318 (s)->bit_count = re_bit_count;
nengel@9 4319 (s)->cache0 = re_cache0;
nengel@9 4320 (s)->cache1 = re_cache1;
nengel@9 4321 (s)->buffer_ptr = re_buffer_ptr;
nengel@9 4322 return (NEG_USR32(sign ^ cache, n) ^ sign) - sign;
nengel@9 4323 }
nengel@9 4324 static inline int get_sbits(GetBitContext *s, int n)
nengel@9 4325 {
nengel@9 4326 register int tmp;
nengel@9 4327 int re_bit_count = (s)->bit_count;
nengel@9 4328 uint32_t re_cache0 = (s)->cache0;
nengel@9 4329 uint32_t re_cache1 = (s)->cache1;
nengel@9 4330 uint32_t *re_buffer_ptr = (s)->buffer_ptr;
nengel@9 4331 if (re_bit_count > 0)
nengel@9 4332 {
nengel@9 4333 const uint32_t next = bswap_32(*re_buffer_ptr);
nengel@9 4334 re_cache0 |= NEG_USR32(next, re_bit_count);
nengel@9 4335 re_cache1 |= next << re_bit_count;
nengel@9 4336 re_buffer_ptr++;
nengel@9 4337 re_bit_count -= 32;
nengel@9 4338 }
nengel@9 4339 tmp = NEG_SSR32(re_cache0, n);
nengel@9 4340 {
nengel@9 4341 __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n)));
nengel@9 4342 re_bit_count += (n);
nengel@9 4343 }
nengel@9 4344 (s)->bit_count = re_bit_count;
nengel@9 4345 (s)->cache0 = re_cache0;
nengel@9 4346 (s)->cache1 = re_cache1;
nengel@9 4347 (s)->buffer_ptr = re_buffer_ptr;
nengel@9 4348 return tmp;
nengel@9 4349 }
nengel@9 4350 static inline unsigned int get_bits(GetBitContext *s, int n)
nengel@9 4351 {
nengel@9 4352 register int tmp;
nengel@9 4353 int re_bit_count = (s)->bit_count;
nengel@9 4354 uint32_t re_cache0 = (s)->cache0;
nengel@9 4355 uint32_t re_cache1 = (s)->cache1;
nengel@9 4356 uint32_t *re_buffer_ptr = (s)->buffer_ptr;
nengel@9 4357 if (re_bit_count > 0)
nengel@9 4358 {
nengel@9 4359 const uint32_t next = bswap_32(*re_buffer_ptr);
nengel@9 4360 re_cache0 |= NEG_USR32(next, re_bit_count);
nengel@9 4361 re_cache1 |= next << re_bit_count;
nengel@9 4362 re_buffer_ptr++;
nengel@9 4363 re_bit_count -= 32;
nengel@9 4364 }
nengel@9 4365 tmp = NEG_USR32(re_cache0, n);
nengel@9 4366 {
nengel@9 4367 __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n)));
nengel@9 4368 re_bit_count += (n);
nengel@9 4369 }
nengel@9 4370 (s)->bit_count = re_bit_count;
nengel@9 4371 (s)->cache0 = re_cache0;
nengel@9 4372 (s)->cache1 = re_cache1;
nengel@9 4373 (s)->buffer_ptr = re_buffer_ptr;
nengel@9 4374 return tmp;
nengel@9 4375 }
nengel@9 4376 static inline unsigned int show_bits(GetBitContext *s, int n)
nengel@9 4377 {
nengel@9 4378 register int tmp;
nengel@9 4379 int re_bit_count = (s)->bit_count;
nengel@9 4380 uint32_t re_cache0 = (s)->cache0;
nengel@9 4381 uint32_t re_cache1 = (s)->cache1;
nengel@9 4382 uint32_t *re_buffer_ptr = (s)->buffer_ptr;
nengel@9 4383 if (re_bit_count > 0)
nengel@9 4384 {
nengel@9 4385 const uint32_t next = bswap_32(*re_buffer_ptr);
nengel@9 4386 re_cache0 |= NEG_USR32(next, re_bit_count);
nengel@9 4387 re_cache1 |= next << re_bit_count;
nengel@9 4388 re_buffer_ptr++;
nengel@9 4389 re_bit_count -= 32;
nengel@9 4390 }
nengel@9 4391 tmp = NEG_USR32(re_cache0, n);
nengel@9 4392 return tmp;
nengel@9 4393 }
nengel@9 4394 static inline void skip_bits(GetBitContext *s, int n)
nengel@9 4395 {
nengel@9 4396 int re_bit_count = (s)->bit_count;
nengel@9 4397 uint32_t re_cache0 = (s)->cache0;
nengel@9 4398 uint32_t re_cache1 = (s)->cache1;
nengel@9 4399 uint32_t *re_buffer_ptr = (s)->buffer_ptr;
nengel@9 4400 if (re_bit_count > 0)
nengel@9 4401 {
nengel@9 4402 const uint32_t next = bswap_32(*re_buffer_ptr);
nengel@9 4403 re_cache0 |= NEG_USR32(next, re_bit_count);
nengel@9 4404 re_cache1 |= next << re_bit_count;
nengel@9 4405 re_buffer_ptr++;
nengel@9 4406 re_bit_count -= 32;
nengel@9 4407 }
nengel@9 4408 {
nengel@9 4409 __asm__ ("shldl %2, %1, %0 \n\t""shll %2, %1 \n\t": "+r" (re_cache0), "+r" (re_cache1): "Ic" ((uint8_t) (n)));
nengel@9 4410 re_bit_count += (n);
nengel@9 4411 }
nengel@9 4412 (s)->bit_count = re_bit_count;
nengel@9 4413 (s)->cache0 = re_cache0;
nengel@9 4414 (s)->cache1 = re_cache1;
nengel@9 4415 (s)->buffer_ptr = re_buffer_ptr;
nengel@9 4416 }
nengel@9 4417 static inline unsigned int get_bits1(GetBitContext *s)
nengel@9 4418 {
nengel@9 4419 return get_bits(s, 1);
nengel@9 4420 }
nengel@9 4421 static inline unsigned int show_bits1(GetBitContext *s)
nengel@9 4422 {
nengel@9 4423 return show_bits(s, 1);
nengel@9 4424 }
nengel@9 4425 static inline void skip_bits1(GetBitContext *s)
nengel@9 4426 {
nengel@9 4427 skip_bits(s, 1);
nengel@9 4428 }
nengel@9 4429 static inline unsigned int get_bits_long(GetBitContext *s, int n)
nengel@9 4430 {
nengel@9 4431 if (n <= 32)
nengel@9 4432 return get_bits(s, n);
nengel@9 4433 else
nengel@9 4434 {
nengel@9 4435 int ret = get_bits(s, 16) << (n - 16);
nengel@9 4436 return ret | get_bits(s, n - 16);
nengel@9 4437 }
nengel@9 4438 }
nengel@9 4439 static inline int get_sbits_long(GetBitContext *s, int n)
nengel@9 4440 {
nengel@9 4441 return sign_extend(get_bits_long(s, n), n);
nengel@9 4442 }
nengel@9 4443 static inline unsigned int show_bits_long(GetBitContext *s, int n)
nengel@9 4444 {
nengel@9 4445 if (n <= 32)
nengel@9 4446 return show_bits(s, n);
nengel@9 4447 else
nengel@9 4448 {
nengel@9 4449 GetBitContext gb = *s;
nengel@9 4450 return get_bits_long(&gb, n);
nengel@9 4451 }
nengel@9 4452 }
nengel@9 4453 static inline int check_marker(GetBitContext *s, const char *msg)
nengel@9 4454 {
nengel@9 4455 int bit = get_bits1(s);
nengel@9 4456 if (!bit)
nengel@9 4457 av_log(32, "Marker bit missing %s\n", msg);
nengel@9 4458 return bit;
nengel@9 4459 }
nengel@9 4460 static inline void init_get_bits(GetBitContext *s, const uint8_t *buffer, int bit_size)
nengel@9 4461 {
nengel@9 4462 int buffer_size = (bit_size + 7) >> 3;
nengel@9 4463 if (buffer_size < 0 || bit_size < 0)
nengel@9 4464 {
nengel@9 4465 buffer_size = bit_size = 0;
nengel@9 4466 buffer = ((void *) 0);
nengel@9 4467 }
nengel@9 4468 s->buffer = buffer;
nengel@9 4469 s->size_in_bits = bit_size;
nengel@9 4470 s->buffer_end = buffer + buffer_size;
nengel@9 4471 s->buffer_ptr = (uint32_t *) ((intptr_t) buffer & (~3));
nengel@9 4472 s->bit_count = 32 + 8 * ((intptr_t) buffer & 3);
nengel@9 4473 skip_bits_long(s, 0);
nengel@9 4474 }
nengel@9 4475 static inline void align_get_bits(GetBitContext *s)
nengel@9 4476 {
nengel@9 4477 int n = (- get_bits_count(s)) & 7;
nengel@9 4478 if (n)
nengel@9 4479 skip_bits(s, n);
nengel@9 4480 }
nengel@9 4481 static inline int get_bits_left(GetBitContext *gb)
nengel@9 4482 {
nengel@9 4483 return gb->size_in_bits - get_bits_count(gb);
nengel@9 4484 }
nengel@9 4485 enum
nengel@9 4486 {
nengel@9 4487 PARSE = 0,
nengel@9 4488 ENTROPY,
nengel@9 4489 REORDER,
nengel@9 4490 REORDER2,
nengel@9 4491 MBDEC,
nengel@9 4492 OUTPUT,
nengel@9 4493 STAGES
nengel@9 4494 };
nengel@9 4495 enum
nengel@9 4496 {
nengel@9 4497 TOTAL = 0,
nengel@9 4498 FRONT,
nengel@9 4499 ED,
nengel@9 4500 REC,
nengel@9 4501 PROFILE_STAGES
nengel@9 4502 };
nengel@9 4503 typedef struct ParserContext
nengel@9 4504 {
nengel@9 4505 int ifile;
nengel@9 4506 int ofile;
nengel@9 4507 int buffer_size;
nengel@9 4508 int eof_reached;
nengel@9 4509 uint8_t *data;
nengel@9 4510 int size;
nengel@9 4511 uint8_t *cur_ptr;
nengel@9 4512 int cur_len;
nengel@9 4513 int64_t frame_offset;
nengel@9 4514 int64_t cur_offset;
nengel@9 4515 int64_t next_frame_offset;
nengel@9 4516 int pict_type;
nengel@9 4517 int repeat_pict;
nengel@9 4518 int key_frame;
nengel@9 4519 int64_t pos;
nengel@9 4520 int64_t last_pos;
nengel@9 4521 int final_frame;
nengel@9 4522 uint8_t overread[5];
nengel@9 4523 int overread_cnt;
nengel@9 4524 int index;
nengel@9 4525 int last_index;
nengel@9 4526 int frame_start_found;
nengel@9 4527 uint32_t state;
nengel@9 4528 } ParserContext;
nengel@9 4529 typedef struct NalContext
nengel@9 4530 {
nengel@9 4531 SPS *sps_buffers[32];
nengel@9 4532 PPS *pps_buffers[256];
nengel@9 4533 SPS sps;
nengel@9 4534 PictureInfo picture[16 + 1];
nengel@9 4535 PictureInfo *release_ref[66];
nengel@9 4536 PictureInfo *short_ref[32];
nengel@9 4537 PictureInfo *long_ref[32];
nengel@9 4538 int long_ref_count;
nengel@9 4539 int short_ref_count;
nengel@9 4540 uint32_t coded_pic_num;
nengel@9 4541 int poc_lsb;
nengel@9 4542 int poc_msb;
nengel@9 4543 uint32_t poc_offset;
nengel@9 4544 int delta_poc;
nengel@9 4545 int frame_num;
nengel@9 4546 int prev_poc_msb;
nengel@9 4547 int prev_poc_lsb;
nengel@9 4548 int frame_num_offset;
nengel@9 4549 int prev_frame_num_offset;
nengel@9 4550 int prev_frame_num;
nengel@9 4551 int max_pic_num;
nengel@9 4552 int redundant_pic_count;
nengel@9 4553 int outputed_poc;
nengel@9 4554 int ip_id;
nengel@9 4555 int b4_stride;
nengel@9 4556 int mb_stride;
nengel@9 4557 int mb_width;
nengel@9 4558 int mb_height;
nengel@9 4559 int width;
nengel@9 4560 int height;
nengel@9 4561 int has_b_frames;
nengel@9 4562 SEI_PicStructType sei_pic_struct;
nengel@9 4563 int sei_ct_type;
nengel@9 4564 int sei_dpb_output_delay;
nengel@9 4565 int sei_cpb_removal_delay;
nengel@9 4566 int sei_recovery_frame_cnt;
nengel@9 4567 int sei_buffering_period_present;
nengel@9 4568 int initial_cpb_removal_delay[32];
nengel@9 4569 } NalContext;
nengel@9 4570 typedef struct EntropyContext
nengel@9 4571 {
nengel@9 4572 CABACContext c;
nengel@9 4573 H264Mb *m;
nengel@9 4574 int top_cbp;
nengel@9 4575 int left_cbp;
nengel@9 4576 int neighbor_transform_size;
nengel@9 4577 uint32_t top_type;
nengel@9 4578 uint32_t left_type;
nengel@9 4579 uint32_t topright_type;
nengel@9 4580 uint32_t topleft_type;
nengel@9 4581 int curr_qscale;
nengel@9 4582 int chroma_qp[2];
nengel@9 4583 int last_qscale_diff;
nengel@9 4584 uint32_t dequant4_buffer[6][52][16];
nengel@9 4585 uint32_t dequant8_buffer[2][52][64];
nengel@9 4586 uint32_t (*dequant4_coeff[6])[16];
nengel@9 4587 uint32_t (*dequant8_coeff[2])[64];
nengel@9 4588 uint8_t (*non_zero_count_top)[8];
nengel@9 4589 uint8_t (*non_zero_count)[8];
nengel@9 4590 uint8_t (*non_zero_count_row[2])[8];
nengel@9 4591 uint8_t __attribute__((aligned(8))) non_zero_count_left[8];
nengel@9 4592 uint8_t (*mvd_top[2])[2];
nengel@9 4593 uint8_t (*mvd[2])[2];
nengel@9 4594 uint8_t (*mvd_table[2][2])[2];
nengel@9 4595 uint8_t *direct_top;
nengel@9 4596 uint8_t *direct;
nengel@9 4597 uint8_t *direct_table[2];
nengel@9 4598 uint8_t *chroma_pred_mode_top;
nengel@9 4599 uint8_t *chroma_pred_mode;
nengel@9 4600 uint8_t *chroma_pred_mode_table[2];
nengel@9 4601 uint16_t *cbp_top;
nengel@9 4602 uint16_t *cbp;
nengel@9 4603 uint16_t *cbp_table[2];
nengel@9 4604 int8_t *qscale_top;
nengel@9 4605 int8_t *qscale;
nengel@9 4606 int8_t *qscale_table[2];
nengel@9 4607 int8_t *ref_index_top[2];
nengel@9 4608 int8_t *ref_index[2];
nengel@9 4609 int8_t *ref_index_table[2][2];
nengel@9 4610 uint32_t *mb_type_top;
nengel@9 4611 uint32_t *mb_type;
nengel@9 4612 uint32_t *mb_type_table[2];
nengel@9 4613 int b_stride;
nengel@9 4614 int mb_stride;
nengel@9 4615 int mb_width;
nengel@9 4616 int mb_height;
nengel@9 4617 uint8_t *zigzag_scan;
nengel@9 4618 uint8_t *zigzag_scan8x8;
nengel@9 4619 uint8_t direct_cache[5 * 8];
nengel@9 4620 int8_t __attribute__((aligned(8))) intra4x4_pred_mode_cache[5 * 8];
nengel@9 4621 int16_t __attribute__((aligned(16))) mv_cache[2][5 * 8][2];
nengel@9 4622 int8_t __attribute__((aligned(8))) ref_cache[2][5 * 8];
nengel@9 4623 uint8_t __attribute__((aligned(8))) non_zero_count_cache[6 * 8];
nengel@9 4624 uint8_t __attribute__((aligned(16))) mvd_cache[2][5 * 8][2];
nengel@9 4625 } EntropyContext;
nengel@9 4626 typedef struct H264Slice
nengel@9 4627 {
nengel@9 4628 PPS pps;
nengel@9 4629 PictureInfo *current_picture_info;
nengel@9 4630 DecodedPicture *curr_pic;
nengel@9 4631 int slice_num;
nengel@9 4632 int release_ref_cpn[66];
nengel@9 4633 int release_cnt;
nengel@9 4634 int qp_thresh;
nengel@9 4635 int use_weight;
nengel@9 4636 int use_weight_chroma;
nengel@9 4637 int luma_log2_weight_denom;
nengel@9 4638 int chroma_log2_weight_denom;
nengel@9 4639 int16_t luma_weight[16][2][2];
nengel@9 4640 int16_t chroma_weight[16][2][2][2];
nengel@9 4641 int16_t implicit_weight[16][16][2];
nengel@9 4642 int ref_list_cpn[2][16];
nengel@9 4643 PictureInfo *ref_list[2][16];
nengel@9 4644 DecodedPicture *dp_ref_list[2][16];
nengel@9 4645 int ref_count[2];
nengel@9 4646 int slice_type;
nengel@9 4647 int slice_type_nos;
nengel@9 4648 int slice_alpha_c0_offset;
nengel@9 4649 int slice_beta_offset;
nengel@9 4650 int direct_8x8_inference_flag;
nengel@9 4651 uint8_t list_count;
nengel@9 4652 uint32_t coded_pic_num;
nengel@9 4653 int poc;
nengel@9 4654 int key_frame;
nengel@9 4655 int mmco_reset;
nengel@9 4656 int ip_id;
nengel@9 4657 int transform_bypass;
nengel@9 4658 int direct_spatial_mv_pred;
nengel@9 4659 int map_col_to_list0[2][16];
nengel@9 4660 int dist_scale_factor[16];
nengel@9 4661 int cabac_init_idc;
nengel@9 4662 int nal_ref_idc;
nengel@9 4663 int nal_unit_type;
nengel@9 4664 int ref2frm[2][64];
nengel@9 4665 int qscale;
nengel@9 4666 } H264Slice;
nengel@9 4667 typedef struct
nengel@9 4668 {
nengel@9 4669 H264Slice slice;
nengel@9 4670 H264Mb *mbs;
nengel@9 4671 DecodedPicture *dp;
nengel@9 4672 GetBitContext gb;
nengel@9 4673 int lines_taken;
nengel@9 4674 int lines_total;
nengel@9 4675 int state;
nengel@9 4676 int initialized;
nengel@9 4677 } SliceBufferEntry;
nengel@9 4678 typedef struct RingLineEntry
nengel@9 4679 {
nengel@9 4680 union
nengel@9 4681 {
nengel@9 4682 volatile int32_t __attribute__((aligned(64))) mb_cnt;
nengel@9 4683 int32_t __attribute__((aligned(64))) pad[16];
nengel@9 4684 };
nengel@9 4685 SliceBufferEntry *sbe;
nengel@9 4686 int id;
nengel@9 4687 int line;
nengel@9 4688 TopBorder *top;
nengel@9 4689 struct RingLineEntry *prev_line;
nengel@9 4690 } RingLineEntry;
nengel@9 4691 typedef struct SuperMBTask
nengel@9 4692 {
nengel@9 4693 int smb_x;
nengel@9 4694 int smb_y;
nengel@9 4695 } SuperMBTask;
nengel@9 4696 typedef struct SuperMBContext
nengel@9 4697 {
nengel@9 4698 int nsmb_width;
nengel@9 4699 int nsmb_height;
nengel@9 4700 int nsmb_3dheight;
nengel@9 4701 int smb_width;
nengel@9 4702 int smb_height;
nengel@9 4703 int refcount;
nengel@9 4704 int index;
nengel@9 4705 SuperMBTask *smbs[2];
nengel@9 4706 } SuperMBContext;
nengel@9 4707 typedef struct MBRecState
nengel@9 4708 {
nengel@9 4709 int8_t *ref_index_top[2];
nengel@9 4710 int8_t *ref_index[2];
nengel@9 4711 int16_t (*motion_val_top[2])[2];
nengel@9 4712 int16_t (*motion_val[2])[2];
nengel@9 4713 uint32_t *mb_type_top;
nengel@9 4714 uint32_t *mb_type;
nengel@9 4715 int8_t *list1_ref_index[2];
nengel@9 4716 int16_t (*list1_motion_val[2])[2];
nengel@9 4717 uint32_t *list1_mb_type;
nengel@9 4718 int8_t *intra4x4_pred_mode_top;
nengel@9 4719 int8_t *intra4x4_pred_mode;
nengel@9 4720 int8_t *non_zero_count_top;
nengel@9 4721 int8_t *non_zero_count;
nengel@9 4722 unsigned int topleft_samples_available;
nengel@9 4723 unsigned int topright_samples_available;
nengel@9 4724 unsigned int top_samples_available;
nengel@9 4725 unsigned int left_samples_available;
nengel@9 4726 int top_type;
nengel@9 4727 int left_type;
nengel@9 4728 int8_t __attribute__((aligned(8))) intra4x4_pred_mode_cache[5 * 8];
nengel@9 4729 int16_t __attribute__((aligned(16))) mv_cache[2][5 * 8][2];
nengel@9 4730 int8_t __attribute__((aligned(8))) ref_cache[2][5 * 8];
nengel@9 4731 uint8_t __attribute__((aligned(8))) non_zero_count_cache[6 * 8];
nengel@9 4732 uint8_t __attribute__((aligned(16))) mvd_cache[2][5 * 8][2];
nengel@9 4733 int16_t __attribute__((aligned(8))) bS[2][4][4];
nengel@9 4734 uint8_t edges[2];
nengel@9 4735 } MBRecState;
nengel@9 4736 typedef struct MBRecContext
nengel@9 4737 {
nengel@9 4738 DSPContext dsp;
nengel@9 4739 H264DSPContext hdsp;
nengel@9 4740 H264PredContext hpc;
nengel@9 4741 MBRecState *mrs;
nengel@9 4742 RingLineEntry *rle;
nengel@9 4743 uint8_t *scratchpad_y;
nengel@9 4744 uint8_t *scratchpad_cb;
nengel@9 4745 uint8_t *scratchpad_cr;
nengel@9 4746 int linesize;
nengel@9 4747 int uvlinesize;
nengel@9 4748 int mb_width;
nengel@9 4749 int mb_height;
nengel@9 4750 int mb_stride;
nengel@9 4751 int b_stride;
nengel@9 4752 int width;
nengel@9 4753 int height;
nengel@9 4754 int block_offset[16 + 8];
nengel@9 4755 } MBRecContext;
nengel@9 4756 typedef struct OutputContext
nengel@9 4757 {
nengel@9 4758 int bit_buffer_size;
nengel@9 4759 uint8_t *bit_buffer;
nengel@9 4760 uint64_t video_size;
nengel@9 4761 int frame_number;
nengel@9 4762 DecodedPicture *delayed_pic[33];
nengel@9 4763 int dp_cnt;
nengel@9 4764 } OutputContext;
nengel@9 4765 typedef struct
nengel@9 4766 {
nengel@9 4767 pthread_mutex_t lock;
nengel@9 4768 pthread_cond_t cond;
nengel@9 4769 SliceBufferEntry **queue;
nengel@9 4770 int size;
nengel@9 4771 int cnt;
nengel@9 4772 int fi;
nengel@9 4773 int fo;
nengel@9 4774 } SliceBufferQueue;
nengel@9 4775 typedef struct
nengel@9 4776 {
nengel@9 4777 pthread_mutex_t wslock;
nengel@9 4778 pthread_cond_t wscond;
nengel@9 4779 pthread_mutex_t swlock;
nengel@9 4780 pthread_cond_t swcond;
nengel@9 4781 RingLineEntry **queue;
nengel@9 4782 int size;
nengel@9 4783 int ready;
nengel@9 4784 int free;
nengel@9 4785 int fi;
nengel@9 4786 int fo;
nengel@9 4787 } RingLineQueue;
nengel@9 4788 typedef struct H264Context
nengel@9 4789 {
nengel@9 4790 SliceBufferQueue sb_q[STAGES];
nengel@9 4791 RingLineQueue rl_q;
nengel@9 4792 pthread_mutex_t lock[STAGES];
nengel@9 4793 pthread_cond_t cond[STAGES];
nengel@9 4794 pthread_mutex_t task_lock;
nengel@9 4795 pthread_cond_t task_cond;
nengel@9 4796 pthread_attr_t ed_rec_attr[80];
nengel@9 4797 pthread_t ed_rec_thr[80];
nengel@9 4798 int init_threads;
nengel@9 4799 pthread_mutex_t ilock;
nengel@9 4800 pthread_cond_t icond;
nengel@9 4801 const char *file_name;
nengel@9 4802 int profile;
nengel@9 4803 int start;
nengel@9 4804 int touch_start;
nengel@9 4805 int setaff;
nengel@9 4806 int touch_done;
nengel@9 4807 int rl_side_touch;
nengel@9 4808 int statmbd;
nengel@9 4809 pthread_mutex_t slock;
nengel@9 4810 pthread_cond_t scond;
nengel@9 4811 pthread_mutex_t tlock;
nengel@9 4812 pthread_cond_t tcond;
nengel@9 4813 pthread_mutex_t tdlock;
nengel@9 4814 pthread_cond_t tdcond;
nengel@9 4815 int ed_ppe_threads;
nengel@9 4816 int threads;
nengel@9 4817 int smt;
nengel@9 4818 int acdpb_cnt;
nengel@9 4819 int reldpb_cnt;
nengel@9 4820 int sb_size;
nengel@9 4821 SliceBufferEntry *sb;
nengel@9 4822 int free_sb_cnt;
nengel@9 4823 int slice_bufs;
nengel@9 4824 int max_dpb_cnt;
nengel@9 4825 DecodedPicture *dpb;
nengel@9 4826 int free_dpb_cnt;
nengel@9 4827 int ifile;
nengel@9 4828 int ofile;
nengel@9 4829 int frame_width;
nengel@9 4830 int frame_height;
nengel@9 4831 int num_frames;
nengel@9 4832 int width;
nengel@9 4833 int height;
nengel@9 4834 int mb_width;
nengel@9 4835 int mb_height;
nengel@9 4836 int mb_stride;
nengel@9 4837 int b4_stride;
nengel@9 4838 int b_stride;
nengel@9 4839 int smb_height;
nengel@9 4840 int smb_width;
nengel@9 4841 pthread_mutex_t smb_lock;
nengel@9 4842 pthread_cond_t sdl_cond;
nengel@9 4843 pthread_mutex_t sdl_lock;
nengel@9 4844 SuperMBContext *smbc;
nengel@9 4845 int wave_order;
nengel@9 4846 int static_3d;
nengel@9 4847 int pipe_bufs;
nengel@9 4848 uint8_t zigzag_scan[16];
nengel@9 4849 uint8_t zigzag_scan8x8[64];
nengel@9 4850 int verbose;
nengel@9 4851 int no_mbd;
nengel@9 4852 int display;
nengel@9 4853 int fullscreen;
nengel@9 4854 int quit;
nengel@9 4855 struct timespec start_time[PROFILE_STAGES];
nengel@9 4856 struct timespec end_time[PROFILE_STAGES];
nengel@9 4857 double last_time[PROFILE_STAGES];
nengel@9 4858 double total_time[PROFILE_STAGES];
nengel@9 4859 } H264Context;
nengel@9 4860 void av_read_frame_internal(ParserContext *pc, GetBitContext *gb);
nengel@9 4861 ParserContext *get_parse_context(int ifile);
nengel@9 4862 void free_parse_context(ParserContext *pc);
nengel@9 4863 int decode_nal_units(NalContext *n, H264Slice *s, GetBitContext *gb);
nengel@9 4864 NalContext *get_nal_context(int width, int height);
nengel@9 4865 void free_nal_context(NalContext *nc);
nengel@9 4866 int ff_h264_decode_mb_cabac(EntropyContext *ec, H264Slice *s, CABACContext *c);
nengel@9 4867 void ff_h264_init_cabac_states(EntropyContext *ec, H264Slice *s, CABACContext *c);
nengel@9 4868 int init_entropy_buf(EntropyContext *ec, H264Slice *s, int line);
nengel@9 4869 EntropyContext *get_entropy_context(H264Context *h);
nengel@9 4870 void init_dequant_tables(H264Slice *s, EntropyContext *ec);
nengel@9 4871 void free_entropy_context(EntropyContext *ec);
nengel@9 4872 MBRecContext *get_mbrec_context(H264Context *h);
nengel@9 4873 void free_mbrec_context(MBRecContext *d);
nengel@9 4874 void h264_decode_mb_internal(MBRecContext *d, MBRecState *mrs, H264Slice *s, H264Mb *m);
nengel@9 4875 void init_mbrec_context(MBRecContext *mrc, MBRecState *mrs, H264Slice *s, int line);
nengel@9 4876 void ff_h264_pred_direct_motion_rec(MBRecContext *mrc, MBRecState *mrs, H264Slice *s, int *mb_type);
nengel@9 4877 int pred_motion_mb_rec(MBRecContext *mrc, MBRecState *mrs, H264Slice *s, H264Mb *m);
nengel@9 4878 void start_timer(H264Context *h, int stage);
nengel@9 4879 void stop_timer(H264Context *h, int stage);
nengel@9 4880 void init_sb_entry(H264Context *h, SliceBufferEntry *sbe);
nengel@9 4881 void free_sb_entry(SliceBufferEntry *sb);
nengel@9 4882 SliceBufferEntry *get_sb_entry(H264Context *h);
nengel@9 4883 void release_sb_entry(H264Context *h, SliceBufferEntry *sb);
nengel@9 4884 DecodedPicture *get_dpb_entry(H264Context *h, H264Slice *s);
nengel@9 4885 void release_dpb_entry(H264Context *h, DecodedPicture *pic, int mode);
nengel@9 4886 void draw_edges(MBRecContext *d, H264Slice *s, int line);
nengel@9 4887 int ff_init_slice(NalContext *n, H264Slice *s);
nengel@9 4888 void free_picture(PictureInfo *pic);
nengel@9 4889 void free_dp(DecodedPicture *pic);
nengel@9 4890 void av_start_timer();
nengel@9 4891 int copyEDtoH264Slice(H264Slice *ms, H264Slice *es);
nengel@9 4892 void print_report(int frame_number, uint64_t video_size, int is_last_report, int verbose);
nengel@9 4893 int ff_alloc_picture_info(NalContext *n, H264Slice *s, PictureInfo *pic);
nengel@9 4894 DecodedPicture *output_frame(H264Context *h, OutputContext *oc, DecodedPicture *pic, int fd, int frame_width, int frame_height);
nengel@9 4895 OutputContext *get_output_context(H264Context *h);
nengel@9 4896 void free_output_context(OutputContext *oc);
nengel@9 4897 void freeSuperMBContext(SuperMBContext *smbc);
nengel@9 4898 SuperMBContext *getSuperMBContext(H264Context *h, int smb_width, int smb_height);
nengel@9 4899 void release_smbc(H264Context *h, SuperMBContext *smbc);
nengel@9 4900 SuperMBContext *acquire_smbc(H264Context *h);
nengel@9 4901 static inline int get_chroma_qp(H264Slice *s, int t, int qscale)
nengel@9 4902 {
nengel@9 4903 return s->pps.chroma_qp_table[t][qscale];
nengel@9 4904 }
nengel@9 4905 static void parse_task(H264Context *h, ParserContext *pc, NalContext *nc, SliceBufferEntry *sbe)
nengel@9 4906 {
nengel@9 4907 H264Slice *s;
nengel@9 4908 if (!sbe->initialized)
nengel@9 4909 {
nengel@9 4910 init_sb_entry(h, sbe);
nengel@9 4911 sbe->lines_total = h->mb_height;
nengel@9 4912 }
nengel@9 4913 av_read_frame_internal(pc, &sbe->gb);
nengel@9 4914 s = &sbe->slice;
nengel@9 4915 decode_nal_units(nc, s, &sbe->gb);
nengel@9 4916 }
nengel@9 4917 static void decode_slice_entropy_task(H264Context *h, EntropyContext *ec, SliceBufferEntry *sbe)
nengel@9 4918 {
nengel@9 4919 int i, j;
nengel@9 4920 H264Slice *s = &sbe->slice;
nengel@9 4921 GetBitContext *gb = &sbe->gb;
nengel@9 4922 H264Mb *mbs = sbe->mbs;
nengel@9 4923 CABACContext *c = &ec->c;
nengel@9 4924 if (!s->pps.cabac)
nengel@9 4925 {
nengel@9 4926 av_log(16, "Only cabac encoded streams are supported\n");
nengel@9 4927 return;
nengel@9 4928 }
nengel@9 4929 init_dequant_tables(s, ec);
nengel@9 4930 ec->curr_qscale = s->qscale;
nengel@9 4931 ec->last_qscale_diff = 0;
nengel@9 4932 ec->chroma_qp[0] = get_chroma_qp((H264Slice *) s, 0, s->qscale);
nengel@9 4933 ec->chroma_qp[1] = get_chroma_qp((H264Slice *) s, 1, s->qscale);
nengel@9 4934 align_get_bits(gb);
nengel@9 4935 ff_init_cabac_decoder(c, gb->buffer + get_bits_count(gb) / 8, (get_bits_left(gb) + 7) / 8);
nengel@9 4936 ff_h264_init_cabac_states(ec, s, c);
nengel@9 4937 for (j = 0;
nengel@9 4938 j < ec->mb_height;
nengel@9 4939 j++)
nengel@9 4940 {
nengel@9 4941 init_entropy_buf(ec, s, j);
nengel@9 4942 for (i = 0;
nengel@9 4943 i < ec->mb_width;
nengel@9 4944 i++)
nengel@9 4945 {
nengel@9 4946 int eos, ret;
nengel@9 4947 H264Mb *m = &mbs[i + j * ec->mb_width];
nengel@9 4948 m->mb_x = i;
nengel@9 4949 m->mb_y = j;
nengel@9 4950 ec->m = m;
nengel@9 4951 ret = ff_h264_decode_mb_cabac(ec, s, c);
nengel@9 4952 eos = get_cabac_terminate(c);
nengel@9 4953 (void) eos;
nengel@9 4954 if (ret < 0 || c->bytestream > c->bytestream_end + 2)
nengel@9 4955 {
nengel@9 4956 av_log(16, "error while decoding MB %d %d, bytestream (%td)\n", m->mb_x, m->mb_y, c->bytestream_end - c->bytestream);
nengel@9 4957 return;
nengel@9 4958 }
nengel@9 4959 }
nengel@9 4960 }
nengel@9 4961 }
nengel@9 4962 static void decode_super_mb_block(MBRecContext *d, H264Slice *s, SuperMBContext *smbc, H264Mb *mbs, int smb_x, int smb_y)
nengel@9 4963 {
nengel@9 4964 MBRecState mrs;
nengel@9 4965 for (int k = 0, i = smb_y;
nengel@9 4966 i < smb_y + smbc->smb_height;
nengel@9 4967 i++ , k++)
nengel@9 4968 {
nengel@9 4969 init_mbrec_context(d, &mrs, s, i);
nengel@9 4970 for (int j = smb_x - k;
nengel@9 4971 j < smb_x - k + smbc->smb_width;
nengel@9 4972 j++)
nengel@9 4973 {
nengel@9 4974 if (i < d->mb_height && j >= 0 && j < d->mb_width)
nengel@9 4975 {
nengel@9 4976 h264_decode_mb_internal(d, &mrs, s, &mbs[i * d->mb_width + j]);
nengel@9 4977 }
nengel@9 4978 }
nengel@9 4979 }
nengel@9 4980 }
nengel@9 4981 static void decode_super_mb_task(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SuperMBTask *ml, SuperMBTask *mur, SuperMBTask *m)
nengel@9 4982 {
nengel@9 4983 H264Slice *s = &sbe->slice;
nengel@9 4984 H264Mb *mbs = sbe->mbs;
nengel@9 4985 decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y);
nengel@9 4986 }
nengel@9 4987 static void draw_edges_task(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SuperMBTask *sm, int line)
nengel@9 4988 {
nengel@9 4989 H264Slice *s = &sbe->slice;
nengel@9 4990 for (int i = line * smbc->smb_height;
nengel@9 4991 i < (line + 1) * smbc->smb_height && i < d->mb_height;
nengel@9 4992 i++)
nengel@9 4993 draw_edges(d, s, i);
nengel@9 4994 }
nengel@9 4995 typedef struct _nx_data_env_0_t_tag
nengel@9 4996 {
nengel@9 4997 struct MBRecContext *__tmp_0_0;
nengel@9 4998 SliceBufferEntry *__tmp_1_0;
nengel@9 4999 struct SuperMBContext *__tmp_2_0;
nengel@9 5000 struct SuperMBTask *__tmp_3_0;
nengel@9 5001 struct SuperMBTask *__tmp_4_0;
nengel@9 5002 struct SuperMBTask *__tmp_5_0;
nengel@9 5003 } _nx_data_env_0_t;
nengel@9 5004 static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe);
nengel@9 5005 static void _smp__ol_decode_mb_in_slice_0(_nx_data_env_0_t *const __restrict__ _args)
nengel@9 5006 {
nengel@9 5007 struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 5008 SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 5009 struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 5010 struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 5011 struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0;
nengel@9 5012 struct SuperMBTask *___tmp_5_0 = _args->__tmp_5_0;
nengel@9 5013 /* Translation is done by the runtime */
nengel@9 5014 {
nengel@9 5015 decode_super_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0));
nengel@9 5016 }
nengel@9 5017 }
nengel@9 5018 typedef struct _nx_data_env_1_t_tag
nengel@9 5019 {
nengel@9 5020 struct MBRecContext *__tmp_0_0;
nengel@9 5021 SliceBufferEntry *__tmp_1_0;
nengel@9 5022 struct SuperMBContext *__tmp_2_0;
nengel@9 5023 struct SuperMBTask *__tmp_3_0;
nengel@9 5024 int __tmp_4_0;
nengel@9 5025 } _nx_data_env_1_t;
nengel@9 5026 static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe);
nengel@9 5027 static void _smp__ol_decode_mb_in_slice_1(_nx_data_env_1_t *const __restrict__ _args)
nengel@9 5028 {
nengel@9 5029 struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 5030 SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 5031 struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 5032 struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 5033 int ___tmp_4_0 = _args->__tmp_4_0;
nengel@9 5034 /* Translation is done by the runtime */
nengel@9 5035 {
nengel@9 5036 draw_edges_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0));
nengel@9 5037 }
nengel@9 5038 }
nengel@9 5039 static void decode_mb_in_slice(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe)
nengel@9 5040 {
nengel@9 5041 int i, j;
nengel@9 5042 SuperMBContext *smbc = acquire_smbc(h);
nengel@9 5043 int smb_height = smbc->nsmb_height, smb_width = smbc->nsmb_width;
nengel@9 5044 SuperMBTask *smbs = smbc->smbs[0];
nengel@9 5045 SuperMBTask *sm = ((void *) 0), *sml, *smur;
nengel@9 5046 for (j = 0;
nengel@9 5047 j < smb_height;
nengel@9 5048 j++)
nengel@9 5049 {
nengel@9 5050 for (i = 0;
nengel@9 5051 i < smb_width;
nengel@9 5052 i++)
nengel@9 5053 {
nengel@9 5054 sm = smbs + j * smb_width + i;
nengel@9 5055 sml = sm - ((i > 0) ? 1 : 0);
nengel@9 5056 smur = sm + (((i < smb_width - 1) && (j > 0)) ? - smb_width + 1 : 0);
nengel@9 5057 {
nengel@9 5058 struct MBRecContext *__tmp_0 = d;
nengel@9 5059 SliceBufferEntry *__tmp_1 = sbe;
nengel@9 5060 struct SuperMBContext *__tmp_2 = smbc;
nengel@9 5061 struct SuperMBTask *__tmp_3 = sml;
nengel@9 5062 struct SuperMBTask *__tmp_4 = smur;
nengel@9 5063 struct SuperMBTask *__tmp_5 = sm;
nengel@9 5064 {
nengel@9 5065 /* SMP device descriptor */
nengel@9 5066 static nanos_smp_args_t _ol_decode_mb_in_slice_0_smp_args = {(void (*)(void *)) _smp__ol_decode_mb_in_slice_0};
nengel@9 5067 _nx_data_env_0_t *ol_args = (_nx_data_env_0_t *) 0;
nengel@9 5068 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 5069 struct nanos_const_wd_definition_local_t
nengel@9 5070 {
nengel@9 5071 nanos_const_wd_definition_t base;
nengel@9 5072 nanos_device_t devices[1];
nengel@9 5073 };
nengel@9 5074 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 5075 {
nengel@9 5076 {
nengel@9 5077 0,
nengel@9 5078 1,
nengel@9 5079 0,
nengel@9 5080 0,
nengel@9 5081 0,
nengel@9 5082 0,
nengel@9 5083 0,
nengel@9 5084 0
nengel@9 5085 },
nengel@9 5086 __alignof__(_nx_data_env_0_t),
nengel@9 5087 0,
nengel@9 5088 1
nengel@9 5089 },
nengel@9 5090 {{
nengel@9 5091 nanos_smp_factory,
nengel@9 5092 &_ol_decode_mb_in_slice_0_smp_args
nengel@9 5093 }}
nengel@9 5094 };
nengel@9 5095 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 5096 nanos_err_t err;
nengel@9 5097 dyn_props.priority = 0;
nengel@9 5098 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_0_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 5099 if (err != NANOS_OK)
nengel@9 5100 nanos_handle_error(err);
nengel@9 5101 if (wd != (nanos_wd_t) 0)
nengel@9 5102 {
nengel@9 5103 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 5104 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 5105 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 5106 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 5107 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 5108 ol_args->__tmp_5_0 = __tmp_5;
nengel@9 5109 nanos_dependence_t _dependences[5] = {
nengel@9 5110 {
nengel@9 5111 (void **) &ol_args->__tmp_0_0,
nengel@9 5112 ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0),
nengel@9 5113 {
nengel@9 5114 1,
nengel@9 5115 0,
nengel@9 5116 1,
nengel@9 5117 0
nengel@9 5118 },
nengel@9 5119 sizeof(struct MBRecContext)
nengel@9 5120 },
nengel@9 5121 {
nengel@9 5122 (void **) &ol_args->__tmp_1_0,
nengel@9 5123 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 5124 {
nengel@9 5125 1,
nengel@9 5126 0,
nengel@9 5127 1,
nengel@9 5128 0
nengel@9 5129 },
nengel@9 5130 sizeof(SliceBufferEntry)
nengel@9 5131 },
nengel@9 5132 {
nengel@9 5133 (void **) &ol_args->__tmp_3_0,
nengel@9 5134 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 5135 {
nengel@9 5136 1,
nengel@9 5137 0,
nengel@9 5138 1,
nengel@9 5139 0
nengel@9 5140 },
nengel@9 5141 sizeof(struct SuperMBTask)
nengel@9 5142 },
nengel@9 5143 {
nengel@9 5144 (void **) &ol_args->__tmp_4_0,
nengel@9 5145 ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0),
nengel@9 5146 {
nengel@9 5147 1,
nengel@9 5148 0,
nengel@9 5149 1,
nengel@9 5150 0
nengel@9 5151 },
nengel@9 5152 sizeof(struct SuperMBTask)
nengel@9 5153 },
nengel@9 5154 {
nengel@9 5155 (void **) &ol_args->__tmp_5_0,
nengel@9 5156 ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0),
nengel@9 5157 {
nengel@9 5158 1,
nengel@9 5159 1,
nengel@9 5160 1,
nengel@9 5161 0
nengel@9 5162 },
nengel@9 5163 sizeof(struct SuperMBTask)
nengel@9 5164 }
nengel@9 5165 };
nengel@9 5166 err = nanos_submit(wd, 5, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 5167 if (err != NANOS_OK)
nengel@9 5168 nanos_handle_error(err);
nengel@9 5169 }
nengel@9 5170 else
nengel@9 5171 {
nengel@9 5172 _nx_data_env_0_t imm_args;
nengel@9 5173 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 5174 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 5175 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 5176 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 5177 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 5178 imm_args.__tmp_5_0 = __tmp_5;
nengel@9 5179 nanos_dependence_t _dependences[5] = {
nengel@9 5180 {
nengel@9 5181 (void **) &imm_args.__tmp_0_0,
nengel@9 5182 ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0),
nengel@9 5183 {
nengel@9 5184 1,
nengel@9 5185 0,
nengel@9 5186 1,
nengel@9 5187 0
nengel@9 5188 },
nengel@9 5189 sizeof(struct MBRecContext)
nengel@9 5190 },
nengel@9 5191 {
nengel@9 5192 (void **) &imm_args.__tmp_1_0,
nengel@9 5193 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 5194 {
nengel@9 5195 1,
nengel@9 5196 0,
nengel@9 5197 1,
nengel@9 5198 0
nengel@9 5199 },
nengel@9 5200 sizeof(SliceBufferEntry)
nengel@9 5201 },
nengel@9 5202 {
nengel@9 5203 (void **) &imm_args.__tmp_3_0,
nengel@9 5204 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 5205 {
nengel@9 5206 1,
nengel@9 5207 0,
nengel@9 5208 1,
nengel@9 5209 0
nengel@9 5210 },
nengel@9 5211 sizeof(struct SuperMBTask)
nengel@9 5212 },
nengel@9 5213 {
nengel@9 5214 (void **) &imm_args.__tmp_4_0,
nengel@9 5215 ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0),
nengel@9 5216 {
nengel@9 5217 1,
nengel@9 5218 0,
nengel@9 5219 1,
nengel@9 5220 0
nengel@9 5221 },
nengel@9 5222 sizeof(struct SuperMBTask)
nengel@9 5223 },
nengel@9 5224 {
nengel@9 5225 (void **) &imm_args.__tmp_5_0,
nengel@9 5226 ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0),
nengel@9 5227 {
nengel@9 5228 1,
nengel@9 5229 1,
nengel@9 5230 1,
nengel@9 5231 0
nengel@9 5232 },
nengel@9 5233 sizeof(struct SuperMBTask)
nengel@9 5234 }
nengel@9 5235 };
nengel@9 5236 dyn_props.priority = 0;
nengel@9 5237 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_0_t), &imm_args, 5, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 5238 if (err != NANOS_OK)
nengel@9 5239 nanos_handle_error(err);
nengel@9 5240 }
nengel@9 5241 }
nengel@9 5242 ;
nengel@9 5243 }
nengel@9 5244 }
nengel@9 5245 {
nengel@9 5246 struct MBRecContext *__tmp_0 = d;
nengel@9 5247 SliceBufferEntry *__tmp_1 = sbe;
nengel@9 5248 struct SuperMBContext *__tmp_2 = smbc;
nengel@9 5249 struct SuperMBTask *__tmp_3 = sm;
nengel@9 5250 int __tmp_4 = j;
nengel@9 5251 {
nengel@9 5252 /* SMP device descriptor */
nengel@9 5253 static nanos_smp_args_t _ol_decode_mb_in_slice_1_smp_args = {(void (*)(void *)) _smp__ol_decode_mb_in_slice_1};
nengel@9 5254 _nx_data_env_1_t *ol_args = (_nx_data_env_1_t *) 0;
nengel@9 5255 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 5256 struct nanos_const_wd_definition_local_t
nengel@9 5257 {
nengel@9 5258 nanos_const_wd_definition_t base;
nengel@9 5259 nanos_device_t devices[1];
nengel@9 5260 };
nengel@9 5261 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 5262 {
nengel@9 5263 {
nengel@9 5264 0,
nengel@9 5265 1,
nengel@9 5266 0,
nengel@9 5267 0,
nengel@9 5268 0,
nengel@9 5269 0,
nengel@9 5270 0,
nengel@9 5271 0
nengel@9 5272 },
nengel@9 5273 __alignof__(_nx_data_env_1_t),
nengel@9 5274 0,
nengel@9 5275 1
nengel@9 5276 },
nengel@9 5277 {{
nengel@9 5278 nanos_smp_factory,
nengel@9 5279 &_ol_decode_mb_in_slice_1_smp_args
nengel@9 5280 }}
nengel@9 5281 };
nengel@9 5282 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 5283 nanos_err_t err;
nengel@9 5284 dyn_props.priority = 0;
nengel@9 5285 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_1_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 5286 if (err != NANOS_OK)
nengel@9 5287 nanos_handle_error(err);
nengel@9 5288 if (wd != (nanos_wd_t) 0)
nengel@9 5289 {
nengel@9 5290 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 5291 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 5292 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 5293 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 5294 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 5295 nanos_dependence_t _dependences[3] = {
nengel@9 5296 {
nengel@9 5297 (void **) &ol_args->__tmp_0_0,
nengel@9 5298 ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0),
nengel@9 5299 {
nengel@9 5300 1,
nengel@9 5301 0,
nengel@9 5302 1,
nengel@9 5303 0
nengel@9 5304 },
nengel@9 5305 sizeof(struct MBRecContext)
nengel@9 5306 },
nengel@9 5307 {
nengel@9 5308 (void **) &ol_args->__tmp_1_0,
nengel@9 5309 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 5310 {
nengel@9 5311 1,
nengel@9 5312 0,
nengel@9 5313 1,
nengel@9 5314 0
nengel@9 5315 },
nengel@9 5316 sizeof(SliceBufferEntry)
nengel@9 5317 },
nengel@9 5318 {
nengel@9 5319 (void **) &ol_args->__tmp_3_0,
nengel@9 5320 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 5321 {
nengel@9 5322 1,
nengel@9 5323 1,
nengel@9 5324 1,
nengel@9 5325 0
nengel@9 5326 },
nengel@9 5327 sizeof(struct SuperMBTask)
nengel@9 5328 }
nengel@9 5329 };
nengel@9 5330 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 5331 if (err != NANOS_OK)
nengel@9 5332 nanos_handle_error(err);
nengel@9 5333 }
nengel@9 5334 else
nengel@9 5335 {
nengel@9 5336 _nx_data_env_1_t imm_args;
nengel@9 5337 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 5338 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 5339 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 5340 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 5341 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 5342 nanos_dependence_t _dependences[3] = {
nengel@9 5343 {
nengel@9 5344 (void **) &imm_args.__tmp_0_0,
nengel@9 5345 ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0),
nengel@9 5346 {
nengel@9 5347 1,
nengel@9 5348 0,
nengel@9 5349 1,
nengel@9 5350 0
nengel@9 5351 },
nengel@9 5352 sizeof(struct MBRecContext)
nengel@9 5353 },
nengel@9 5354 {
nengel@9 5355 (void **) &imm_args.__tmp_1_0,
nengel@9 5356 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 5357 {
nengel@9 5358 1,
nengel@9 5359 0,
nengel@9 5360 1,
nengel@9 5361 0
nengel@9 5362 },
nengel@9 5363 sizeof(SliceBufferEntry)
nengel@9 5364 },
nengel@9 5365 {
nengel@9 5366 (void **) &imm_args.__tmp_3_0,
nengel@9 5367 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 5368 {
nengel@9 5369 1,
nengel@9 5370 1,
nengel@9 5371 1,
nengel@9 5372 0
nengel@9 5373 },
nengel@9 5374 sizeof(struct SuperMBTask)
nengel@9 5375 }
nengel@9 5376 };
nengel@9 5377 dyn_props.priority = 0;
nengel@9 5378 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_1_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 5379 if (err != NANOS_OK)
nengel@9 5380 nanos_handle_error(err);
nengel@9 5381 }
nengel@9 5382 }
nengel@9 5383 ;
nengel@9 5384 }
nengel@9 5385 }
nengel@9 5386 {
nengel@9 5387 struct _dependence_holder
nengel@9 5388 {
nengel@9 5389 struct SuperMBTask *dep_0;
nengel@9 5390 } _dep_holder = {&(*sm)};
nengel@9 5391 nanos_dependence_t _wait_dependences[1] = {{
nengel@9 5392 (void **) &_dep_holder.dep_0,
nengel@9 5393 ((char *) ((sm)) - (char *) _dep_holder.dep_0),
nengel@9 5394 {
nengel@9 5395 1,
nengel@9 5396 0,
nengel@9 5397 0,
nengel@9 5398 0
nengel@9 5399 },
nengel@9 5400 sizeof (*sm)
nengel@9 5401 }};
nengel@9 5402 nanos_wait_on(1, _wait_dependences);
nengel@9 5403 }
nengel@9 5404 release_smbc(h, smbc);
nengel@9 5405 }
nengel@9 5406 __attribute__((weak)) nanos_lock_t _nx_u_dpb_critical_lock = {NANOS_LOCK_FREE};
nengel@9 5407 static void decode_slice_mb_task(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe)
nengel@9 5408 {
nengel@9 5409 H264Slice *s = &sbe->slice;
nengel@9 5410 for (int i = 0;
nengel@9 5411 i < 2;
nengel@9 5412 i++)
nengel@9 5413 {
nengel@9 5414 for (int j = 0;
nengel@9 5415 j < s->ref_count[i];
nengel@9 5416 j++)
nengel@9 5417 {
nengel@9 5418 if (s->ref_list_cpn[i][j] == - 1)
nengel@9 5419 continue;
nengel@9 5420 int k;
nengel@9 5421 for (k = 0;
nengel@9 5422 k < h->max_dpb_cnt;
nengel@9 5423 k++)
nengel@9 5424 {
nengel@9 5425 if (h->dpb[k].reference >= 2 && h->dpb[k].cpn == s->ref_list_cpn[i][j])
nengel@9 5426 {
nengel@9 5427 s->dp_ref_list[i][j] = &h->dpb[k];
nengel@9 5428 break;
nengel@9 5429 }
nengel@9 5430 }
nengel@9 5431 }
nengel@9 5432 }
nengel@9 5433 {
nengel@9 5434 nanos_set_lock(&_nx_u_dpb_critical_lock);
nengel@9 5435 get_dpb_entry(h, s);
nengel@9 5436 nanos_unset_lock(&_nx_u_dpb_critical_lock);
nengel@9 5437 }
nengel@9 5438 if (!h->no_mbd)
nengel@9 5439 {
nengel@9 5440 decode_mb_in_slice(h, d, sbe);
nengel@9 5441 }
nengel@9 5442 for (int i = 0;
nengel@9 5443 i < s->release_cnt;
nengel@9 5444 i++)
nengel@9 5445 {
nengel@9 5446 for (int j = 0;
nengel@9 5447 j < h->max_dpb_cnt;
nengel@9 5448 j++)
nengel@9 5449 {
nengel@9 5450 if (h->dpb[j].cpn == s->release_ref_cpn[i])
nengel@9 5451 {
nengel@9 5452 {
nengel@9 5453 nanos_set_lock(&_nx_u_dpb_critical_lock);
nengel@9 5454 release_dpb_entry(h, &h->dpb[j], 2);
nengel@9 5455 nanos_unset_lock(&_nx_u_dpb_critical_lock);
nengel@9 5456 }
nengel@9 5457 break;
nengel@9 5458 }
nengel@9 5459 }
nengel@9 5460 }
nengel@9 5461 s->release_cnt = 0;
nengel@9 5462 }
nengel@9 5463 static void decode_3dwave_super_mb_task(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc, SuperMBTask *ml, SuperMBTask *mur, SuperMBTask *mprev, SuperMBTask *m)
nengel@9 5464 {
nengel@9 5465 H264Slice *s = &sbe->slice;
nengel@9 5466 H264Mb *mbs = sbe->mbs;
nengel@9 5467 decode_super_mb_block(d, s, smbc, mbs, m->smb_x, m->smb_y);
nengel@9 5468 }
nengel@9 5469 static void init_ref_list_and_get_dpb_task(H264Context *h, MBRecContext *d, SliceBufferEntry *sbe, int *init)
nengel@9 5470 {
nengel@9 5471 H264Slice *s = &sbe->slice;
nengel@9 5472 for (int i = 0;
nengel@9 5473 i < 2;
nengel@9 5474 i++)
nengel@9 5475 {
nengel@9 5476 for (int j = 0;
nengel@9 5477 j < s->ref_count[i];
nengel@9 5478 j++)
nengel@9 5479 {
nengel@9 5480 if (s->ref_list_cpn[i][j] == - 1)
nengel@9 5481 continue;
nengel@9 5482 int k;
nengel@9 5483 for (k = 0;
nengel@9 5484 k < h->max_dpb_cnt;
nengel@9 5485 k++)
nengel@9 5486 {
nengel@9 5487 if (h->dpb[k].reference >= 2 && h->dpb[k].cpn == s->ref_list_cpn[i][j])
nengel@9 5488 {
nengel@9 5489 s->dp_ref_list[i][j] = &h->dpb[k];
nengel@9 5490 break;
nengel@9 5491 }
nengel@9 5492 }
nengel@9 5493 }
nengel@9 5494 }
nengel@9 5495 {
nengel@9 5496 nanos_set_lock(&_nx_u_dpb_critical_lock);
nengel@9 5497 get_dpb_entry(h, s);
nengel@9 5498 nanos_unset_lock(&_nx_u_dpb_critical_lock);
nengel@9 5499 }
nengel@9 5500 }
nengel@9 5501 typedef struct _nx_data_env_2_t_tag
nengel@9 5502 {
nengel@9 5503 struct MBRecContext *__tmp_0_0;
nengel@9 5504 SliceBufferEntry *__tmp_1_0;
nengel@9 5505 struct SuperMBContext *__tmp_2_0;
nengel@9 5506 struct SuperMBTask *__tmp_3_0;
nengel@9 5507 struct SuperMBTask *__tmp_4_0;
nengel@9 5508 struct SuperMBTask *__tmp_5_0;
nengel@9 5509 struct SuperMBTask *__tmp_6_0;
nengel@9 5510 } _nx_data_env_2_t;
nengel@9 5511 static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc);
nengel@9 5512 static void _smp__ol_add_decode_slice_3dwave_tasks_2(_nx_data_env_2_t *const __restrict__ _args)
nengel@9 5513 {
nengel@9 5514 struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 5515 SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 5516 struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 5517 struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 5518 struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0;
nengel@9 5519 struct SuperMBTask *___tmp_5_0 = _args->__tmp_5_0;
nengel@9 5520 struct SuperMBTask *___tmp_6_0 = _args->__tmp_6_0;
nengel@9 5521 /* Translation is done by the runtime */
nengel@9 5522 {
nengel@9 5523 decode_3dwave_super_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0), (___tmp_6_0));
nengel@9 5524 }
nengel@9 5525 }
nengel@9 5526 typedef struct _nx_data_env_3_t_tag
nengel@9 5527 {
nengel@9 5528 struct MBRecContext *__tmp_0_0;
nengel@9 5529 SliceBufferEntry *__tmp_1_0;
nengel@9 5530 struct SuperMBContext *__tmp_2_0;
nengel@9 5531 struct SuperMBTask *__tmp_3_0;
nengel@9 5532 int __tmp_4_0;
nengel@9 5533 } _nx_data_env_3_t;
nengel@9 5534 static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc);
nengel@9 5535 static void _smp__ol_add_decode_slice_3dwave_tasks_3(_nx_data_env_3_t *const __restrict__ _args)
nengel@9 5536 {
nengel@9 5537 struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 5538 SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 5539 struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 5540 struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 5541 int ___tmp_4_0 = _args->__tmp_4_0;
nengel@9 5542 /* Translation is done by the runtime */
nengel@9 5543 {
nengel@9 5544 draw_edges_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0));
nengel@9 5545 }
nengel@9 5546 }
nengel@9 5547 typedef struct _nx_data_env_4_t_tag
nengel@9 5548 {
nengel@9 5549 struct MBRecContext *__tmp_0_0;
nengel@9 5550 SliceBufferEntry *__tmp_1_0;
nengel@9 5551 struct SuperMBContext *__tmp_2_0;
nengel@9 5552 struct SuperMBTask *__tmp_3_0;
nengel@9 5553 struct SuperMBTask *__tmp_4_0;
nengel@9 5554 struct SuperMBTask *__tmp_5_0;
nengel@9 5555 } _nx_data_env_4_t;
nengel@9 5556 static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc);
nengel@9 5557 static void _smp__ol_add_decode_slice_3dwave_tasks_4(_nx_data_env_4_t *const __restrict__ _args)
nengel@9 5558 {
nengel@9 5559 struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 5560 SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 5561 struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 5562 struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 5563 struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0;
nengel@9 5564 struct SuperMBTask *___tmp_5_0 = _args->__tmp_5_0;
nengel@9 5565 /* Translation is done by the runtime */
nengel@9 5566 {
nengel@9 5567 decode_super_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0));
nengel@9 5568 }
nengel@9 5569 }
nengel@9 5570 typedef struct _nx_data_env_5_t_tag
nengel@9 5571 {
nengel@9 5572 struct MBRecContext *__tmp_0_0;
nengel@9 5573 SliceBufferEntry *__tmp_1_0;
nengel@9 5574 struct SuperMBContext *__tmp_2_0;
nengel@9 5575 struct SuperMBTask *__tmp_3_0;
nengel@9 5576 int __tmp_4_0;
nengel@9 5577 } _nx_data_env_5_t;
nengel@9 5578 static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc);
nengel@9 5579 static void _smp__ol_add_decode_slice_3dwave_tasks_5(_nx_data_env_5_t *const __restrict__ _args)
nengel@9 5580 {
nengel@9 5581 struct MBRecContext *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 5582 SliceBufferEntry *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 5583 struct SuperMBContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 5584 struct SuperMBTask *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 5585 int ___tmp_4_0 = _args->__tmp_4_0;
nengel@9 5586 /* Translation is done by the runtime */
nengel@9 5587 {
nengel@9 5588 draw_edges_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0));
nengel@9 5589 }
nengel@9 5590 }
nengel@9 5591 static SuperMBTask *add_decode_slice_3dwave_tasks(MBRecContext *d, SliceBufferEntry *sbe, SuperMBContext *smbc)
nengel@9 5592 {
nengel@9 5593 int i, j;
nengel@9 5594 int smb_3d_height = smbc->nsmb_3dheight;
nengel@9 5595 int smb_height = smbc->nsmb_height, smb_width = smbc->nsmb_width;
nengel@9 5596 int smb_diff_prev = smb_height - smb_3d_height;
nengel@9 5597 SuperMBTask *sm = ((void *) 0), *sml, *smur, *smprev;
nengel@9 5598 SuperMBTask *smbs = smbc->smbs[smbc->index++];
nengel@9 5599 smbc->index %= 2;
nengel@9 5600 SuperMBTask *smbs_prev = smbc->smbs[smbc->index];
nengel@9 5601 for (j = 0;
nengel@9 5602 j < smb_3d_height;
nengel@9 5603 j++)
nengel@9 5604 {
nengel@9 5605 for (i = 0;
nengel@9 5606 i < smb_width;
nengel@9 5607 i++)
nengel@9 5608 {
nengel@9 5609 sm = smbs + j * smb_width + i;
nengel@9 5610 sml = sm - ((i > 0) ? 1 : 0);
nengel@9 5611 smur = sm + (((i < smb_width - 1) && (j > 0)) ? - smb_width + 1 : 0);
nengel@9 5612 smprev = smbs_prev + (j + smb_diff_prev + 1) * smb_width - 1;
nengel@9 5613 {
nengel@9 5614 struct MBRecContext *__tmp_0 = d;
nengel@9 5615 SliceBufferEntry *__tmp_1 = sbe;
nengel@9 5616 struct SuperMBContext *__tmp_2 = smbc;
nengel@9 5617 struct SuperMBTask *__tmp_3 = sml;
nengel@9 5618 struct SuperMBTask *__tmp_4 = smur;
nengel@9 5619 struct SuperMBTask *__tmp_5 = smprev;
nengel@9 5620 struct SuperMBTask *__tmp_6 = sm;
nengel@9 5621 {
nengel@9 5622 /* SMP device descriptor */
nengel@9 5623 static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_2_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_2};
nengel@9 5624 _nx_data_env_2_t *ol_args = (_nx_data_env_2_t *) 0;
nengel@9 5625 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 5626 struct nanos_const_wd_definition_local_t
nengel@9 5627 {
nengel@9 5628 nanos_const_wd_definition_t base;
nengel@9 5629 nanos_device_t devices[1];
nengel@9 5630 };
nengel@9 5631 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 5632 {
nengel@9 5633 {
nengel@9 5634 0,
nengel@9 5635 1,
nengel@9 5636 0,
nengel@9 5637 0,
nengel@9 5638 0,
nengel@9 5639 0,
nengel@9 5640 0,
nengel@9 5641 0
nengel@9 5642 },
nengel@9 5643 __alignof__(_nx_data_env_2_t),
nengel@9 5644 0,
nengel@9 5645 1
nengel@9 5646 },
nengel@9 5647 {{
nengel@9 5648 nanos_smp_factory,
nengel@9 5649 &_ol_add_decode_slice_3dwave_tasks_2_smp_args
nengel@9 5650 }}
nengel@9 5651 };
nengel@9 5652 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 5653 nanos_err_t err;
nengel@9 5654 dyn_props.priority = 0;
nengel@9 5655 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_2_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 5656 if (err != NANOS_OK)
nengel@9 5657 nanos_handle_error(err);
nengel@9 5658 if (wd != (nanos_wd_t) 0)
nengel@9 5659 {
nengel@9 5660 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 5661 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 5662 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 5663 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 5664 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 5665 ol_args->__tmp_5_0 = __tmp_5;
nengel@9 5666 ol_args->__tmp_6_0 = __tmp_6;
nengel@9 5667 nanos_dependence_t _dependences[6] = {
nengel@9 5668 {
nengel@9 5669 (void **) &ol_args->__tmp_0_0,
nengel@9 5670 ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0),
nengel@9 5671 {
nengel@9 5672 1,
nengel@9 5673 0,
nengel@9 5674 1,
nengel@9 5675 0
nengel@9 5676 },
nengel@9 5677 sizeof(struct MBRecContext)
nengel@9 5678 },
nengel@9 5679 {
nengel@9 5680 (void **) &ol_args->__tmp_1_0,
nengel@9 5681 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 5682 {
nengel@9 5683 1,
nengel@9 5684 0,
nengel@9 5685 1,
nengel@9 5686 0
nengel@9 5687 },
nengel@9 5688 sizeof(SliceBufferEntry)
nengel@9 5689 },
nengel@9 5690 {
nengel@9 5691 (void **) &ol_args->__tmp_3_0,
nengel@9 5692 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 5693 {
nengel@9 5694 1,
nengel@9 5695 0,
nengel@9 5696 1,
nengel@9 5697 0
nengel@9 5698 },
nengel@9 5699 sizeof(struct SuperMBTask)
nengel@9 5700 },
nengel@9 5701 {
nengel@9 5702 (void **) &ol_args->__tmp_4_0,
nengel@9 5703 ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0),
nengel@9 5704 {
nengel@9 5705 1,
nengel@9 5706 0,
nengel@9 5707 1,
nengel@9 5708 0
nengel@9 5709 },
nengel@9 5710 sizeof(struct SuperMBTask)
nengel@9 5711 },
nengel@9 5712 {
nengel@9 5713 (void **) &ol_args->__tmp_5_0,
nengel@9 5714 ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0),
nengel@9 5715 {
nengel@9 5716 1,
nengel@9 5717 0,
nengel@9 5718 1,
nengel@9 5719 0
nengel@9 5720 },
nengel@9 5721 sizeof(struct SuperMBTask)
nengel@9 5722 },
nengel@9 5723 {
nengel@9 5724 (void **) &ol_args->__tmp_6_0,
nengel@9 5725 ((char *) ((__tmp_6)) - (char *) ol_args->__tmp_6_0),
nengel@9 5726 {
nengel@9 5727 1,
nengel@9 5728 1,
nengel@9 5729 1,
nengel@9 5730 0
nengel@9 5731 },
nengel@9 5732 sizeof(struct SuperMBTask)
nengel@9 5733 }
nengel@9 5734 };
nengel@9 5735 err = nanos_submit(wd, 6, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 5736 if (err != NANOS_OK)
nengel@9 5737 nanos_handle_error(err);
nengel@9 5738 }
nengel@9 5739 else
nengel@9 5740 {
nengel@9 5741 _nx_data_env_2_t imm_args;
nengel@9 5742 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 5743 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 5744 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 5745 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 5746 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 5747 imm_args.__tmp_5_0 = __tmp_5;
nengel@9 5748 imm_args.__tmp_6_0 = __tmp_6;
nengel@9 5749 nanos_dependence_t _dependences[6] = {
nengel@9 5750 {
nengel@9 5751 (void **) &imm_args.__tmp_0_0,
nengel@9 5752 ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0),
nengel@9 5753 {
nengel@9 5754 1,
nengel@9 5755 0,
nengel@9 5756 1,
nengel@9 5757 0
nengel@9 5758 },
nengel@9 5759 sizeof(struct MBRecContext)
nengel@9 5760 },
nengel@9 5761 {
nengel@9 5762 (void **) &imm_args.__tmp_1_0,
nengel@9 5763 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 5764 {
nengel@9 5765 1,
nengel@9 5766 0,
nengel@9 5767 1,
nengel@9 5768 0
nengel@9 5769 },
nengel@9 5770 sizeof(SliceBufferEntry)
nengel@9 5771 },
nengel@9 5772 {
nengel@9 5773 (void **) &imm_args.__tmp_3_0,
nengel@9 5774 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 5775 {
nengel@9 5776 1,
nengel@9 5777 0,
nengel@9 5778 1,
nengel@9 5779 0
nengel@9 5780 },
nengel@9 5781 sizeof(struct SuperMBTask)
nengel@9 5782 },
nengel@9 5783 {
nengel@9 5784 (void **) &imm_args.__tmp_4_0,
nengel@9 5785 ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0),
nengel@9 5786 {
nengel@9 5787 1,
nengel@9 5788 0,
nengel@9 5789 1,
nengel@9 5790 0
nengel@9 5791 },
nengel@9 5792 sizeof(struct SuperMBTask)
nengel@9 5793 },
nengel@9 5794 {
nengel@9 5795 (void **) &imm_args.__tmp_5_0,
nengel@9 5796 ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0),
nengel@9 5797 {
nengel@9 5798 1,
nengel@9 5799 0,
nengel@9 5800 1,
nengel@9 5801 0
nengel@9 5802 },
nengel@9 5803 sizeof(struct SuperMBTask)
nengel@9 5804 },
nengel@9 5805 {
nengel@9 5806 (void **) &imm_args.__tmp_6_0,
nengel@9 5807 ((char *) ((__tmp_6)) - (char *) imm_args.__tmp_6_0),
nengel@9 5808 {
nengel@9 5809 1,
nengel@9 5810 1,
nengel@9 5811 1,
nengel@9 5812 0
nengel@9 5813 },
nengel@9 5814 sizeof(struct SuperMBTask)
nengel@9 5815 }
nengel@9 5816 };
nengel@9 5817 dyn_props.priority = 0;
nengel@9 5818 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_2_t), &imm_args, 6, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 5819 if (err != NANOS_OK)
nengel@9 5820 nanos_handle_error(err);
nengel@9 5821 }
nengel@9 5822 }
nengel@9 5823 ;
nengel@9 5824 }
nengel@9 5825 }
nengel@9 5826 {
nengel@9 5827 struct MBRecContext *__tmp_0 = d;
nengel@9 5828 SliceBufferEntry *__tmp_1 = sbe;
nengel@9 5829 struct SuperMBContext *__tmp_2 = smbc;
nengel@9 5830 struct SuperMBTask *__tmp_3 = sm;
nengel@9 5831 int __tmp_4 = j;
nengel@9 5832 {
nengel@9 5833 /* SMP device descriptor */
nengel@9 5834 static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_3_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_3};
nengel@9 5835 _nx_data_env_3_t *ol_args = (_nx_data_env_3_t *) 0;
nengel@9 5836 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 5837 struct nanos_const_wd_definition_local_t
nengel@9 5838 {
nengel@9 5839 nanos_const_wd_definition_t base;
nengel@9 5840 nanos_device_t devices[1];
nengel@9 5841 };
nengel@9 5842 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 5843 {
nengel@9 5844 {
nengel@9 5845 0,
nengel@9 5846 1,
nengel@9 5847 0,
nengel@9 5848 0,
nengel@9 5849 0,
nengel@9 5850 0,
nengel@9 5851 0,
nengel@9 5852 0
nengel@9 5853 },
nengel@9 5854 __alignof__(_nx_data_env_3_t),
nengel@9 5855 0,
nengel@9 5856 1
nengel@9 5857 },
nengel@9 5858 {{
nengel@9 5859 nanos_smp_factory,
nengel@9 5860 &_ol_add_decode_slice_3dwave_tasks_3_smp_args
nengel@9 5861 }}
nengel@9 5862 };
nengel@9 5863 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 5864 nanos_err_t err;
nengel@9 5865 dyn_props.priority = 0;
nengel@9 5866 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_3_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 5867 if (err != NANOS_OK)
nengel@9 5868 nanos_handle_error(err);
nengel@9 5869 if (wd != (nanos_wd_t) 0)
nengel@9 5870 {
nengel@9 5871 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 5872 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 5873 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 5874 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 5875 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 5876 nanos_dependence_t _dependences[3] = {
nengel@9 5877 {
nengel@9 5878 (void **) &ol_args->__tmp_0_0,
nengel@9 5879 ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0),
nengel@9 5880 {
nengel@9 5881 1,
nengel@9 5882 0,
nengel@9 5883 1,
nengel@9 5884 0
nengel@9 5885 },
nengel@9 5886 sizeof(struct MBRecContext)
nengel@9 5887 },
nengel@9 5888 {
nengel@9 5889 (void **) &ol_args->__tmp_1_0,
nengel@9 5890 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 5891 {
nengel@9 5892 1,
nengel@9 5893 0,
nengel@9 5894 1,
nengel@9 5895 0
nengel@9 5896 },
nengel@9 5897 sizeof(SliceBufferEntry)
nengel@9 5898 },
nengel@9 5899 {
nengel@9 5900 (void **) &ol_args->__tmp_3_0,
nengel@9 5901 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 5902 {
nengel@9 5903 1,
nengel@9 5904 1,
nengel@9 5905 1,
nengel@9 5906 0
nengel@9 5907 },
nengel@9 5908 sizeof(struct SuperMBTask)
nengel@9 5909 }
nengel@9 5910 };
nengel@9 5911 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 5912 if (err != NANOS_OK)
nengel@9 5913 nanos_handle_error(err);
nengel@9 5914 }
nengel@9 5915 else
nengel@9 5916 {
nengel@9 5917 _nx_data_env_3_t imm_args;
nengel@9 5918 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 5919 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 5920 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 5921 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 5922 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 5923 nanos_dependence_t _dependences[3] = {
nengel@9 5924 {
nengel@9 5925 (void **) &imm_args.__tmp_0_0,
nengel@9 5926 ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0),
nengel@9 5927 {
nengel@9 5928 1,
nengel@9 5929 0,
nengel@9 5930 1,
nengel@9 5931 0
nengel@9 5932 },
nengel@9 5933 sizeof(struct MBRecContext)
nengel@9 5934 },
nengel@9 5935 {
nengel@9 5936 (void **) &imm_args.__tmp_1_0,
nengel@9 5937 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 5938 {
nengel@9 5939 1,
nengel@9 5940 0,
nengel@9 5941 1,
nengel@9 5942 0
nengel@9 5943 },
nengel@9 5944 sizeof(SliceBufferEntry)
nengel@9 5945 },
nengel@9 5946 {
nengel@9 5947 (void **) &imm_args.__tmp_3_0,
nengel@9 5948 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 5949 {
nengel@9 5950 1,
nengel@9 5951 1,
nengel@9 5952 1,
nengel@9 5953 0
nengel@9 5954 },
nengel@9 5955 sizeof(struct SuperMBTask)
nengel@9 5956 }
nengel@9 5957 };
nengel@9 5958 dyn_props.priority = 0;
nengel@9 5959 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_3_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 5960 if (err != NANOS_OK)
nengel@9 5961 nanos_handle_error(err);
nengel@9 5962 }
nengel@9 5963 }
nengel@9 5964 ;
nengel@9 5965 }
nengel@9 5966 }
nengel@9 5967 for (;
nengel@9 5968 j < smb_height;
nengel@9 5969 j++)
nengel@9 5970 {
nengel@9 5971 for (i = 0;
nengel@9 5972 i < smb_width;
nengel@9 5973 i++)
nengel@9 5974 {
nengel@9 5975 sm = smbs + j * smb_width + i;
nengel@9 5976 sml = sm - ((i > 0) ? 1 : 0);
nengel@9 5977 smur = sm + (((i < smb_width - 1) && (j > 0)) ? - smb_width + 1 : 0);
nengel@9 5978 {
nengel@9 5979 struct MBRecContext *__tmp_0 = d;
nengel@9 5980 SliceBufferEntry *__tmp_1 = sbe;
nengel@9 5981 struct SuperMBContext *__tmp_2 = smbc;
nengel@9 5982 struct SuperMBTask *__tmp_3 = sml;
nengel@9 5983 struct SuperMBTask *__tmp_4 = smur;
nengel@9 5984 struct SuperMBTask *__tmp_5 = sm;
nengel@9 5985 {
nengel@9 5986 /* SMP device descriptor */
nengel@9 5987 static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_4_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_4};
nengel@9 5988 _nx_data_env_4_t *ol_args = (_nx_data_env_4_t *) 0;
nengel@9 5989 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 5990 struct nanos_const_wd_definition_local_t
nengel@9 5991 {
nengel@9 5992 nanos_const_wd_definition_t base;
nengel@9 5993 nanos_device_t devices[1];
nengel@9 5994 };
nengel@9 5995 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 5996 {
nengel@9 5997 {
nengel@9 5998 0,
nengel@9 5999 1,
nengel@9 6000 0,
nengel@9 6001 0,
nengel@9 6002 0,
nengel@9 6003 0,
nengel@9 6004 0,
nengel@9 6005 0
nengel@9 6006 },
nengel@9 6007 __alignof__(_nx_data_env_4_t),
nengel@9 6008 0,
nengel@9 6009 1
nengel@9 6010 },
nengel@9 6011 {{
nengel@9 6012 nanos_smp_factory,
nengel@9 6013 &_ol_add_decode_slice_3dwave_tasks_4_smp_args
nengel@9 6014 }}
nengel@9 6015 };
nengel@9 6016 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 6017 nanos_err_t err;
nengel@9 6018 dyn_props.priority = 0;
nengel@9 6019 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_4_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 6020 if (err != NANOS_OK)
nengel@9 6021 nanos_handle_error(err);
nengel@9 6022 if (wd != (nanos_wd_t) 0)
nengel@9 6023 {
nengel@9 6024 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 6025 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 6026 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 6027 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 6028 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 6029 ol_args->__tmp_5_0 = __tmp_5;
nengel@9 6030 nanos_dependence_t _dependences[5] = {
nengel@9 6031 {
nengel@9 6032 (void **) &ol_args->__tmp_0_0,
nengel@9 6033 ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0),
nengel@9 6034 {
nengel@9 6035 1,
nengel@9 6036 0,
nengel@9 6037 1,
nengel@9 6038 0
nengel@9 6039 },
nengel@9 6040 sizeof(struct MBRecContext)
nengel@9 6041 },
nengel@9 6042 {
nengel@9 6043 (void **) &ol_args->__tmp_1_0,
nengel@9 6044 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 6045 {
nengel@9 6046 1,
nengel@9 6047 0,
nengel@9 6048 1,
nengel@9 6049 0
nengel@9 6050 },
nengel@9 6051 sizeof(SliceBufferEntry)
nengel@9 6052 },
nengel@9 6053 {
nengel@9 6054 (void **) &ol_args->__tmp_3_0,
nengel@9 6055 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 6056 {
nengel@9 6057 1,
nengel@9 6058 0,
nengel@9 6059 1,
nengel@9 6060 0
nengel@9 6061 },
nengel@9 6062 sizeof(struct SuperMBTask)
nengel@9 6063 },
nengel@9 6064 {
nengel@9 6065 (void **) &ol_args->__tmp_4_0,
nengel@9 6066 ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0),
nengel@9 6067 {
nengel@9 6068 1,
nengel@9 6069 0,
nengel@9 6070 1,
nengel@9 6071 0
nengel@9 6072 },
nengel@9 6073 sizeof(struct SuperMBTask)
nengel@9 6074 },
nengel@9 6075 {
nengel@9 6076 (void **) &ol_args->__tmp_5_0,
nengel@9 6077 ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0),
nengel@9 6078 {
nengel@9 6079 1,
nengel@9 6080 1,
nengel@9 6081 1,
nengel@9 6082 0
nengel@9 6083 },
nengel@9 6084 sizeof(struct SuperMBTask)
nengel@9 6085 }
nengel@9 6086 };
nengel@9 6087 err = nanos_submit(wd, 5, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 6088 if (err != NANOS_OK)
nengel@9 6089 nanos_handle_error(err);
nengel@9 6090 }
nengel@9 6091 else
nengel@9 6092 {
nengel@9 6093 _nx_data_env_4_t imm_args;
nengel@9 6094 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 6095 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 6096 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 6097 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 6098 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 6099 imm_args.__tmp_5_0 = __tmp_5;
nengel@9 6100 nanos_dependence_t _dependences[5] = {
nengel@9 6101 {
nengel@9 6102 (void **) &imm_args.__tmp_0_0,
nengel@9 6103 ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0),
nengel@9 6104 {
nengel@9 6105 1,
nengel@9 6106 0,
nengel@9 6107 1,
nengel@9 6108 0
nengel@9 6109 },
nengel@9 6110 sizeof(struct MBRecContext)
nengel@9 6111 },
nengel@9 6112 {
nengel@9 6113 (void **) &imm_args.__tmp_1_0,
nengel@9 6114 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 6115 {
nengel@9 6116 1,
nengel@9 6117 0,
nengel@9 6118 1,
nengel@9 6119 0
nengel@9 6120 },
nengel@9 6121 sizeof(SliceBufferEntry)
nengel@9 6122 },
nengel@9 6123 {
nengel@9 6124 (void **) &imm_args.__tmp_3_0,
nengel@9 6125 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 6126 {
nengel@9 6127 1,
nengel@9 6128 0,
nengel@9 6129 1,
nengel@9 6130 0
nengel@9 6131 },
nengel@9 6132 sizeof(struct SuperMBTask)
nengel@9 6133 },
nengel@9 6134 {
nengel@9 6135 (void **) &imm_args.__tmp_4_0,
nengel@9 6136 ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0),
nengel@9 6137 {
nengel@9 6138 1,
nengel@9 6139 0,
nengel@9 6140 1,
nengel@9 6141 0
nengel@9 6142 },
nengel@9 6143 sizeof(struct SuperMBTask)
nengel@9 6144 },
nengel@9 6145 {
nengel@9 6146 (void **) &imm_args.__tmp_5_0,
nengel@9 6147 ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0),
nengel@9 6148 {
nengel@9 6149 1,
nengel@9 6150 1,
nengel@9 6151 1,
nengel@9 6152 0
nengel@9 6153 },
nengel@9 6154 sizeof(struct SuperMBTask)
nengel@9 6155 }
nengel@9 6156 };
nengel@9 6157 dyn_props.priority = 0;
nengel@9 6158 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_4_t), &imm_args, 5, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 6159 if (err != NANOS_OK)
nengel@9 6160 nanos_handle_error(err);
nengel@9 6161 }
nengel@9 6162 }
nengel@9 6163 ;
nengel@9 6164 }
nengel@9 6165 }
nengel@9 6166 {
nengel@9 6167 struct MBRecContext *__tmp_0 = d;
nengel@9 6168 SliceBufferEntry *__tmp_1 = sbe;
nengel@9 6169 struct SuperMBContext *__tmp_2 = smbc;
nengel@9 6170 struct SuperMBTask *__tmp_3 = sm;
nengel@9 6171 int __tmp_4 = j;
nengel@9 6172 {
nengel@9 6173 /* SMP device descriptor */
nengel@9 6174 static nanos_smp_args_t _ol_add_decode_slice_3dwave_tasks_5_smp_args = {(void (*)(void *)) _smp__ol_add_decode_slice_3dwave_tasks_5};
nengel@9 6175 _nx_data_env_5_t *ol_args = (_nx_data_env_5_t *) 0;
nengel@9 6176 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 6177 struct nanos_const_wd_definition_local_t
nengel@9 6178 {
nengel@9 6179 nanos_const_wd_definition_t base;
nengel@9 6180 nanos_device_t devices[1];
nengel@9 6181 };
nengel@9 6182 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 6183 {
nengel@9 6184 {
nengel@9 6185 0,
nengel@9 6186 1,
nengel@9 6187 0,
nengel@9 6188 0,
nengel@9 6189 0,
nengel@9 6190 0,
nengel@9 6191 0,
nengel@9 6192 0
nengel@9 6193 },
nengel@9 6194 __alignof__(_nx_data_env_5_t),
nengel@9 6195 0,
nengel@9 6196 1
nengel@9 6197 },
nengel@9 6198 {{
nengel@9 6199 nanos_smp_factory,
nengel@9 6200 &_ol_add_decode_slice_3dwave_tasks_5_smp_args
nengel@9 6201 }}
nengel@9 6202 };
nengel@9 6203 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 6204 nanos_err_t err;
nengel@9 6205 dyn_props.priority = 0;
nengel@9 6206 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_5_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 6207 if (err != NANOS_OK)
nengel@9 6208 nanos_handle_error(err);
nengel@9 6209 if (wd != (nanos_wd_t) 0)
nengel@9 6210 {
nengel@9 6211 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 6212 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 6213 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 6214 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 6215 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 6216 nanos_dependence_t _dependences[3] = {
nengel@9 6217 {
nengel@9 6218 (void **) &ol_args->__tmp_0_0,
nengel@9 6219 ((char *) ((__tmp_0)) - (char *) ol_args->__tmp_0_0),
nengel@9 6220 {
nengel@9 6221 1,
nengel@9 6222 0,
nengel@9 6223 1,
nengel@9 6224 0
nengel@9 6225 },
nengel@9 6226 sizeof(struct MBRecContext)
nengel@9 6227 },
nengel@9 6228 {
nengel@9 6229 (void **) &ol_args->__tmp_1_0,
nengel@9 6230 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 6231 {
nengel@9 6232 1,
nengel@9 6233 0,
nengel@9 6234 1,
nengel@9 6235 0
nengel@9 6236 },
nengel@9 6237 sizeof(SliceBufferEntry)
nengel@9 6238 },
nengel@9 6239 {
nengel@9 6240 (void **) &ol_args->__tmp_3_0,
nengel@9 6241 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 6242 {
nengel@9 6243 1,
nengel@9 6244 1,
nengel@9 6245 1,
nengel@9 6246 0
nengel@9 6247 },
nengel@9 6248 sizeof(struct SuperMBTask)
nengel@9 6249 }
nengel@9 6250 };
nengel@9 6251 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 6252 if (err != NANOS_OK)
nengel@9 6253 nanos_handle_error(err);
nengel@9 6254 }
nengel@9 6255 else
nengel@9 6256 {
nengel@9 6257 _nx_data_env_5_t imm_args;
nengel@9 6258 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 6259 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 6260 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 6261 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 6262 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 6263 nanos_dependence_t _dependences[3] = {
nengel@9 6264 {
nengel@9 6265 (void **) &imm_args.__tmp_0_0,
nengel@9 6266 ((char *) ((__tmp_0)) - (char *) imm_args.__tmp_0_0),
nengel@9 6267 {
nengel@9 6268 1,
nengel@9 6269 0,
nengel@9 6270 1,
nengel@9 6271 0
nengel@9 6272 },
nengel@9 6273 sizeof(struct MBRecContext)
nengel@9 6274 },
nengel@9 6275 {
nengel@9 6276 (void **) &imm_args.__tmp_1_0,
nengel@9 6277 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 6278 {
nengel@9 6279 1,
nengel@9 6280 0,
nengel@9 6281 1,
nengel@9 6282 0
nengel@9 6283 },
nengel@9 6284 sizeof(SliceBufferEntry)
nengel@9 6285 },
nengel@9 6286 {
nengel@9 6287 (void **) &imm_args.__tmp_3_0,
nengel@9 6288 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 6289 {
nengel@9 6290 1,
nengel@9 6291 1,
nengel@9 6292 1,
nengel@9 6293 0
nengel@9 6294 },
nengel@9 6295 sizeof(struct SuperMBTask)
nengel@9 6296 }
nengel@9 6297 };
nengel@9 6298 dyn_props.priority = 0;
nengel@9 6299 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_5_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 6300 if (err != NANOS_OK)
nengel@9 6301 nanos_handle_error(err);
nengel@9 6302 }
nengel@9 6303 }
nengel@9 6304 ;
nengel@9 6305 }
nengel@9 6306 }
nengel@9 6307 return sm;
nengel@9 6308 }
nengel@9 6309 static void release_ref_list_task(H264Context *h, SuperMBContext *smbc, MBRecContext *d, SliceBufferEntry *sbe, SuperMBTask *lastsmb, int *release)
nengel@9 6310 {
nengel@9 6311 H264Slice *s = &sbe->slice;
nengel@9 6312 for (int i = 0;
nengel@9 6313 i < s->release_cnt;
nengel@9 6314 i++)
nengel@9 6315 {
nengel@9 6316 for (int j = 0;
nengel@9 6317 j < h->max_dpb_cnt;
nengel@9 6318 j++)
nengel@9 6319 {
nengel@9 6320 if (h->dpb[j].cpn == s->release_ref_cpn[i])
nengel@9 6321 {
nengel@9 6322 {
nengel@9 6323 nanos_set_lock(&_nx_u_dpb_critical_lock);
nengel@9 6324 release_dpb_entry(h, &h->dpb[j], 2);
nengel@9 6325 nanos_unset_lock(&_nx_u_dpb_critical_lock);
nengel@9 6326 }
nengel@9 6327 break;
nengel@9 6328 }
nengel@9 6329 }
nengel@9 6330 }
nengel@9 6331 s->release_cnt = 0;
nengel@9 6332 release_smbc(h, smbc);
nengel@9 6333 }
nengel@9 6334 static void output_task(H264Context *h, OutputContext *oc, SliceBufferEntry *sbe)
nengel@9 6335 {
nengel@9 6336 DecodedPicture *out = output_frame(h, oc, sbe->slice.curr_pic, h->ofile, h->frame_width, h->frame_height);
nengel@9 6337 if (out)
nengel@9 6338 {
nengel@9 6339 {
nengel@9 6340 nanos_set_lock(&_nx_u_dpb_critical_lock);
nengel@9 6341 release_dpb_entry(h, out, 1);
nengel@9 6342 nanos_unset_lock(&_nx_u_dpb_critical_lock);
nengel@9 6343 }
nengel@9 6344 }
nengel@9 6345 }
nengel@9 6346 typedef struct _nx_data_env_6_t_tag
nengel@9 6347 {
nengel@9 6348 struct H264Context *__tmp_0_0;
nengel@9 6349 struct ParserContext *__tmp_1_0;
nengel@9 6350 struct NalContext *__tmp_2_0;
nengel@9 6351 SliceBufferEntry *__tmp_3_0;
nengel@9 6352 } _nx_data_env_6_t;
nengel@9 6353 int h264_decode_ompss(H264Context *h);
nengel@9 6354 static void _smp__ol_h264_decode_ompss_6(_nx_data_env_6_t *const __restrict__ _args)
nengel@9 6355 {
nengel@9 6356 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6357 struct ParserContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6358 struct NalContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6359 SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6360 /* Translation is done by the runtime */
nengel@9 6361 {
nengel@9 6362 parse_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0));
nengel@9 6363 }
nengel@9 6364 }
nengel@9 6365 typedef struct _nx_data_env_7_t_tag
nengel@9 6366 {
nengel@9 6367 struct H264Context *__tmp_0_0;
nengel@9 6368 struct EntropyContext *__tmp_1_0;
nengel@9 6369 SliceBufferEntry *__tmp_2_0;
nengel@9 6370 } _nx_data_env_7_t;
nengel@9 6371 int h264_decode_ompss(H264Context *h);
nengel@9 6372 static void _smp__ol_h264_decode_ompss_7(_nx_data_env_7_t *const __restrict__ _args)
nengel@9 6373 {
nengel@9 6374 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6375 struct EntropyContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6376 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6377 /* Translation is done by the runtime */
nengel@9 6378 {
nengel@9 6379 decode_slice_entropy_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6380 }
nengel@9 6381 }
nengel@9 6382 typedef struct _nx_data_env_8_t_tag
nengel@9 6383 {
nengel@9 6384 struct H264Context *__tmp_0_0;
nengel@9 6385 struct ParserContext *__tmp_1_0;
nengel@9 6386 struct NalContext *__tmp_2_0;
nengel@9 6387 SliceBufferEntry *__tmp_3_0;
nengel@9 6388 } _nx_data_env_8_t;
nengel@9 6389 int h264_decode_ompss(H264Context *h);
nengel@9 6390 static void _smp__ol_h264_decode_ompss_8(_nx_data_env_8_t *const __restrict__ _args)
nengel@9 6391 {
nengel@9 6392 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6393 struct ParserContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6394 struct NalContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6395 SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6396 /* Translation is done by the runtime */
nengel@9 6397 {
nengel@9 6398 parse_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0));
nengel@9 6399 }
nengel@9 6400 }
nengel@9 6401 typedef struct _nx_data_env_9_t_tag
nengel@9 6402 {
nengel@9 6403 struct H264Context *__tmp_0_0;
nengel@9 6404 struct EntropyContext *__tmp_1_0;
nengel@9 6405 SliceBufferEntry *__tmp_2_0;
nengel@9 6406 } _nx_data_env_9_t;
nengel@9 6407 int h264_decode_ompss(H264Context *h);
nengel@9 6408 static void _smp__ol_h264_decode_ompss_9(_nx_data_env_9_t *const __restrict__ _args)
nengel@9 6409 {
nengel@9 6410 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6411 struct EntropyContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6412 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6413 /* Translation is done by the runtime */
nengel@9 6414 {
nengel@9 6415 decode_slice_entropy_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6416 }
nengel@9 6417 }
nengel@9 6418 typedef struct _nx_data_env_10_t_tag
nengel@9 6419 {
nengel@9 6420 struct H264Context *__tmp_0_0;
nengel@9 6421 struct MBRecContext *__tmp_1_0;
nengel@9 6422 SliceBufferEntry *__tmp_2_0;
nengel@9 6423 int *__tmp_3_0;
nengel@9 6424 } _nx_data_env_10_t;
nengel@9 6425 int h264_decode_ompss(H264Context *h);
nengel@9 6426 static void _smp__ol_h264_decode_ompss_10(_nx_data_env_10_t *const __restrict__ _args)
nengel@9 6427 {
nengel@9 6428 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6429 struct MBRecContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6430 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6431 int *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6432 /* Translation is done by the runtime */
nengel@9 6433 {
nengel@9 6434 init_ref_list_and_get_dpb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0));
nengel@9 6435 }
nengel@9 6436 }
nengel@9 6437 typedef struct _nx_data_env_11_t_tag
nengel@9 6438 {
nengel@9 6439 struct H264Context *__tmp_0_0;
nengel@9 6440 struct SuperMBContext *__tmp_1_0;
nengel@9 6441 struct MBRecContext *__tmp_2_0;
nengel@9 6442 SliceBufferEntry *__tmp_3_0;
nengel@9 6443 struct SuperMBTask *__tmp_4_0;
nengel@9 6444 int *__tmp_5_0;
nengel@9 6445 } _nx_data_env_11_t;
nengel@9 6446 int h264_decode_ompss(H264Context *h);
nengel@9 6447 static void _smp__ol_h264_decode_ompss_11(_nx_data_env_11_t *const __restrict__ _args)
nengel@9 6448 {
nengel@9 6449 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6450 struct SuperMBContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6451 struct MBRecContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6452 SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6453 struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0;
nengel@9 6454 int *___tmp_5_0 = _args->__tmp_5_0;
nengel@9 6455 /* Translation is done by the runtime */
nengel@9 6456 {
nengel@9 6457 release_ref_list_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0));
nengel@9 6458 }
nengel@9 6459 }
nengel@9 6460 typedef struct _nx_data_env_12_t_tag
nengel@9 6461 {
nengel@9 6462 struct H264Context *__tmp_0_0;
nengel@9 6463 struct OutputContext *__tmp_1_0;
nengel@9 6464 SliceBufferEntry *__tmp_2_0;
nengel@9 6465 } _nx_data_env_12_t;
nengel@9 6466 int h264_decode_ompss(H264Context *h);
nengel@9 6467 static void _smp__ol_h264_decode_ompss_12(_nx_data_env_12_t *const __restrict__ _args)
nengel@9 6468 {
nengel@9 6469 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6470 struct OutputContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6471 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6472 /* Translation is done by the runtime */
nengel@9 6473 {
nengel@9 6474 output_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6475 }
nengel@9 6476 }
nengel@9 6477 typedef struct _nx_data_env_13_t_tag
nengel@9 6478 {
nengel@9 6479 struct H264Context *__tmp_0_0;
nengel@9 6480 struct MBRecContext *__tmp_1_0;
nengel@9 6481 SliceBufferEntry *__tmp_2_0;
nengel@9 6482 int *__tmp_3_0;
nengel@9 6483 } _nx_data_env_13_t;
nengel@9 6484 int h264_decode_ompss(H264Context *h);
nengel@9 6485 static void _smp__ol_h264_decode_ompss_13(_nx_data_env_13_t *const __restrict__ _args)
nengel@9 6486 {
nengel@9 6487 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6488 struct MBRecContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6489 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6490 int *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6491 /* Translation is done by the runtime */
nengel@9 6492 {
nengel@9 6493 init_ref_list_and_get_dpb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0));
nengel@9 6494 }
nengel@9 6495 }
nengel@9 6496 typedef struct _nx_data_env_14_t_tag
nengel@9 6497 {
nengel@9 6498 struct H264Context *__tmp_0_0;
nengel@9 6499 struct SuperMBContext *__tmp_1_0;
nengel@9 6500 struct MBRecContext *__tmp_2_0;
nengel@9 6501 SliceBufferEntry *__tmp_3_0;
nengel@9 6502 struct SuperMBTask *__tmp_4_0;
nengel@9 6503 int *__tmp_5_0;
nengel@9 6504 } _nx_data_env_14_t;
nengel@9 6505 int h264_decode_ompss(H264Context *h);
nengel@9 6506 static void _smp__ol_h264_decode_ompss_14(_nx_data_env_14_t *const __restrict__ _args)
nengel@9 6507 {
nengel@9 6508 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6509 struct SuperMBContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6510 struct MBRecContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6511 SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6512 struct SuperMBTask *___tmp_4_0 = _args->__tmp_4_0;
nengel@9 6513 int *___tmp_5_0 = _args->__tmp_5_0;
nengel@9 6514 /* Translation is done by the runtime */
nengel@9 6515 {
nengel@9 6516 release_ref_list_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0), (___tmp_4_0), (___tmp_5_0));
nengel@9 6517 }
nengel@9 6518 }
nengel@9 6519 typedef struct _nx_data_env_15_t_tag
nengel@9 6520 {
nengel@9 6521 struct H264Context *__tmp_0_0;
nengel@9 6522 struct OutputContext *__tmp_1_0;
nengel@9 6523 SliceBufferEntry *__tmp_2_0;
nengel@9 6524 } _nx_data_env_15_t;
nengel@9 6525 int h264_decode_ompss(H264Context *h);
nengel@9 6526 static void _smp__ol_h264_decode_ompss_15(_nx_data_env_15_t *const __restrict__ _args)
nengel@9 6527 {
nengel@9 6528 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6529 struct OutputContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6530 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6531 /* Translation is done by the runtime */
nengel@9 6532 {
nengel@9 6533 output_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6534 }
nengel@9 6535 }
nengel@9 6536 typedef struct _nx_data_env_16_t_tag
nengel@9 6537 {
nengel@9 6538 struct H264Context *__tmp_0_0;
nengel@9 6539 struct ParserContext *__tmp_1_0;
nengel@9 6540 struct NalContext *__tmp_2_0;
nengel@9 6541 SliceBufferEntry *__tmp_3_0;
nengel@9 6542 } _nx_data_env_16_t;
nengel@9 6543 int h264_decode_ompss(H264Context *h);
nengel@9 6544 static void _smp__ol_h264_decode_ompss_16(_nx_data_env_16_t *const __restrict__ _args)
nengel@9 6545 {
nengel@9 6546 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6547 struct ParserContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6548 struct NalContext *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6549 SliceBufferEntry *___tmp_3_0 = _args->__tmp_3_0;
nengel@9 6550 /* Translation is done by the runtime */
nengel@9 6551 {
nengel@9 6552 parse_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0), (___tmp_3_0));
nengel@9 6553 }
nengel@9 6554 }
nengel@9 6555 typedef struct _nx_data_env_17_t_tag
nengel@9 6556 {
nengel@9 6557 struct H264Context *__tmp_0_0;
nengel@9 6558 struct EntropyContext *__tmp_1_0;
nengel@9 6559 SliceBufferEntry *__tmp_2_0;
nengel@9 6560 } _nx_data_env_17_t;
nengel@9 6561 int h264_decode_ompss(H264Context *h);
nengel@9 6562 static void _smp__ol_h264_decode_ompss_17(_nx_data_env_17_t *const __restrict__ _args)
nengel@9 6563 {
nengel@9 6564 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6565 struct EntropyContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6566 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6567 /* Translation is done by the runtime */
nengel@9 6568 {
nengel@9 6569 decode_slice_entropy_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6570 }
nengel@9 6571 }
nengel@9 6572 typedef struct _nx_data_env_18_t_tag
nengel@9 6573 {
nengel@9 6574 struct H264Context *__tmp_0_0;
nengel@9 6575 struct MBRecContext *__tmp_1_0;
nengel@9 6576 SliceBufferEntry *__tmp_2_0;
nengel@9 6577 } _nx_data_env_18_t;
nengel@9 6578 int h264_decode_ompss(H264Context *h);
nengel@9 6579 static void _smp__ol_h264_decode_ompss_18(_nx_data_env_18_t *const __restrict__ _args)
nengel@9 6580 {
nengel@9 6581 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6582 struct MBRecContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6583 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6584 /* Translation is done by the runtime */
nengel@9 6585 {
nengel@9 6586 decode_slice_mb_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6587 }
nengel@9 6588 }
nengel@9 6589 typedef struct _nx_data_env_19_t_tag
nengel@9 6590 {
nengel@9 6591 struct H264Context *__tmp_0_0;
nengel@9 6592 struct OutputContext *__tmp_1_0;
nengel@9 6593 SliceBufferEntry *__tmp_2_0;
nengel@9 6594 } _nx_data_env_19_t;
nengel@9 6595 int h264_decode_ompss(H264Context *h);
nengel@9 6596 static void _smp__ol_h264_decode_ompss_19(_nx_data_env_19_t *const __restrict__ _args)
nengel@9 6597 {
nengel@9 6598 struct H264Context *___tmp_0_0 = _args->__tmp_0_0;
nengel@9 6599 struct OutputContext *___tmp_1_0 = _args->__tmp_1_0;
nengel@9 6600 SliceBufferEntry *___tmp_2_0 = _args->__tmp_2_0;
nengel@9 6601 /* Translation is done by the runtime */
nengel@9 6602 {
nengel@9 6603 output_task((___tmp_0_0), (___tmp_1_0), (___tmp_2_0));
nengel@9 6604 }
nengel@9 6605 }
nengel@9 6606 int h264_decode_ompss(H264Context *h)
nengel@9 6607 {
nengel@9 6608 const int bufs = h->pipe_bufs;
nengel@9 6609 ParserContext *pc;
nengel@9 6610 NalContext *nc;
nengel@9 6611 EntropyContext *ec[bufs];
nengel@9 6612 MBRecContext *rc[2];
nengel@9 6613 OutputContext *oc;
nengel@9 6614 SliceBufferEntry *sbe;
nengel@9 6615 SuperMBContext *smbc;
nengel@9 6616 DecodedPicture *out;
nengel@9 6617 int frames = 0;
nengel@9 6618 sbe = av_mallocz(sizeof(SliceBufferEntry) * bufs);
nengel@9 6619 pc = get_parse_context(h->ifile);
nengel@9 6620 nc = get_nal_context(h->width, h->height);
nengel@9 6621 for (int i = 0;
nengel@9 6622 i < bufs;
nengel@9 6623 i++)
nengel@9 6624 {
nengel@9 6625 ec[i] = get_entropy_context(h);
nengel@9 6626 }
nengel@9 6627 for (int i = 0;
nengel@9 6628 i < 2;
nengel@9 6629 i++)
nengel@9 6630 {
nengel@9 6631 rc[i] = get_mbrec_context(h);
nengel@9 6632 }
nengel@9 6633 oc = get_output_context(h);
nengel@9 6634 av_start_timer();
nengel@9 6635 int k = 0;
nengel@9 6636 int init, release;
nengel@9 6637 if (h->static_3d && bufs < h->num_frames)
nengel@9 6638 {
nengel@9 6639 int num_pre_ed = 0;
nengel@9 6640 for (num_pre_ed = 0;
nengel@9 6641 num_pre_ed < bufs - 1 && !pc->final_frame;
nengel@9 6642 num_pre_ed++)
nengel@9 6643 {
nengel@9 6644 {
nengel@9 6645 struct H264Context *__tmp_0 = h;
nengel@9 6646 struct ParserContext *__tmp_1 = pc;
nengel@9 6647 struct NalContext *__tmp_2 = nc;
nengel@9 6648 SliceBufferEntry *__tmp_3 = &sbe[k % bufs];
nengel@9 6649 {
nengel@9 6650 /* SMP device descriptor */
nengel@9 6651 static nanos_smp_args_t _ol_h264_decode_ompss_6_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_6};
nengel@9 6652 _nx_data_env_6_t *ol_args = (_nx_data_env_6_t *) 0;
nengel@9 6653 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 6654 struct nanos_const_wd_definition_local_t
nengel@9 6655 {
nengel@9 6656 nanos_const_wd_definition_t base;
nengel@9 6657 nanos_device_t devices[1];
nengel@9 6658 };
nengel@9 6659 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 6660 {
nengel@9 6661 {
nengel@9 6662 0,
nengel@9 6663 1,
nengel@9 6664 0,
nengel@9 6665 0,
nengel@9 6666 0,
nengel@9 6667 0,
nengel@9 6668 0,
nengel@9 6669 0
nengel@9 6670 },
nengel@9 6671 __alignof__(_nx_data_env_6_t),
nengel@9 6672 0,
nengel@9 6673 1
nengel@9 6674 },
nengel@9 6675 {{
nengel@9 6676 nanos_smp_factory,
nengel@9 6677 &_ol_h264_decode_ompss_6_smp_args
nengel@9 6678 }}
nengel@9 6679 };
nengel@9 6680 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 6681 nanos_err_t err;
nengel@9 6682 dyn_props.priority = 0;
nengel@9 6683 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_6_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 6684 if (err != NANOS_OK)
nengel@9 6685 nanos_handle_error(err);
nengel@9 6686 if (wd != (nanos_wd_t) 0)
nengel@9 6687 {
nengel@9 6688 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 6689 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 6690 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 6691 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 6692 nanos_dependence_t _dependences[3] = {
nengel@9 6693 {
nengel@9 6694 (void **) &ol_args->__tmp_3_0,
nengel@9 6695 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 6696 {
nengel@9 6697 0,
nengel@9 6698 1,
nengel@9 6699 1,
nengel@9 6700 0
nengel@9 6701 },
nengel@9 6702 sizeof(SliceBufferEntry)
nengel@9 6703 },
nengel@9 6704 {
nengel@9 6705 (void **) &ol_args->__tmp_1_0,
nengel@9 6706 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 6707 {
nengel@9 6708 1,
nengel@9 6709 1,
nengel@9 6710 1,
nengel@9 6711 0
nengel@9 6712 },
nengel@9 6713 sizeof(struct ParserContext)
nengel@9 6714 },
nengel@9 6715 {
nengel@9 6716 (void **) &ol_args->__tmp_2_0,
nengel@9 6717 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 6718 {
nengel@9 6719 1,
nengel@9 6720 1,
nengel@9 6721 1,
nengel@9 6722 0
nengel@9 6723 },
nengel@9 6724 sizeof(struct NalContext)
nengel@9 6725 }
nengel@9 6726 };
nengel@9 6727 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 6728 if (err != NANOS_OK)
nengel@9 6729 nanos_handle_error(err);
nengel@9 6730 }
nengel@9 6731 else
nengel@9 6732 {
nengel@9 6733 _nx_data_env_6_t imm_args;
nengel@9 6734 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 6735 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 6736 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 6737 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 6738 nanos_dependence_t _dependences[3] = {
nengel@9 6739 {
nengel@9 6740 (void **) &imm_args.__tmp_3_0,
nengel@9 6741 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 6742 {
nengel@9 6743 0,
nengel@9 6744 1,
nengel@9 6745 1,
nengel@9 6746 0
nengel@9 6747 },
nengel@9 6748 sizeof(SliceBufferEntry)
nengel@9 6749 },
nengel@9 6750 {
nengel@9 6751 (void **) &imm_args.__tmp_1_0,
nengel@9 6752 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 6753 {
nengel@9 6754 1,
nengel@9 6755 1,
nengel@9 6756 1,
nengel@9 6757 0
nengel@9 6758 },
nengel@9 6759 sizeof(struct ParserContext)
nengel@9 6760 },
nengel@9 6761 {
nengel@9 6762 (void **) &imm_args.__tmp_2_0,
nengel@9 6763 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 6764 {
nengel@9 6765 1,
nengel@9 6766 1,
nengel@9 6767 1,
nengel@9 6768 0
nengel@9 6769 },
nengel@9 6770 sizeof(struct NalContext)
nengel@9 6771 }
nengel@9 6772 };
nengel@9 6773 dyn_props.priority = 0;
nengel@9 6774 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_6_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 6775 if (err != NANOS_OK)
nengel@9 6776 nanos_handle_error(err);
nengel@9 6777 }
nengel@9 6778 }
nengel@9 6779 ;
nengel@9 6780 }
nengel@9 6781 {
nengel@9 6782 struct H264Context *__tmp_0 = h;
nengel@9 6783 struct EntropyContext *__tmp_1 = ec[k % bufs];
nengel@9 6784 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 6785 {
nengel@9 6786 /* SMP device descriptor */
nengel@9 6787 static nanos_smp_args_t _ol_h264_decode_ompss_7_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_7};
nengel@9 6788 _nx_data_env_7_t *ol_args = (_nx_data_env_7_t *) 0;
nengel@9 6789 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 6790 struct nanos_const_wd_definition_local_t
nengel@9 6791 {
nengel@9 6792 nanos_const_wd_definition_t base;
nengel@9 6793 nanos_device_t devices[1];
nengel@9 6794 };
nengel@9 6795 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 6796 {
nengel@9 6797 {
nengel@9 6798 0,
nengel@9 6799 1,
nengel@9 6800 0,
nengel@9 6801 0,
nengel@9 6802 0,
nengel@9 6803 0,
nengel@9 6804 0,
nengel@9 6805 0
nengel@9 6806 },
nengel@9 6807 __alignof__(_nx_data_env_7_t),
nengel@9 6808 0,
nengel@9 6809 1
nengel@9 6810 },
nengel@9 6811 {{
nengel@9 6812 nanos_smp_factory,
nengel@9 6813 &_ol_h264_decode_ompss_7_smp_args
nengel@9 6814 }}
nengel@9 6815 };
nengel@9 6816 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 6817 nanos_err_t err;
nengel@9 6818 dyn_props.priority = 0;
nengel@9 6819 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_7_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 6820 if (err != NANOS_OK)
nengel@9 6821 nanos_handle_error(err);
nengel@9 6822 if (wd != (nanos_wd_t) 0)
nengel@9 6823 {
nengel@9 6824 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 6825 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 6826 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 6827 nanos_dependence_t _dependences[2] = {
nengel@9 6828 {
nengel@9 6829 (void **) &ol_args->__tmp_1_0,
nengel@9 6830 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 6831 {
nengel@9 6832 1,
nengel@9 6833 1,
nengel@9 6834 1,
nengel@9 6835 0
nengel@9 6836 },
nengel@9 6837 sizeof(struct EntropyContext)
nengel@9 6838 },
nengel@9 6839 {
nengel@9 6840 (void **) &ol_args->__tmp_2_0,
nengel@9 6841 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 6842 {
nengel@9 6843 1,
nengel@9 6844 1,
nengel@9 6845 1,
nengel@9 6846 0
nengel@9 6847 },
nengel@9 6848 sizeof(SliceBufferEntry)
nengel@9 6849 }
nengel@9 6850 };
nengel@9 6851 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 6852 if (err != NANOS_OK)
nengel@9 6853 nanos_handle_error(err);
nengel@9 6854 }
nengel@9 6855 else
nengel@9 6856 {
nengel@9 6857 _nx_data_env_7_t imm_args;
nengel@9 6858 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 6859 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 6860 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 6861 nanos_dependence_t _dependences[2] = {
nengel@9 6862 {
nengel@9 6863 (void **) &imm_args.__tmp_1_0,
nengel@9 6864 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 6865 {
nengel@9 6866 1,
nengel@9 6867 1,
nengel@9 6868 1,
nengel@9 6869 0
nengel@9 6870 },
nengel@9 6871 sizeof(struct EntropyContext)
nengel@9 6872 },
nengel@9 6873 {
nengel@9 6874 (void **) &imm_args.__tmp_2_0,
nengel@9 6875 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 6876 {
nengel@9 6877 1,
nengel@9 6878 1,
nengel@9 6879 1,
nengel@9 6880 0
nengel@9 6881 },
nengel@9 6882 sizeof(SliceBufferEntry)
nengel@9 6883 }
nengel@9 6884 };
nengel@9 6885 dyn_props.priority = 0;
nengel@9 6886 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_7_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 6887 if (err != NANOS_OK)
nengel@9 6888 nanos_handle_error(err);
nengel@9 6889 }
nengel@9 6890 }
nengel@9 6891 ;
nengel@9 6892 }
nengel@9 6893 {
nengel@9 6894 struct _dependence_holder
nengel@9 6895 {
nengel@9 6896 struct ParserContext *dep_0;
nengel@9 6897 } _dep_holder = {&(*pc)};
nengel@9 6898 nanos_dependence_t _wait_dependences[1] = {{
nengel@9 6899 (void **) &_dep_holder.dep_0,
nengel@9 6900 ((char *) ((pc)) - (char *) _dep_holder.dep_0),
nengel@9 6901 {
nengel@9 6902 1,
nengel@9 6903 0,
nengel@9 6904 0,
nengel@9 6905 0
nengel@9 6906 },
nengel@9 6907 sizeof (*pc)
nengel@9 6908 }};
nengel@9 6909 nanos_wait_on(1, _wait_dependences);
nengel@9 6910 }
nengel@9 6911 k++;
nengel@9 6912 }
nengel@9 6913 while (!pc->final_frame && frames++ < h->num_frames && !h->quit)
nengel@9 6914 {
nengel@9 6915 {
nengel@9 6916 struct H264Context *__tmp_0 = h;
nengel@9 6917 struct ParserContext *__tmp_1 = pc;
nengel@9 6918 struct NalContext *__tmp_2 = nc;
nengel@9 6919 SliceBufferEntry *__tmp_3 = &sbe[k % bufs];
nengel@9 6920 {
nengel@9 6921 /* SMP device descriptor */
nengel@9 6922 static nanos_smp_args_t _ol_h264_decode_ompss_8_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_8};
nengel@9 6923 _nx_data_env_8_t *ol_args = (_nx_data_env_8_t *) 0;
nengel@9 6924 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 6925 struct nanos_const_wd_definition_local_t
nengel@9 6926 {
nengel@9 6927 nanos_const_wd_definition_t base;
nengel@9 6928 nanos_device_t devices[1];
nengel@9 6929 };
nengel@9 6930 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 6931 {
nengel@9 6932 {
nengel@9 6933 0,
nengel@9 6934 1,
nengel@9 6935 0,
nengel@9 6936 0,
nengel@9 6937 0,
nengel@9 6938 0,
nengel@9 6939 0,
nengel@9 6940 0
nengel@9 6941 },
nengel@9 6942 __alignof__(_nx_data_env_8_t),
nengel@9 6943 0,
nengel@9 6944 1
nengel@9 6945 },
nengel@9 6946 {{
nengel@9 6947 nanos_smp_factory,
nengel@9 6948 &_ol_h264_decode_ompss_8_smp_args
nengel@9 6949 }}
nengel@9 6950 };
nengel@9 6951 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 6952 nanos_err_t err;
nengel@9 6953 dyn_props.priority = 0;
nengel@9 6954 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_8_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 6955 if (err != NANOS_OK)
nengel@9 6956 nanos_handle_error(err);
nengel@9 6957 if (wd != (nanos_wd_t) 0)
nengel@9 6958 {
nengel@9 6959 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 6960 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 6961 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 6962 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 6963 nanos_dependence_t _dependences[3] = {
nengel@9 6964 {
nengel@9 6965 (void **) &ol_args->__tmp_3_0,
nengel@9 6966 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 6967 {
nengel@9 6968 0,
nengel@9 6969 1,
nengel@9 6970 1,
nengel@9 6971 0
nengel@9 6972 },
nengel@9 6973 sizeof(SliceBufferEntry)
nengel@9 6974 },
nengel@9 6975 {
nengel@9 6976 (void **) &ol_args->__tmp_1_0,
nengel@9 6977 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 6978 {
nengel@9 6979 1,
nengel@9 6980 1,
nengel@9 6981 1,
nengel@9 6982 0
nengel@9 6983 },
nengel@9 6984 sizeof(struct ParserContext)
nengel@9 6985 },
nengel@9 6986 {
nengel@9 6987 (void **) &ol_args->__tmp_2_0,
nengel@9 6988 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 6989 {
nengel@9 6990 1,
nengel@9 6991 1,
nengel@9 6992 1,
nengel@9 6993 0
nengel@9 6994 },
nengel@9 6995 sizeof(struct NalContext)
nengel@9 6996 }
nengel@9 6997 };
nengel@9 6998 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 6999 if (err != NANOS_OK)
nengel@9 7000 nanos_handle_error(err);
nengel@9 7001 }
nengel@9 7002 else
nengel@9 7003 {
nengel@9 7004 _nx_data_env_8_t imm_args;
nengel@9 7005 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7006 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7007 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7008 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 7009 nanos_dependence_t _dependences[3] = {
nengel@9 7010 {
nengel@9 7011 (void **) &imm_args.__tmp_3_0,
nengel@9 7012 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 7013 {
nengel@9 7014 0,
nengel@9 7015 1,
nengel@9 7016 1,
nengel@9 7017 0
nengel@9 7018 },
nengel@9 7019 sizeof(SliceBufferEntry)
nengel@9 7020 },
nengel@9 7021 {
nengel@9 7022 (void **) &imm_args.__tmp_1_0,
nengel@9 7023 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 7024 {
nengel@9 7025 1,
nengel@9 7026 1,
nengel@9 7027 1,
nengel@9 7028 0
nengel@9 7029 },
nengel@9 7030 sizeof(struct ParserContext)
nengel@9 7031 },
nengel@9 7032 {
nengel@9 7033 (void **) &imm_args.__tmp_2_0,
nengel@9 7034 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7035 {
nengel@9 7036 1,
nengel@9 7037 1,
nengel@9 7038 1,
nengel@9 7039 0
nengel@9 7040 },
nengel@9 7041 sizeof(struct NalContext)
nengel@9 7042 }
nengel@9 7043 };
nengel@9 7044 dyn_props.priority = 0;
nengel@9 7045 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_8_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7046 if (err != NANOS_OK)
nengel@9 7047 nanos_handle_error(err);
nengel@9 7048 }
nengel@9 7049 }
nengel@9 7050 ;
nengel@9 7051 }
nengel@9 7052 {
nengel@9 7053 struct H264Context *__tmp_0 = h;
nengel@9 7054 struct EntropyContext *__tmp_1 = ec[k % bufs];
nengel@9 7055 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 7056 {
nengel@9 7057 /* SMP device descriptor */
nengel@9 7058 static nanos_smp_args_t _ol_h264_decode_ompss_9_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_9};
nengel@9 7059 _nx_data_env_9_t *ol_args = (_nx_data_env_9_t *) 0;
nengel@9 7060 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7061 struct nanos_const_wd_definition_local_t
nengel@9 7062 {
nengel@9 7063 nanos_const_wd_definition_t base;
nengel@9 7064 nanos_device_t devices[1];
nengel@9 7065 };
nengel@9 7066 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7067 {
nengel@9 7068 {
nengel@9 7069 0,
nengel@9 7070 1,
nengel@9 7071 0,
nengel@9 7072 0,
nengel@9 7073 0,
nengel@9 7074 0,
nengel@9 7075 0,
nengel@9 7076 0
nengel@9 7077 },
nengel@9 7078 __alignof__(_nx_data_env_9_t),
nengel@9 7079 0,
nengel@9 7080 1
nengel@9 7081 },
nengel@9 7082 {{
nengel@9 7083 nanos_smp_factory,
nengel@9 7084 &_ol_h264_decode_ompss_9_smp_args
nengel@9 7085 }}
nengel@9 7086 };
nengel@9 7087 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7088 nanos_err_t err;
nengel@9 7089 dyn_props.priority = 0;
nengel@9 7090 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_9_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7091 if (err != NANOS_OK)
nengel@9 7092 nanos_handle_error(err);
nengel@9 7093 if (wd != (nanos_wd_t) 0)
nengel@9 7094 {
nengel@9 7095 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7096 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7097 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7098 nanos_dependence_t _dependences[2] = {
nengel@9 7099 {
nengel@9 7100 (void **) &ol_args->__tmp_1_0,
nengel@9 7101 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 7102 {
nengel@9 7103 1,
nengel@9 7104 1,
nengel@9 7105 1,
nengel@9 7106 0
nengel@9 7107 },
nengel@9 7108 sizeof(struct EntropyContext)
nengel@9 7109 },
nengel@9 7110 {
nengel@9 7111 (void **) &ol_args->__tmp_2_0,
nengel@9 7112 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7113 {
nengel@9 7114 1,
nengel@9 7115 1,
nengel@9 7116 1,
nengel@9 7117 0
nengel@9 7118 },
nengel@9 7119 sizeof(SliceBufferEntry)
nengel@9 7120 }
nengel@9 7121 };
nengel@9 7122 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7123 if (err != NANOS_OK)
nengel@9 7124 nanos_handle_error(err);
nengel@9 7125 }
nengel@9 7126 else
nengel@9 7127 {
nengel@9 7128 _nx_data_env_9_t imm_args;
nengel@9 7129 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7130 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7131 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7132 nanos_dependence_t _dependences[2] = {
nengel@9 7133 {
nengel@9 7134 (void **) &imm_args.__tmp_1_0,
nengel@9 7135 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 7136 {
nengel@9 7137 1,
nengel@9 7138 1,
nengel@9 7139 1,
nengel@9 7140 0
nengel@9 7141 },
nengel@9 7142 sizeof(struct EntropyContext)
nengel@9 7143 },
nengel@9 7144 {
nengel@9 7145 (void **) &imm_args.__tmp_2_0,
nengel@9 7146 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7147 {
nengel@9 7148 1,
nengel@9 7149 1,
nengel@9 7150 1,
nengel@9 7151 0
nengel@9 7152 },
nengel@9 7153 sizeof(SliceBufferEntry)
nengel@9 7154 }
nengel@9 7155 };
nengel@9 7156 dyn_props.priority = 0;
nengel@9 7157 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_9_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7158 if (err != NANOS_OK)
nengel@9 7159 nanos_handle_error(err);
nengel@9 7160 }
nengel@9 7161 }
nengel@9 7162 ;
nengel@9 7163 }
nengel@9 7164 k++;
nengel@9 7165 {
nengel@9 7166 struct H264Context *__tmp_0 = h;
nengel@9 7167 struct MBRecContext *__tmp_1 = rc[k % 2];
nengel@9 7168 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 7169 int *__tmp_3 = &init;
nengel@9 7170 {
nengel@9 7171 /* SMP device descriptor */
nengel@9 7172 static nanos_smp_args_t _ol_h264_decode_ompss_10_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_10};
nengel@9 7173 _nx_data_env_10_t *ol_args = (_nx_data_env_10_t *) 0;
nengel@9 7174 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7175 struct nanos_const_wd_definition_local_t
nengel@9 7176 {
nengel@9 7177 nanos_const_wd_definition_t base;
nengel@9 7178 nanos_device_t devices[1];
nengel@9 7179 };
nengel@9 7180 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7181 {
nengel@9 7182 {
nengel@9 7183 0,
nengel@9 7184 1,
nengel@9 7185 0,
nengel@9 7186 0,
nengel@9 7187 0,
nengel@9 7188 0,
nengel@9 7189 0,
nengel@9 7190 0
nengel@9 7191 },
nengel@9 7192 __alignof__(_nx_data_env_10_t),
nengel@9 7193 0,
nengel@9 7194 1
nengel@9 7195 },
nengel@9 7196 {{
nengel@9 7197 nanos_smp_factory,
nengel@9 7198 &_ol_h264_decode_ompss_10_smp_args
nengel@9 7199 }}
nengel@9 7200 };
nengel@9 7201 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7202 nanos_err_t err;
nengel@9 7203 dyn_props.priority = 0;
nengel@9 7204 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_10_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7205 if (err != NANOS_OK)
nengel@9 7206 nanos_handle_error(err);
nengel@9 7207 if (wd != (nanos_wd_t) 0)
nengel@9 7208 {
nengel@9 7209 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7210 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7211 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7212 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 7213 nanos_dependence_t _dependences[3] = {
nengel@9 7214 {
nengel@9 7215 (void **) &ol_args->__tmp_1_0,
nengel@9 7216 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 7217 {
nengel@9 7218 1,
nengel@9 7219 1,
nengel@9 7220 1,
nengel@9 7221 0
nengel@9 7222 },
nengel@9 7223 sizeof(struct MBRecContext)
nengel@9 7224 },
nengel@9 7225 {
nengel@9 7226 (void **) &ol_args->__tmp_2_0,
nengel@9 7227 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7228 {
nengel@9 7229 1,
nengel@9 7230 1,
nengel@9 7231 1,
nengel@9 7232 0
nengel@9 7233 },
nengel@9 7234 sizeof(SliceBufferEntry)
nengel@9 7235 },
nengel@9 7236 {
nengel@9 7237 (void **) &ol_args->__tmp_3_0,
nengel@9 7238 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 7239 {
nengel@9 7240 1,
nengel@9 7241 1,
nengel@9 7242 1,
nengel@9 7243 0
nengel@9 7244 },
nengel@9 7245 sizeof(int)
nengel@9 7246 }
nengel@9 7247 };
nengel@9 7248 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7249 if (err != NANOS_OK)
nengel@9 7250 nanos_handle_error(err);
nengel@9 7251 }
nengel@9 7252 else
nengel@9 7253 {
nengel@9 7254 _nx_data_env_10_t imm_args;
nengel@9 7255 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7256 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7257 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7258 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 7259 nanos_dependence_t _dependences[3] = {
nengel@9 7260 {
nengel@9 7261 (void **) &imm_args.__tmp_1_0,
nengel@9 7262 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 7263 {
nengel@9 7264 1,
nengel@9 7265 1,
nengel@9 7266 1,
nengel@9 7267 0
nengel@9 7268 },
nengel@9 7269 sizeof(struct MBRecContext)
nengel@9 7270 },
nengel@9 7271 {
nengel@9 7272 (void **) &imm_args.__tmp_2_0,
nengel@9 7273 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7274 {
nengel@9 7275 1,
nengel@9 7276 1,
nengel@9 7277 1,
nengel@9 7278 0
nengel@9 7279 },
nengel@9 7280 sizeof(SliceBufferEntry)
nengel@9 7281 },
nengel@9 7282 {
nengel@9 7283 (void **) &imm_args.__tmp_3_0,
nengel@9 7284 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 7285 {
nengel@9 7286 1,
nengel@9 7287 1,
nengel@9 7288 1,
nengel@9 7289 0
nengel@9 7290 },
nengel@9 7291 sizeof(int)
nengel@9 7292 }
nengel@9 7293 };
nengel@9 7294 dyn_props.priority = 0;
nengel@9 7295 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_10_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7296 if (err != NANOS_OK)
nengel@9 7297 nanos_handle_error(err);
nengel@9 7298 }
nengel@9 7299 }
nengel@9 7300 ;
nengel@9 7301 }
nengel@9 7302 smbc = acquire_smbc(h);
nengel@9 7303 SuperMBTask *lastsmb = add_decode_slice_3dwave_tasks(rc[k % 2], &sbe[k % bufs], smbc);
nengel@9 7304 {
nengel@9 7305 struct H264Context *__tmp_0 = h;
nengel@9 7306 struct SuperMBContext *__tmp_1 = smbc;
nengel@9 7307 struct MBRecContext *__tmp_2 = rc[k % 2];
nengel@9 7308 SliceBufferEntry *__tmp_3 = &sbe[k % bufs];
nengel@9 7309 struct SuperMBTask *__tmp_4 = lastsmb;
nengel@9 7310 int *__tmp_5 = &release;
nengel@9 7311 {
nengel@9 7312 /* SMP device descriptor */
nengel@9 7313 static nanos_smp_args_t _ol_h264_decode_ompss_11_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_11};
nengel@9 7314 _nx_data_env_11_t *ol_args = (_nx_data_env_11_t *) 0;
nengel@9 7315 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7316 struct nanos_const_wd_definition_local_t
nengel@9 7317 {
nengel@9 7318 nanos_const_wd_definition_t base;
nengel@9 7319 nanos_device_t devices[1];
nengel@9 7320 };
nengel@9 7321 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7322 {
nengel@9 7323 {
nengel@9 7324 0,
nengel@9 7325 1,
nengel@9 7326 0,
nengel@9 7327 0,
nengel@9 7328 0,
nengel@9 7329 0,
nengel@9 7330 0,
nengel@9 7331 0
nengel@9 7332 },
nengel@9 7333 __alignof__(_nx_data_env_11_t),
nengel@9 7334 0,
nengel@9 7335 1
nengel@9 7336 },
nengel@9 7337 {{
nengel@9 7338 nanos_smp_factory,
nengel@9 7339 &_ol_h264_decode_ompss_11_smp_args
nengel@9 7340 }}
nengel@9 7341 };
nengel@9 7342 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7343 nanos_err_t err;
nengel@9 7344 dyn_props.priority = 0;
nengel@9 7345 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_11_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7346 if (err != NANOS_OK)
nengel@9 7347 nanos_handle_error(err);
nengel@9 7348 if (wd != (nanos_wd_t) 0)
nengel@9 7349 {
nengel@9 7350 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7351 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7352 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7353 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 7354 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 7355 ol_args->__tmp_5_0 = __tmp_5;
nengel@9 7356 nanos_dependence_t _dependences[4] = {
nengel@9 7357 {
nengel@9 7358 (void **) &ol_args->__tmp_4_0,
nengel@9 7359 ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0),
nengel@9 7360 {
nengel@9 7361 1,
nengel@9 7362 0,
nengel@9 7363 1,
nengel@9 7364 0
nengel@9 7365 },
nengel@9 7366 sizeof(struct SuperMBTask)
nengel@9 7367 },
nengel@9 7368 {
nengel@9 7369 (void **) &ol_args->__tmp_2_0,
nengel@9 7370 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7371 {
nengel@9 7372 1,
nengel@9 7373 1,
nengel@9 7374 1,
nengel@9 7375 0
nengel@9 7376 },
nengel@9 7377 sizeof(struct MBRecContext)
nengel@9 7378 },
nengel@9 7379 {
nengel@9 7380 (void **) &ol_args->__tmp_3_0,
nengel@9 7381 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 7382 {
nengel@9 7383 1,
nengel@9 7384 1,
nengel@9 7385 1,
nengel@9 7386 0
nengel@9 7387 },
nengel@9 7388 sizeof(SliceBufferEntry)
nengel@9 7389 },
nengel@9 7390 {
nengel@9 7391 (void **) &ol_args->__tmp_5_0,
nengel@9 7392 ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0),
nengel@9 7393 {
nengel@9 7394 1,
nengel@9 7395 1,
nengel@9 7396 1,
nengel@9 7397 0
nengel@9 7398 },
nengel@9 7399 sizeof(int)
nengel@9 7400 }
nengel@9 7401 };
nengel@9 7402 err = nanos_submit(wd, 4, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7403 if (err != NANOS_OK)
nengel@9 7404 nanos_handle_error(err);
nengel@9 7405 }
nengel@9 7406 else
nengel@9 7407 {
nengel@9 7408 _nx_data_env_11_t imm_args;
nengel@9 7409 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7410 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7411 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7412 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 7413 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 7414 imm_args.__tmp_5_0 = __tmp_5;
nengel@9 7415 nanos_dependence_t _dependences[4] = {
nengel@9 7416 {
nengel@9 7417 (void **) &imm_args.__tmp_4_0,
nengel@9 7418 ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0),
nengel@9 7419 {
nengel@9 7420 1,
nengel@9 7421 0,
nengel@9 7422 1,
nengel@9 7423 0
nengel@9 7424 },
nengel@9 7425 sizeof(struct SuperMBTask)
nengel@9 7426 },
nengel@9 7427 {
nengel@9 7428 (void **) &imm_args.__tmp_2_0,
nengel@9 7429 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7430 {
nengel@9 7431 1,
nengel@9 7432 1,
nengel@9 7433 1,
nengel@9 7434 0
nengel@9 7435 },
nengel@9 7436 sizeof(struct MBRecContext)
nengel@9 7437 },
nengel@9 7438 {
nengel@9 7439 (void **) &imm_args.__tmp_3_0,
nengel@9 7440 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 7441 {
nengel@9 7442 1,
nengel@9 7443 1,
nengel@9 7444 1,
nengel@9 7445 0
nengel@9 7446 },
nengel@9 7447 sizeof(SliceBufferEntry)
nengel@9 7448 },
nengel@9 7449 {
nengel@9 7450 (void **) &imm_args.__tmp_5_0,
nengel@9 7451 ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0),
nengel@9 7452 {
nengel@9 7453 1,
nengel@9 7454 1,
nengel@9 7455 1,
nengel@9 7456 0
nengel@9 7457 },
nengel@9 7458 sizeof(int)
nengel@9 7459 }
nengel@9 7460 };
nengel@9 7461 dyn_props.priority = 0;
nengel@9 7462 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_11_t), &imm_args, 4, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7463 if (err != NANOS_OK)
nengel@9 7464 nanos_handle_error(err);
nengel@9 7465 }
nengel@9 7466 }
nengel@9 7467 ;
nengel@9 7468 }
nengel@9 7469 {
nengel@9 7470 struct H264Context *__tmp_0 = h;
nengel@9 7471 struct OutputContext *__tmp_1 = oc;
nengel@9 7472 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 7473 {
nengel@9 7474 /* SMP device descriptor */
nengel@9 7475 static nanos_smp_args_t _ol_h264_decode_ompss_12_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_12};
nengel@9 7476 _nx_data_env_12_t *ol_args = (_nx_data_env_12_t *) 0;
nengel@9 7477 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7478 struct nanos_const_wd_definition_local_t
nengel@9 7479 {
nengel@9 7480 nanos_const_wd_definition_t base;
nengel@9 7481 nanos_device_t devices[1];
nengel@9 7482 };
nengel@9 7483 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7484 {
nengel@9 7485 {
nengel@9 7486 0,
nengel@9 7487 1,
nengel@9 7488 0,
nengel@9 7489 0,
nengel@9 7490 0,
nengel@9 7491 0,
nengel@9 7492 0,
nengel@9 7493 0
nengel@9 7494 },
nengel@9 7495 __alignof__(_nx_data_env_12_t),
nengel@9 7496 0,
nengel@9 7497 1
nengel@9 7498 },
nengel@9 7499 {{
nengel@9 7500 nanos_smp_factory,
nengel@9 7501 &_ol_h264_decode_ompss_12_smp_args
nengel@9 7502 }}
nengel@9 7503 };
nengel@9 7504 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7505 nanos_err_t err;
nengel@9 7506 dyn_props.priority = 0;
nengel@9 7507 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_12_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7508 if (err != NANOS_OK)
nengel@9 7509 nanos_handle_error(err);
nengel@9 7510 if (wd != (nanos_wd_t) 0)
nengel@9 7511 {
nengel@9 7512 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7513 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7514 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7515 nanos_dependence_t _dependences[2] = {
nengel@9 7516 {
nengel@9 7517 (void **) &ol_args->__tmp_2_0,
nengel@9 7518 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7519 {
nengel@9 7520 1,
nengel@9 7521 0,
nengel@9 7522 1,
nengel@9 7523 0
nengel@9 7524 },
nengel@9 7525 sizeof(SliceBufferEntry)
nengel@9 7526 },
nengel@9 7527 {
nengel@9 7528 (void **) &ol_args->__tmp_1_0,
nengel@9 7529 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 7530 {
nengel@9 7531 1,
nengel@9 7532 1,
nengel@9 7533 1,
nengel@9 7534 0
nengel@9 7535 },
nengel@9 7536 sizeof(struct OutputContext)
nengel@9 7537 }
nengel@9 7538 };
nengel@9 7539 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7540 if (err != NANOS_OK)
nengel@9 7541 nanos_handle_error(err);
nengel@9 7542 }
nengel@9 7543 else
nengel@9 7544 {
nengel@9 7545 _nx_data_env_12_t imm_args;
nengel@9 7546 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7547 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7548 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7549 nanos_dependence_t _dependences[2] = {
nengel@9 7550 {
nengel@9 7551 (void **) &imm_args.__tmp_2_0,
nengel@9 7552 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7553 {
nengel@9 7554 1,
nengel@9 7555 0,
nengel@9 7556 1,
nengel@9 7557 0
nengel@9 7558 },
nengel@9 7559 sizeof(SliceBufferEntry)
nengel@9 7560 },
nengel@9 7561 {
nengel@9 7562 (void **) &imm_args.__tmp_1_0,
nengel@9 7563 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 7564 {
nengel@9 7565 1,
nengel@9 7566 1,
nengel@9 7567 1,
nengel@9 7568 0
nengel@9 7569 },
nengel@9 7570 sizeof(struct OutputContext)
nengel@9 7571 }
nengel@9 7572 };
nengel@9 7573 dyn_props.priority = 0;
nengel@9 7574 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_12_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7575 if (err != NANOS_OK)
nengel@9 7576 nanos_handle_error(err);
nengel@9 7577 }
nengel@9 7578 }
nengel@9 7579 ;
nengel@9 7580 }
nengel@9 7581 {
nengel@9 7582 struct _dependence_holder
nengel@9 7583 {
nengel@9 7584 struct ParserContext *dep_0;
nengel@9 7585 } _dep_holder = {&(*pc)};
nengel@9 7586 nanos_dependence_t _wait_dependences[1] = {{
nengel@9 7587 (void **) &_dep_holder.dep_0,
nengel@9 7588 ((char *) ((pc)) - (char *) _dep_holder.dep_0),
nengel@9 7589 {
nengel@9 7590 1,
nengel@9 7591 0,
nengel@9 7592 0,
nengel@9 7593 0
nengel@9 7594 },
nengel@9 7595 sizeof (*pc)
nengel@9 7596 }};
nengel@9 7597 nanos_wait_on(1, _wait_dependences);
nengel@9 7598 }
nengel@9 7599 }
nengel@9 7600 for (int i = 0;
nengel@9 7601 i < num_pre_ed;
nengel@9 7602 i++)
nengel@9 7603 {
nengel@9 7604 k++;
nengel@9 7605 {
nengel@9 7606 struct H264Context *__tmp_0 = h;
nengel@9 7607 struct MBRecContext *__tmp_1 = rc[k % 2];
nengel@9 7608 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 7609 int *__tmp_3 = &init;
nengel@9 7610 {
nengel@9 7611 /* SMP device descriptor */
nengel@9 7612 static nanos_smp_args_t _ol_h264_decode_ompss_13_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_13};
nengel@9 7613 _nx_data_env_13_t *ol_args = (_nx_data_env_13_t *) 0;
nengel@9 7614 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7615 struct nanos_const_wd_definition_local_t
nengel@9 7616 {
nengel@9 7617 nanos_const_wd_definition_t base;
nengel@9 7618 nanos_device_t devices[1];
nengel@9 7619 };
nengel@9 7620 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7621 {
nengel@9 7622 {
nengel@9 7623 0,
nengel@9 7624 1,
nengel@9 7625 0,
nengel@9 7626 0,
nengel@9 7627 0,
nengel@9 7628 0,
nengel@9 7629 0,
nengel@9 7630 0
nengel@9 7631 },
nengel@9 7632 __alignof__(_nx_data_env_13_t),
nengel@9 7633 0,
nengel@9 7634 1
nengel@9 7635 },
nengel@9 7636 {{
nengel@9 7637 nanos_smp_factory,
nengel@9 7638 &_ol_h264_decode_ompss_13_smp_args
nengel@9 7639 }}
nengel@9 7640 };
nengel@9 7641 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7642 nanos_err_t err;
nengel@9 7643 dyn_props.priority = 0;
nengel@9 7644 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_13_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7645 if (err != NANOS_OK)
nengel@9 7646 nanos_handle_error(err);
nengel@9 7647 if (wd != (nanos_wd_t) 0)
nengel@9 7648 {
nengel@9 7649 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7650 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7651 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7652 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 7653 nanos_dependence_t _dependences[3] = {
nengel@9 7654 {
nengel@9 7655 (void **) &ol_args->__tmp_1_0,
nengel@9 7656 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 7657 {
nengel@9 7658 1,
nengel@9 7659 1,
nengel@9 7660 1,
nengel@9 7661 0
nengel@9 7662 },
nengel@9 7663 sizeof(struct MBRecContext)
nengel@9 7664 },
nengel@9 7665 {
nengel@9 7666 (void **) &ol_args->__tmp_2_0,
nengel@9 7667 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7668 {
nengel@9 7669 1,
nengel@9 7670 1,
nengel@9 7671 1,
nengel@9 7672 0
nengel@9 7673 },
nengel@9 7674 sizeof(SliceBufferEntry)
nengel@9 7675 },
nengel@9 7676 {
nengel@9 7677 (void **) &ol_args->__tmp_3_0,
nengel@9 7678 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 7679 {
nengel@9 7680 1,
nengel@9 7681 1,
nengel@9 7682 1,
nengel@9 7683 0
nengel@9 7684 },
nengel@9 7685 sizeof(int)
nengel@9 7686 }
nengel@9 7687 };
nengel@9 7688 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7689 if (err != NANOS_OK)
nengel@9 7690 nanos_handle_error(err);
nengel@9 7691 }
nengel@9 7692 else
nengel@9 7693 {
nengel@9 7694 _nx_data_env_13_t imm_args;
nengel@9 7695 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7696 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7697 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7698 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 7699 nanos_dependence_t _dependences[3] = {
nengel@9 7700 {
nengel@9 7701 (void **) &imm_args.__tmp_1_0,
nengel@9 7702 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 7703 {
nengel@9 7704 1,
nengel@9 7705 1,
nengel@9 7706 1,
nengel@9 7707 0
nengel@9 7708 },
nengel@9 7709 sizeof(struct MBRecContext)
nengel@9 7710 },
nengel@9 7711 {
nengel@9 7712 (void **) &imm_args.__tmp_2_0,
nengel@9 7713 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7714 {
nengel@9 7715 1,
nengel@9 7716 1,
nengel@9 7717 1,
nengel@9 7718 0
nengel@9 7719 },
nengel@9 7720 sizeof(SliceBufferEntry)
nengel@9 7721 },
nengel@9 7722 {
nengel@9 7723 (void **) &imm_args.__tmp_3_0,
nengel@9 7724 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 7725 {
nengel@9 7726 1,
nengel@9 7727 1,
nengel@9 7728 1,
nengel@9 7729 0
nengel@9 7730 },
nengel@9 7731 sizeof(int)
nengel@9 7732 }
nengel@9 7733 };
nengel@9 7734 dyn_props.priority = 0;
nengel@9 7735 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_13_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7736 if (err != NANOS_OK)
nengel@9 7737 nanos_handle_error(err);
nengel@9 7738 }
nengel@9 7739 }
nengel@9 7740 ;
nengel@9 7741 }
nengel@9 7742 smbc = acquire_smbc(h);
nengel@9 7743 SuperMBTask *lastsmb = add_decode_slice_3dwave_tasks(rc[k % 2], &sbe[k % bufs], smbc);
nengel@9 7744 {
nengel@9 7745 struct H264Context *__tmp_0 = h;
nengel@9 7746 struct SuperMBContext *__tmp_1 = smbc;
nengel@9 7747 struct MBRecContext *__tmp_2 = rc[k % 2];
nengel@9 7748 SliceBufferEntry *__tmp_3 = &sbe[k % bufs];
nengel@9 7749 struct SuperMBTask *__tmp_4 = lastsmb;
nengel@9 7750 int *__tmp_5 = &release;
nengel@9 7751 {
nengel@9 7752 /* SMP device descriptor */
nengel@9 7753 static nanos_smp_args_t _ol_h264_decode_ompss_14_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_14};
nengel@9 7754 _nx_data_env_14_t *ol_args = (_nx_data_env_14_t *) 0;
nengel@9 7755 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7756 struct nanos_const_wd_definition_local_t
nengel@9 7757 {
nengel@9 7758 nanos_const_wd_definition_t base;
nengel@9 7759 nanos_device_t devices[1];
nengel@9 7760 };
nengel@9 7761 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7762 {
nengel@9 7763 {
nengel@9 7764 0,
nengel@9 7765 1,
nengel@9 7766 0,
nengel@9 7767 0,
nengel@9 7768 0,
nengel@9 7769 0,
nengel@9 7770 0,
nengel@9 7771 0
nengel@9 7772 },
nengel@9 7773 __alignof__(_nx_data_env_14_t),
nengel@9 7774 0,
nengel@9 7775 1
nengel@9 7776 },
nengel@9 7777 {{
nengel@9 7778 nanos_smp_factory,
nengel@9 7779 &_ol_h264_decode_ompss_14_smp_args
nengel@9 7780 }}
nengel@9 7781 };
nengel@9 7782 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7783 nanos_err_t err;
nengel@9 7784 dyn_props.priority = 0;
nengel@9 7785 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_14_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7786 if (err != NANOS_OK)
nengel@9 7787 nanos_handle_error(err);
nengel@9 7788 if (wd != (nanos_wd_t) 0)
nengel@9 7789 {
nengel@9 7790 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7791 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7792 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7793 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 7794 ol_args->__tmp_4_0 = __tmp_4;
nengel@9 7795 ol_args->__tmp_5_0 = __tmp_5;
nengel@9 7796 nanos_dependence_t _dependences[4] = {
nengel@9 7797 {
nengel@9 7798 (void **) &ol_args->__tmp_4_0,
nengel@9 7799 ((char *) ((__tmp_4)) - (char *) ol_args->__tmp_4_0),
nengel@9 7800 {
nengel@9 7801 1,
nengel@9 7802 0,
nengel@9 7803 1,
nengel@9 7804 0
nengel@9 7805 },
nengel@9 7806 sizeof(struct SuperMBTask)
nengel@9 7807 },
nengel@9 7808 {
nengel@9 7809 (void **) &ol_args->__tmp_2_0,
nengel@9 7810 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7811 {
nengel@9 7812 1,
nengel@9 7813 1,
nengel@9 7814 1,
nengel@9 7815 0
nengel@9 7816 },
nengel@9 7817 sizeof(struct MBRecContext)
nengel@9 7818 },
nengel@9 7819 {
nengel@9 7820 (void **) &ol_args->__tmp_3_0,
nengel@9 7821 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 7822 {
nengel@9 7823 1,
nengel@9 7824 1,
nengel@9 7825 1,
nengel@9 7826 0
nengel@9 7827 },
nengel@9 7828 sizeof(SliceBufferEntry)
nengel@9 7829 },
nengel@9 7830 {
nengel@9 7831 (void **) &ol_args->__tmp_5_0,
nengel@9 7832 ((char *) ((__tmp_5)) - (char *) ol_args->__tmp_5_0),
nengel@9 7833 {
nengel@9 7834 1,
nengel@9 7835 1,
nengel@9 7836 1,
nengel@9 7837 0
nengel@9 7838 },
nengel@9 7839 sizeof(int)
nengel@9 7840 }
nengel@9 7841 };
nengel@9 7842 err = nanos_submit(wd, 4, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7843 if (err != NANOS_OK)
nengel@9 7844 nanos_handle_error(err);
nengel@9 7845 }
nengel@9 7846 else
nengel@9 7847 {
nengel@9 7848 _nx_data_env_14_t imm_args;
nengel@9 7849 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7850 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7851 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7852 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 7853 imm_args.__tmp_4_0 = __tmp_4;
nengel@9 7854 imm_args.__tmp_5_0 = __tmp_5;
nengel@9 7855 nanos_dependence_t _dependences[4] = {
nengel@9 7856 {
nengel@9 7857 (void **) &imm_args.__tmp_4_0,
nengel@9 7858 ((char *) ((__tmp_4)) - (char *) imm_args.__tmp_4_0),
nengel@9 7859 {
nengel@9 7860 1,
nengel@9 7861 0,
nengel@9 7862 1,
nengel@9 7863 0
nengel@9 7864 },
nengel@9 7865 sizeof(struct SuperMBTask)
nengel@9 7866 },
nengel@9 7867 {
nengel@9 7868 (void **) &imm_args.__tmp_2_0,
nengel@9 7869 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7870 {
nengel@9 7871 1,
nengel@9 7872 1,
nengel@9 7873 1,
nengel@9 7874 0
nengel@9 7875 },
nengel@9 7876 sizeof(struct MBRecContext)
nengel@9 7877 },
nengel@9 7878 {
nengel@9 7879 (void **) &imm_args.__tmp_3_0,
nengel@9 7880 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 7881 {
nengel@9 7882 1,
nengel@9 7883 1,
nengel@9 7884 1,
nengel@9 7885 0
nengel@9 7886 },
nengel@9 7887 sizeof(SliceBufferEntry)
nengel@9 7888 },
nengel@9 7889 {
nengel@9 7890 (void **) &imm_args.__tmp_5_0,
nengel@9 7891 ((char *) ((__tmp_5)) - (char *) imm_args.__tmp_5_0),
nengel@9 7892 {
nengel@9 7893 1,
nengel@9 7894 1,
nengel@9 7895 1,
nengel@9 7896 0
nengel@9 7897 },
nengel@9 7898 sizeof(int)
nengel@9 7899 }
nengel@9 7900 };
nengel@9 7901 dyn_props.priority = 0;
nengel@9 7902 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_14_t), &imm_args, 4, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 7903 if (err != NANOS_OK)
nengel@9 7904 nanos_handle_error(err);
nengel@9 7905 }
nengel@9 7906 }
nengel@9 7907 ;
nengel@9 7908 }
nengel@9 7909 {
nengel@9 7910 struct H264Context *__tmp_0 = h;
nengel@9 7911 struct OutputContext *__tmp_1 = oc;
nengel@9 7912 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 7913 {
nengel@9 7914 /* SMP device descriptor */
nengel@9 7915 static nanos_smp_args_t _ol_h264_decode_ompss_15_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_15};
nengel@9 7916 _nx_data_env_15_t *ol_args = (_nx_data_env_15_t *) 0;
nengel@9 7917 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 7918 struct nanos_const_wd_definition_local_t
nengel@9 7919 {
nengel@9 7920 nanos_const_wd_definition_t base;
nengel@9 7921 nanos_device_t devices[1];
nengel@9 7922 };
nengel@9 7923 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 7924 {
nengel@9 7925 {
nengel@9 7926 0,
nengel@9 7927 1,
nengel@9 7928 0,
nengel@9 7929 0,
nengel@9 7930 0,
nengel@9 7931 0,
nengel@9 7932 0,
nengel@9 7933 0
nengel@9 7934 },
nengel@9 7935 __alignof__(_nx_data_env_15_t),
nengel@9 7936 0,
nengel@9 7937 1
nengel@9 7938 },
nengel@9 7939 {{
nengel@9 7940 nanos_smp_factory,
nengel@9 7941 &_ol_h264_decode_ompss_15_smp_args
nengel@9 7942 }}
nengel@9 7943 };
nengel@9 7944 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 7945 nanos_err_t err;
nengel@9 7946 dyn_props.priority = 0;
nengel@9 7947 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_15_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 7948 if (err != NANOS_OK)
nengel@9 7949 nanos_handle_error(err);
nengel@9 7950 if (wd != (nanos_wd_t) 0)
nengel@9 7951 {
nengel@9 7952 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 7953 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 7954 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 7955 nanos_dependence_t _dependences[2] = {
nengel@9 7956 {
nengel@9 7957 (void **) &ol_args->__tmp_2_0,
nengel@9 7958 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 7959 {
nengel@9 7960 1,
nengel@9 7961 0,
nengel@9 7962 1,
nengel@9 7963 0
nengel@9 7964 },
nengel@9 7965 sizeof(SliceBufferEntry)
nengel@9 7966 },
nengel@9 7967 {
nengel@9 7968 (void **) &ol_args->__tmp_1_0,
nengel@9 7969 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 7970 {
nengel@9 7971 1,
nengel@9 7972 1,
nengel@9 7973 1,
nengel@9 7974 0
nengel@9 7975 },
nengel@9 7976 sizeof(struct OutputContext)
nengel@9 7977 }
nengel@9 7978 };
nengel@9 7979 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 7980 if (err != NANOS_OK)
nengel@9 7981 nanos_handle_error(err);
nengel@9 7982 }
nengel@9 7983 else
nengel@9 7984 {
nengel@9 7985 _nx_data_env_15_t imm_args;
nengel@9 7986 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 7987 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 7988 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 7989 nanos_dependence_t _dependences[2] = {
nengel@9 7990 {
nengel@9 7991 (void **) &imm_args.__tmp_2_0,
nengel@9 7992 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 7993 {
nengel@9 7994 1,
nengel@9 7995 0,
nengel@9 7996 1,
nengel@9 7997 0
nengel@9 7998 },
nengel@9 7999 sizeof(SliceBufferEntry)
nengel@9 8000 },
nengel@9 8001 {
nengel@9 8002 (void **) &imm_args.__tmp_1_0,
nengel@9 8003 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 8004 {
nengel@9 8005 1,
nengel@9 8006 1,
nengel@9 8007 1,
nengel@9 8008 0
nengel@9 8009 },
nengel@9 8010 sizeof(struct OutputContext)
nengel@9 8011 }
nengel@9 8012 };
nengel@9 8013 dyn_props.priority = 0;
nengel@9 8014 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_15_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 8015 if (err != NANOS_OK)
nengel@9 8016 nanos_handle_error(err);
nengel@9 8017 }
nengel@9 8018 }
nengel@9 8019 ;
nengel@9 8020 }
nengel@9 8021 }
nengel@9 8022 }
nengel@9 8023 else
nengel@9 8024 {
nengel@9 8025 while (!pc->final_frame && frames++ < h->num_frames && !h->quit)
nengel@9 8026 {
nengel@9 8027 {
nengel@9 8028 struct H264Context *__tmp_0 = h;
nengel@9 8029 struct ParserContext *__tmp_1 = pc;
nengel@9 8030 struct NalContext *__tmp_2 = nc;
nengel@9 8031 SliceBufferEntry *__tmp_3 = &sbe[k % bufs];
nengel@9 8032 {
nengel@9 8033 /* SMP device descriptor */
nengel@9 8034 static nanos_smp_args_t _ol_h264_decode_ompss_16_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_16};
nengel@9 8035 _nx_data_env_16_t *ol_args = (_nx_data_env_16_t *) 0;
nengel@9 8036 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 8037 struct nanos_const_wd_definition_local_t
nengel@9 8038 {
nengel@9 8039 nanos_const_wd_definition_t base;
nengel@9 8040 nanos_device_t devices[1];
nengel@9 8041 };
nengel@9 8042 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 8043 {
nengel@9 8044 {
nengel@9 8045 0,
nengel@9 8046 1,
nengel@9 8047 0,
nengel@9 8048 0,
nengel@9 8049 0,
nengel@9 8050 0,
nengel@9 8051 0,
nengel@9 8052 0
nengel@9 8053 },
nengel@9 8054 __alignof__(_nx_data_env_16_t),
nengel@9 8055 0,
nengel@9 8056 1
nengel@9 8057 },
nengel@9 8058 {{
nengel@9 8059 nanos_smp_factory,
nengel@9 8060 &_ol_h264_decode_ompss_16_smp_args
nengel@9 8061 }}
nengel@9 8062 };
nengel@9 8063 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 8064 nanos_err_t err;
nengel@9 8065 dyn_props.priority = 0;
nengel@9 8066 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_16_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 8067 if (err != NANOS_OK)
nengel@9 8068 nanos_handle_error(err);
nengel@9 8069 if (wd != (nanos_wd_t) 0)
nengel@9 8070 {
nengel@9 8071 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 8072 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 8073 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 8074 ol_args->__tmp_3_0 = __tmp_3;
nengel@9 8075 nanos_dependence_t _dependences[3] = {
nengel@9 8076 {
nengel@9 8077 (void **) &ol_args->__tmp_3_0,
nengel@9 8078 ((char *) ((__tmp_3)) - (char *) ol_args->__tmp_3_0),
nengel@9 8079 {
nengel@9 8080 0,
nengel@9 8081 1,
nengel@9 8082 1,
nengel@9 8083 0
nengel@9 8084 },
nengel@9 8085 sizeof(SliceBufferEntry)
nengel@9 8086 },
nengel@9 8087 {
nengel@9 8088 (void **) &ol_args->__tmp_1_0,
nengel@9 8089 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 8090 {
nengel@9 8091 1,
nengel@9 8092 1,
nengel@9 8093 1,
nengel@9 8094 0
nengel@9 8095 },
nengel@9 8096 sizeof(struct ParserContext)
nengel@9 8097 },
nengel@9 8098 {
nengel@9 8099 (void **) &ol_args->__tmp_2_0,
nengel@9 8100 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 8101 {
nengel@9 8102 1,
nengel@9 8103 1,
nengel@9 8104 1,
nengel@9 8105 0
nengel@9 8106 },
nengel@9 8107 sizeof(struct NalContext)
nengel@9 8108 }
nengel@9 8109 };
nengel@9 8110 err = nanos_submit(wd, 3, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 8111 if (err != NANOS_OK)
nengel@9 8112 nanos_handle_error(err);
nengel@9 8113 }
nengel@9 8114 else
nengel@9 8115 {
nengel@9 8116 _nx_data_env_16_t imm_args;
nengel@9 8117 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 8118 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 8119 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 8120 imm_args.__tmp_3_0 = __tmp_3;
nengel@9 8121 nanos_dependence_t _dependences[3] = {
nengel@9 8122 {
nengel@9 8123 (void **) &imm_args.__tmp_3_0,
nengel@9 8124 ((char *) ((__tmp_3)) - (char *) imm_args.__tmp_3_0),
nengel@9 8125 {
nengel@9 8126 0,
nengel@9 8127 1,
nengel@9 8128 1,
nengel@9 8129 0
nengel@9 8130 },
nengel@9 8131 sizeof(SliceBufferEntry)
nengel@9 8132 },
nengel@9 8133 {
nengel@9 8134 (void **) &imm_args.__tmp_1_0,
nengel@9 8135 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 8136 {
nengel@9 8137 1,
nengel@9 8138 1,
nengel@9 8139 1,
nengel@9 8140 0
nengel@9 8141 },
nengel@9 8142 sizeof(struct ParserContext)
nengel@9 8143 },
nengel@9 8144 {
nengel@9 8145 (void **) &imm_args.__tmp_2_0,
nengel@9 8146 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 8147 {
nengel@9 8148 1,
nengel@9 8149 1,
nengel@9 8150 1,
nengel@9 8151 0
nengel@9 8152 },
nengel@9 8153 sizeof(struct NalContext)
nengel@9 8154 }
nengel@9 8155 };
nengel@9 8156 dyn_props.priority = 0;
nengel@9 8157 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_16_t), &imm_args, 3, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 8158 if (err != NANOS_OK)
nengel@9 8159 nanos_handle_error(err);
nengel@9 8160 }
nengel@9 8161 }
nengel@9 8162 ;
nengel@9 8163 }
nengel@9 8164 {
nengel@9 8165 struct H264Context *__tmp_0 = h;
nengel@9 8166 struct EntropyContext *__tmp_1 = ec[k % bufs];
nengel@9 8167 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 8168 {
nengel@9 8169 /* SMP device descriptor */
nengel@9 8170 static nanos_smp_args_t _ol_h264_decode_ompss_17_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_17};
nengel@9 8171 _nx_data_env_17_t *ol_args = (_nx_data_env_17_t *) 0;
nengel@9 8172 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 8173 struct nanos_const_wd_definition_local_t
nengel@9 8174 {
nengel@9 8175 nanos_const_wd_definition_t base;
nengel@9 8176 nanos_device_t devices[1];
nengel@9 8177 };
nengel@9 8178 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 8179 {
nengel@9 8180 {
nengel@9 8181 0,
nengel@9 8182 1,
nengel@9 8183 0,
nengel@9 8184 0,
nengel@9 8185 0,
nengel@9 8186 0,
nengel@9 8187 0,
nengel@9 8188 0
nengel@9 8189 },
nengel@9 8190 __alignof__(_nx_data_env_17_t),
nengel@9 8191 0,
nengel@9 8192 1
nengel@9 8193 },
nengel@9 8194 {{
nengel@9 8195 nanos_smp_factory,
nengel@9 8196 &_ol_h264_decode_ompss_17_smp_args
nengel@9 8197 }}
nengel@9 8198 };
nengel@9 8199 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 8200 nanos_err_t err;
nengel@9 8201 dyn_props.priority = 0;
nengel@9 8202 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_17_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 8203 if (err != NANOS_OK)
nengel@9 8204 nanos_handle_error(err);
nengel@9 8205 if (wd != (nanos_wd_t) 0)
nengel@9 8206 {
nengel@9 8207 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 8208 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 8209 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 8210 nanos_dependence_t _dependences[2] = {
nengel@9 8211 {
nengel@9 8212 (void **) &ol_args->__tmp_1_0,
nengel@9 8213 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 8214 {
nengel@9 8215 1,
nengel@9 8216 1,
nengel@9 8217 1,
nengel@9 8218 0
nengel@9 8219 },
nengel@9 8220 sizeof(struct EntropyContext)
nengel@9 8221 },
nengel@9 8222 {
nengel@9 8223 (void **) &ol_args->__tmp_2_0,
nengel@9 8224 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 8225 {
nengel@9 8226 1,
nengel@9 8227 1,
nengel@9 8228 1,
nengel@9 8229 0
nengel@9 8230 },
nengel@9 8231 sizeof(SliceBufferEntry)
nengel@9 8232 }
nengel@9 8233 };
nengel@9 8234 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 8235 if (err != NANOS_OK)
nengel@9 8236 nanos_handle_error(err);
nengel@9 8237 }
nengel@9 8238 else
nengel@9 8239 {
nengel@9 8240 _nx_data_env_17_t imm_args;
nengel@9 8241 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 8242 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 8243 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 8244 nanos_dependence_t _dependences[2] = {
nengel@9 8245 {
nengel@9 8246 (void **) &imm_args.__tmp_1_0,
nengel@9 8247 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 8248 {
nengel@9 8249 1,
nengel@9 8250 1,
nengel@9 8251 1,
nengel@9 8252 0
nengel@9 8253 },
nengel@9 8254 sizeof(struct EntropyContext)
nengel@9 8255 },
nengel@9 8256 {
nengel@9 8257 (void **) &imm_args.__tmp_2_0,
nengel@9 8258 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 8259 {
nengel@9 8260 1,
nengel@9 8261 1,
nengel@9 8262 1,
nengel@9 8263 0
nengel@9 8264 },
nengel@9 8265 sizeof(SliceBufferEntry)
nengel@9 8266 }
nengel@9 8267 };
nengel@9 8268 dyn_props.priority = 0;
nengel@9 8269 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_17_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 8270 if (err != NANOS_OK)
nengel@9 8271 nanos_handle_error(err);
nengel@9 8272 }
nengel@9 8273 }
nengel@9 8274 ;
nengel@9 8275 }
nengel@9 8276 {
nengel@9 8277 struct H264Context *__tmp_0 = h;
nengel@9 8278 struct MBRecContext *__tmp_1 = rc[0];
nengel@9 8279 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 8280 {
nengel@9 8281 /* SMP device descriptor */
nengel@9 8282 static nanos_smp_args_t _ol_h264_decode_ompss_18_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_18};
nengel@9 8283 _nx_data_env_18_t *ol_args = (_nx_data_env_18_t *) 0;
nengel@9 8284 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 8285 struct nanos_const_wd_definition_local_t
nengel@9 8286 {
nengel@9 8287 nanos_const_wd_definition_t base;
nengel@9 8288 nanos_device_t devices[1];
nengel@9 8289 };
nengel@9 8290 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 8291 {
nengel@9 8292 {
nengel@9 8293 0,
nengel@9 8294 1,
nengel@9 8295 0,
nengel@9 8296 0,
nengel@9 8297 0,
nengel@9 8298 0,
nengel@9 8299 0,
nengel@9 8300 0
nengel@9 8301 },
nengel@9 8302 __alignof__(_nx_data_env_18_t),
nengel@9 8303 0,
nengel@9 8304 1
nengel@9 8305 },
nengel@9 8306 {{
nengel@9 8307 nanos_smp_factory,
nengel@9 8308 &_ol_h264_decode_ompss_18_smp_args
nengel@9 8309 }}
nengel@9 8310 };
nengel@9 8311 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 8312 nanos_err_t err;
nengel@9 8313 dyn_props.priority = 0;
nengel@9 8314 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_18_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 8315 if (err != NANOS_OK)
nengel@9 8316 nanos_handle_error(err);
nengel@9 8317 if (wd != (nanos_wd_t) 0)
nengel@9 8318 {
nengel@9 8319 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 8320 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 8321 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 8322 nanos_dependence_t _dependences[2] = {
nengel@9 8323 {
nengel@9 8324 (void **) &ol_args->__tmp_1_0,
nengel@9 8325 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 8326 {
nengel@9 8327 1,
nengel@9 8328 1,
nengel@9 8329 1,
nengel@9 8330 0
nengel@9 8331 },
nengel@9 8332 sizeof(struct MBRecContext)
nengel@9 8333 },
nengel@9 8334 {
nengel@9 8335 (void **) &ol_args->__tmp_2_0,
nengel@9 8336 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 8337 {
nengel@9 8338 1,
nengel@9 8339 1,
nengel@9 8340 1,
nengel@9 8341 0
nengel@9 8342 },
nengel@9 8343 sizeof(SliceBufferEntry)
nengel@9 8344 }
nengel@9 8345 };
nengel@9 8346 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 8347 if (err != NANOS_OK)
nengel@9 8348 nanos_handle_error(err);
nengel@9 8349 }
nengel@9 8350 else
nengel@9 8351 {
nengel@9 8352 _nx_data_env_18_t imm_args;
nengel@9 8353 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 8354 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 8355 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 8356 nanos_dependence_t _dependences[2] = {
nengel@9 8357 {
nengel@9 8358 (void **) &imm_args.__tmp_1_0,
nengel@9 8359 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 8360 {
nengel@9 8361 1,
nengel@9 8362 1,
nengel@9 8363 1,
nengel@9 8364 0
nengel@9 8365 },
nengel@9 8366 sizeof(struct MBRecContext)
nengel@9 8367 },
nengel@9 8368 {
nengel@9 8369 (void **) &imm_args.__tmp_2_0,
nengel@9 8370 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 8371 {
nengel@9 8372 1,
nengel@9 8373 1,
nengel@9 8374 1,
nengel@9 8375 0
nengel@9 8376 },
nengel@9 8377 sizeof(SliceBufferEntry)
nengel@9 8378 }
nengel@9 8379 };
nengel@9 8380 dyn_props.priority = 0;
nengel@9 8381 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_18_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 8382 if (err != NANOS_OK)
nengel@9 8383 nanos_handle_error(err);
nengel@9 8384 }
nengel@9 8385 }
nengel@9 8386 ;
nengel@9 8387 }
nengel@9 8388 {
nengel@9 8389 struct H264Context *__tmp_0 = h;
nengel@9 8390 struct OutputContext *__tmp_1 = oc;
nengel@9 8391 SliceBufferEntry *__tmp_2 = &sbe[k % bufs];
nengel@9 8392 {
nengel@9 8393 /* SMP device descriptor */
nengel@9 8394 static nanos_smp_args_t _ol_h264_decode_ompss_19_smp_args = {(void (*)(void *)) _smp__ol_h264_decode_ompss_19};
nengel@9 8395 _nx_data_env_19_t *ol_args = (_nx_data_env_19_t *) 0;
nengel@9 8396 nanos_wd_t wd = (nanos_wd_t) 0;
nengel@9 8397 struct nanos_const_wd_definition_local_t
nengel@9 8398 {
nengel@9 8399 nanos_const_wd_definition_t base;
nengel@9 8400 nanos_device_t devices[1];
nengel@9 8401 };
nengel@9 8402 static struct nanos_const_wd_definition_local_t _const_def = {
nengel@9 8403 {
nengel@9 8404 {
nengel@9 8405 0,
nengel@9 8406 1,
nengel@9 8407 0,
nengel@9 8408 0,
nengel@9 8409 0,
nengel@9 8410 0,
nengel@9 8411 0,
nengel@9 8412 0
nengel@9 8413 },
nengel@9 8414 __alignof__(_nx_data_env_19_t),
nengel@9 8415 0,
nengel@9 8416 1
nengel@9 8417 },
nengel@9 8418 {{
nengel@9 8419 nanos_smp_factory,
nengel@9 8420 &_ol_h264_decode_ompss_19_smp_args
nengel@9 8421 }}
nengel@9 8422 };
nengel@9 8423 nanos_wd_dyn_props_t dyn_props = {0};
nengel@9 8424 nanos_err_t err;
nengel@9 8425 dyn_props.priority = 0;
nengel@9 8426 err = nanos_create_wd_compact(&wd, &_const_def.base, &dyn_props, sizeof(_nx_data_env_19_t), (void **) &ol_args, nanos_current_wd(), (nanos_copy_data_t **) 0);
nengel@9 8427 if (err != NANOS_OK)
nengel@9 8428 nanos_handle_error(err);
nengel@9 8429 if (wd != (nanos_wd_t) 0)
nengel@9 8430 {
nengel@9 8431 ol_args->__tmp_0_0 = __tmp_0;
nengel@9 8432 ol_args->__tmp_1_0 = __tmp_1;
nengel@9 8433 ol_args->__tmp_2_0 = __tmp_2;
nengel@9 8434 nanos_dependence_t _dependences[2] = {
nengel@9 8435 {
nengel@9 8436 (void **) &ol_args->__tmp_2_0,
nengel@9 8437 ((char *) ((__tmp_2)) - (char *) ol_args->__tmp_2_0),
nengel@9 8438 {
nengel@9 8439 1,
nengel@9 8440 0,
nengel@9 8441 1,
nengel@9 8442 0
nengel@9 8443 },
nengel@9 8444 sizeof(SliceBufferEntry)
nengel@9 8445 },
nengel@9 8446 {
nengel@9 8447 (void **) &ol_args->__tmp_1_0,
nengel@9 8448 ((char *) ((__tmp_1)) - (char *) ol_args->__tmp_1_0),
nengel@9 8449 {
nengel@9 8450 1,
nengel@9 8451 1,
nengel@9 8452 1,
nengel@9 8453 0
nengel@9 8454 },
nengel@9 8455 sizeof(struct OutputContext)
nengel@9 8456 }
nengel@9 8457 };
nengel@9 8458 err = nanos_submit(wd, 2, (nanos_dependence_t *) _dependences, (nanos_team_t) 0);
nengel@9 8459 if (err != NANOS_OK)
nengel@9 8460 nanos_handle_error(err);
nengel@9 8461 }
nengel@9 8462 else
nengel@9 8463 {
nengel@9 8464 _nx_data_env_19_t imm_args;
nengel@9 8465 imm_args.__tmp_0_0 = __tmp_0;
nengel@9 8466 imm_args.__tmp_1_0 = __tmp_1;
nengel@9 8467 imm_args.__tmp_2_0 = __tmp_2;
nengel@9 8468 nanos_dependence_t _dependences[2] = {
nengel@9 8469 {
nengel@9 8470 (void **) &imm_args.__tmp_2_0,
nengel@9 8471 ((char *) ((__tmp_2)) - (char *) imm_args.__tmp_2_0),
nengel@9 8472 {
nengel@9 8473 1,
nengel@9 8474 0,
nengel@9 8475 1,
nengel@9 8476 0
nengel@9 8477 },
nengel@9 8478 sizeof(SliceBufferEntry)
nengel@9 8479 },
nengel@9 8480 {
nengel@9 8481 (void **) &imm_args.__tmp_1_0,
nengel@9 8482 ((char *) ((__tmp_1)) - (char *) imm_args.__tmp_1_0),
nengel@9 8483 {
nengel@9 8484 1,
nengel@9 8485 1,
nengel@9 8486 1,
nengel@9 8487 0
nengel@9 8488 },
nengel@9 8489 sizeof(struct OutputContext)
nengel@9 8490 }
nengel@9 8491 };
nengel@9 8492 dyn_props.priority = 0;
nengel@9 8493 err = nanos_create_wd_and_run_compact(&_const_def.base, &dyn_props, sizeof(_nx_data_env_19_t), &imm_args, 2, (nanos_dependence_t *) _dependences, (nanos_copy_data_t *) 0, (void *) 0);
nengel@9 8494 if (err != NANOS_OK)
nengel@9 8495 nanos_handle_error(err);
nengel@9 8496 }
nengel@9 8497 }
nengel@9 8498 ;
nengel@9 8499 }
nengel@9 8500 {
nengel@9 8501 struct _dependence_holder
nengel@9 8502 {
nengel@9 8503 struct ParserContext *dep_0;
nengel@9 8504 } _dep_holder = {&(*pc)};
nengel@9 8505 nanos_dependence_t _wait_dependences[1] = {{
nengel@9 8506 (void **) &_dep_holder.dep_0,
nengel@9 8507 ((char *) ((pc)) - (char *) _dep_holder.dep_0),
nengel@9 8508 {
nengel@9 8509 1,
nengel@9 8510 0,
nengel@9 8511 0,
nengel@9 8512 0
nengel@9 8513 },
nengel@9 8514 sizeof (*pc)
nengel@9 8515 }};
nengel@9 8516 nanos_wait_on(1, _wait_dependences);
nengel@9 8517 }
nengel@9 8518 k++;
nengel@9 8519 }
nengel@9 8520 }
nengel@9 8521 nanos_wg_wait_completion(nanos_current_wd(), 0);
nengel@9 8522 while ((out = output_frame(h, oc, ((void *) 0), h->ofile, h->frame_width, h->frame_height)))
nengel@9 8523 ;
nengel@9 8524 h->num_frames = oc->frame_number;
nengel@9 8525 free_parse_context(pc);
nengel@9 8526 free_nal_context(nc);
nengel@9 8527 free_output_context(oc);
nengel@9 8528 for (int i = 0;
nengel@9 8529 i < bufs;
nengel@9 8530 i++)
nengel@9 8531 {
nengel@9 8532 free_sb_entry(&sbe[i]);
nengel@9 8533 free_entropy_context(ec[i]);
nengel@9 8534 }
nengel@9 8535 av_free(sbe);
nengel@9 8536 for (int i = 0;
nengel@9 8537 i < 2;
nengel@9 8538 i++)
nengel@9 8539 {
nengel@9 8540 free_mbrec_context(rc[i]);
nengel@9 8541 }
nengel@9 8542 return 0;
nengel@9 8543 }
nengel@9 8544 __attribute__((weak, section("nanos_init"))) nanos_init_desc_t __section__nanos_init = {
nengel@9 8545 nanos_omp_set_interface,
nengel@9 8546 (void *) 0
nengel@9 8547 };