![](/img/trans.png)
[英]Copying -nan for float and AVX __m256 shows 0 after copying
[英]After declaring a __m256 fail to access its members
當我嘗試使用icpc進行編譯時,它顯示“表達式必須具有類類型”。 對此感到困惑。 請幫忙。
int main()
{
__m256d temp;
temp.m256d_f64[0] = 1;
return 0;
}
我可以重現此問題。 在英特爾編譯器隨附的immintrin.h中,我們對__m256d具有以下定義:
typedef struct _MMINTRIN_TYPE(32) __m256d {
double m256d_f64[4];
} __m256d;
在上面的定義中,結構名稱和別名相同,這使當前的編譯器感到困惑。 Intel Compiler似乎沒有將typedef名稱識別為可以用較小的測試用例證明的類:
$ cat test1.cc
typedef struct __m256d {
double m256d_f64[4];
} m256d;
int main()
{
__m256d temp;
temp.m256d_f64[0] = 1;
return 0;
}
$ icpc test1.cc –c
當我如下所示更改typedef和實例化temp(使用typedefed名稱而不是struct名稱)時,ICC會失敗,但是GCC可以工作:
$ cat test1.cc
typedef struct m256d {
double m256d_f64[4];
} __m256d;
int main()
{
__m256d temp;
temp.m256d_f64[0] = 1;
return 0;
}
$ icpc test1.cc -c
test1.cc(8): error: expression must have class type
temp.m256d_f64[0] = 1;
^
compilation aborted for test1.cc (code 2)
$ g++ test1.cc -c
我已將此問題報告給英特爾的編譯器工程團隊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.