在AVX/AVX2中,我只能找到_mm256_stream_load_si256()
,这是__m256i
。有没有办法流式加载__m256d
,为什么? (我想加载它没有污染CPU缓存)什么是非时间流媒体加载内在(_mm256_stream_load_si256)的浮点(__m256d)版本?
是否有任何障碍做下列(积极铸造)?
__m256d *pDest = /* ... */;
__m256d *pSrc = /* ... */;
/* ... */
const __m256i iWeight = _mm256_stream_load_si256(reinterpret_cast<const __m256i*>(pSrc));
const __m256d prior = _mm256_div_pd(*reinterpret_cast<const __m256d*>(&iWeight), divisor);
_mm256_stream_pd(reinterpret_cast<double*>(pDest), prior);
__m256d和__m256i有什么区别? –
@MarekVitek,'__m256d'包含4个“双”。 '__m256i'包含32 uint8_t' /'int8_t',16'uint16_t' /'int16_t',8'uint32_t' /'int32_t'和4'uint64_t' /'int64_t'的联合。所以它们都是32字节长,占用1个YMM寄存器。 –