|
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
<!--
|
|
|
|
|
Copyright (c) 2017 OpenPOWER Foundation
|
|
|
|
|
|
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
|
you may not use this file except in compliance with the License.
|
|
|
|
|
You may obtain a copy of the License at
|
|
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
|
limitations under the License.
|
|
|
|
|
|
|
|
|
|
-->
|
|
|
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
|
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
|
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
|
|
|
version="5.0"
|
|
|
|
|
xml:id="sec_prepare">
|
|
|
|
|
<title>Prepare yourself</title>
|
|
|
|
|
|
|
|
|
|
<para>To port Intel intrinsics to POWER you will need to prepare yourself
|
|
|
|
|
with knowledge of PowerISA vector facilities and how to access the associated
|
|
|
|
|
documentation.</para>
|
|
|
|
|
|
|
|
|
|
<itemizedlist spacing="compact">
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>
|
|
|
|
|
<link xlink:href="https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/Vector-Extensions.html#Vector-Extensions"><emphasis role="italic">GCC vector extension</emphasis></link>
|
|
|
|
|
syntax and usage. This is one of a set of GCC
|
|
|
|
|
"<link xlink:href="https://gcc.gnu.org/onlinedocs/gcc-6.3.0/gcc/C-Extensions.html#C-Extensions"><emphasis role="italic">Extensions to the C language Family</emphasis></link>”
|
|
|
|
|
that the intrinsic header implementation depends
|
|
|
|
|
on. As many of the GCC intrinsics for x86 are implemented via C vector
|
|
|
|
|
extensions, reading and understanding of this code is an important part of the
|
|
|
|
|
porting process. </para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>Intel (x86) intrinsic and type naming conventions and how to find
|
|
|
|
|
more information. The intrinsic name encodes some information about the
|
|
|
|
|
vector size and type of the data, but the pattern is not always obvious.
|
|
|
|
|
Using the online
|
|
|
|
|
<link xlink:href="https://software.intel.com/sites/landingpage/IntrinsicsGuide/#">Intel
|
|
|
|
|
Intrinsic Guide</link> to look up the intrinsic by name is a good first
|
|
|
|
|
step.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
<listitem>
|
|
|
|
|
<para>PowerISA Vector facilities. The Vector facilities of POWER8 are
|
|
|
|
|
extensive and cover the usual types and usual operations. However it has a
|
|
|
|
|
different history and organization from Intel. Both (Intel and PowerISA) have
|
|
|
|
|
their quirks and in some cases the mapping may not be obvious. So familiarizing
|
|
|
|
|
yourself with the PowerISA Vector (VMX) and Vector Scalar Extensions (VSX) is
|
|
|
|
|
important.</para>
|
|
|
|
|
</listitem>
|
|
|
|
|
</itemizedlist>
|
|
|
|
|
|
|
|
|
|
<xi:include href="sec_gcc_vector_extensions.xml"/>
|
|
|
|
|
<xi:include href="sec_intel_intrinsic_functions.xml"/>
|
|
|
|
|
<xi:include href="sec_powerisa_vector_facilities.xml"/>
|
|
|
|
|
<xi:include href="sec_more_examples.xml"/>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
|
|