SSE4.2

Vector programming. SSE4.2 to AVX2 conversion examples.

In this blog I’ll try to show how to convert SSE4.2 assembly to AVX2 (using the schemes from the blog Programming using AVX2) and how this affects performance.

  • Easy case. When it is enough to add “v” prefix and replace “xmm” with “ymm”.

Consider we have the following loop:

Programming using AVX2. Permutations.

As we all know AVX2 has extended (256 bit) comparing to SSE4.2 (128 bit) vector length. For basic instructions like packed add, sub, mul… this leads to ~2 times performance advantage (as vector length is 2 times wider), but for some instructions performance gain is not so obvious. This blog is about such instructions, about permutations.

Briefly a set of AVX2 permutations are applied to high and low 128 bit parts separately. These instructions are: vpalignr, all vpack instructions, all vpunpck instructions and vpshufb instruction.

Créer des applications NDK Android* avec Intel® Integrated Performance Primitives (Intel® IPP)


Intel® Integrated Performance Primitives (Intel® IPP) fournit des composants hautement optimisés pour le traitement des images, le traitement des signaux, les mathématiques vectorielles et les calculs de petites matrices. Plusieurs domaines Intel IPP contiennent les fonctions réglées manuellement pour processeur Intel® Atom™ en tirant parti des instructions Intel® Streaming SIMD Extensions (Intel® SSE). Les bibliothèques Intel IPP statiques sans threads Linux* prennent maintenant en charge le SE Android* et peuvent être utilisées avec les applications Android.

  • 开发人员
  • 安卓*
  • 安卓*
  • Java*
  • 英特尔® 集成性能原件
  • 英特尔® SIMD 流指令扩展
  • SSE4.2
  • ndk
  • 英特尔® 凌动™ 处理器
  • Создание приложений с помощью комплекта Android* NDK и библиотек Intel® Integrated Performance Primitives


    Библиотеки Intel® Integrated Performance Primitives содержат высоко оптимизированные функции компонентов для обработки изображений, сигналов, данных векторной математики и небольших матричных вычислений. Несколько доменов библиотек Intel Integrated Performance Primitives содержат оптимизированные вручную функции для процессоров Intel® Atom™ и используют при этом команды Intel® Streaming SIMD Extensions. Статическая беспотоковая библиотека Intel Integrated Performance Primitives теперь поддерживает ОС Android* и может использоваться с приложениями для этой платформы.

  • 开发人员
  • 安卓*
  • 安卓*
  • Java*
  • 英特尔® 集成性能原件
  • 英特尔® SIMD 流指令扩展
  • SSE4.2
  • ndk
  • 英特尔® 凌动™ 处理器
  • Compilare applicazioni Android* NDK con Intel® Integrated Performance Primitives (Intel® IPP)


    Intel® Integrated Performance Primitives (Intel® IPP) fornisce delle funzioni di elementi di base altamente ottimizzate per l'elaborazione delle immagini, l'elaborazione del segnale, la matematica vettoriale e il calcolo di matrici ridotte. Diversi domini di Intel IPP contengono le funzioni manualmente ottimizzate per il processore Intel® Atom™ utilizzando le istruzioni di Intel® Streaming SIMD Extensions (Intel® SSE). Le librerie Linux* statiche e non-threaded di Intel IPP ora supportano il sistema operativo Android* e possono essere utilizzate con le applicazioni Android.

  • 开发人员
  • 安卓*
  • 安卓*
  • Java*
  • 英特尔® 集成性能原件
  • 英特尔® SIMD 流指令扩展
  • SSE4.2
  • ndk
  • 英特尔® 凌动™ 处理器
  • 使用英特尔® IPP 构建 Android* NDK 应用

    英特尔 IPP 为图像处理、信号处理、向量数学和小矩阵计算提供了高度优化的构造块函数。 同时在几个 IPP 域中针对英特尔(R) 凌动™ 处理器提供了可以手动调整的函数,利用的是英特尔® 流 SIMD 扩展 (Intel® SSE) 指令。IPP 静态非线程 Linux* 库现在支持 Android* 操作系统,同时可以和 Android 应用一起使用。

    本文将为您介绍如何将英特尔 IPP 函数添加到 Android NDK 应用中。 英特尔 IPP 提供了处理器特有的优化功能,同时只能关联到本地 Android C/C++ 代码上。为了在您的应用中使用英特尔 IPP,您需要在您的源代码中包含英特尔 IPP 函数,同时你还需要将 IPP 库添加到构建命令行中。

    使用英特尔 IPP

    1. 在源文件中添加英特尔 IPP 函数

  • 开发人员
  • 安卓*
  • 安卓*
  • Java*
  • 英特尔® 集成性能原件
  • 英特尔® SIMD 流指令扩展
  • SSE4.2
  • ndk
  • 英特尔® 凌动™ 处理器
  • 订阅 SSE4.2