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

    <tr>
        <th>Summary</th>
        <td>
            [CIR] Upstream VectorType support
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            ClangIR
      </td>
    </tr>

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

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

<pre>
    ### Overview
Upstream, the basic support for vector types. The initial change should add support for declaring and initialising global variables that are a vector of existing scalar types. Follow-up patches can add support for local variables accessing elements and perform vector op.

### Suggested minimal test case

```
typedef int vi4 __attribute__((vector_size(16)));

vi4 a = { 1, 2, 3, 4 };
vi4 b = { x, 5, 6, x + 1 };
```

### Existing incubator tests

clang/test/CIR/CodeGen/vectype.c
clang/test/CIR/CodeGen/vectype-ext.c
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMU0-Pmz4Q_TTmMgoCg0Ny4JBsfvzUU6V222s02BNwZTCyDZv001fOv91VL5VGD8l-4_dmhkHvdTcS1UzsGee7wR1oIWMncoxzJg4JzqG3rv54k7RWXWrGi1vA14XcoumNZbsfkw-OcGD8BUJP0KLXEvw8TdYFOFkHC8lgHYTLRD6F155AjzpoNCB7HDsC39vZKEClPuUpkgadHjvAUT1ytI8HnbEtGljQaWwNeQg9BkBHgA85ewI6ax8i3Us0-HTQWGPs22qeYMIge_IgcfxL3Vj5SQGlJH8VJ0MDjcFfbU3kTtYNT9UpZdkuxrNX3-euIx9IwaBHPaCBQD6ARE936jq7R7aLFhWdQI8BFl3C8YghON3OgY5HxjeMb25KR69_E-ObfM349h7F_vZgTERgxQFYtYc8ToZHKCKUwKrDjRp57ZN3jrciwjrCGRjfQ_7O_mjzU4H_PdqsRzm3eJ01-eBvPGlw7Bhv4hHjzcuXbxGtov9pZLyJ1VwmSuU_U1d0DqlMVF2obbHFhOq8KkUuxLoqkr4uhCg2p22WKyXbUiA_CSXUSVWYU5FX20TXPOMiK3mWF7wSRVrJvFrzEsVaESmZszKjAbVJjVmG1Lou0d7PVOfFutxUicGWjL-vz0u0HH1eN8fVMWXVzp1nZWa0D_79kaCDuW5drEsc4LE48PM60NfLRI8fMJmdqfsQJs-KHeMN402nQz-3qbQD40188_5ZTc7-Ihn7dXXpGW_uRpea_wkAAP__YZ0_xQ">