[llvm] [Offload][Conformance] Add support for CUDA Math and HIP Math providers (PR #152362)

Leandro Lacerda via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 6 13:02:37 PDT 2025


leandrolcampos wrote:

**Test Results for Single-Precision Math Functions**

<table>
  <thead>
    <tr>
      <th rowspan="2" align="left">Function</th>
      <th rowspan="2" align="center">ULP Tolerance</th>
      <th colspan="4" align="center">Max ULP Distance</th>
    </tr>
    <tr>
      <th align="center">llvm-libm (AMDGPU)</th>
      <th align="center">llvm-libm (CUDA)</th>
      <th align="center">cuda-math (CUDA)</th>
      <th align="center">hip-math (AMDGPU)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td align="left"><code>acosf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>acoshf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>asinf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>asinhf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>atanf</code></td>
      <td align="center">5</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>atanhf</code></td>
      <td align="center">5</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">3</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>cbrtf</code></td>
      <td align="center">2</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>cosf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>coshf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>cospif</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>erff</code></td>
      <td align="center">16</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>expf</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>exp10f</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>exp2f</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>expm1f</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>logf</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>log10f</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>log1pf</code></td>
      <td align="center">2</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>log2f</code></td>
      <td align="center">3</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>sincosf</code><br>(sin part)</td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>sincosf</code><br>(cos part)</td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>sinhf</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">1</td>
      <td align="center">3</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>sinpif</code></td>
      <td align="center">4</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">1</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>tanf</code></td>
      <td align="center">5</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">3</td>
      <td align="center"></td>
    </tr>
    <tr>
      <td align="left"><code>tanhf</code></td>
      <td align="center">5</td>
      <td align="center"></td>
      <td align="center">0</td>
      <td align="center">2</td>
      <td align="center"></td>
    </tr>
  </tbody>
</table>

**Notes:**

* ULP (Units in the Last Place) tolerances are based on _The Khronos Group, The OpenCL C Specification v3.0.19, Sec. 7.4, Table 65, Khronos Registry [July 10, 2025]_.
* The NVIDIA GPU used for testing is the _NVIDIA GeForce RTX 4070 Laptop GPU_.

https://github.com/llvm/llvm-project/pull/152362


More information about the llvm-commits mailing list