=====
Talks
=====
----
2024
----
* A C/C++ Toolchain for your GPU - Joseph Huber

  * `slides <https://llvm.org/devmtg/2024-10/slides/techtalk/Huber-A-CPlusPlus-Toolchain-for-Your-GPU.pdf>`__
  * `videos <https://www.youtube.com/watch?v=4TxGWis1mws>`__
  * `phoronix <https://www.phoronix.com/news/AMD-Standard-C-Code-GPUs>`__

* Modern Embedded Development with LLVM - Petr Hosek

  * `slides <https://llvm.org/devmtg/2024-10/slides/techtalk/Hosek-ModernEmbeddedDevelopment-with-LLVM.pdf>`__
  * `videos <https://www.youtube.com/watch?v=5hHQi-Uj34I>`__

* Using llvm-libc in LLVM Embedded Toolchain for Arm - Peter Smith

  * `slides <https://llvm.org/devmtg/2024-10/slides/lightning/Smith-Using-llvm-libc.pdf>`__
  * `videos <https://www.youtube.com/watch?v=ctgkbaYwT_I>`__

* RISC-V Support into LLVM libc - Challenges and Solutions for 32-bit and 64-bit - Mikhail R. Gadelha

  * `slides <https://llvm.org/devmtg/2024-10/slides/quicktalks/Gadelha-RISC-V-SupportIntoLLVM-libc.pdf>`__
  * `videos <https://www.youtube.com/watch?v=GytmaH64wFo>`__

* Project Hand-in-Hand - The beginning of a beautiful friendship - Michael Jones & Christopher Di Bella

  * `slides <https://llvm.org/devmtg/2024-10/slides/techtalk/Jones-DiBella-hand-in-hand.pdf>`__
  * `videos <https://www.youtube.com/watch?v=VAEO86YtTHA>`__

* LLVM libc math library - Current status and future directions - Tue Ly

  * `slides <https://llvm.org/devmtg/2024-10/slides/techtalk/Ly-LLVM-libc-math-library-CurrentStatus.pdf>`__
  * `videos <https://www.youtube.com/watch?v=-8zb8rHbvcQ>`__

* Half-precision in LLVM libc - Nicolas Celik

  * `slides <https://llvm.org/devmtg/2024-10/slides/studenttalks/Celik-Half-precision-in-LLVM-libc.pdf>`__
  * `videos <https://www.youtube.com/watch?v=H6aOFSVwSSM>`__

----
2023
----
* Math functions in LLVM libc or yet another correctly rounded libm - Tue Ly

  * `slides <https://drive.google.com/file/d/1Gchrc3AXKXAWFI1nk8Y1x8UsoQSp8XjF/view>`__
  * `video <https://www.youtube.com/watch?v=kBSJqVWNQLY>`__

* The LLVM C Library for GPUs - Joseph Huber

  * `slides <https://llvm.org/devmtg/2023-10/slides/techtalks/Huber-LibCforGPUs.pdf>`__
  * `video <https://www.youtube.com/watch?v=_LLGc48GYHc>`__

* The Challenges of Implementing the C Standard Library in C++ - Sivachandra Reddy

  * `slides <https://github.com/boostcon/cppnow_presentations_2023/blob/main/cppnow_slides/The_Challenges_of_Implementing_the_C_Standard_Library_in_Cpp.pdf>`__
  * `video <https://www.youtube.com/watch?v=cuVrWUGSIgM>`__

----
2022
----
* Using LLVM's libc - Sivachandra Reddy, Michael Jones, Tue Ly

  * `slides <https://llvm.org/devmtg/2022-11/slides/Tutorial1-UsingLLVM-libc.pdf>`__
  * `video <https://www.youtube.com/watch?v=OpY4lnpnbq4>`__

* Using modern CPU instructions to improve LLVM's libc math library - Tue Ly

  * `slides <https://llvm.org/devmtg/2022-11/slides/QuickTalk7-UsingModernCPUInstructionsToImproveLLVM-libcMathLib>`__
  * `video <https://www.youtube.com/watch?v=9bvdbdn0nMA>`__

* Approximating at Scale: How strto float in LLVM’s libc is faster - Michael Jones

  * `slides <https://llvm.org/devmtg/2022-11/slides/QuickTalk3-ApproximatingatScale-StringToFloat.pdf>`__
  * `video <https://www.youtube.com/watch?v=s-UjbTV8p6g>`__
