Change theme
Help
Press space for more information.
Show links for this issue (Shortcut: i, l)
Copy issue ID
Previous Issue (Shortcut: k)
Next Issue (Shortcut: j)
Sign in to use full features.
Vote: I am impacted
Notification menu
Refresh (Shortcut: Shift+r)
Go home (Shortcut: u)
Pending code changes (auto-populated)
Maintained by go/gitwatcher - Please do not modify manually [ID: 530458]
Maintained by go/gitwatcher - Please do not modify manually [ID: 530406]
View issue level access limits(Press Alt + Right arrow for more information)
Request for new functionality
View staffing
Description
When narrowing a vector after a swizzle (e.g. during the casting of Int4 to Byte4), we throw away the upper part of the source vector and thus the swizzling of those components doesn't matter. LLVM can express and optimize for these "don't care" components by using 'undef' shuffle mask values.
This probably has no effect on x86, where since SSSE3 a single pshufb instruction can permute the bytes arbitrarily. On ARM it might have a significant effect:https://www.cnx-software.com/2017/08/07/how-arm-nerfed-neon-permute-instructions-in-armv8/