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

    <tr>
        <th>Summary</th>
        <td>
            Can't pass vectors into RISC-V inline assembly
        </td>
    </tr>

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

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

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

<pre>
    Consider:

```
#include <riscv_vector.h>

void foo(float* p) {
    vfloat32m1_t x = vle32_v_f32m1(p, 8);
    asm volatile("vmv.v.v %0, %0" :: "r"(x));
}
```
This fails with:

```
error: couldn't allocate input reg for constraint 'r'
    asm volatile("vmv.v.v %0, %0" :: "r"(x));
```

Seems like scalable vectors don't play well with inline asm?

Live example at https://gcc.godbolt.org/z/WbcWv69T3


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy1UsFunDAQ_RpzGQWBXcLugcNmt5Eq9dREzXFl7AHcGIxsw2769R3YpFlFUW8Fe8x4Zp7fPFM7_VLt3RCMRs_EjmUHlr3Z2-x1XFwuzKDspBGY2HsT1HycUUXn046Jr9eVszMaGucY3zTWycj4DkbGt8DKu0sG0DOvMcH7_BjhTKAHmC0KfpyPzbJL1VS0hw1VMnFVKEMPs7MyGouUxDif-zmlFxgvsqXksnJYOhI7crmnSbnnBesKjpWHT5t97EyARhob4GRi929l0Hu3iAfKTVYPjJcRpLVOyYhghnGK4LElQTxlDCF6aYZIpEoiVf6ftj5c3WofEPsA1jwjBCWtrC3C5QIDaHehPVr5Aie0dm2byFsz4MKMiftrrO9mRsCz7EcCkRG6GMew0OL3NFql0tbp2tmYOt_Szm-aT7V6mm-3j-IaKNGV0FuxlUk00WK1l69EZAh_2ZFcDn58e9jf_HynFLCv7UsyeVt9OJ2YT3WqXE-OtfPbcjN694sQyTUhTBjooyj4pki6Kt8USpe1EljnJSqUqslUIetcN7nUoklILrShYsUdKT7gCVaIRf3ikJiKZ5xnRVbkRb7J81RLslIKgi3zBnP2JcOe_qZ04bFIkvhqpVRPbaCgNSGG9yA1Z9oBcT2O8OUUO-er_nka0YeYrGdXK_c_57wZDA">