Intel® C++ Compiler Classic Developer Guide and Reference

ID 767249
Date 3/31/2023
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

_mm256_permutevar_pd, _mm_permutevar_pd

Permutes float64 values into a 256-bit or 128-bit destination vector. The corresponding Intel® AVX instruction is VPERMILPD.

Syntax

extern __m256d _mm256_permutevar_pd(__m256d m1, __m256i control);

extern __m128d _mm_permutevar_pd(__m128d m1, __m128i control);

Arguments

m1

a 256-bit or 128-bit float64 vector

control

a vector with 1-bit control fields, one for each corresponding element of the source vector

  • for the 256-bit m1 source vector this control vector contains four 1-bit control fields in the low 4 bits of the immediate
  • for the 128-bit m1 source vector this control vector contains two 1-bit control fields in the low 2 bits of the immediate

Description

Permutes double-precision floating-point values in the source vector, m1, according to the the 1-bit control fields in the low bytes of corresponding elements of a shuffle control. The result is stored in a destination vector.

Returns

A 256-bit or 128-bit float64 vector with permuted values.