vpp/vppinfra
Damjan Marion 1c80e831b7 Add support for multiple microarchitectures in single binary
* compiler -march= parameter is changed from native to corei7
   so code is always genereted with instructions which are available
   on the Nehalem microarchitecture (up to SSE4.2)

 * compiler -mtune= parameter is added so code is optimized for
   corei7-avx which equals to Sandy Bridge microarchitecture

 * set of macros is added which allows run-time detection of available
   cpu instructions (e.g. clib_cpu_supports_avx())

 * set of macros is added which allows us to clone graph node funcitons
   where cloned function is optmized for different microarchitecture
   Those macros are using following attributes:
     __attribute__((flatten))
     __attribute__((target("arch=core-avx2)))

   I.e. If applied to foo_node_fn() macro will generate cloned
   functions foo_node_fn_avx2() and foo_node_fn_avx512() (future)
   It will also generate function void * foo_node_fn_multiarch_select()
   which detects available instruction set and returns pointer to the
   best matching function clone.

Change-Id: I2dce0ac92a5ede95fcb56f47f3d1f3c4c040bac0
Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-05-19 18:14:38 +02:00
..
2015-12-08 15:47:27 -07:00
2015-12-08 15:47:27 -07:00
2015-12-08 15:47:27 -07:00
2015-12-08 15:47:27 -07:00
2015-12-08 15:47:27 -07:00
2015-12-08 15:47:27 -07:00

Welcome to vppinfra a programming library of basic data structures.

vec.c		dynamic vectors
bitmap.h	dynamic bitmaps
heap.c		allocation heap of objects (sub-objects have variable size)
pool.h		allocation pool (like heap with size always 1)
hash.c		dynamic hash tables
mheap.c		memory allocator (a la dlmalloc)

format.c	extendable printf-like thing built on top of vectors
std-formats.c	formats for unix data structures, networking stuff, ...
timer.c		arrange for functions to be called at given times.


Build, Test, Install, Use...
----------------------------
    If this package came from the distribution tar ball, skip to the
    Build Section.  If this was a gentoo ebuild, after emerge/ebuild,
    skip to the Use Section; otherwise, start with Pre-Build.

Pre-Build
-----------
    1) svn checkout svn://teaktechnologies.com/fn/trunk/clib clib
    2) autoreconf [-v][-f][-i]	# regenerate configuration files

Build
-----
    1) cd BUILD			#  which may be different than this SRC dir
    2) ${SRC}/configure [--host=CHOST]
    3) make

Test
----
    If not cross-compiling (i.e. CBUILD == CHOST), use "make check" to
    run the validation programs.

Install
-------
    With the root effective user ID (i.e. su or sudo), run "make install".

Use
---
    We need to reference man pages and theory of operation.