How did I find this out?The next question is where did I get the details above. The GCC
documentation for __builtin_ia32_loadupd
provides minimal information (the
builtin name, parameters and return types). Not very informative. Looking up the Intel intrinsic description is more informative. You
can Google the intrinsic name or use the
Intel
Intrinsic guide for this. The Intrinsic Guide is interactive and
includes Intel (Chip) technology and text based search capabilities. Clicking
on the intrinsic name opens to a synopsis including; the underlying instruction
name, text description, operation pseudo code, and in some cases performance
information (latency and throughput).The key is to get a description of the intrinsic (operand fields and
types, and which fields are updated for the result) and the underlying Intel
instruction. If the Intrinsic guide is not clear you can look up the
instruction details in the
“Intel® 64 and IA-32
Architectures Software Developer’s Manual”.Information about the PowerISA vector facilities is found in the
PowerISA Version 2.07B (for POWER8 and
3.0 for
POWER9) manual, Book I, Chapter 6. Vector Facility and Chapter 7.
Vector-Scalar Floating-Point Operations. Another good reference is the
OpenPOWER ELF V2 application binary interface (ABI)
document, Chapter 6. Vector Programming Interfaces and Appendix A. Predefined
Functions for Vector Programming.Another useful document is the original Altivec Technology Programmers Interface Manual
with a user friendly structure and many helpful diagrams. But alas the PIM does does not
cover the recent PowerISA (power7, power8, and power9) enhancements.