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

    <tr>
        <th>Summary</th>
        <td>
            [mlir][vector](test-emulate-narrow-int=memref-load-bitwidth=32) mlir-opt crashes at VectorEmulateNarrowType.cpp:1277 with assertion `subByteBits < 8 && "Not a sub-byte scalar type!"' failed
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          Aran-414
      </td>
    </tr>
</table>

<pre>
    git version: e7195d5d23adf9336555e7244e2fcf397111c57e

MLIR Program:
```mlir
module {
  func.func @m(%arg0: memref<4x?x16xf16>, %arg1: index, %arg2: index, %arg3: index) -> () {
    %5 = llvm.mlir.constant(3.000000e+00 : f16) : f16    
    %27 = vector.transfer_read %arg0[%arg1, %arg2, %arg3], %5 : memref<4x?x16xf16>, vector<8xf16>
    return 
  }
}
```

Reproduce Command: `mlir-opt --test-emulate-narrow-int=memref-load-bitwidth=32 --cse a.mlir`

StackTrace:
```
mlir-opt: /data2/dependency/dev/llvm-project/mlir/lib/Dialect/Vector/Transforms/VectorEmulateNarrowType.cpp:1277: bool {anonymous}::fitsInMultiByteContainerTy(mlir::VectorType, mlir::Type): Assertion `subByteBits < 8 && "Not a sub-byte scalar type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0.      Program arguments: /data2/dependency/dev/llvm-project/build/bin/mlir-opt --test-emulate-narrow-int=memref-load-bitwidth=32 a.mlir
 #0 0x00005653335a23ff llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x256e3ff)
 #1 0x000056533359ebdc llvm::sys::RunSignalHandlers() (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x256abdc)
 #2 0x000056533359ed77 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x00007f8f09cfa420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f8f097e500b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #5 0x00007f8f097c4859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #6 0x00007f8f097c4729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #7 0x00007f8f097d5fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #8 0x000056533a5d5093 (anonymous namespace)::fitsInMultiByteContainerTy(mlir::VectorType, mlir::Type) VectorEmulateNarrowType.cpp:0:0
 #9 0x000056533a5e31a6 (anonymous namespace)::ConvertVectorTransferRead::matchAndRewrite(mlir::vector::TransferReadOp, mlir::vector::TransferReadOpAdaptor, mlir::ConversionPatternRewriter&) const VectorEmulateNarrowType.cpp:0:0
#10 0x000056533a5e14a5 llvm::LogicalResult mlir::ConversionPattern::dispatchTo1To1<mlir::OpConversionPattern<mlir::vector::TransferReadOp>, mlir::vector::TransferReadOp>(mlir::OpConversionPattern<mlir::vector::TransferReadOp> const&, mlir::vector::TransferReadOp, mlir::vector::TransferReadOp::GenericAdaptor<llvm::ArrayRef<mlir::ValueRange>>, mlir::ConversionPatternRewriter&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x95ad4a5)
#11 0x0000565334dbb4b1 mlir::OpConversionPattern<mlir::vector::TransferReadOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::ValueRange>, mlir::ConversionPatternRewriter&) const (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x3d874b1)
#12 0x000056533c3d5d38 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3a1d38)
#13 0x000056533c41c9a2 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::'lambda'()::operator()() const PatternApplicator.cpp:0:0
#14 0x000056533c41df08 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3e9f08)
#15 0x000056533c3d087b (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*) DialectConversion.cpp:0:0
#16 0x000056533c3d0d66 mlir::OperationConverter::convert(mlir::Operation*, bool) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb39cd66)
#17 0x000056533c3dbd3a mlir::OperationConverter::applyConversion(llvm::ArrayRef<mlir::Operation*>) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3a7d3a)
#18 0x000056533c3dd5f8 applyConversion(llvm::ArrayRef<mlir::Operation*>, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig, (anonymous namespace)::OpConversionMode) DialectConversion.cpp:0:0
#19 0x000056533c3dd7d6 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget const&, mlir::FrozenRewritePatternSet const&, mlir::ConversionConfig) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb3a97d6)
#20 0x00005653336d6df6 (anonymous namespace)::TestEmulateNarrowTypePass::runOnOperation() (.part.0) TestEmulateNarrowType.cpp:0:0
#21 0x000056533c488641 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb454641)
#22 0x000056533c4889d0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb4549d0)
#23 0x000056533c4892ae mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::'lambda12'(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&)::operator()(mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool)::OpPMInfo&) const Pass.cpp:0:0
#24 0x000056533c4875f0 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb4535f0)
#25 0x000056533c48851b mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb45451b)
#26 0x000056533c4889d0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb4549d0)
#27 0x000056533c48aa84 mlir::PassManager::runPasses(mlir::Operation*, mlir::AnalysisManager) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb456a84)
#28 0x000056533c48bb01 mlir::PassManager::run(mlir::Operation*) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb457b01)
#29 0x000056533366847b performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#30 0x0000565333668f03 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, mlir::SourceMgrDiagnosticVerifierHandler*, llvm::ThreadPoolInterface*) MlirOptMain.cpp:0:0
#31 0x000056533366918b llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#32 0x000056533c85b685 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::MemoryBufferRef const&, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0xb827685)
#33 0x000056533365f1d4 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (.part.0) MlirOptMain.cpp:0:0
#34 0x00005653336696a7 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x26356a7)
#35 0x00005653336698e3 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x26358e3)
#36 0x00005653334e6abc main (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x24b2abc)
#37 0x00007f8f097c6083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#38 0x000056533357ea4e _start (/data2/dependency/dev/llvm-project/build/bin/mlir-opt+0x254aa4e)
Aborted (core dumped)
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWl1z4yiz_jXKDWWXBPpAF7lwnMk5qZpsUpnU3rqQaDmclUAH0Ey8v_4tJNmSFSd2Zjy7U_tuaiaxEXQ__XTTNAhmjFhLgEsvuvKi6wvW2GelLxeayVkYhBeZ4pvLtbDoK2gjlPTIAkESpBGPOCaMFykhcRRFkOAwBFzkBUmTIAjyKAHPX3j-4u7z7SN60GqtWeUR1-LFfvevKoX2_EWleFMC8pIrz18gVDQyn7tfyAv9ysPUwxHTa9-prqDSUHhkGb545OYliF-KIPbIJw8vUdctcN2E5PAytOEDbWTUlqKZRz6hVlW6w4Fczwh55BqV5ddq7tDOcyWNZdJ6mJK53_6Ah698Hzl5DoyT0H1sRewk4aQV9RVyq_TcaiZNAXqlgXG0tTC62hoxwj6CHF333yJ0jI1Oj0eWdNvYIdFgGy07XF5y7dzR_d46pfPaI9Ra8SYHtFRVxSR3-nqXzVRt0WxmwdgZVE3JLMwk01p9mwlpPXLd4ZqVivFZJuw3we2zR64JRrNZbgCxlsudri-W5X88aZbDJD5cbPT6WvX4hjPLsPsLNUgOMt-0X756-Mb5aFZr9X-QWw_ftBrwTSkyD99cC1Z2zb93tOCbp9YBSldm1_qps-W31pSnTQ3zvK49sghwkjj9mVKliw4mldxUqjGOObLwyKIQ1tzKu6a04mpjYamkZUKCftp4mLZI2m6dGifZeWho71pSp2NhDGgrlHRkmyZz4q6ENcgjS0SRh2MPx8jD-DdlEUOmyWbZxgIyOSuZRraVFHgYezhBBRMl8LnnLx4-f1p8-eS6V8KNy5o10lArbZFV6Nna2jgo-MbDN2thn5tsnquqZ_U1ucKYBhxxiEmOhMzLhgOyz4Byzcwzylj-h3UO7Z8bq5vcWWWcOr2LLTcia9bzbRAg3lR1FwT-HLU_feZATK-bCqQ1H46ErBEld3-F7OPiBwK4D13fYSA-8l9cBojiiBASMUyKos0VnVvNxnQfHrSQdhTlmA6dNPu2UsZqYFXr3CVyEFwScdnoh810uekFRzGQonAh1gEP9oGnkPH8EPDHRn4Ra8nK_2WSl6DNNkWeFRvLeD5gw1NsPEnQHgoP05ajJTJiLWShVtbDizbpKcHbj2k_wvRT2G__dwpIryApaOGnecFC7KPVSoOxSsNK2968LnW80HgVh7NSyOZltpZN96C2zy5xz42a-60ZQRhifzAi3NORQOT7GdJMGDhBeO7Exq3YkPh-NoiN9sXmIY1SxDJ1EuaRWIxplA5i46nYZOfjkwUmeCQw2RfIo4LHHxNISMHjQSAdBwWLeOSnxAncpWIkWQWmbmdXes6kjN5fG8aBle6DBBKw-BjIpZJfQdseRF8UPALj3eOK2fx5IfkjfNPCwh7w7Qrfgh2NvK_3DXm734Kzul0Nx907RK7We2DWgpa9bt2mpxS1FdCJrLhU409YCUIWjXLNZ7UWOSsfwTSlfQ9G18yFqR0nTyp4UoFHlsOI-_rAmOVJfHUl08ld6ZmUdlz2af-cju3a_gckaJFvvUyWA-sLrdnmsa0dRzOBlQ08MrkGZ-WUk2NxccY1IY0YD1nUTX8XQ3vrVcizLMwCdC7PH51o9zVo5qqXfpX5EI3fMbfOyCThNAmzYGByb3XNCY84ocdn3UfYGZ78RTZmhAWc0MFGsmdjGOQpw69hLeq6FDnbBcb5bBxHiNvHuoGrbqPWbSHGonsBo1SQ9mHzphBX5fywkLcy8Ely-8XLw0nJqowzDyddZdi1q5Yut7C0bV3N2Pn9FfkHVoxw4j9e-PRf_53Vf-edf5AW_mj-RZMc49MkO1YH7Tz0GdasFH9Cb0HZf33HnSnqt_dD8joQVPEUFI9jdEBkX5Bt9efd13ejyQXF2TlNcx7HA6fJBH7GCTsBPqvrcjPwsrfzPLh47dn2E0KFJZywwSw6MYtHBUU_DvrwmvvE9BrsG0XXjVZ_wjYP9PPmy5u9B6FLJQux7o7ljkT4MOhOcTg1cNMpRQkfB25L1gPTVrByj7NTst9fxM25YyhN-DA18P4pTMxjXhzddj2Bsa82Lw_M9OceupH3ckTb9tBjXjNt3Y4_RQclvHYfDvYXM0rjcFy6crBMlFs_Pan72qHYlew9mElSN-aVJ9_28UKycmOEuWOSrUEPCWuJGtke_vOfcOSUhVEYh0PhifGUh5T7H-bhQdRQCjldDVzXnXnx2YnZrxeMuW3PMyuQbYnzqqAYd-g0dw967A9Mg7S3slDb-bP4Cdyn3B-4nxTENMUMPsz9aEIszEbmt1Vdepj2i9-kIAxwVxL-DCX39cOdo29bzxysOH--4l1Ba6aHjI7ySQ1Lk6j4eLi_D-rMIUOiYhQy0XS6RkH2X5K2oiAbeIj_TVt_W9pKJtwzRsMJ5C0JO6aZMWBOrH5eMXluc2JGw8EcOjEny_zgiDnv7nrOizXJ_NFqne7XVDENkwzVoAulq0X3Ju_IWyxj-yNs88w08FVt908gv6hG53C31m-fg959vn1cKmnhxb7y3V0p9H1t75joq8zxHheNnr7OzZPXdnFMC5-gWqscjLlqiqJ9w3SSbY0U_9_AK9vuoFJ6sxU16s-hYE1pVxxKsPD2mN3x6-Hnbv9zMhvjfv1-4xHWwli9efV855RrwdZSGSvy30GLQoDevXubHIE-tS_CHpQqb6UFXbRV9uK4E4KJE9KAZm--FvieU5BfwEl7Xng7oNLdKXTOyjJj-R-rYv8Ae0TlLxOap0fVu3P14EniL-C7E1yGaank-hdJCKfG2pFpub9No1EW02jkSlOXwi4kf5hky7-DgH9sKni3x_jZF6uFXL8K1lHzeasEipOYDq_lCNnP4VER8PDwvP-nZa3JYdD7cyqcLnUxS96kqS_d82fWrbWLj7r8mI3nvb0TkyhmyRAS0dRWCuQstv7FRlEgg1F7m0ASQsyyHFVMyLNqDTPMsnzQOrlEk8c-JWi1KkWWr4xl2q5GEE69pxP6dGQY3b9rlQALAXXCz3vHK2QshE7vIlPaQvsCLFca2it_wHtM25ufF_yS8JSk7AIug4SSKPD9OLl4voQ0ynLs4yjJojzjOY9phiOaU5rFFOfJhbjEPo79xKdBgJMwnqdJASmPfBrjJPZ96oU-VEyU8_ZSr9Lri_Y24yX2aZDSi5JlUJr2OjTG3SVS7EXXF_qytTdr1sYL_VIYawYJVtiyvULdDoiuveiqv3MQXXuYfsdFQxfSu6uK7aVKMIgdu3cT4CRB34R9Ruz890gvGl1efv9V0Z7fr5f4PwEAAP__7e146g">