Как сообщить MSVC, что указатель внутри структуры не является псевдонимом другого указателя в структуреC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как сообщить MSVC, что указатель внутри структуры не является псевдонимом другого указателя в структуре

Сообщение Anonymous »

Компилятор MSVC имеет ключевое слово «__restrict». Он работает при прямой работе с необработанными указателями, но, очевидно, не работает, когда указатели заключены в структуры.
Я попробовал следующий код:

Код: Выделить всё

#include 
#include 

float dot(__m128 a,__m128 b) {
__m128 tmp = _mm_mul_ps(a,b);
tmp = _mm_hadd_ps(tmp,tmp);
return _mm_cvtss_f32(_mm_hadd_ps(tmp,tmp));
}

template struct v_span {
T *data;

operator __m128() const {
if constexpr(Stride == 1) {
return _mm_load_ps(data);
} else {
return _mm_set_ps(data[0],data[Stride],data[Stride*2],data[Stride*3]);
}
}

T &operator[](int i) const { return data[i*Stride]; }
};

template struct m_span {
T *data;

auto row(int i) const { return v_span{data + i*4}; }
auto col(int i) const { return v_span{data + i}; }
};

void multiply1(m_span out, m_span a, m_span b) {
for(int c=0; c

Подробнее здесь: [url]https://stackoverflow.com/questions/78684749/how-to-tell-msvc-that-a-pointer-inside-a-struct-does-not-alias-another-pointer-i[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»