include/compiler.h File Reference

Compiler abstraction layer. More...

#include <stdint.h>

Go to the source code of this file.

Defines

Function and Data Attributes

#define __noreturn
 The function does not return.
#define __must_check
 The return value must be checked.
#define __used
 Mark a function or data object as being used.
#define __nonnull(...)
 Define non-null function attributes.
#define __printf_format(fmt_index, first_arg_index)
 The function takes a printf-like format string.
#define compiler_align_data(byte_alignment)
 Align data variables to a give byte value.
Optimization Control

#define likely(exp)   (exp)
 The expression exp is likely to be true.
#define unlikely(exp)   (exp)
 The expression exp is unlikely to be true.
#define barrier()   do { } while (0)
 Optimization barrier.
#define is_constant(exp)   (0)
 Determine if an expression evaluates to a constant value.
Top-level Directives

#define COMPILER_PRAGMA(arg)   _Pragma(#arg)
 Emit the compiler pragma arg.
#define COMPILER_PACK_SET(alignment)   COMPILER_PRAGMA(pack(alignment))
 Set maximum alignment for subsequent struct and union definitions to alignment.
#define COMPILER_PACK_RESET()   COMPILER_PRAGMA(pack())
 Set default alignment for subsequent struct and union definitions.
#define ERROR_FUNC(name, msg)   extern int name(void)
 Fail compilation if function call isn't eliminated.

Bit Operations

These functions are not meant to be called directly. Please see Bit Operations instead.



#define compiler_ctz(x)   compiler_priv_demux_size(sizeof(x), compiler_priv_ctz, (x))
 Count Trailing Zeroes.
#define compiler_clz(x)   compiler_priv_demux_size(sizeof(x), compiler_priv_clz, (x))
 Count Leading Zeroes.
#define compiler_brev(x)   compiler_priv_demux_size(sizeof(x), compiler_priv_brev, (x))
 Reverse the order of the bits in x.
static int_fast8_t compiler_priv_ctz8 (uint8_t x)
static int_fast8_t compiler_priv_ctz16 (uint16_t x)
static int_fast8_t compiler_priv_ctz32 (uint32_t x)
static int_fast8_t compiler_priv_clz8 (uint8_t x)
static int_fast8_t compiler_priv_clz16 (uint16_t x)
static int_fast8_t compiler_priv_clz32 (uint32_t x)
static uint8_t compiler_priv_brev8 (uint8_t x)
static uint16_t compiler_priv_brev16 (uint16_t x)
static uint32_t compiler_priv_brev32 (uint32_t x)
static int8_t compiler_min_s8 (int8_t a, int8_t b)
static int16_t compiler_min_s16 (int16_t a, int16_t b)
static int32_t compiler_min_s32 (int32_t a, int32_t b)
static int64_t compiler_min_s64 (int64_t a, int64_t b)
static uint8_t compiler_min_u8 (uint8_t a, uint8_t b)
static uint16_t compiler_min_u16 (uint16_t a, uint16_t b)
static uint32_t compiler_min_u32 (uint32_t a, uint32_t b)
static uint64_t compiler_min_u64 (uint64_t a, uint64_t b)
static int8_t compiler_max_s8 (int8_t a, int8_t b)
static int16_t compiler_max_s16 (int16_t a, int16_t b)
static int32_t compiler_max_s32 (int32_t a, int32_t b)
static int64_t compiler_max_s64 (int64_t a, int64_t b)
static uint8_t compiler_max_u8 (uint8_t a, uint8_t b)
static uint16_t compiler_max_u16 (uint16_t a, uint16_t b)
static uint32_t compiler_max_u32 (uint32_t a, uint32_t b)
static uint64_t compiler_max_u64 (uint64_t a, uint64_t b)

Detailed Description

Compiler abstraction layer.

Copyright (C) 2009 Atmel Corporation. All rights reserved.

Definition in file compiler.h.

Generated on Thu Apr 29 14:10:34 2010 for xplain-bc by  doxygen 1.6.3