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

    <tr>
        <th>Summary</th>
        <td>
            integers bitcasted to vectors then coerced to vectors of larger integers needs optimization
        </td>
    </tr>

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

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

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

<pre>
    This issue was originally posted at https://github.com/ziglang/zig/issues/18631

### Steps to Reproduce and Observed Behavior

See [godbolt](https://zig.godbolt.org/z/axKsvfv38)

This code results in horrible assembly:

```zig
fn foo(x: u32) @Vector(8, u32) {
 return @as(@Vector(8, u4), @bitCast(x));
}
```

### Expected Behavior

Should be compiled to the same thing as:

```zig
fn bar(x: u32) @Vector(8, u32) {
    const vec: @Vector(8, u32) = @splat(x);
    const vec2 = std.simd.iota(u5, 8) << @splat(2);
 return (vec >> vec2) & @as(@Vector(8, u32), @splat(0xF));
}
```

The latter of which compiles like so on the latest x86_64:

```asm
.LCPI1_0:
        .long   0
 .long   4
        .long   8
        .long   12
        .long 16
        .long   20
        .long   24
        .long 28
.LCPI1_1:
        .long   15
bar:
        vpbroadcastd ymm0, edi
        vpsrlvd ymm0, ymm0, ymmword ptr [rip + .LCPI1_0]
 vpandd  ymm0, ymm0, dword ptr [rip + .LCPI1_1]{1to8}
 ret
```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyUVVFvozgQ_jXOy2gjYyAxDzw0SSOd7qQ73a72dWXwBHxrMPIYmvbXn0zSbNpNqt0KlWT4vo-Z-SYeRWSaHrFk-Yblu4UaQ-t8-VVZo5X_vqicfi6_tIbAEI0IT4rAedOYXln7DIOjgBpUgDaEgVj6wMSeiX1jQjtWy9p1TOxfTGNV35w-MbGflYiJfSJXacL4jvGH83-Rni74HHAgCA7-xcE7PdYIqtfwd0XoJ9SwwVZNxvlr9mdEYPmmcbpyNrB8x4R8m9aLaZbnx0vn54yY2KvjnzQdplQyUVzrzWXXTiN4pNEGAtND67w3lUVQRNhV9jmKX5ew4qcr1jpHDj0cnGNCHln6AGMqmCiAZfwr1sF5JqRkYnuJrzcnFngMo-8jUBET8mdCFtMV24ioTNgqCvM7YrBg6VmGrXfv8rrd78fjgHW419jWjVZDhVC7bjAWdXQmtAikOoTQmr4BRb_SiUr53-4EANSupwAT1pF4l5Hu4jMarLq0Ir0lImYoBb0k0-mlcUExIcc8asmT0pal22sx8Ubs1RshJ6yBpY8sfZyFZ7JYfeDanOrZtldxftz_lm1fWgSrQkAP7gBPranbV2cIrPmOQA5cPztkVUAKcJSrb6vsnkOKulNk-df2nz-Sb_wChPPf0rq-AYBzHpfv2W2YvB1OxK14srqNFvxO_OZLhXxTQnK3hCQ_xeMovsdMQ-Wd0rWioOG563h0CrV5jyJvpx-Aq_uT8xqG4ONB5M0ATGzg0tT8bCpMg-q1hp8E9Af0JNLXmyQ4eZmOOIgfzMlCl6ku0kItsEzWPC9kXqyyRVvWaaJkJrnIlay0zHJVVXlR5EkmpNIHtTCl4CLjiUh5lhciW2a6EEonPON1vUa1YhnHThm7tHbq4lm6mE_1cl3wIltYVaGleacI0ePTaXkwIeKK8WXkfKrGhljGraFAP1SCCRZL0wds0BNUJkQvTgfONP-SKI51D7VDX7-NuwNY5Rv0cOH3iJrADcF05kUF4_rF6G35wbKKmZxvnwbv_sM6XK-sub7_AwAA__-z5gea">