Case here is pointer to float3 with array stride of 12. Plain dereference will not work. To be more general, we can do pointer arith instead. For alignment, we have to cast the result to a packed_float3. All of this is rather awkward, but there aren't many great alternatives.
We're missing handling of Aligned mask for Load/Store, where we might have to cast a pointer to scalar types at last minute, which would make this reinterpret_cast chain even more ridiculous.
Case here is pointer to float3 with array stride of 12. Plain dereference will not work. To be more general, we can do pointer arith instead. For alignment, we have to cast the result to a packed_float3. All of this is rather awkward, but there aren't many great alternatives.
We're missing handling of Aligned mask for Load/Store, where we might have to cast a pointer to scalar types at last minute, which would make this reinterpret_cast chain even more ridiculous.
Fixes #2336.