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

    <tr>
        <th>Summary</th>
        <td>
            [DirectX] DXILBitcodeWriter is trying to encode unsupported TargetExtTyID
        </td>
    </tr>

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

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

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

<pre>
    ## repro
```bash
lldb -- clang-dxc DirectML/Product/Shaders/Generated/Cast_float16_native_accum32_uint64_emulated_256_Strided4D.hlsl -E CSMain -T cs_6_2  -enable-16bit-types  -O3 -D DXC_COMPILER=1 -D __SHADER_TARGET_MAJOR=6 -D __SHADER_TARGET_MINOR=2 -I DirectML/Product/Shaders/ -Fo /validation/Cast_float16_native_accum32_uint64_emulated_256_Strided4D.dat
```
## fatal error location
https://github.com/llvm/llvm-project/blob/286ab11dc65de8175e2bce69fd7e36acd3be7ce0/llvm/lib/Target/DirectX/DXILWriter/DXILBitcodeWriter.cpp#L1024-L1026

```gdb
(lldb) expr T->dump()
target("dx.RawBuffer", %struct.uint64_emulated, 1, 0)

(lldb) expr *T
(llvm::Type) $1 = {
  Context = 0x000000011f00b010
 ID = TargetExtTyID
  SubclassData = 2
  NumContainedTys = 1
  ContainedTys = 0x000000011f977570
```
## crash stack
```bash
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
  * frame #0: 0x0000000102027e68 clang-dxc`llvm::dxil::DXILBitcodeWriter::writeTypeTable(this=0x000000016fdf5708) at DXILBitcodeWriter.cpp:1025:7 [opt]
    frame #1: 0x0000000102025580 clang-dxc`llvm::dxil::DXILBitcodeWriter::write(this=0x000000016fdf5708) at DXILBitcodeWriter.cpp:2888:3 [opt]
    frame #2: 0x00000001020252c0 clang-dxc`llvm::dxil::BitcodeWriter::writeModule(this=0x000000016fdf5a40, M=0x000000011f006c50) at DXILBitcodeWriter.cpp:436:16 [opt]
    frame #3: 0x0000000102025098 clang-dxc`llvm::dxil::WriteDXILToFile(M=0x000000011f006c50, Out=0x000000016fdf5be0) at DXILBitcodeWriter.cpp:406:10 [opt]
    frame #4: 0x0000000102041724 clang-dxc`(anonymous namespace)::EmbedDXILPass::runOnModule(this=<unavailable>, M=0x000000011f006c50) at DXILWriterPass.cpp:73:5 [opt]
    frame #5: 0x0000000100c103fc clang-dxc`llvm::legacy::PassManagerImpl::run(llvm::Module&) at LegacyPassManager.cpp:1521:27 [opt]
    frame #6: 0x0000000100c101c4 clang-dxc`llvm::legacy::PassManagerImpl::run(this=<unavailable>, M=0x000000011f006c50) at LegacyPassManager.cpp:539:44 [opt]
    frame #7: 0x00000001017f8fb0 clang-dxc`clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) at BackendUtil.cpp:1262:19 [opt]
    frame #8: 0x00000001017f8d18 clang-dxc`clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::unique_ptr<llvm::raw_pwrite_stream, std::__1::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) [inlined] (anonymous namespace)::EmitAssemblyHelper::emitAssembly(this=0x000000016fdf5f50, Action=<unavailable>, OS=llvm::raw_pwrite_stream @ 0x000000011f008bf0, BC=<unavailable>) at BackendUtil.cpp:1286:3 [opt]
    frame #9: 0x00000001017f89d4 clang-dxc`clang::emitBackendOutput(CI=0x000000011f00a6a0, CGOpts=<unavailable>, TDesc=(Data = "e-m:e-p:32:32-i1:32-i8:8-i16:16-i32:32-i64:64-f16:16-f32:32-f64:64-n8:16:32:64", Length = 78), M=<unavailable>, Action=<unavailable>, VFS=<unavailable>, OS=<unavailable>, BC=0x000000011f006a20) at BackendUtil.cpp:1451:13 [opt]
 frame #10: 0x0000000101a5a6ac clang-dxc`clang::BackendConsumer::HandleTranslationUnit(this=0x000000011f006a20, C=0x000000011e839200) at CodeGenAction.cpp:316:3 [opt]
    frame #11: 0x0000000102925f94 clang-dxc`clang::ParseAST(S=0x000000011f82a600, PrintStats=<unavailable>, SkipFunctionBodies=<unavailable>) at ParseAST.cpp:184:13 [opt]
    frame #12: 0x0000000101e800fc clang-dxc`clang::FrontendAction::Execute(this=<unavailable>) at FrontendAction.cpp:1221:3 [opt]
    frame #13: 0x0000000101e1c7e8 clang-dxc`clang::CompilerInstance::ExecuteAction(this=0x000000011f00a6a0, Act=0x000000011f00c5c0) at CompilerInstance.cpp:1057:33 [opt]
    frame #14: 0x0000000101ef8b64 clang-dxc`clang::ExecuteCompilerInvocation(Clang=0x000000011f00a6a0) at ExecuteCompilerInvocation.cpp:300:25 [opt]
    frame #15: 0x0000000100009c50 clang-dxc`cc1_main(Argv=<unavailable>, Argv0=<unavailable>, MainAddr=0x00000001000054d4) at cc1_main.cpp:297:15 [opt]
    frame #16: 0x0000000100007424 clang-dxc`ExecuteCC1Tool(ArgV=<unavailable>, ToolContext=0x000000016fdfe8c8) at driver.cpp:223:12 [opt]
    frame #17: 0x0000000101ca719c clang-dxc`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(long) [inlined] llvm::function_ref<int (llvm::SmallVectorImpl<char const*>&)>::operator()(this=<unavailable>, params=<unavailable>) const at STLFunctionalExtras.h:69:12 [opt]
    frame #18: 0x0000000101ca7190 clang-dxc`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(long) [inlined] clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0::operator()(this=0x000000016fdfa0d0) const at Job.cpp:436:34 [opt]
    frame #19: 0x0000000101ca718c clang-dxc`void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::__1::optional<llvm::StringRef>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>*, bool*) const::$_0>(callable=6171893968) at STLFunctionalExtras.h:46:12 [opt]
    frame #20: 0x000000010136ee10 clang-dxc`llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) [inlined] llvm::function_ref<void ()>::operator()(this=<unavailable>) const at STLFunctionalExtras.h:69:12 [opt]
    frame #21: 0x000000010136ee08 clang-dxc`llvm::CrashRecoveryContext::RunSafely(this=<unavailable>, Fn=function_ref<void ()> @ 0x000000055b5e8d90) at CrashRecoveryContext.cpp:427:3 [opt]
    frame #22: 0x0000000101ca6c24 clang-dxc`clang::driver::CC1Command::Execute(this=0x000000011f005350, Redirects=<unavailable>, ErrMsg=<unavailable>, ExecutionFailed=<unavailable>) const at Job.cpp:436:12 [opt]
    frame #23: 0x0000000101c7997c clang-dxc`clang::driver::Compilation::ExecuteCommand(this=0x000000011df22a40, C=0x000000011f005350, FailingCommand=0x000000016fdfa618, LogOnly=false) const at Compilation.cpp:196:15 [opt]
    frame #24: 0x0000000101c79b44 clang-dxc`clang::driver::Compilation::ExecuteJobs(this=0x000000011df22a40, Jobs=<unavailable>, FailingCommands=0x000000016fdfa810, LogOnly=false) const at Compilation.cpp:251:19 [opt]
    frame #25: 0x0000000101c8fb28 clang-dxc`clang::driver::Driver::ExecuteCompilation(this=0x000000016fdfa860, C=0x000000011df22a40, FailingCommands=0x000000016fdfa810) at Driver.cpp:2226:5 [opt]
    frame #26: 0x00000001000069b0 clang-dxc`clang_main(Argc=<unavailable>, Argv=<unavailable>, ToolContext=0x000000016fdfe8c8) at driver.cpp:407:21 [opt]
    frame #27: 0x000000010001200c clang-dxc`main(argc=<unavailable>, argv=<unavailable>) at clang-driver.cpp:17:10 [opt]
    frame #28: 0x0000000183f4eb4c dyld`start + 6000
```

</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl1zo7Ya_jXKDeOMJL4vckHseJtO0mRit6d3HiEJm7NYUEl44_Prz0hAbGOws2c7Z3qxnY7D8grpeT_1PgKiVL4WnN8B_x74sxtS600p7zIi_1OK4iYt2f4OYBdg15G8kiWACQhg839K1AbApChY6kwmDi2IWE_YO3VmueRUPz8BPH-VJaupBni-2BDGpQJ4_oULLonmDOD5lCi9yoqSaBSsBNH5jq8IpfXWxas6FzrwVnxbF2b0CvvBaqFlzjjzZrebQhXO5MGZLp5JLpzJ0qFqFayw40y4IGnBJyhIcz3R-4orx5m8uM5k5sz-nK6mL8-vj08Pb8CdIXNvtVr8kswe3lbL5O3Lw3L1nPz6YoTBoPDxNyvEzuTxmqLOZF46AM93pMgZ0XkpfkhjRvSx-c1145mMaFI4XMpSOkVJm5VgstG6UsBNAJ4DPF_nelOnt7TcAjwvil33Z1LJ8t_cIk-LMgV4jqOApAgxGviMRyj0OU4pD-KMhdwNCGVuykPK4dE8uXluSeSam3kas_xprv58fPqXzDWX7T_uc01Lxpt7t7SqAHafEMTexPwGRqcjFdcstVpGJsYAjh3-XklnOQHuA6u3FcARwDGAiW5XjgDG7P32jXy7r7PMLIoBnjoA-0rLmurbnoGNEJkf2MwzsBjAybK7vdsaa7rJcl9xMwBgDznAnTkgvAcwcZxpKTR_1_YefIfNfwhlEKYQGYc5jzMrbEz18K6X-8eZfXRRp7QgSs2IJnYItrd_q7dmUpILzpZ7ZSXoY62T28cLxmHoh3A4WqgkauMoTejXgWwGOHH0RnLCHIBda5y_al7zRk8c0nJ7S6qq4LdbkotJMxTg0AxUuqwcyYkqhR2eSk6-VmUutINuG9Rm-kySLTezQ-AmR7AhhjjkQXSoJCCAB6uz97xors4Cqbn9zVwb3yxN-gMc6U2ugDs7rBBkLPNDaKLGIdoZDkg3QRD7wE1CB_j3ZaWB37jIOSBH58h9P4I_hPwHAOMoioCbuOOA8QBgTK8DHgP7XLL6go2JB01APJ9ITB4E1IdXlPHcwPggGFfGHVAGxtfjxi5jll2W89yiHwM4dV5qfa5Wyq-ChxY8HAfvnYH3UIi9E_AAR0SUYr8ta-UIsuWqItSUnEaPh23KmUHwSpRqbslavIi-U4A7rQXZkbywCeE-fMonjT5m6lan0NjbH9fI72kEKYJuRkfcUfA1ofvm2izyTARZc_m4rYoPVU6qbadV0GJ8shMcPdplrY9NWuILaRsMIEXU-zGk_7OxxxTxXeNnzxvXI-zpgcIsytLTbLbXDU6-zfU9oV-5YC-1rmqzUx6Jp-W2ygsuH4XSRNDG1FPnZATjX7h4qUxnoVr5wVCmRRHrN56d3u4cl_Rma6EktOmIjh95FFrWKt_xN55NhX7VErjTg3iXteFu0nexV5pvW0MrzRrJaoWai1rkf9V8VfWmkOTbqrIlbKW05GQ7_DTjGakLvWK84JpfmcF9aFGcKzkthaq3phNJWq-3gt91XnSBiwNTnlE87vBowOEMRT8d_k93OPDvc1GYNg34pn-6UtdznSjFt2mx_4UXVbfj8qP7o1tu1uxbrZFH6tHLArizC5o5wIO9zjVKMzvx_XR40tGgjoLLLUk8ENMx874npqePZ_WVBMTCnX55qfRoXV7OuKJGiKOPhhtgzCfGMHxiFLAtk4snOWr_mhyMJjlqupNJ_jEgMFt64E2yTpR1oqwTichKumkDr2UmT1ys9cYuH1ou0-4Zg6Avu_aP-eKi1wcl1qm9DYpgOO5VzzfmQD23HvrifkuPiE8CQsec2k8ae_MXIljBl5IIVVgu-7vI9VDcH-BOnZ4iPHJjDDtF2nLWGLBVxUVX4hOdNfkx9rN4NEBfiVQ8WSwBjhY9mBEmAbQwX2Uu9EKT8dBcfM2reS0s1PuS5XxkpFWsW7NzT-QNeOdEqT4RQDyCMBt10FwaSvtRu5sy9c5prS_3mRbd6cMfhcG2aZcw9vt7xBEN-ehud7adHaPsNp3h6OmqRUL1mYz69BA_pyt88ETfdGLuJV367T7iWZQGo0HUoj4suOvOc3A0bYYNqmBhjj7chTw06YkvtPLorJeHMKZ-r7OkaGXIP8BRIte70XIl1zs42hiTXCSMyRN1zI_vMa9Vp1unI7lxaLv8C-jP-nsIQ6_HrTojTdGyLItGhz9G94myLNpDnbMdl0e04-VM5rsDGceuDfMLOM_6d0pCFJ8m4a7M2VGjlLUlYSV5BtyplbbnX6YbMUMoKYqU0K-rTAB3ehRUDbw2WaZoWm63RLB-Mh_WSqQk-ze7znmjVNqekBQnLdKhIfxojc6fTInKqWk0cgNsSjdEDg80kpWWJDdVshk3Nicp7IFnKY8GmrG2BU2tg20fRkuhdPMIwN4K2kFRUYr1eZc2avRcaOfEUIstKYo_ONVlywothnYxnNhFgmMXlRWXFm3jucvksSKSbEfrq13EBN9i-dTtF6R4eNeSqNuNaTLia2F4xipsGMKfYfiPCMOflrtsuUv5dFqpCWTwJGV-LdOTw0b3wlkLOuMpJkuin8X6_50lxmJN_ZsFKERR7MZBtwGP1UAvuFID8RlhcQPO0djB-FQStXnjtNxxuf9oDIzkrRYLknFL0D8bCJ_feYYi6Dv2kr9jt8B9OmQtBcdO3T9nqUvb39xQ3Yt2OD2t8P3U5xGLP5r2AQRd1uPwyuuSM5pESUDxaNv-uaQdpCC-2xzcvHFmX5uO2uNByme1HpXaVfJSzElecHY1Dvol8KLrzwgZDeM4HCWNJ9awZIScscfORENWYRnG7Ruk8_OJzl5Gz1ysP0zdr_kBiuwJS7l-EcXehBIpFD-xwRG2jtHFwRWOgc8IHQ3j1PtcZIzY4tcyVdcMYceMZcqJKQb2vwjB77cFbo56LpxK4z5bRDTKUjxK1I9tMTu6PuGtZIyvN5oEQ2FxZKfP2aJ52XXK2nBw-TUXHmCXQTz01uWIHdNL7PjvZJ0eNCUNowv4-6wTQoQhPM3iFjm5gJyMIm9YezPbMTbLdy-9E8U9JhK5mcdTjzpsXzAQQKWJNNTr3gkg7H_WcMPuXBa7Mbnhdyj0Qs-DfhjdbO4IdAnJwjD2kc-xH-EwDYMQhmkaUhal7Ca_s2-OfRRCCGM3uqUBjAnCUYxgQBgkwIN8S_Li1uxrt6Vc3-RK1fwOedDF6KYgKS-U_XQKY8G_OVYKMAb-7Ebe2a9r0nqtgAeLXGl1mEbnurDfXHWfyviz81fKTq4cLfe5WDu6dLgwEqcWqq6qUmrOTr8iuallcffdn_xYxArgeavS7g7_NwAA__9A1jYW">