[all-commits] [llvm/llvm-project] 3ba339: [NVPTX] Improve support for {ex2, lg2}.approx (#120...

Princeton Ferro via All-commits all-commits at lists.llvm.org
Thu Jan 16 12:21:53 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 3ba339b5e70231985b2e3f966dd80aa65cfeee1b
      https://github.com/llvm/llvm-project/commit/3ba339b5e70231985b2e3f966dd80aa65cfeee1b
  Author: Princeton Ferro <pferro at nvidia.com>
  Date:   2025-01-16 (Thu, 16 Jan 2025)

  Changed paths:
    M llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp
    M llvm/lib/Target/NVPTX/NVPTXInstrInfo.td
    M llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
    M llvm/test/CodeGen/NVPTX/f16-ex2.ll
    A llvm/test/CodeGen/NVPTX/f32-ex2.ll
    A llvm/test/CodeGen/NVPTX/f32-lg2.ll
    A llvm/test/CodeGen/NVPTX/fexp2.ll
    A llvm/test/CodeGen/NVPTX/flog2.ll

  Log Message:
  -----------
  [NVPTX] Improve support for {ex2,lg2}.approx (#120519)

- Add support for `@llvm.exp2()`:
  - LLVM: `float`        -> PTX: `ex2.approx{.ftz}.f32`
  - LLVM: `half`         -> PTX: `ex2.approx.f16`
  - LLVM: `<2 x half>`   -> PTX: `ex2.approx.f16x2`
  - LLVM: `bfloat`       -> PTX: `ex2.approx.ftz.bf16`
  - LLVM: `<2 x bfloat>` -> PTX: `ex2.approx.ftz.bf16x2`
  - Any operations with non-native vector widths are expanded. On
    targets not supporting f16/bf16, values are promoted to f32.

- Add *CONDITIONAL* support for `@llvm.log2()` [^1]:
  - LLVM: `float` -> PTX: `lg2.approx{.ftz}.f32`
  - Support for f16/bf16 is emulated by promoting values to f32.

[1]: CUDA implements `exp2()` with `ex2.approx` but `log2()` is
implemented differently, so this is off by default. To enable, use the
flag `-nvptx-approx-log2f32`.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list