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

    <tr>
        <th>Summary</th>
        <td>
            [TypePromotion] Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed.
        </td>
    </tr>

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

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

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

<pre>
    Reduced test case: https://godbolt.org/z/x6vq1jPGc
```
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define i16 @test(i8 %a, i16 %b, i32 %c) {
entry:
  %0 = zext i8 %a to i32
  %conv31.i1161.i = trunc i32 %c to i16
  %cmp.i.i.i1163.i = icmp eq i16 %conv31.i1161.i, %b
 %rem.i.i69.rhs.trunc.i1165.i = trunc i32 %0 to i8
  %1 = zext i8 %rem.i.i69.rhs.trunc.i1165.i to i16
  %2 = xor i16 %1, %conv31.i1161.i
 ret i16 %2
}
```

```
opt: /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/lib/IR/Instructions.cpp:3738: static llvm::CastInst* llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, const llvm::Twine&, llvm::Instruction*): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: bin/opt -passes=typepromotion test3.ll -S
 #0 0x00007f95a49ec480 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x1ec480)
 #1 0x00007f95a49e988f llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x1e988f)
 #2 0x00007f95a49e99e5 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f95a4442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f95a44969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f95a44969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007f95a44969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007f95a4442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f95a44287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007f95a442871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f95a4439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00007f959f298e68 (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x298e68)
#12 0x00007f95a19391b8 (anonymous namespace)::IRPromoter::Mutate() TypePromotion.cpp:0:0
#13 0x00007f95a193bdab (anonymous namespace)::TypePromotionImpl::TryToPromote(llvm::Value*, unsigned int, llvm::LoopInfo const&) TypePromotion.cpp:0:0
#14 0x00007f95a193c9b5 (anonymous namespace)::TypePromotionImpl::run(llvm::Function&, llvm::TargetMachine const*, llvm::TargetTransformInfo const&, llvm::LoopInfo const&) (.part.0) TypePromotion.cpp:0:0
#15 0x00007f95a193dab4 llvm::TypePromotionPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCodeGen.so.19.0git+0x73dab4)
#16 0x00007f95a1e6dff6 llvm::detail::PassModel<llvm::Function, llvm::TypePromotionPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMPasses.so.19.0git+0x6dff6)
#17 0x00007f959f31cf11 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x31cf11)
#18 0x00007f95a3ca55d6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0xa55d6)
#19 0x00007f959f31bc0b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x31bc0b)
#20 0x00007f95a3ca69c6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0xa69c6)
#21 0x00007f959f319a81 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x319a81)
#22 0x00007f95a4d174c5 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.19.0git+0x234c5)
#23 0x00007f95a4d22096 optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.19.0git+0x2e096)
#24 0x00007f95a4429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#25 0x00007f95a4429e40 call_init ./csu/../csu/libc-start.c:128:20
#26 0x00007f95a4429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#27 0x0000555e00ce9095 _start (bin/opt+0x1095)
Aborted (core dumped)
```

llvm version: b68e2eba0bc8dd70b88f4271831139ee9b6ed25c

cc @topperc 

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWV1z3CrS_jX4hrIKoe8LX0zszHlTr11xxa7s3k0h6JnhRAIdQI4nv34LNB-SPPFJspuzZ3dPYssSoh-6n-6mETBr5UYBXKHsDcpuLljvttpcCcefv-w-X9Ra7K4-gOg5COzAOsyZBZQs8Na5zqJkgegS0eVGi1o3LtJmg-jyC6LL5_zpt_jX-184IjeILFBO9j_h0TGzAYcFc6xhO907jJIbjCiFyxYlC7jsULLI03C5lMebmJYoWcS0vFQJHdoefBulE1hnZNfAAdJIy5_y9LJXn5T-rC4bqfrny43qj2LDVcBaKsAyzjFKiTcW0VKWGNGMIXo9vKBZHe4T6u85ohVGxZsBAJQzO09JeMK-AwlKfIFnh_dI2GkvPerDtXpK4kjGcR5HMgg40yt-HCSIxPlYpO0i6f_HcZ7sZSRvOwy_HdSconqdg-4DBqKZgdYD5FVktjYKA4bO2TkVSFChHGkQzw17De-F_jRIP2tz0DbeKzjTepAw4A79Dg4rbs6G1dlG3TkfsIgut7oFRJf74EZ0-TdtPj10jPvWe6N_Be4sokuu2042YPx90zy1l93wbv_o_8ga0eW7D_6irDM9d1IrG_HOB25SJD5OsXXMSY6DTLJAyeKaWef7I7o41zo8GWAOEC1PHUZDnCTed9aTdur1kTU9ILqYtj7uukMj18q68avPUgGi-VRgPJiXq7wlC2vB-CaMcsK9vvYja6RAtNSdl3_wl8ddyAeP6L1F36kn38nPGQ7R2OcbLfCayQZENDjn_vbt4uEttn3dSocZrvsNNtBp43zUzCYZ6bZ9HXHdjhwxdY-0tgfvNsyUwFLxpheA3RYwN8xucc34J2cYh_3wD47xT1j0bXfMWxLh8O_e6I1hLWZm07egnNcD11IhutSdw5cdsxYsSm7croPO6FYHfvy8kURNgy8fjsmWEEyeCSGkWFcZSyvgaUlGlNudHW7ujVQu6PRoQlSOgsCwzyttnQHW7n0mlRv4Ln8wtm9vP94dOKx72QhEl4OFUXQM8kbWvt9D33mvRFZHcRWRjXSIviHPcbDFR8nR2HhmbFWW63PGfujVg9wo1vwfU2LQqPwT2OPVndhD5_ZUkOGJ5r5ODL4Ymg_zAAm_R6BkApSmNKNkb-2g2nOZr_J0XKD8C-51zIN2QWSiXDrFrPJqzfFq1bmtASZWn2TTrGTbNeBDmIUI9VSozjWILsfdIo6SReorbZGf8LNvwVcOjGLNq8hFqNwjNvJzyGOxV-HKagZXzMlNixxvbPBHQBpuD7Fgd1aAn0GXnbbyGdGlYdJCwKaFX1qcoMspNC2LdYJZ7eeoAOXE4L7QNGgXe4tPCNULhLjGK9WsGs3ESuiWycEvUgVzfXNrN5wNcHFceJX2bvcpNp1Q0qSCKv--UAoix1DymOO8rda0KiEvf3YyvszLa21gnpSDLhNlJ0kZV0kV10FZprTatbq3WLEW7KBita9sH-7DNA1meL7r3VBpfeb6Onl_mMVf5q8fM5mNWQtW_96YE9h3bdfsm83uUe-1mczy4yLeq7A2F8NEP67Rt1p379RaDyU9lINvsiCdWcCrOvtBC0yvJoove7VfM8zWE49hTX7H-NavrvcKzxcpoc-jYcqutWlnpv2u5YiWUceMi8g38pDNeBCsTmdrpiPCPbP2O01eKNbsrLR3TLGNj7brM0LJ25P2f3SKCfgF1DzLikDDJMsmc3QMuViv85GdAhyT-3jwNN1pAc15a1-sSaf8_hB9_ue_yS_3YUU5d0sgfeKVYjJRJzFfx_HIyuCJ1yz8i-yv1JmBygnXk9qfcJZl4l-RAT_NR3_59vbj3d_L_CtzXPDfxMHVLJlqTuqRpXda9A086oNV3nELwTqnzXnOBoHvYmwv8mfLBc_EmCpKZrmQV_z7cuHAzfU3EvwDDH4tlP8T3fJKGHvqJ76JZ2FcsfJbasI5j_zvEX0-_j2FE46nGwEiLlKejUw0fQjee9lBEzbWRqw8OCPV5gOszwX_60vmryyWb2VtmNn5tXBYlL_opXXzvndd75ayOQPyT73-ijkLY9jOt469Gzhp-o1UL-vTqb91YmhbH8vH9ZOWAk9o9FhvvF_BDLFyrurpzq2c1vuZaLDi_6USr_X6CEauJZhDv9q_-e6_f9Te1fvO3Rj5BObFh3KS8mwSs9M9J0EpqXKsO3fHpPq3awtkugVBZ7tZtBIVwatVI2u-so4Zt-KsaVbH7RJu-5cbOvsto3NC0RYliyzsROWnUbP5qJASHGSkkm4-0HDr0S8D-rBDEw6m6OkTk-bnQCemnLPiLHhS-E_x7IR9-ADIsgwI4VCRKsMDqvfpcZN62NEk1SkkFrU2DkJWcW0g7HyDOPng3HGKdzJ-AmOH4wdc5yVQqBmpeSlEQeqyXKe0iMskjpMKoKpzEDTjYwzOw5ma7jowHA9tF-IqEVVSsQu4ios4pqRKs-JieyXWkK_rFGIBCRUZLxPC1iIr6nxdwpqQC3lFCU1J4r_ksyIpoqQkUKQpL7KCiqqsUUqgZbKJvO6RNpuLcDBwVeYpIRcNq6Gx4cSTUgWfcXiJKEXZzYW52gf1xqKUNNI6e0Jx0jXhqHTyBYuym59xQHLRm-bqx09Agq3_CAAA__-pk_vL">