15942N/A<!DOCTYPE REFENTRY PUBLIC "-//Sun Microsystems//DTD DocBook V3.0-Based SolBook Subset V2.0//EN" [
15942N/A<!--ArborText, Inc., 1988-1999, v.4002-->
15946N/A<!--ARC : LSARC 2005/734 GNOME For Nevada -->
15942N/A<!ENTITY cmd "liboil-0.3">
15942N/A<!ENTITY % commonents SYSTEM "smancommon.ent">
15942N/A%commonents;
15942N/A<!ENTITY % booktitles SYSTEM "booktitles.ent">
15942N/A%booktitles;
15942N/A<!ENTITY suncopy "Copyright (c) 2009 Sun Microsystems, Inc. All Rights Reserved.">
15942N/A]>
15942N/A<?Pub UDT _bookmark _target>
15942N/A<?Pub Inc>
15942N/A<refentry id="liboil-03-3">
15942N/A<!-- %Z%%M% %I% %E% SMI; -->
15942N/A<refmeta><refentrytitle>&cmd;</refentrytitle><manvolnum>3</manvolnum>
15942N/A<refmiscinfo class="date">20 Feb 2009</refmiscinfo>
15942N/A<refmiscinfo class="sectdesc">&man1;</refmiscinfo>
15942N/A<refmiscinfo class="software">&release;</refmiscinfo>
15942N/A<refmiscinfo class="arch">generic</refmiscinfo>
15942N/A<refmiscinfo class="copyright">&suncopy;</refmiscinfo>
15942N/A</refmeta>
15942N/A<indexterm><primary>&cmd;</primary></indexterm><indexterm><primary>
15942N/ALibrary of optimized functions.
15942N/A</primary></indexterm>
15942N/A<refnamediv id="liboil-03-3-name"><refname>&cmd;</refname>
15942N/A<refpurpose>Library of optimized functions</refpurpose></refnamediv>
15942N/A<refsect1 id="liboil-03-3-desc"><title>&desc-tt;</title>
15942N/A<para>
15944N/A<literal>&cmd;</literal> is a library of simple functions that are optimized
15944N/Afor various CPUs. These functions are generally loops implementing simple
15942N/Aalgorithms, such as converting an array of N integers to floating-point numbers
15942N/Aor multiplying and summing an array of N numbers. Such functions are candidates
15942N/Afor significant optimization using various techniques, especially by using
15942N/Aextended instructions provided by modern CPUs (Altivec, MMX, SSE, etc.).
15942N/A</para>
15942N/A<para>
15942N/ALiboil has a number of function classes, which are primarily seen by a
15942N/Adeveloper using the library as actual functions. One such function is:
15942N/A</para>
15942N/A<para>
15942N/A<para>
15942N/A<screen>
15942N/A * void oil_tablelookup_u8 (uint8_t *dest, int dstr,
15942N/A uint8_t *src, o int sstr, uint8_t *table,
15942N/A int tablestride, int n);
15942N/A</screen>
15942N/A</para>
15942N/A<para>
15942N/AThis function performs a table lookup for each element in the src array, and
15942N/Aputs the results in the dest array. In actuality, oil_tablelookup_u8 is
15942N/Acurrently implemented as a preprocessor macro that generates the correct code
15942N/Ato call an indirect function.
15942N/A</para>
15942N/A<para>
15942N/AEach function class has one or more function implementations, which are real
15942N/Afunctions that perform the exact same action as defined by the documentation
15942N/Afor the function. Each class has one implementation that is the reference
15948N/Aimplementation. This reference implementation is used to test the accuracy of
15942N/Aother implementations.
15942N/A</para>
15942N/A<para>
15942N/APresumably, the non-reference implementations can perform the action faster
15942N/Athan the reference implementation. Thus, the liboil initialization code (at
15942N/Aruntime) checks each implementation in a class to determine the fastest
15942N/Aimplementation. Once this is done, the class's indirect function pointer points
15942N/Ato the optimal implementation. After this, any calls to the function class
15942N/A(such as oil_tablelookup_u8() described above) will automatically be routed to
15942N/Athe fastest implementation.
15942N/A</para>
15942N/A</refsect1>
15942N/A<refsect1 id="liboil-03-3-file"><title>&file-tt;</title>
15942N/A<para>The following files are used by this application:</para>
15942N/A<variablelist termlength="wholeline">
15942N/A<varlistentry><term><filename>/usr/lib/&cmd;.so</filename> </term><listitem>
15942N/A<para>&cmd; shared library</para></varlistentry>
15942N/A<varlistentry><term><filename>/usr/share/gtk-doc/html/liboil</filename> </term><listitem>
15942N/A<para>Location of developer documentation</para>
15942N/A</listitem></varlistentry>
15942N/A</variablelist></refsect1>
15942N/A<refsect1 id="liboil-03-3-attr"><title>&attr-tt;</title>
15942N/A<para>See <olink targetdocent="REFMAN5" localinfo="attributes-3"><citerefentry>
15942N/A<refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry></olink>
15942N/Afor descriptions of the following attributes:</para>
15942N/A<informaltable frame="all">
15942N/A<tgroup cols="2" colsep="1" rowsep="1"><colspec colname="COLSPEC0" colwidth="1*">
15942N/A<colspec colname="COLSPEC1" colwidth="1*">
15942N/A<thead>
15942N/A<row><entry align="center" valign="middle">ATTRIBUTE TYPE</entry><entry align="center"
15942N/Avalign="middle">ATTRIBUTE VALUE</entry></row>
15942N/A</thead>
15942N/A<tbody>
18745N/A<row><entry><para>Availability</para></entry><entry><para>library/liboil</para></entry>
15942N/A</row>
15942N/A<row><entry colname="COLSPEC0"><para>Interface stability</para></entry><entry
15942N/Acolname="COLSPEC1"><para>Volatile</para></entry></row>
15942N/A</tbody>
15942N/A</tgroup>
15942N/A</informaltable>
15942N/A</refsect1>
15942N/A<refsect1 id="liboil-03-3-also"><title>&also-tt;</title>
15942N/A<!--Reference to another man page-->
15942N/A<!--Reference to a Help manual-->
15942N/A<!--Reference to a book.-->
15942N/A<para>
15942N/A<citerefentry><refentrytitle>oil-bugreport</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
15942N/A<citerefentry><refentrytitle>attributes</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
15942N/A<citerefentry><refentrytitle>gnome-interfaces</refentrytitle><manvolnum>5</manvolnum></citerefentry>
15942N/A</para>
15942N/A</refsect1>
15942N/A</refentry>