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

    <tr>
        <th>Summary</th>
        <td>
            [NVPTX] Failure in PTX when generating code for `i128` regresses `libc` tests
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            libc
      </td>
    </tr>

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

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

<pre>
    A recent patch seems to have changed the behavior of `i128` on NVPTX targets. This is causing failures as shown in https://godbolt.org/z/cPq69rs1T.  This is the reproducer.
```llvm
target triple = "nvptx64-nvidia-cuda"

define i128 @foo() {
entry:
  br label %while.cond

while.cond:                                       ; preds = %while.cond, %entry
  %0 = load i8, ptr null, align 1
  %conv = zext i8 %0 to i128
  store i128 %conv, ptr null, align 16
  br label %while.cond
}
```
```console
$ clang --target=nvptx64-nvidia-cuda -march=sm_89 bug.bc
```
This will generate an error and the following PTX.
```asm
//
// Generated by LLVM NVPTX Back-End
//

.version 8.7
.target sm_89
.address_size 64

        // .globl       foo // -- Begin function foo
                                        // @foo
.visible .func  (.param .align 16 .b8 func_retval0[16]) foo()
{
        .reg .b64       %rd<4>;

// %bb.0: // %entry
        bra.uni         $L__BB0_1;
$L__BB0_1: // %while.cond
 // =>This Inner Loop Header: Depth=1
        mov.b64         %rd1, 0;
        ld.v2.u4        {%rd2, %rd3}, [%rd1];
        st.v2.u64       [%rd1], {%rd2, %rd3};
        bra.uni         $L__BB0_1;
                                        // -- End function
}
```
```
ptxas reduced.s, line 20; error   : Unexpected instruction types specified for 'ld'
ptxas fatal   : Ptx assembly aborted due to errors
clang: error: ptxas command failed with exit code 255 (use -v to see invocation)
clang version 21.0.0git
Target: nvptx64-nvidia-cuda
Thread model: posix
InstalledDir: /home/jhuber/Documents/llvm/clang/bin
Build config: +assertions
clang: note: diagnostic msg: Error generating preprocessed source(s) - no preprocessable inputs.
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVl1v2zoS_TX0y8ACRX3YfvCDXce7BbKLPGSLvgUUOZbYpUhdknKc_voLUrLjFL29vUEAS9TM4QznzBly71VrELek2pPqsOBj6KzbfuvGBl29aKx82-7AoUATYOBBdOARew_BQsfPCKLjpkUJoUNosONnZR3YE5CaqpytSU3BGvjvl6fnrxC4azH4DJ475UF5EHz0yrRw4kqPDj1wD76zrwaUgS6EwZNiR9iRsGNrZWN1yKxrCTt-J-wonv6oN87nzxncAGMUDgdn5SjQZYTuSE2nf63PPaG7KQYITg0agRQHIIyZ8xAudbk0ZyUVX4pRcsJY9KY7iSdlEGIyQEp6spawNWEbIKs9oTs0wb3FKOkOoHGgeYMaCKteO6UxE9bICefuvdjB7_2RYg-DQ-nnQO9B2ae4MG0f9yasoslMWy5BraPBEByYUev4zLVqDeRXW2HNOZl_x0sAtZ78g02JJiMfrLvmPdn_BWT9N7mvDvd1uH8W1nirMS6xEoTmpoXlcioRKQ4_KQsse-5ER4qD71_WG2jGNmvED_iJDa9Ka2jRoOMBgRtA56wDbiaunqzW9jWS7-n56weicN-ngCLrbg_wrxlJQvMGj49f_jNzes_F_5cPU6I3F7rLzui8sgbW2Sq-zrRLQcd3LqVD71-8-o5Ql5MToZt5t6zVttGEbk7Wwry2XMIeW2XgNBoRInbkIv1dLl1hZg7HEJVXjUbIImD8vs4G7ngP2bWwkDXrtN2Lw3DmmpJqn9ekOkT-3zoh1Xg_xZ85bCFr6hJSMpWTpPhUkuKBFPs5yTkMVjVNRmMvvK9c2UzopnE8G42aYMrHl5f9nr7kM8r9wr3_B97d1osDKR4SJz4bgw4erR3g38gluuh-wCFEQuXTxr09f4g_j0yn1_A3WmZnlo3T99U-mbC5GZ0sItnjS7WfnavDzdWH5Dpj31tEj59jXX1_dRz_kADLJTwYeWPRrzuU0N0QLtyDwyipMvMxPh0VkcVDmbsqStUO_mfwMqCITaKMD26caBreBvTgBxTqpFDCyTogbKUlYasb_okHrmecp3AB7j32jX4D3lgXEeWIUZ7Sfp7QXVKLaJ1W4sMEJGzfxyaPMwUlvKrQAV5UAGElAquqSPTRIyzPEc8jgjJnK3g6jMTmSYiuHczyjGa0VSEqyyxNO_jZyIjK45BL6K1EnUKyXl0I3X02PnCtUR6Umynb2R4JO06TlrDjwYqxRxM8Ycc0q9hxSpEdGxWrtB-VliCsOal2wtjHQ3Ix7g8HYmzA-CsVb431QQnoffrykIo1i2LUviENS4HeowRvRyeQsLWP7b0EY---86gUygxj8B_UciG3hdwUG77Abb4qa1pu8rxedNsTzYXcSFHSU1M0nK5l3axFzopGrBtey4XaMsoqWhaU5cW6qLMVl3WVF6XIN02d14KUFHuudBaPIw7-hfJ-xG1erGlRLtK08eniwphWjYgjuzos3DbaL5ux9aSkWvng3xGCCjpddpJ6k-oAx-nuEW8cUc9fOzT3J5RYkxj7fqFx2EbxRh8X0841hYA--MXo9PaHi4sK3dhkwvbvhU0BDs5-QxEIO6a0Yt3nzM5b9mcAAAD__ysK08o">