簡體   English   中英

如何將立即4位值傳遞給_mm256_blend_pd的最后一個參數

[英]How do I pass an immediate 4 bit value to the last argument of _mm256_blend_pd

我正在嘗試使用_mm256_blend_pd,但是我一直遇到編譯器錯誤。 在這種情況下,錯誤是gcc希望“最后一個參數必須是4位立即數”。 我可以成功傳遞一個硬編碼值,但是任何計算出的值都會產生錯誤。

這是一個人為設計且無用的程序,用於演示錯誤。 我遇到了gcc 4.6.3和gcc 4.8.3錯誤。

#include <immintrin.h>
#include <stdlib.h>

int main() {
    __m256d zeroHit = {0};
    int j=rand()%3;
    int imm=(0x01);
    // This line will compile
    _mm256_store_pd(0,_mm256_blend_pd(zeroHit,*reinterpret_cast<__m256d*>(0),imm&0x0F)); 
    imm=(0x01 & (j!=0));
    // This line will produce the error
    _mm256_store_pd(0,_mm256_blend_pd(zeroHit,*reinterpret_cast<__m256d*>(0),imm&0x0F));
    return 0;
}

出於某種原因,它被稱為“立即”。 它必須是一個編譯時間常數。 –神秘

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM