Jump to: navigation, search

Fall 2019 SPO600 Weekly Schedule

2,185 bytes added, 13:10, 2 October 2019
Week 5
*# We can explicitly include SIMD instructions in a C program by using [[Inline Assembly Language|Inline Assembler]]. This is obviously architecture-specific, so it is important to use C preprocessor directives to include/exclude this code, and to use a generic C implementation on any platform for which you are not providing an inline assembler version.
*# ''C Intrinsics'' are function-like capabilities built into the C compiler. There is a group of intrinsics which provide access to SIMD instructions. However, the benefit of using these over inline assembler is debatable. SIMD intrinsics are not portable, and should be included with C preprocessor directives like inline assembler.
* [[Inline Assembly Language]]
* C Intrinsics
** C Intrinsics are function-like extensions to the C language. Although they look like functions, they are compiled inline, and they are used to provide access to features which are not provided by the C language itself. See the Resources section below for additional detail.
=== Week 5 - Class II ===
* [[SPO600 SIMD Lab]] (Lab 5)
=== Week 5 Resources ===
==== Auto-vectorization ====
* [ Auto-Vectorization in GCC] - Main project page for the GCC auto-vectorizer.
* [ Auto-vectorization with gcc 4.7] - An excellent discussion of the capabilities and limitations of the GCC auto-vectorizer, intrinsics for providing hints to GCC, and other code pattern changes that can improve results. Note that there has been some improvement in the auto-vectorizer since this article was written. '''This article is strongly recommended.'''
* [ Intel (Auto)Vectorization Tutorial] - this deals with the Intel compiler (ICC) but the general technical discussion is valid for other compilers such as gcc and llvm
==== Inline Assembly Language ====
* [[Inline Assembly Language]]
* [ ARM Developer Information Centre]
** [ ARM Cortex-A Series Programmer’s Guide for ARMv8-A]
* The ''short'' guide to the ARMv8 instruction set: [ ARMv8 Instruction Set Overview] ("ARM ISA Overview")
* The ''long'' guide to the ARMv8 instruction set: [ ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile] ("ARM ARM")
==== C Intrinsics - AArch64 SIMD ====
* [ ARM NEON Intrinsics Reference]
* [ GCC ARM C Language Extensions]
=== Week 5 Deliverables ===

Navigation menu