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

    <tr>
        <th>Summary</th>
        <td>
            Inline assembly asserts when using wrong number of vector elements with physical register constraint
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AMDGPU,
            crash-on-invalid,
            llvm:SelectionDAG
      </td>
    </tr>

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

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

<pre>
    This test case uses an <8 x i32> width physical register constraint, but tries to use it as a <9 x i32> typed value. This should just be an error, but it results in an assertion in SelectionDAGBuilder.

```
; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s

define <9 x i32> @inline_asm_wrong_vector_type_assert_def() {
  %asm = call <9 x i32> asm sideeffect "; def $0", "={v[8:15]}"()
  ret <9 x i32> %asm
}

define void @inline_asm_wrong_vector_type_assert_use(<9 x i32> %val) {
  call void asm sideeffect "; use $0", "{v[8:15]}"(<9 x i32> %val)
  ret void
}
```

Hits this assertion:

`Assertion failed: ((PartEVT.getVectorElementCount().getKnownMinValue() > ; ValueVT.getVectorElementCount().getKnownMinValue()) && (PartEVT.getVectorElementCount().isScalable() == ValueVT.getVectorElementCount().isScalable()) && "Cannot narrow, it would be a lossy transformation"), function getCopyFromPartsVector, file SelectionDAGBuilder.cpp, line 430.`

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycVV2PozgQ_DXmpZWI2JCEBx6SMNk7nfa0ut2d18hAA94zduQ2yebfn-zM16E53WilGSLTpKqru4pIItUbxJLle5ZXiZz8YF0pHaEZk9q2t_LboAg8kodGEsJESCANMHHYwk9QgjPxAFfV-gHOw41UIzU47BV5dNBYQ95JZTzjB6gnD94pJPA2AIHyIAlkACtewfztjC1cpJ5wCZGeBjvpFn5M5KHGQI_OWfeMqTw4pEl7AmVCVRKh88qacP6KGptwqHaf9pPSLbolSyuW7p6u6_Tp734Ue_jr-59M7EDrBhajd-qskYlKjm3fmIUc2_A_kITF2JwnJqq--1mkaZABjOf0Fr3FThmcKWRZqoxWBk-SxtPVWdOfLth4605B_One_6nFjvEt4wWwzf4OB4FA0ghMVNBIrWfIoUSqRew6bDwwzoOeFjtgPEvDkR_udyu22V9Yvt8ysVvlLK_Ypor1QPhM5tDPW4_0Two31TtSL1a1H1U4EQbCOcNF6pnqKDUiv68wuGmm8D_lvc_2VnIgmkucuSRef1OewAeHvjiOid3MXLsXM3ZSaWyDs-KUt1-k8w-P35Y9-sc4mweNIxp_sFMITFhEqP1h7NV8VuYxJOLZEKF1sYd475cgIgpfM76GD7ai6Gsjtaz1axNVsOFHeph_91_s_CCNsR6MdM5ew_6Uh2uMfEg7aEt0A--koc66UcY5h10W4dluMjHe0KM_2PPt6OwY5NC9mfiI0vjue6A5n0M9GBUykS5f9pu0pWgLUcgEy9WGc5FtRM6ToWyKLM0xX6dFIbpNx1dbXqzXXZbmhVwX2SZRJU95lm5EuhJZseJLuS3kStRFmnUN1mvJshRHqfRS68u4tK5PFNGE5SpdrYo00bJGTfGFzHktm7_RBMvsPlefvny_25tx3jhJw8KahTIXqVX7UgigTOzeig21vEpcGWqLeuqJZalW5Om1Ba-8xvL3GNlo5rHWtydXE1wHNDCRMj3EKIOZxhod2A7uoQa8r5zgqv7nhyCZnC4H788UosKPjB975YepXjZ2ZPwYBdw_Fmdnf2DjGT_GERHjx6cpXUr-TwAAAP__xSkT9w">