<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">