<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/114339>114339</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [NVPTX] Implement `TLI.isZExtFree()`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          justinfargnoli
      </td>
    </tr>
</table>

<pre>
    NVPTX currently does not override `TLI.isTruncateFree` and `TLI.isZExtFree`, and it probably should. 

`zext`/`truncate` between i32/i64 can probably be considered free, as the values already live in separate 32-bit registers in hardware.

_Originally posted by @Artem-B in https://github.com/llvm/llvm-project/pull/98666#discussion_r1681805956_
 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUkrFu2zAQhp-GWg4RKIqirUFD0lRAgKLtEBRFl4AUzzIDmhTIoxP36QupLtyhSxdp-HH_fUd8Omc3B8SBdQ-se6x0oWNMw2vJ5MJBpzlE7yoT7WX4_O3r83eYSkoYyF_ARswQIkE8Y0rOIjDFnz891S4_pxImTTgmRKY46GBv4Y-P73QNmPiwZY5gSdFo4y-Qj7F4WwPjj4zfX7-K_8R32iZGpjhd-9dug_SGGMC1gonRKQmTDrc6gzDFkJ3FhBYO6951aQY6Ipy1L5hB-4TaXsC7M4ILkHHRSRNCK-6MI0g4u0yY8hoedbJvOmH9N-DLl-RmF7T3F1hiJrRgLsAkv0-Ep7uHbZBoyay9X08Q4-zoWEw9xRMTo_fnP7-7JcVXnIiJcSneMzH2e6UUE611eSo5uxheUqP2zZ53fadefgNAZYfW9m2vKxyaXcvbtudyVx0HJSfspGqksjhZRHM4qEnZ3dTsldHdoXKD4EI2vG14IyXf1frQcN0Y3E07bqWSTHI8aefrla-Oaa5czgWHppFt21deG_R5E0iIgG-wpUyI1ac0bEeZMmcmuXeZ8q2GHPnNvE0t1j3C02nxeMJA_9BF7JnomeJVSX7478fcoDIT45X6PIhfAQAA__9e_PRJ">