Tak więc AVX ma funkcję z immintrin.h
, która powinna zezwalać na przechowywanie konkatenacji dwóch wartości __m128i
w jednej wartości __m256i
. Funkcja jestUstawienie __m256i na wartość dwóch wartości __m128i
__m256i _mm256_set_m128i (__m128i hi, __m128i lo)
Jednak, kiedy go używać, tak jak poniżej:
__m256i as[2]; __m128i s[4]; as[0] = _mm256_setr_m128i(s[0], s[1]);
pojawia się błąd kompilacji:
error: incompatible types when assigning to type ‘__m256i’ from type ‘int’
I naprawdę nie rozumiem, dlaczego tak się dzieje. Każda pomoc jest bardzo cenna!
Czy jesteś pewien, że funkcja znajduje się w tym nagłówku? Kiedy próbuję użyć tej funkcji tak jak po '#include', pojawia się komunikat ostrzegawczy "domniemana deklaracja' _mm256_set_m128i' ". W języku C ukryta deklaracja oznacza, że kompilator zakłada, że funkcja zwróci wartość "int", co wyjaśnia również błąd kompilatora. –