linux-BR.org

Notícias de software livre e tecnologias

Agora, ao ligar para o Rasterizer :: Novo, escolheremos um FN da linha de draw Avx2 ou um SSE4.2 fn ou, se nenhum deles for suportado, o código do Scaler padrão.Isso não funciona porque:
#[Target_Feature (..)] só pode ser aplicado a funções inseguras
Na verdade, isso faz sentido, afinal, não funcionará em todas as CPUs.O compilador de rust realmente os usa automaticamente, mas não é para instruções SIMD mais recentes como SSE4.2 e AVX2.Podemos fazer a detecção de recursos, incluindo SSE4.2, salvando anteriormente o melhor caminho de função para usar e apenas chamando esse ponteiro em draw_line.Acho que o código auto-vetorizado é bastante fácil de manter, pois não há novos bits “lógicos” para manusear, apenas compilação condicional para disputar.

Fonte: https://alexheretic.github.io/posts/auto-avx2/