FERRAMENTAS LINUX: Os novos recursos do compilador do LLVM 10.0 / Clang 10.0

segunda-feira, 9 de março de 2020

Os novos recursos do compilador do LLVM 10.0 / Clang 10.0



Confira !!



Depois de atrasar o cronograma da liberação planejada no mês passado e de um candidato a liberação extra ser garantido, o LLVM 10.0 deve ser lançado nas próximas semanas junto com seus subprojetos - mais notavelmente, o compilador Clang 10.0 C / C ++. Aqui está uma olhada nos itens mais importantes do LLVM / Clang 10.0.

A liberação do LLVM / Clang 10.0 está prevista para os próximos dias, enquanto o GCC 10 será lançado nas próximas semanas. Quanto às alterações nesta atualização semestral dessa infraestrutura inovadora de compilador, os destaques do LLVM 10.0 incluem:

- Para CPUs Intel AVX-512, -mprefer-vector-width = 256 agora é o comportamento padrão para limitar o uso de 512 bits registradores devido ao downclock do AVX-512 que pode ocorrer. Isso corresponde ao comportamento do GCC agora, enquanto aqueles que desejam o comportamento anterior podem passar -mprefer-vector-width = 512 se quiser aumentar o uso de registros de 512 bits, mas com possíveis implicações de desempenho do impacto na frequência do AVX-512.

- Melhorias no AMD Znver2 (Zen 2) .

- Uma opção para ajudar no impacto da errata do microcódigo JCC .

- Suporte para os núcleos Arm's Cortex-A65, A65AE, Neoverse N1 e Neoverse E1.

- As CPUs Octeon + MIPS agora são suportadas e suporte aprimorado para os processadores Octeon existentes.

- O suporte de destino IBM z15.

- Além dos novos destinos de CPU Arm, o back-end AArch64 para LLVM 10 também possui geração de código ARMv8.1-M mais otimizada, auto-vetorização para a extensão de vetor ARMv8.1-M MVE e outras melhorias.

- O IBM POWER também viu várias melhorias, incluindo melhores estimativas de pressão de registro, modelo de custo aprimorado para o vetorizador, vetorização de rotinas matemáticas usando a biblioteca IBM MASSV e outros aprimoramentos.

- O destino WebAssembly do LLVM tem um suporte SIMD muito melhor, o TLS (thread-local storage) agora funciona e outras melhorias de suporte.

- Muitas melhorias no suporte LLVM do RISC-V.

- O LLDB agora pode lidar com a depuração de binários do Windows ARM / ARM64 e também possui um suporte melhor para ser construído pelo MinGW.

- MLIR desembarcoucomo o novo e promissor RI sendo escolhido por um número crescente de projetos.

- Inúmeras melhorias no back-end AMDGPU LLVM.

Enquanto isso, o front-end do Clang 10.0 C / C ++

está pronto para isso: - Suporte expandido ao C ++ 20, incluindo suporte ao C ++ Concepts e outros recursos, mas o suporte ainda não está completo.

- Várias melhorias de diagnóstico, continuando a aumentar a utilidade de seus avisos e garantindo que eles sejam precisos.

- Os destinos Skylake-AVX512 / Icelake / Cascadelake / Cooperlake agora assumem o padrão de não usar registros ZMM de 512 bits no código vetorizado, a menos que intrínsecos de 512 bits sejam usados ​​no código-fonte, devido ao acerto de frequência do AVX-512 que pode levar a menores desempenho. Semelhante à alteração do LLVM, -mprefer-vector-width = 512 pode ser usado para restaurar o comportamento anterior.

- Ao criar para o WebAssembly, o wasm-opt será executado se encontrado no sistema para ajudar a reduzir o tamanho do código gerado.

- Várias outras alterações para melhor corresponder ao comportamento do GCC para diferentes comandos e saídas.

- Várias pequenas melhorias no suporte à linguagem do kernel OpenCL C / C ++ da Clang.

- O suporte expandido ao OpenMP 5.0, incluindo loops baseados em intervalo, recolhimento de loops imperfeitamente aninhados, memória compartilhada unificada para o NVIDIA NVPTX e outras adições.


Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário