2016-07-23 87 views
0

我實驗用gcc矢量擴展,我不知道如何將數據分配到矢量GCC矢量擴展賦值運算符

typedef int simdScore __attribute__ ((vector_size (16))); 
simdScore x ={0,0,0,0}; 
simdScore y= {5,5,5,5}; 
x += y; 

//ERROR by compiler 
x = {1,2,3,4}; 

X = {1,2,3,4}似乎可用僅用於初始化,但不能在初始化後使用它。是否有某種方式來加載矢量數據,而無需創建一個本地variabile的或做:

x[0] =1; 
x[1] =2; 
x[2] =3; 
x[3] =4; 

謝謝大家

+0

_「我正在嘗試使用gcc向量擴展」_當然,你會從當前的標準中選擇'std :: array'嗎? –

+0

對於廣播,你可以做'simdScore y = 5 - (simdScore){};' –

回答

1

是否x = simdScore{1, 2, 3, 4};工作?

+0

這是一個問題或答案? (或評論?) –

+0

我試過C++,像x = simdScore(1,2,3,4);但它不起作用。你的解決方案是正確的 –

+0

我很確定'x = simdScore {1,2,3,4};'只適用於C++ 11或更高版本。如果你需要在C++ 98中完成它,'x =(simdScore){1,2,3,4};'工作嗎? – evan