_mm256_scalef_pd
Classification
AVX-512, Miscellaneous, CPUID Test: AVX512F
Header File
immintrin.h
Instruction
VSCALEFPD ymm, ymm, ymm
Synopsis
 _mm256_scalef_pd(__m256d a, __m256d b);
Description
Scale the packed double-precision (64-bit) floating-point elements in "a" using values from "b", and store the results in "dst".
Operation
DEFINE SCALE(src1, src2) {
	IF (src2 == NaN)
		IF (src2 == SNaN)
			RETURN QNAN(src2)
		FI
	ELSE IF (src1 == NaN)
		IF (src1 == SNaN)
			RETURN QNAN(src1)
		FI
		IF (src2 != INF)
			RETURN QNAN(src1)
		FI
	ELSE
		tmp_src2 := src2
		tmp_src1 := src1
		IF (IS_DENORMAL(src2) AND MXCSR.DAZ)
			tmp_src2 := 0
		FI
		IF (IS_DENORMAL(src1) AND MXCSR.DAZ)
			tmp_src1 := 0
		FI
	FI
	dst[63:0] := tmp_src1[63:0] * POW(2.0, FLOOR(tmp_src2[63:0]))
	RETURN dst[63:0]
}
FOR j := 0 to 3
	i := j*64
	dst[i+63:i] := SCALE(a[i+63:0], b[i+63:i])
ENDFOR
dst[MAX:256] := 0