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

    <tr>
        <th>Summary</th>
        <td>
            Add constexpr support for accessing vector elements
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang:frontend
      </td>
    </tr>

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

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

<pre>
    Building on #76615 (#46593) by @Destroyerrrocket - we don't currently support accessing vector elements in constant expressions:

```cpp
typedef int __v4si __attribute__((__vector_size__(16)));

constexpr  int extract0(__v4si v) {
  return v[0];
}
constexpr __v4si insert(__v4si v, int i, int s) {
    v[i] = s;
    return v;
}
```

https://gcc.godbolt.org/z/zfKs5EjWc has more examples (non-constant element indices, implicit conversions etc.)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0k09zmzwQxj-NuOzYA-KP0YFD_PL6klt76JER0oKVComRFjfOp--AnThNpzOyYQT6Pc_us8gYzegQG1YeWdkmcqGzD8235-9m8i7pvb42x8VYbdwI3gHj-aGqshIYrxnPi6oUOeMC-iuwIm0xUvBXDCF49RMJdvALQXvH-IFALSGgI3uFuMyzDwRSKYxxRV9QkQ-AFid0FME4UN5Fko4AX-ewvuZdZPkTS1uWvv9X6W2peb7t0HVGjQMYR9B1lyIa6DpJFEy_EHbdZrvuupteF83bbTOrGBf3lR8_a2w2VguwQfGVglSU3igr_7LWzw73QwABaQkOLqw8pqxsH7hD-5V4JxgXMdAfxP82MfN-E79owIY3rGyB5S3ED5H10YeBv5Q_-vW5wDPRvDWWnxg_jUrtR697b2nvw8j46W39Dc-x_P_lh4KzjDD5gICvcpotxnUSnHe7R1y3DME4bRTGrYRptkYZWjO9YNiiBCS1Z1wkusm1yIVMsMkOGU8PpeBlcm5kVvOqlmUmsqrI6lrXyJVQWA-6GjJRJabhKS_SIuVZlddFuc-kqIQexCB6ISuFrEhxksburb1MazWJiXHBpj7klUis7NHGbfA5V1a6keVPQ_CO0GnG-fo5hGY9uuuXMbIitSZSfMDIkMXmSWt4JPo-2YMP_57uZAm2-dJ2Q-el3ys_MX5aFe6X3Rz8Cypi_LR5j4yfNvu_AwAA__8KiSms">