_mm512_swizzle_pd
Classification
KNC, Swizzle, CPUID Test: KNCNI
Header File
Synopsis
_mm512_swizzle_pd(__m512d v, _MM_SWIZZLE_ENUM s);
Description
Performs a swizzle transformation of each of the two groups of packed 4x double-precision (64-bit) floating-point elements in "v" using swizzle parameter "s", storing the results in "dst".
Operation
CASE s OF
_MM_SWIZ_REG_NONE:
dst[511:0] := v[511:0]
_MM_SWIZ_REG_DCBA:
dst[511:0] := v[511:0]
_MM_SWIZ_REG_CDAB:
FOR j := 0 to 3
i := j*64
dst[i+63:i] := v[i+127:i+64]
dst[i+127:i+64] := v[i+63:i]
ENDFOR
_MM_SWIZ_REG_BADC:
FOR j := 0 to 1
i := j*256
dst[i+63:i] := v[i+191:i+128]
dst[i+127:i+64] := v[i+255:i+192]
dst[i+191:i+128] := v[i+63:i]
dst[i+255:i+192] := v[i+127:i+64]
ENDFOR
_MM_SWIZ_REG_AAAA:
FOR j := 0 to 1
i := j*256
dst[i+63:i] := v[i+63:i]
dst[i+127:i+64] := v[i+63:i]
dst[i+191:i+128] := v[i+63:i]
dst[i+255:i+192] := v[i+63:i]
ENDFOR
_MM_SWIZ_REG_BBBB:
FOR j := 0 to 1
i := j*256
dst[i+63:i] := v[i+127:i+63]
dst[i+127:i+64] := v[i+127:i+63]
dst[i+191:i+128] := v[i+127:i+63]
dst[i+255:i+192] := v[i+127:i+63]
ENDFOR
_MM_SWIZ_REG_CCCC:
FOR j := 0 to 1
i := j*256
dst[i+63:i] := v[i+191:i+128]
dst[i+127:i+64] := v[i+191:i+128]
dst[i+191:i+128] := v[i+191:i+128]
dst[i+255:i+192] := v[i+191:i+128]
ENDFOR
_MM_SWIZ_REG_DDDD:
FOR j := 0 to 1
i := j*256
dst[i+63:i] := v[i+255:i+192]
dst[i+127:i+64] := v[i+255:i+192]
dst[i+191:i+128] := v[i+255:i+192]
dst[i+255:i+192] := v[i+255:i+192]
ENDFOR
_MM_SWIZ_REG_DACB:
FOR j := 0 to 1
i := j*256
dst[i+63:i] := v[i+127:i+64]
dst[i+127:i+64] := v[i+191:i+128]
dst[i+191:i+128] := v[i+63:i]
dst[i+255:i+192] := v[i+255:i+192]
ENDFOR
ESAC
dst[MAX:512] := 0