Войти
ПрограммированиеФорумОбщее

SIMD оптимизации (26 стр)

Страницы: 121 22 23 24 25 26
#375
15:40, 10 фев. 2019

> Оно имеет смысл, если вся единица трансляции (или вообще - вся программа) скомпилирована с -msse2
Причём в этом случае, GCC приходится следить, можно ли функцию вызвать по указателю, и он реально это делает.
https://godbolt.org/z/YkF9zl
Из интереса - можно заменить p=g; на p=f;, или тело g на return x+y; и посмотреть, как меняется код.


#376
22:42, 7 апр. 2019

Загадка: есть лямбда. Как в ней прописать __attribute__((target("sse2")))?
И нет, лямбда не использует target от функции, в которой она определена (по крайней мере в GCC).

void __attribute__((target("sse2"))) render_mesh(int n,const Triangle *triangles)
{
    for(int i=0;i<n;++i)
        render_triangle(triangles[i],
        [](int x,int y,float bary0,float bary1,float bary2)->void // "pixel shader".
        {
            (void)bary0;(void)bary1;(void)bary2;
            colorbuffer[y*WIDTH+x]=0xFFFFFFFFu;
        })
}
Ответ:
+ Показать

Подсказка: GCC'шные __attribute__(()) синтаксически размещаются там же, где и стандартные [[attribute]], положение которых можно посмотреть в документации.

Страницы: 121 22 23 24 25 26
ПрограммированиеФорумОбщее