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

    <tr>
        <th>Summary</th>
        <td>
            [wasm] trunc + sadd.with.overflow produces output that does not validate
        </td>
    </tr>

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

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

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

<pre>
    ```llvm
target datalayout = "e-m:e-p:32:32-p10:8:8-p20:8:8-i64:64-n32:64-S128-ni:1:10:20"
target triple = "wasm32-unknown-wasi"

define i1 @entry(i64 %x) {
 %truncated = trunc i64 %x to i48
  %tuple = call fastcc { i48, i1 } @llvm.sadd.with.overflow.i48(i48 %truncated, i48 1)
  %overflow = extractvalue { i48, i1 } %tuple, 1
  ret i1 %overflow
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i48, i1 } @llvm.sadd.with.overflow.i48(i48, i48) #0

attributes #1 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```
```
$ clang --version
clang version 18.0.0 (https://github.com/llvm/llvm-project.git 239777c8616a614531bed68fff2eaa0c97721cb3)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/jacob/prg/llvm/main/build-Debug/bin
$ clang -target wasm32-wasi -S repro.ll -o -
...
        .type   entry,@function
entry: # @entry
        .functype       entry (i64) -> (i32)
        .local  i32, i64, i64, i64, i64, i64, i64, i64, i32
# %bb.0:
        local.get       0
        i32.wrap_i64
        local.set       1
        i64.const       16
        local.set       2
        local.get       1
        local.get       2
        i64.shl 
...
$ clang -nostdlib -target wasm32-wasi repro.ll -Wl,--entry=entry -o repro.wasm
$ wasm2wat repro.wasm
repro.wasm:0000050: error: type mismatch in i64.shl, expected [i64, i64] but got [i32, i64]
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVU2P4ygQ_TXkUrJlF_485JDubKQ9z0p7HGEgCTMYLMCdzr9fgZ2P3slhR9pW2w7Uo6p4jyqY9-pkpNyS-o3U-w2bw9m67Q_G7aCvxWaw4rolTbH8a_0xkmJPil1g7iQDCBaYZlc7ByB0DwRRZiOhO5lNhO4oplc2lQWhuy4-2YSP36qpCN01VWYSsqmybyV2mVGE7sr4RCgWBPFL0ODUpOUt4IX5kWI2m5_GXkx2YV7dFyxvIY_KSFAlkKqQJrgrwU41FRCsPwn2QNq3BRlngpsNZ0GKFCCN4AaGYEFV3QpO6PmWCmdaw5H5wHl0mHD4nqK2-xg5kpd7JkR-UeGc2w_pjtpe8gTsVNV9iZ7WVh2UBPuneLdVKaT8DI7x8MH0LF_FXNOLU-XNh5Mh2R-uVqra_TNnhL7BYTY8KGtgF4LzhO7A2LjLgfGfYOzRSQnG-qvhYOxsLsoI8JPks2aBDVrCRWntZJidgVGONvFurJH3LQnJNXMvc_8PfK0UJQWRFs_psxCcGuYgfTSVy1lp3_7HDcCDsFt1vB5iBVwzc4Is-5DOK2sWwzK5TkHZ5UVeAMHuHMIUySZ4IHg4qXCeh5zbkeAhld_yySZnf0ge8pMKgLRv25Z3TdmwpqxqWg5SNN3xeETJWMH7tsWSD_TO-1-pkKKin13zvanu1aOVmT-zk5lX3NlJJmC0QuqInqxXn4vpT-MD01qKvXLRRPBwtqMkeEi9g-BhcqdHziNThuBhmJUW2V4Oc7QNyvxC0lrja1XHaobsGzg5OZtrDZmFbFmT5_lN8T4P10mSol-L-51UxXE9vAtmMaQ06aML3Jcn8JMLWBpElDkj9I80pHinLy7R8SQBKfpkeIcE_60PvTWpmBLWw5DHdnePkALkUaaiv5_tGC2_ODZ9j16-Qn2Clg9oU-XcGp9mm5dgfBmtfDmLXxz7c9z8Vx0eIhrrg9BqeCnnQ8u_NcH3LFvF2S_UZ3ZFxDUPz3GEFxZ-MT6N6a6If3XkEaRzNp3MKCyMyo8s8DMoA2v-UQT5OUmeen399iRPvYdhDnCyIRkeCtf_rvmN2FLR055t5LZs-qJpsKrLzXnb07ZtZCOalvcoK8E7XpRNWfNj1VJR4EZtsUBatNhjgS0t8-NQHIcWRdeLpinrOh7TkSmdp0Zo3WmjvJ_ltqkQcaPZILVP1zaikRdIxnjz1fuN26YeMcwnHxup8sE_vAQVdLrvE2f17Y4j-Aa_dluYnBUzlx7sHKY5QDizAMJKD8YG-GBaCRbkZnZ6-3udi-AhpewJHtKW_gkAAP__NyKEFA">