เบ›เปˆเบญเบเบŠเบธเบ”เบ„เบญเบกเบžเบตเบงเป€เบ•เบต GCC 10

เบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบตเบ‚เบญเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ เบˆเบฑเบ”เบžเบตเบกเบกเบฒ เบ›เปˆเบญเบเบŠเบธเบ” compilers เบŸเบฃเบต GCC 10.1, เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบเปˆเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบชเบฒเบ‚เบฒ GCC 10.x เปƒเบซเบกเปˆ. เบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบš เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปƒเบซเบกเปˆโ€‹ เบ•เบปเบงเป€เบฅเบเบเบฒเบ™เบ›เปˆเบญเบ, เบฎเบธเปˆเบ™ 10.0 เป„เบ”เป‰เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เปเบฅเบฐเบšเปเปˆเบ”เบปเบ™เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบญเบญเบ GCC 10.1, เบชเบฒเบ‚เบฒ GCC 11.0 เป„เบ”เป‰เปเบเบเบญเบญเบเปเบฅเป‰เบง, เบšเบปเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบญเบเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ•เปเปˆเป„เบ›, GCC 11.1, เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™.

GCC 10.1 เป€เบ›เบฑเบ™เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒเบซเบผเบฒเบเบขเปˆเบฒเบ‡เปƒเบ™เบžเบฒเบชเบฒ C++ เบ—เบตเปˆเบ–เบทเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเปเบฒเบฅเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C++20, เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบžเบฒเบชเบฒ C เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” (C2x), เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเปƒเบซเบกเปˆเปƒเบ™ backends เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡. เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ”. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เปƒเบ™เป„เบฅเบเบฐเบเบฒเบ™เบเบฐเบเบฝเบกเบชเบฒเบ‚เบฒเปƒเบซเบกเปˆ, เป‚เบ„เบ‡เบเบฒเบ™เป„เบ”เป‰เป‚เบญเบ™ repository เบˆเบฒเบ SVN เป„เบ› Git.

เบ•เบปเป‰เบ™โ€‹เบ•เป เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡:

  • เป€เบžเบตเปˆเบกเปเบฅเป‰เบง เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบชเบฐเบ–เบดเบ” "-fanalyzerโ€œ, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฐเบซเบงเปˆเบฒเบ‡เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ—เบตเปˆเป€เบ™เบฑเป‰เบ™เปƒเบชเปˆเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบเบฒเบ™เป„เบซเบผเป€เบ‚เบปเป‰เบฒเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™. เป‚เบซเบกเบ”เบชเบฒเบกเบฒเบ”เบเบงเบ”เบžเบปเบšเบšเบฑเบ™เบซเบฒเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบฅเบงเบšเบฅเบงเบก, เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เป‚เบ—เบชเบญเบ‡เบ„เบฑเป‰เบ‡เป„เบ›เบซเบฒ free() function เบชเปเบฒเบฅเบฑเบšเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบซเบ™เบถเปˆเบ‡, เบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅ descriptor เป„เบŸเบฅเปŒ, dereferencing เปเบฅเบฐ passing null pointers, เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡ block memory freed, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปˆเบฒ uninitialized, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฎเบนเบšเปเบšเบšเปƒเบซเบกเปˆเบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ” OpenSSL เป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบเปเบฒเบ™เบปเบ” เบ„เบงเบฒเบกโ€‹เบชเปˆเบฝเบ‡โ€‹เบญเบฑเบ™โ€‹เบ•เบฐโ€‹เบฅเบฒเบโ€‹.
  • เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš interprocedural. IPA-SRA (Interprocedural Scalar Shared Replacement) pass เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เป€เบงเบฅเบฒเบœเบนเบเบกเบฑเบ”เปเบฅเบฐ, เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบ•เบญเบ™เบ™เบตเป‰เป€เบญเบปเบฒเบ„เปˆเบฒเบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเปเบฅเบฐเบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰. เปƒเบ™เป‚เบซเบกเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบš "-O2", เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-finline-functions" เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เบ„เบทเบ™เปƒเบซเบกเปˆเป€เบžเบทเปˆเบญเปƒเบซเป‰เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบซเบ™เบฒเปเบซเบ™เป‰เบ™เบเบงเปˆเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ heuristic เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆ inline เป„เบ”เป‰เบ–เบทเบเป€เบฅเบฑเปˆเบ‡. เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบขเบนเปˆเปƒเบ™เปเบ–เบง เปเบฅเบฐเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ heuristics cloning เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ‚เบญเบšเป€เบ‚เบ”เบกเบนเบ™เบ„เปˆเบฒเป€เบžเบทเปˆเบญเบ„เบฒเบ”เบ„เบฐเป€เบ™เบ›เบฐเบชเบดเบ”เบ—เบดเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เบซเบฑเบ™เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™. เบชเปเบฒเบฅเบฑเบš C++, เบ„เบงเบฒเบกเบ–เบทเบเบ•เป‰เบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบเบเบงเบดเป€เบ„เบฒเบฐเบ™เบฒเบกเปเบเบ‡เบ•เบฒเบกเบ›เบฐเป€เบžเบ”เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡เปƒเบซเป‰เบ”เบตเบ‚เบถเป‰เบ™.
  • เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบงเบฅเบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ (LTO). เป€เบžเบตเปˆเบกเปƒเบซเบกเปˆเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰ เบ–เบดเป‰เบกเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ เป€เบžเบทเปˆเบญเบฃเบตเป€เบŠเบฑเบ”เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเป„เบŸเบฅเปŒเบงเบฑเบ”เบ–เบธเบ”เป‰เบงเบ LTO bytecode. Parallel LTO passes เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเปเบฒเบ™เบปเบ”เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบžเป‰เบญเบกเป†เบเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‡เบฒเบ™เปเบฅเบฐ, เบ–เป‰เบฒเบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เป„เบ”เป‰, เปƒเบซเป‰เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ CPU cores เป€เบ›เบฑเบ™เบ›เบฑเบ”เปƒเบˆเบ‚เบฐเบซเบ™เบฒเบ™. เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบšเบตเบšเบญเบฑเบ” LTO bytecode เป‚เบ”เบเปƒเบŠเป‰ zstd algorithm.
  • เบเบปเบ™เป„เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” profile (PGO - Profile-guided optimization) เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡, เป€เบŠเบดเปˆเบ‡เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบฅเบฑเบเบชเบฐเบ™เบฐเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”. เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบšเปเบฒเบฅเบธเบ‡เบฎเบฑเบเบชเบฒเป‚เบ›เบฃเป„เบŸเบฅเปŒเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเบเบฒเบ™เปเบเบเบฅเบฐเบซเบฑเบ”เบฎเป‰เบญเบ™ / เป€เบขเบฑเบ™. เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ "-fprofile-เบ„เปˆเบฒยป เบ•เบญเบ™เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเป„เบ”เป‰เป€เบ–เบดเบ‡ 4 เบกเบนเบ™เบ„เปˆเบฒเป‚เบ›เบฃเป„เบŸเบฅเปŒ, เบ•เบปเบงเบขเปˆเบฒเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป‚เบ—เบ—เบฒเบ‡เบญเป‰เบญเบก เปเบฅเบฐเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เป‚เบ›เบฃเป„เบŸเบฅเปŒเบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒ.
  • เบ‚เปเป‰เบกเบนเบ™เบชเบฐเป€เบžเบฒเบฐเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ‚เบฐเบซเบ™เบฒเบ™เปเบกเปˆเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C, C++ เปเบฅเบฐ Fortran OpenACC 2.6, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ offloading เปƒเบ™ GPUs เปเบฅเบฐเป‚เบ›เป€เบŠเบ”เป€เบŠเบตเบžเบดเป€เบชเบ”เป€เบŠเบฑเปˆเบ™ NVIDIA PTX. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบกเปˆเบ™เป€เบเบทเบญเบšเบชเปเบฒเป€เบฅเบฑเบ” เป€เบ›เบตเบ” MP 5.0 (Open Multi-Processing), เป€เบŠเบดเปˆเบ‡เบเบณเบ™เบปเบ” API เปเบฅเบฐเบงเบดเบ—เบตเบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ‚เบฐเปœเบฒเบ™เปƒเบ™เบฅเบฐเบšเบปเบšเบซเบผเบฒเบเบซเบผเบฑเบ เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ›เบฐเบชเบปเบก (CPU+GPU/DSP) เบ—เบตเปˆเบกเบตเปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณเบฎเปˆเบงเบกเบเบฑเบ™ เปเบฅเบฐ vectorization (SIMD). เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒเบกเบฒเป€เบŠเบฑเปˆเบ™: Lastprivate conditionals, scan and loop directives, order and use_device_addr expressions. เบชเปเบฒเบฅเบฑเบš OpenMP เปเบฅเบฐ OpenACC, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™ offloading เปƒเบ™เบฎเบธเปˆเบ™เบ—เบตเบชเบตเปˆ (Fiji) เปเบฅเบฐ GPUs AMD Radeon (GCN) เบฎเบธเปˆเบ™เบ—เบต 10 (VEGA 20/VEGA XNUMX).
  • เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒเบ‚เบญเบ‡เบ„เบญเบšเบ„เบปเบง C, เบŸเบฑเบ‡เบŠเบฑเบ™ "เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡" เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเป€เบ–เบดเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เป‚เบ”เบเบเบฒเบ™เบญเป‰เบฒเบ‡เบญเบดเบ‡เบซเบผเบทเบ•เบปเบงเบŠเบตเป‰, เปเบฅเบฐเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบงเบฑเบ”เบ–เบธเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบš argument เบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบกเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบงเบฑเบ”เบ–เบธ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบš "เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡", "เบ›เบฐเป€เบžเบ”" เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบเบงเบ”เบžเบปเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ—เบตเปˆเบšเปเปˆเบ–เบทเบเบ•เป‰เบญเบ‡เบˆเบฒเบเบซเบ™เป‰เบฒเบ—เบตเปˆเบœเบนเป‰เปƒเบŠเป‰, เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบ„เปˆเบฒเป„เบ›เบซเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบญเบฒเป€เบฃ. เบเบฑเบ‡เป„เบ”เป‰เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” "symver" เป€เบžเบทเปˆเบญเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบชเบฑเบ™เบเบฒเบฅเบฑเบเปƒเบ™เป„เบŸเบฅเปŒ ELF เบ—เบตเปˆเบกเบตเบ•เบปเบงเป€เบฅเบเบชเบฐเป€เบžเบฒเบฐ.
  • เป€เบžเบตเปˆเบกเบ„เบณเป€เบ•เบทเบญเบ™เปƒเปเปˆ:
    • โ€œ-Wstring-compareโ€ (เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ โ€œ-Wextraโ€) - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ—เบตเปˆเบชเบนเบ™เบ–เบทเบเบ›เบฝเบšเบ—เบฝเบšเบเบฑเบšเบœเบปเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™ strcmp เปเบฅเบฐ strncmp, เป€เบŠเบดเปˆเบ‡เป€เบ—เบปเปˆเบฒเบเบฑเบšเบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบ„เบงเบฒเบกเบเบฒเบง. เบ‚เบญเบ‡เปœเบถเปˆเบ‡เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เปƒเบซเบเปˆเบเบงเปˆเบฒเบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบญเบฒเป€เบฃเปƒเบ™เบญเบฒเบเบดเบงเป€เบกเบฑเบ™เบ—เบตเบชเบญเบ‡ .
    • "-Wzero-length-bounds" (เป€เบ›เบตเบ”เปƒเบŠเป‰เบ”เป‰เบงเบ "-Warray-bounds") - เป€เบ•เบทเบญเบ™เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบญเบปเบ‡เบ›เบฐเบเบญเบš array เบ‚เบญเบ‡เบ„เบงเบฒเบกเบเบฒเบงเบชเบนเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฒเบ”เบˆเบฐเบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เบ‚เบฝเบ™เบ—เบฑเบšเบ‚เปเป‰เบกเบนเบ™เบญเบทเปˆเบ™เป†.
    • เบเบฒเบ™เป€เบ•เบทเบญเบ™ "-Warray-bounds", "-Wformat-overflow", "-Wrestrict", "-Wreturn-local-addr" เปเบฅเบฐ "-Wstringop-overflow" เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบเบญเบญเบเป„เบ›เป€เบžเบทเปˆเบญเบ‚เบฐเบซเบเบฒเบเบˆเปเบฒเบ™เบงเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ™เบญเบเบ‚เบญเบšเป€เบ‚เบ”. เบ—เบตเปˆเบ–เบทเบเบˆเบฑเบ”เบเบฒเบ™.
  • เบ›เบฐเบ•เบดเบšเบฑเบ”เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบฅเบฐเบšเบธเบ•เบปเบงเบญเบฑเบเบชเบญเบ™เบเบงเป‰เบฒเบ‡เป‚เบ”เบเบเบปเบ‡เปƒเบ™เบ•เบปเบงเบฅเบฐเบšเบธเป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เบ›เบฐเบˆเบธเบšเบฑเบ™ (UTF-8 เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™) เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™เบ•เบปเบงเบฅเบฐเบšเบธ UCN (\uNNNN เบซเบผเบท \UNNNNNNNN). เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

    static const int ฯ€ = 3;
    int get_naรฏve_pi() {
    เบเบฑเบšเบ„เบทเบ™ ฯ€;
    }

  • เบชเปเบฒเบฅเบฑเบšเบžเบฒเบชเบฒ C, เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเบžเบฒเบเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C2X เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” (เป€เบ›เบตเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบเบฒเบ™เบฅเบฐเบšเบธ -std=c2x เปเบฅเบฐ -std=gnu2x): เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš syntax "[[]]" เบ›เบฒเบเบปเบ”เบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบŠเบฑเปˆเบ™เปƒเบ™ C++ (เบ•เบปเบงเบขเปˆเบฒเบ‡: [[gnu ::const]], [[เบ›เบฐเบ•เบดเป€เบชเบ”]], [[fallthrough]] เปเบฅเบฐ [[maybe_unused]]. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš "u8" syntax เบชเปเบฒเบฅเบฑเบšเบเปเบฒเบ™เบปเบ”เบ„เปˆเบฒเบ„เบปเบ‡เบ—เบตเปˆเบ”เป‰เบงเบเบ•เบปเบงเบญเบฑเบเบชเบญเบ™ UTF-8.
    เป€เบžเบตเปˆเบกเบกเบฒเป‚เบ„เบฃเปƒเปเปˆเปƒเบชเปˆ . เป€เบžเบตเปˆเบก "%OB" เปเบฅเบฐ "%Ob" เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™เปƒเบชเปˆ strftime.

  • เบฎเบนเบšเปเบšเบšเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ C เปเบกเปˆเบ™ "-fno-common", เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ•เบปเบงเปเบ›เบ—เบปเปˆเบงเป‚เบฅเบเบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบšเบฒเบ‡เป€เบงเบ—เบต.
  • เบชเปเบฒเบฅเบฑเบš C ++, เบ›เบฐเบกเบฒเบ™ 16 เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบ”เบดเบ”เบชเป‰เบฒเบ‡เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”, เบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C ++ 20. เบฅเบงเบกเบ—เบฑเบ‡เบ„เปเบฒเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบก "constinit"
    เปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปเบกเปˆเปเบšเบšเป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” "เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”". เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŠเบธเบ”เบ‚เบญเบ‡เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เปเบกเปˆเปเบšเบšเบ—เบตเปˆ, เปƒเบ™เป€เบงเบฅเบฒเบฅเบงเบšเบฅเบงเบก, เบˆเปเบฒเบเบฑเบ”เบŠเบธเบ”เบ‚เบญเบ‡ arguments เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เป€เบ›เบฑเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปเบกเปˆเปเบšเบš. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบ„เบงเบฒเบกเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปƒเบŠเป‰เบžเบฒเบเปƒเบ™เปเบกเปˆเปเบšเบšเปเบฅเบฐเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เป‰เบญเบ™เบ‚เปเป‰เบกเบนเบ™.

  • G++ เบชเบฐเปœเบญเบ‡เบเบฒเบ™เบเบงเบ”เบซเบฒเบžเบถเบ”เบ•เบดเบเบณเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบเบณเบ™เบปเบ”เบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบงเบฑเบ”เบ–เบธเบ„เบปเบ‡เบ—เบตเปˆเบœเปˆเบฒเบ™ constexpr. เบซเบผเบธเบ”เบœเปˆเบญเบ™เบเบฒเบ™เบšเปเบฅเบดเป‚เบžเบเบ„เบงเบฒเบกเบŠเบปเบ‡เบˆเปเบฒเป‚เบ”เบ compiler เป€เบกเบทเปˆเบญเบ„เบดเบ”เป„เบฅเปˆ constexpr. เป€เบžเบตเปˆเบกเบ„เบณเป€เบ•เบทเบญเบ™เปƒเปเปˆ "-Wmismatched-tags" เปเบฅเบฐ "-Wredundant-tags".
  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปเบ–เบงเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบซเบกเปˆเป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต:
    • "-fallocation-dce" เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบ„เบนเปˆเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ‚เบญเบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "เปƒเบซเบกเปˆ" เปเบฅเบฐ "เบฅเบถเบš".
    • "-fprofile-partial-training" เป€เบžเบทเปˆเบญเบ›เบดเบ”เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบฐเบซเบ™เบฒเบ”เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบšเปเปˆเบกเบตเบเบฒเบ™เบเบถเบเบญเบปเบšเบฎเบปเบก.
    • "-fprofile-reproducible เป€เบžเบทเปˆเบญเบ„เบงเบšเบ„เบธเบกเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เปเบœเปˆเบžเบฑเบ™เบ‚เบญเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒ.
    • "-fprofile-prefix-path" เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต build source เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เป‚เบ›เบฃเป„เบŸเบฅเปŒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ (เบชเปเบฒเบฅเบฑเบš "-fprofile-generate=profile_dir" เปเบฅเบฐ "-fprofile-use=profile_dir").
  • เปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเป€เบ•เบทเบญเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒ, hyperlinks เป„เบ”เป‰เบ–เบทเบเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เป„เบ›เบซเบฒเป€เบญเบเบฐเบชเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบเบฒเบ™เบ—เบปเบ”เปเบ—เบ™ URL เบ–เบทเบเบ„เบงเบšเบ„เบธเบกเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเป€เบฅเบทเบญเบ "-fdiagnostics-urls".
  • เป€เบžเบตเปˆเบกเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ preprocessor "__has_builtin", เบŠเบถเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเบงเบ”เบเบฒเป€เบšเบดเปˆเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบชเป‰เบฒเบ‡เปƒเบ™.
  • เป€เบžเบตเปˆเบกเบŸเบฑเบ‡เบŠเบฑเบ™เปƒเปเปˆเปƒเบ™เบ•เบปเบง "__builtin_roundeven" เบ”เป‰เบงเบเบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบŸเบฑเบ‡เบŠเบฑเบ™เบเบฒเบ™เบฎเบญเบšเบ—เบตเปˆเบเบณเบ™เบปเบ”เป„เบงเป‰เปƒเบ™เบ‚เปเป‰เบชเบฐเป€เบžเบฒเบฐ ISO/IEC TS 18661, เบ„เป‰เบฒเบเบเบฑเบš "เบฎเบญเบš", เปเบ•เปˆเบเบฒเบ™เบ›เบฑเบ”เบชเปˆเบงเบ™เบ—เบตเปˆเปƒเบซเบเปˆเบเบงเปˆเบฒ 0.5 เป€เบ–เบดเบ‡ (เป€เบ›เบฑเบ™เบ„เปˆเบฒเปƒเบซเบเปˆเบเบงเปˆเบฒ), เปœเป‰เบญเบเบเบงเปˆเบฒ 0.5. - เบฅเบปเบ‡ (เป€เบ–เบดเบ‡เบชเบนเบ™), เปเบฅเบฐเป€เบ—เบปเปˆเบฒเบเบฑเบš 0.5 - เป€เบฅเบตเปˆเบกเบˆเบฒเบ parity เบ‚เบญเบ‡เบ•เบปเบงเป€เบฅเบ penultimate.
  • เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ AArch64, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ SVE2 เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเปเบฅเบฐเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ SVE (Scalable Vector Extension) เป„เบ”เป‰เบ–เบทเบเบ›เบฑเบšเบ›เบธเบ‡, เบฅเบงเบกเบ—เบฑเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบ›เบฐเป€เบžเบ” SVE ACLE เบ—เบตเปˆเบกเบตเปƒเบ™เบ•เบปเบง, เปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ vectorization. เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš LSE (เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบฅเบฐเบšเบปเบšเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ) เปเบฅเบฐ TME (เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒเบเบฒเบ™เป€เบฎเบฑเบ”เบ—เบธเบฅเบฐเบเปเบฒ) เป„เบ”เป‰เบ–เบทเบเบ‚เบฐเบซเบเบฒเบ. เป€เบžเบตเปˆเบกเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเบกเปˆเบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปƒเบ™ Armv8.5-A เปเบฅเบฐ Armv8.6-A, เบฅเบงเบกเบ—เบฑเบ‡เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเป€เบฅเบเปเบšเบšเบชเบธเปˆเบก, เบเบฒเบ™เบฎเบญเบš, เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เปเบ—เบฑเบเบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ,
    bfloat16 เปเบฅเบฐเบเบฒเบ™เบ„เบนเบ™เบกเบฒเบ•เบฃเบดเบเป€เบšเบทเป‰เบญเบ‡. เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเป‚เบ›เป€เบŠเบ”เป€เบŠเบต
    Arm Cortex-A77,
    Arm Cortex-A76AE,
    Arm Cortex-A65,
    Arm Cortex-A65AE,
    Arm Cortex-A34 เปเบฅเบฐ
    Marvell ThunderX3.

  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš ABI FDPIC (32-bit function pointers) เบชเปเบฒเบฅเบฑเบš ARM64. เบญเบญเบเปเบšเบšเปƒเปเปˆ เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบเบฒเบ™เบ”เบณเป€เบ™เบตเบ™เบเบฒเบ™เบˆเบณเบ™เบงเบ™ 64-bit. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ CPU
    Arm Cortex-A77,
    Arm Cortex-A76AE เปเบฅเบฐ
    Arm Cortex-M35P. เบ‚เบฐเบซเบเบฒเบเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™เบ‚เปเป‰เบกเบนเบ™ ACLE, เบฅเบงเบกเบ—เบฑเบ‡ 32-bit SIMD, 16-bit multiplication, latch arithmetic, เปเบฅเบฐ DSP algorithm optimization เบญเบทเปˆเบ™เป†. เป€เบžเบตเปˆเบกเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ ACLE CDE (Custom Datapath Extension).

  • เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ”เปเบฅเบฐ vectorization เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™ backend เบชเปเบฒเบฅเบฑเบš AMD GPUs เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆ microarchitecture GCN.
  • เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบท XMEGA เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐ AVR
    ATtiny202, ATtiny204, ATtiny402, ATtiny404, ATtiny406, ATtiny804, ATtiny806, ATtiny807, ATtiny1604, ATtiny1606, ATtiny1607, ATmega808, ATmega809mega1608mega1609, , ATmega3208 3209, ATmega4808 เปเบฅเบฐ ATmega4809.

  • เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบŠเบธเบ”เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ Intel ENQCMD เปƒเบซเบกเปˆ (-menqcmd) เป„เบ”เป‰เบ–เบทเบเป€เบžเบตเปˆเบกเบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ IA-32/x86-64. เป€เบžเบตเปˆเบกเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบชเปเบฒเบฅเบฑเบš Intel Cooperlake (-march=cooperlake, เบ›เบฐเบเบญเบšเบกเบตเบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ AVX512BF16 ISA) เปเบฅเบฐ Tigerlake (-march=tigerlake, เบ›เบฐเบเบญเบšเบกเบต CPUs MOVDIRI, MOVDIR64B เปเบฅเบฐ AVX512VP2INTERSECT ISA).
  • เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡ HSAIL (Heterogeneous System Architecture Intermediate Language) เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบเบŠเบฐเบ™เบดเบ”เป‚เบ”เบเบญเบตเบ‡เปƒเบชเปˆเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒ HSA เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเป€เบชเบ” เปเบฅเบฐเบญเบฒเบ”เบˆเบฐเบ–เบทเบเบ–เบญเบ”เบญเบญเบเปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™