Linux SoftwareProgrammingLibrariesliboil 0.3.10

liboil 0.3.10


Liboil is a library of simple functions that are optimized for various CPUs
Developer:   David Schleef
      more software by author →
Price:  0.00
License:   LGPL (GNU Lesser General Public License)
File size:   0K
Language:   
OS:   
Rating:   0 /5 (0 votes)
Your vote:  
enlarge screenshot


Liboil is a library of simple functions that are optimized for various CPUs. These functions are generally loops implementing simple algorithms, such as converting an array of N integers to floating-point numbers or multiplying and summing an array of N numbers.

Such functions are candidates for significant optimization using various techniques, especially by using extended instructions provided by modern CPUs (Altivec, MMX, SSE, etc.).

Many multimedia applications and libraries already do similar things internally. The goal of this project is to consolidate some of the code used by various multimedia projects, and also make optimizations easier to use by a broader range of applications.

As of the liboil-0.3.0 release, I'm actively encouraging other open-source projects to begin using liboil. I'm happy to do much of work converting projects to use liboil, and especially, adding function classes and implementations to liboil that may be needed.

Liboil does not require GCC to build, but since it uses GCC-style inline assembly heavily, using GCC is strongly recommended. Versions of GCC prior to 3.2 are known to have problems compiling liboil correctly. GLib-2.0 is recommended to build a few of the examples, but is not required for anything that is installed.

Liboil may be modified and distributed in accordance with a very liberal license commonly referred to as "Two-Clause BSD". This license was chosen to make liboil useful to as many open-source projects as possible, and has the side effect of also allowing liboil to be used by proprietary applications.

Liboil has a number of function classes, which are primarily seen by a developer using the library as actual functions. One such function is:

void oil_tablelookup_u8 (uint8_t *dest, int dstr, uint8_t *src,
int sstr, uint8_t *table, int tablestride, int n);

This function performs a table lookup for each element in the src array, and puts the results in the dest array. In actuality, oil_tablelookup_u8 is a preprocessor macro that generates the correct code to call an indirect function.

Each function class has one or more function implementations, which are real functions that perform the exact same action as defined by the documentation for the function. Each class has one implementation that is the reference implementation. This reference implmentation is used to test the accuracy of other implementations.

Presumably, the non-reference implementations can perform the action faster than the reference implementation. Thus, the liboil initialization code (at runtime) checks each implementation in a class to determine the fastest implementation. Once this is done, the class's indirect function pointer points to the optimal implementation. After this, any calls to the function class (such as oil_tablelookup_u8() described above) will automatically be routed to the fastest implementation.

Implementations can be disabled either at compile time (e.g., assembly code for the wrong architecture) or at run time (e.g., implementation uses unsupported opcodes). This is done automatically. In addition, implementations may be disabled because they do not produce the same results as the reference implementation.

All of the function classes will be API and ABI stable through the lifetime of the 0.3 series. In addition, the 0.4 series will include a compatibility library that will provide the 0.3 ABI. This allows multiple liboil-using libraries to be linked into the same application without regard to using the same liboil ABI. New ABI versions (0.4, 0.5, etc.) are expected no less than 6 months apart. It is planned that all future versions of liboil will support at least two liboil ABI versions.

What's New in This Release:
  • A lot of assembly optimizations were added for optimizing Dirac operations as used in the recently released Schr?dinger Dirac implementation.
    tags function classes  reference implementation  the reference  the same  oil tablelookup  the function  for the  the fastest  abi versions  liboil abi  fastest implementation  perform the  implementations can  

    Download liboil 0.3.10


     http://www.schleef.org/liboil/download/liboil-0.3.10.tar.gz


    Authors software

    liboil 0.3.10 (by David Schleef)
    Liboil is a library of simple functions that are optimized for various CPUs


    Similar software

    liboil 0.3.10 (by David Schleef)
    Liboil is a library of simple functions that are optimized for various CPUs

    libpcg 0.2.1 (by Eric Anholt)
    libpcg is a small library for procedural content generation, containing some useful algorithms that can be used to generate textures,

    swfdec 0.3.6 (by Christian Schaller)
    Swfdec is a library for rendering Flash animations and games

    libcontain 0.2 Alpha1 (by Ronald Landheer-Cieslak)
    libcontain library provides a large and growing number of fast and thread-safe containter objects written in C and C++.

    The libconta

    C Algorithms Library 1.0.0 (by Simon Howard)
    C Algorithms Library is a collection of commonly used Computer Science algorithms.

    The focus is on code that is well documented an

    Oracle Aggregate C++ Library Beta1 (by David Taylor)
    Oracle Aggregate C++ Library allows C++ programmers to easily create new aggregate functions for Oracle.

    Oracle Aggregate C++ Libr

    POE::XS::Queue::Array 0.003 (by Tony Cook)
    POE::XS::Queue::Array is an XS implementation of POE::Queue::Array.

    This class is an implementation of the abstract POE::Queue int

    jelio 0.85 (by Jens Laas)
    This is a proof of concept C stdio replacement library.

    Its aim is not to provide new implementations of the exact same function c

    SQL Query Builder 1.2 (by David Regla Demaree)
    SQL Query Builder is a PHP 5 class that generates simple SQL queries (select, insert, update, and delete) that can be sent to an SQL

    Scheme2Js 20060718 (by Florian Loitsch)
    Scheme2Js is a Scheme to Javascript compiler


    Other software in this category

    zlib 1.2.3 (by Jean-loup Gailly)
    zlib is designed to be a free, general-purpose, legally unencumbered, lossless data-compression library for use on virtually any comp

    libjpeg v6b (by Independent JPEG Group)
    libjpeg is a library for handling the JPEG (JFIF) image format

    OpenSSL 0.9.7c (by The OpenSSL Project Team)
    The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implement

    libxml2 2.6.27 (by DV)
    Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform), libxml2 library i

    GNU C library 2.4 (by Andreas Jaeger)
    GNU C library (glibc) is one of the most important components of GNU Hurd and most modern Linux distributions.

    GNU C library is us

  •     search


    Featured Software

    jEdit 4.3 pre8
    jEdit is an Open Source text editor written in Java

    Opera 9.02
    Surf the Internet in a safer, faster, and easier way with Opera browser

    GNU Aspell 0.60.4
    GNU Aspell is a Free and Open Source spell checker designed to eventually replace Ispell


    Subscribe in Rojo
    Google Reader
    Add to My Yahoo!

    Add to My AOL
    Subscribe with Bloglines
    Subscribe in NewsGator Online
    Add 'nixbit linux software' to Newsburst from CNET News.com
    del.icio.us nixbit linux software


    Top tags