|
|
<?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> |
|
|
|
|
|
|